亮剑2015 发表于 2015-3-4 22:59:54

STM32mini板和OV7670摄像头的串口实验

最近在做用STM32mini板和OV7670摄像头的串口实验,把RGB值通过串口传给电脑,参考了下http://www.openedv.com/posts/list/12583.htm帖子,有些收获,但是为什么串口收不到得到的RGB值呢?换了个例程测试了下串口可以收到数据,但为什么不能接收到RGB值呢?
下面是修改后的源码,大多数参考上面那个帖子:
view sourceprint?


01void camera_refresh(void)


02{


03u32 j,i;


04    u16 color,color1,color2;


05u16 r,g,b;   


06if(ov_sta==2)


07{


08LCD_Scan_Dir(U2D_L2R);   //从上到下,从左到右


09LCD_SetCursor(0x00,0x0000); //设置光标位置


10LCD_WriteRAM_Prepare();   //开始写入GRAM


11



12      OV7670_RRST=0;            //开始复位读指针


13      OV7670_RCK_L;


14      OV7670_RCK_H;


15      OV7670_RCK_L;


16      OV7670_RRST=1;            //复位读指针结束


17      OV7670_RCK_H;   


18for(j=0;j<76800;j++)


19{


20OV7670_RCK_L;


21color = GPIOC->IDR&0XFF; //读数据


22OV7670_RCK_H;


23color=color1;


24color<<=8;


25OV7670_RCK_L;


26color = GPIOC->IDR&0XFF; //读数据


27OV7670_RCK_H;


28color|=color2;


29LCD->LCD_RAM=color;


30//   printf("%d,",color1);


31//   printf("%d\n",color2);


32r= color1 & 0xF8;


33g=((color1 &0x07 )<<3 | (color2 & 0xe0 ) >>5 ) << 2;


34b=(color2 & 0x1f )<<3;


35printf(",%d,%d,%d,\n",r,g,b);   


36}


37}


38



39EXTI->PR=1<<8;          //清除LINE8上的中断标志位


40ov_sta=0;    //开始下一次采集


41   ov_frame++;


42//   LCD_Scan_Dir(DFT_SCAN_DIR);    //恢复默认扫描方向


43}


44



45int main(void)


46{


47u8 lightmode=0,saturation=2,brightness=2,contrast=2;


48u8 effect=0;   


49u8 len;


50u8 t;


51usmart_dev.init(72);    //初始化


52OV7670_Init();      


53delay_ms(1500);      


54OV7670_Light_Mode(lightmode);


55OV7670_Color_Saturation(saturation);


56OV7670_Brightness(brightness);


57OV7670_Contrast(contrast);


58    OV7670_Special_Effects(effect);


59



60TIM6_Int_Init(10000,7199);   //10Khz计数频率,1秒钟中断   


61EXTI8_Init();    //使能定时器捕获


62OV7670_Window_Set(10,174,240,320);//设置窗口   


63    OV7670_CS=0;


64



65delay_init();            //延时函数初始化   


66NVIC_Configuration();    //设置NVIC中断分组2:2位抢占优先级,2位响应优先级


67uart_init(9600);      //串口初始化为9600   


68



69while(1)


70{


71if(USART_RX_STA&0x8000)


72{      


73len=USART_RX_STA&0x3f;//得到此次接收到的数据长度


74   printf("\r\n您发送的消息为:\r\n\r\n");


75for(t=0;t<len;t++)


76{


77USART_SendData(USART1, USART_RX_BUF);//向串口1发送数据


78while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束


79}


80         camera_refresh();


81



82delay_ms(10);


83}else


84{


85       printf("请输入数据,以回车键结束\n");


86delay_ms(10);


87}


88



89}


90



91}





亮剑2015 发表于 2015-3-4 23:00:33

亲各位大神帮助。。。。。

亮剑2015 发表于 2015-3-4 23:00:50

谢谢了啊。。。。。。。。。

党国特派员 发表于 2015-3-5 09:28:54

自言自语,还乱七八糟。一看就是来混水摸鱼来了。

党国特派员 发表于 2015-3-5 09:29:33

就算是复制别人的东西,也要排个版啊。

Veiko 发表于 2015-3-6 09:57:17

帮顶,希望早点解决,也好学习学习

星辰一方 发表于 2015-5-29 12:22:48

楼主使用ov7670带FIFO还需要接SCCB引脚吗?就是SIOC和SIOD?
页: [1]
查看完整版本: STM32mini板和OV7670摄像头的串口实验