头像-76176

TDA2030

  • 江西省吉安市
  • 单片机 嵌入式 DSP RF/无线 电源技术 模拟技术
  • 工控电子

个人成就

获得 9 次赞

帮助过22人

s3c2440用来学习会不会过时了

有一块S3C2440的友善之臂开发板,想学学嵌入式。但是发现很多板子的资料都比较老,和我实际的情况不一样了。是不是2440已经没什么人用了

为什么要在linux下开发STM32

看到身边有大神喜欢在linux下开发STM32,不知道相比用KEIL来说,有什么优劣之处?求教大神

树莓派上Ubuntu系统和pc上Ubuntu系统的区别

树莓派和pc上都能运行Ubuntu系统,两者比较明显的区别是什么?可以用树莓派开发STM32吗?问题扩展一下,不同平台上运行的同一个linux系统比较明显的不同在哪里菜鸟求教大神

本杰明开源电调windows工具怎么下载

想用用最好用的开源电调,本杰明电调。但是他是在linux下开发的,虽然提供了windows的工具,但是不知道怎么下载,求大神帮助给出链接:https://github.com/vedderb/bldc-tool​

ov7670摄像头颜色异常

用STM32F4的DCMI+DMA传输OV7670 QVGA输出的数据到屏幕,寄存器改来改去始终颜色不对,求教各位大神效果图在代码后面//初始化寄存器序列及其对应的值 const u8 ov7670_init_reg_tbl[][2]= { {0x3a, 0x04}, {0x40, 0xd0}, {0x12, 0x14}, //COM7 //输出窗口设置 {0x32, 0x80},//HREF control bit[2:0] HREF start 3 LSB bit[5:3] HSTOP HREF end 3LSB {0x17, 0x16},//HSTART start high 8-bit MSB {0x18, 0x04},//HSTOP end high 8-bit {0x19, 0x02},//VSTART start high 8-bit MSB {0x1a, 0x7A},//VSTOP end high 8-bit {0x03, 0x05},//帧竖直方向控制VRFE {0x0c, 0x0C}, {0x3e, 0x00},// {0x42, 0x00},//0X08:彩条测试 {0x70, 0x3A},//彩条测试 {0x71, 0x35},//0X85:彩条测试 {0x72, 0x11}, {0x73, 0x00}, {0xa2, 0x02}, {0x6b, 0x4a},//PLL 重要参数 0x0a:不倍频,0x4a:4倍频 {0x11, 0x83},//0x01:不分频 {0x7a, 0x20}, {0x7b, 0x1c}, {0x7c, 0x28}, {0x7d, 0x3c}, {0x7e, 0x55}, {0x7f, 0x68}, {0x80, 0x76}, {0x81, 0x80}, {0x82, 0x88}, {0x83, 0x8f}, {0x84, 0x96}, {0x85, 0xa3}, {0x86, 0xaf}, {0x87, 0xc4}, {0x88, 0xd7}, {0x89, 0xe8}, {0x13, 0xe0}, {0x00, 0x00},//AGC {0x10, 0x00}, {0x0d, 0x00},//全窗口, 位[5:4]: 01 半窗口,10 1/4窗口,11 1/4窗口 {0x14, 0x28},//0x38, limit the max gain {0xa5, 0x05}, {0xab, 0x07}, {0x24, 0x75}, {0x25, 0x63}, {0x26, 0xA5}, {0x9f, 0x78}, {0xa0, 0x68}, {0xa1, 0x03},//0x0b, {0xa6, 0xdf},//0xd8, {0xa7, 0xdf},//0xd8, {0xa8, 0xf0}, {0xa9, 0x90}, {0xaa, 0x94}, {0x13, 0xe5}, {0x0e, 0x61}, {0x0f, 0x4b}, {0x16, 0x02}, {0x1e, 0x27},//0x07,//图像输出镜像控制.0x07 {0x21, 0x02}, {0x22, 0x91}, {0x29, 0x07}, {0x33, 0x0b}, {0x35, 0x0b}, {0x37, 0x1d}, {0x38, 0x71}, {0x39, 0x2a}, {0x3c, 0x78}, {0x4d, 0x40}, {0x4e, 0x20}, {0x69, 0x55},//0X55 {0x74, 0x19}, {0x8d, 0x4f}, {0x8e, 0x00}, {0x8f, 0x00}, {0x90, 0x00}, {0x91, 0x00}, {0x92, 0x00},//0x19,//0x66 {0x96, 0x00}, {0x9a, 0x80}, {0xb0, 0x84}, {0xb1, 0x0c}, {0xb2, 0x0e}, {0xb3, 0x82}, {0xb8, 0x0a}, {0x43, 0x14}, {0x44, 0xf0}, {0x45, 0x34}, {0x46, 0x58}, {0x47, 0x28}, {0x48, 0x3a}, {0x59, 0x88}, {0x5a, 0x88}, {0x5b, 0x44}, {0x5c, 0x67}, {0x5d, 0x49}, {0x5e, 0x0e}, {0x64, 0x04}, {0x65, 0x20}, {0x66, 0x05}, {0x94, 0x04}, {0x95, 0x08}, {0x6c, 0x0a}, {0x6d, 0x55}, {0x4f, 0x80}, {0x50, 0x80}, {0x51, 0x00}, {0x52, 0x22}, {0x53, 0x5e}, {0x54, 0x80}, {0x09, 0x03},//驱动能力最大 {0x6e, 0x11},// {0x6f, 0x9f},//0x9e for advance AWB {0x6a, 0x40}, {0x01, 0x40}, {0x02, 0x40}, {0x13, 0xe7}, {0x15, 0x00}, //重要参数(改)HSYNC\VSYNC\HREF电平控制 {0x55, 0x0a},//亮度 {0x56, 0x4F},//对比度 0x40 {0x58, 0x9e}, {0x41, 0x08}, {0x3f, 0x00},//边缘增强调整 {0x75, 0x05}, {0x76, 0xe1}, {0x4c, 0x00},//噪声抑制强度 {0x77, 0x01}, {0x3d, 0xc2},//0xc0, {0x4b, 0x09}, {0xc9, 0x60}, {0x41, 0x38}, {0x34, 0x11}, {0x3b, 0x02},//0x00,//0x02, {0xa4, 0x89},//0x88, {0x96, 0x00}, {0x97, 0x30}, {0x98, 0x20}, {0x99, 0x30}, {0x9a, 0x84}, {0x9b, 0x29}, {0x9c, 0x03}, {0x9d, 0x4c}, {0x9e, 0x3f}, {0x78, 0x04}, {0x79, 0x01}, {0xc8, 0xf0}, {0x79, 0x0f}, {0xc8, 0x00}, {0x79, 0x10}, {0xc8, 0x7e}, {0x79, 0x0a}, {0xc8, 0x80}, {0x79, 0x0b}, {0xc8, 0x01}, {0x79, 0x0c}, {0xc8, 0x0f}, {0x79, 0x0d}, {0xc8, 0x20}, {0x79, 0x09}, {0xc8, 0x80}, {0x79, 0x02}, {0xc8, 0xc0}, {0x79, 0x03}, {0xc8, 0x40}, {0x79, 0x05}, {0xc8, 0x30}, {0x79, 0x26}, {0x09, 0x02}, {0x3b, 0x42},//0x82,//0xc0,//0xc2, //night mode // /////////////////////////////////////////////////////////////////////// }; //DCMI中断服务函数 void DCMI_IRQHandler(void) { if(DCMI->MISR&0X01)//捕获到一帧图像 { //jpeg_data_process();//jpeg数据处理 DCMI->ICR|=1<<0; //清除帧中断 LED1=!LED1; ov_frame++; } } //DCMI DMA配置 //mem0addr:存储器地址0 将要存储摄像头数据的内存地址(也可以是外设地址) //mem1addr:存储器地址1 当只使用mem0addr的时候,该值必须为0 //memsize:存储器长度 0~65535 //memblen:存储器位宽 0,8位,1,16位,2,32位 //meminc:存储器增长方式,0,不增长;1,增长 void DCMI_DMA_Init(u32 mem0addr,u32 mem1addr,u16 memsize,u8 memblen,u8 meminc) { RCC->AHB1ENR|=1<<22; //DMA2时钟使能 while(DMA2_Stream1->CR&0X01);//等待DMA2_Stream1可配置 DMA2->LIFCR|=0X3D<<6*1; //清空通道1上所有中断标志 //DMA2_Stream1->FCR=0X00000021;//设置为默认值 DMA2_Stream1->FCR=0X0000000C;//设置为默认值 DMA2_Stream1->PAR=(u32)&DCMI->DR;//外设地址为:DCMI->DR DMA2_Stream1->M0AR=mem0addr; //mem0addr作为目标地址0 DMA2_Stream1->M1AR=mem1addr; //mem1addr作为目标地址1 DMA2_Stream1->NDTR=memsize; //传输长度为memsize DMA2_Stream1->CR=0; //先全部复位CR寄存器值 DMA2_Stream1->CR|=0<<6; //外设到存储器模式 DMA2_Stream1->CR|=1<<8; //循环模式 DMA2_Stream1->CR|=0<<9; //外设非增量模式 DMA2_Stream1->CR|=meminc<<10; //存储器增量模式 DMA2_Stream1->CR|=2<<11; //外设数据长度:32位 DMA2_Stream1->CR|=memblen<<13; //存储器位宽,8/16/32bit DMA2_Stream1->CR|=2<<16; //高优先级 DMA2_Stream1->CR|=0<<21; //外设突发单次传输 DMA2_Stream1->CR|=0<<23; //存储器突发单次传输 DMA2_Stream1->CR|=1<<25; //通道1 DCMI通道 if(mem1addr)//双缓冲的时候,才需要开启 { DMA2_Stream1->CR|=1<<18; //双缓冲模式 DMA2_Stream1->CR|=1<<4; //开启传输完成中断 MY_NVIC_Init(0,0,DMA2_Stream1_IRQn,2); //抢占1,子优先级3,组2 } } //DCMI初始化 void DCMI_Init(void) { //设置IO RCC->AHB1ENR|=1<<0; //使能外设PORTA时钟 RCC->AHB1ENR|=1<<1; //使能外设PORTB时钟 RCC->AHB1ENR|=1<<2; //使能外设PORTC时钟 RCC->AHB1ENR|=1<<4; //使能外设PORTE时钟 RCC->AHB2ENR|=1<<0; //能DCMI时钟 GPIO_Set(GPIOA,PIN4|PIN6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); //PA4/6 复用功能输出 GPIO_Set(GPIOB,PIN6|PIN7,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); //PB6/7 复用功能输出 GPIO_Set(GPIOC,PIN6|PIN7|PIN8|PIN9|PIN11,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//PC6/7/8/9/11 复用功能输出 GPIO_Set(GPIOE,PIN5|PIN6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); //PE5/6 复用功能输出 GPIO_AF_Set(GPIOA,4,13); //PA4,AF13 DCMI_HSYNC GPIO_AF_Set(GPIOA,6,13); //PA6,AF13 DCMI_PCLK GPIO_AF_Set(GPIOB,7,13); //PB7,AF13 DCMI_VSYNC GPIO_AF_Set(GPIOC,6,13); //PC6,AF13 DCMI_D0 GPIO_AF_Set(GPIOC,7,13); //PC7,AF13 DCMI_D1 GPIO_AF_Set(GPIOC,8,13); //PC8,AF13 DCMI_D2 GPIO_AF_Set(GPIOC,9,13); //PC9,AF13 DCMI_D3 GPIO_AF_Set(GPIOC,11,13); //PC11,AF13 DCMI_D4 GPIO_AF_Set(GPIOB,6,13); //PB6,AF13 DCMI_D5 GPIO_AF_Set(GPIOE,5,13); //PE5,AF13 DCMI_D6 GPIO_AF_Set(GPIOE,6,13); //PE6,AF13 DCMI_D7 //清除原来的设置 DCMI->CR=0x0; DCMI->IER=0x0; DCMI->ICR=0x1F; DCMI->ESCR=0x0; DCMI->ESUR=0x0; DCMI->CWSTRTR=0x0; DCMI->CWSIZER=0x0; DCMI->CR|=0<<1; //连续模式 DCMI->CR|=0<<2; //全帧捕获 DCMI->CR|=0<<4; //硬件同步HSYNC,VSYNC DCMI->CR|=0<<5; //PCLK 下降沿有效 DCMI->CR|=0<<6; //HSYNC 低电平有效 DCMI->CR|=1<<7; //VSYNC 低电平有效 DCMI->CR|=0<<8; //捕获所有的帧 DCMI->CR|=0<<10; //8位数据格式 DCMI->IER|=1<<0; //开启帧中断 DCMI->CR|=1<<14; //DCMI使能 MY_NVIC_Init(0,0,DCMI_IRQn,2); //抢占1,子优先级2,组2 } //DCMI,启动传输 void DCMI_Start(void) { LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右 LCD_SetCursor(0,0); LCD_WriteRAM_Prepare(); //开始写入GRAM DMA2_Stream1->CR|=1<<0; //开启DMA2,Stream1 DCMI->CR|=1<<0; //DCMI捕获使能 } //DCMI,关闭传输 void DCMI_Stop(void) { DCMI->CR&=~(1<<0); //DCMI捕获关闭 while(DCMI->CR&0X01); //等待传输结束 DMA2_Stream1->CR&=~(1<<0); //关闭DMA2,Stream1 } 主函数主要部分:while(OV7670_Init())//初始化OV2640 { Show_Str(30,190,240,16,"OV7670 错误!",16,0); delay_ms(200);    LCD_Fill(30,190,239,206,WHITE); delay_ms(200); LED1=!LED1; }  Show_Str(30,190,200,16,"OV7670 正常",16,0); delay_ms(500);​OV7670_Window_Set(12,176,240,320); //设置窗口 LCD_Set_Window(0,0,240,320); DCMI_Init(); //DCMI配置 DCMI_DMA_Init((u32)&LCD->LCD_RAM,0,1,1,0);//DCMI DMA配置 DCMI_Start(); //启动传输  while(1) {}​

OV7670摄像头24mhz时钟问题

买了一个很便宜的OV7670模块,发现没有带晶振,要自己输入24mhz时钟,单片机不方便输出这个时钟,可不可以输入33mhz时钟

开发STM32F4用寄存器多还是库多?

一直用寄存器开发F1,现在要用F4了,寄存器更多了,实际开发中用寄存器开发F4的人多吗?用库的话标准库还好,HAL库编译很慢,是不是电脑配置太低了?

关于STM32的F4产品线的疑问

刚开始51单片机觉得单片机是个好东西;后来用上了STM8又觉得51又贵又没有STM8强;后来用STM32F1觉得才贵了一点,性能强了很多;后来用着觉得F1性能也不够,用了一下F407,又觉得贵了这么多性能却还是不够,F429/F7就不用说了,更贵!都赶上嵌入式处理器价格了。于是产生疑问:1、STM32F407/429/F7这些一般用来做什么开发比较合适呢?2、哪个系列的STM32比较受欢迎呢?