你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2576|回复: 6

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

[复制链接]

8

主题

28

回帖

0

蝴蝶豆

初级会员

最后登录
2015-4-17
发表于 2015-3-4 22:59:54 | 显示全部楼层 |阅读模式
最近在做用STM32mini板和OV7670摄像头的串口实验,把RGB值通过串口传给电脑,参考了下http://www.openedv.com/posts/list/12583.htm帖子,有些收获,但是为什么串口收不到得到的RGB值呢?换了个例程测试了下串口可以收到数据,但为什么不能接收到RGB值呢?
下面是修改后的源码,大多数参考上面那个帖子:
[size=1em][size=1em][backcolor=rgb(248, 248, 248) !important][color=#a0a0a0 !important]view source[color=#a0a0a0 !important]print[color=#a0a0a0 !important]?

[size=1em][backcolor=rgb(255, 255, 255) !important][size=1em]
01
void camera_refresh(void)

[backcolor=rgb(248, 248, 248) !important][size=1em]
02
{

[backcolor=rgb(255, 255, 255) !important][size=1em]
03
u32 j,i;

[backcolor=rgb(248, 248, 248) !important][size=1em]
04
    u16 color,color1,color2;

[backcolor=rgb(255, 255, 255) !important][size=1em]
05
u16 r,g,b;   

[backcolor=rgb(248, 248, 248) !important][size=1em]
06
if(ov_sta==2)

[backcolor=rgb(255, 255, 255) !important][size=1em]
07
{

[backcolor=rgb(248, 248, 248) !important][size=1em]
08
LCD_Scan_Dir(U2D_L2R);   //从上到下,从左到右

[backcolor=rgb(255, 255, 255) !important][size=1em]
09
LCD_SetCursor(0x00,0x0000); //设置光标位置

[backcolor=rgb(248, 248, 248) !important][size=1em]
10
LCD_WriteRAM_Prepare();     //开始写入GRAM

[backcolor=rgb(255, 255, 255) !important][size=1em]
11


[backcolor=rgb(248, 248, 248) !important][size=1em]
12
        OV7670_RRST=0;              //开始复位读指针

[backcolor=rgb(255, 255, 255) !important][size=1em]
13
        OV7670_RCK_L;

[backcolor=rgb(248, 248, 248) !important][size=1em]
14
        OV7670_RCK_H;

[backcolor=rgb(255, 255, 255) !important][size=1em]
15
        OV7670_RCK_L;

[backcolor=rgb(248, 248, 248) !important][size=1em]
16
        OV7670_RRST=1;              //复位读指针结束

[backcolor=rgb(255, 255, 255) !important][size=1em]
17
        OV7670_RCK_H;   

[backcolor=rgb(248, 248, 248) !important][size=1em]
18
for(j=0;j<76800;j++)

[backcolor=rgb(255, 255, 255) !important][size=1em]
19
{

[backcolor=rgb(248, 248, 248) !important][size=1em]
20
OV7670_RCK_L;

[backcolor=rgb(255, 255, 255) !important][size=1em]
21
color = GPIOC->IDR&0XFF; //读数据

[backcolor=rgb(248, 248, 248) !important][size=1em]
22
OV7670_RCK_H;

[backcolor=rgb(255, 255, 255) !important][size=1em]
23
color=color1;

[backcolor=rgb(248, 248, 248) !important][size=1em]
24
color<<=8;  

[backcolor=rgb(255, 255, 255) !important][size=1em]
25
OV7670_RCK_L;

[backcolor=rgb(248, 248, 248) !important][size=1em]
26
color = GPIOC->IDR&0XFF; //读数据

[backcolor=rgb(255, 255, 255) !important][size=1em]
27
OV7670_RCK_H;

[backcolor=rgb(248, 248, 248) !important][size=1em]
28
color|=color2;

[backcolor=rgb(255, 255, 255) !important][size=1em]
29
LCD->LCD_RAM=color;

[backcolor=rgb(248, 248, 248) !important][size=1em]
30
//   printf("%d,",color1);

[backcolor=rgb(255, 255, 255) !important][size=1em]
31
//   printf("%d\n",color2);

[backcolor=rgb(248, 248, 248) !important][size=1em]
32
r= color1 & 0xF8;

[backcolor=rgb(255, 255, 255) !important][size=1em]
33
g=((color1 &0x07 )<<3 | (color2 & 0xe0 ) >>5 ) << 2;

[backcolor=rgb(248, 248, 248) !important][size=1em]
34
b=(color2 & 0x1f )<<3;

[backcolor=rgb(255, 255, 255) !important][size=1em]
35
printf(",%d,%d,%d,\n",r,g,b);     

[backcolor=rgb(248, 248, 248) !important][size=1em]
36
}

[backcolor=rgb(255, 255, 255) !important][size=1em]
37
}

[backcolor=rgb(248, 248, 248) !important][size=1em]
38


[backcolor=rgb(255, 255, 255) !important][size=1em]
39
EXTI->PR=1<<8;          //清除LINE8上的中断标志位

[backcolor=rgb(248, 248, 248) !important][size=1em]
40
ov_sta=0;    //开始下一次采集

[backcolor=rgb(255, 255, 255) !important][size=1em]
41
     ov_frame++;

[backcolor=rgb(248, 248, 248) !important][size=1em]
42
//   LCD_Scan_Dir(DFT_SCAN_DIR);    //恢复默认扫描方向

[backcolor=rgb(255, 255, 255) !important][size=1em]
43
}

[backcolor=rgb(248, 248, 248) !important][size=1em]
44


[backcolor=rgb(255, 255, 255) !important][size=1em]
45
int main(void)

[backcolor=rgb(248, 248, 248) !important][size=1em]
46
{  

[backcolor=rgb(255, 255, 255) !important][size=1em]
47
u8 lightmode=0,saturation=2,brightness=2,contrast=2;

[backcolor=rgb(248, 248, 248) !important][size=1em]
48
u8 effect=0;     

[backcolor=rgb(255, 255, 255) !important][size=1em]
49
u8 len;

[backcolor=rgb(248, 248, 248) !important][size=1em]
50
u8 t;

[backcolor=rgb(255, 255, 255) !important][size=1em]
51
usmart_dev.init(72);    //初始化

[backcolor=rgb(248, 248, 248) !important][size=1em]
52
OV7670_Init();      

[backcolor=rgb(255, 255, 255) !important][size=1em]
53
delay_ms(1500);        

[backcolor=rgb(248, 248, 248) !important][size=1em]
54
OV7670_Light_Mode(lightmode);

[backcolor=rgb(255, 255, 255) !important][size=1em]
55
OV7670_Color_Saturation(saturation);

[backcolor=rgb(248, 248, 248) !important][size=1em]
56
OV7670_Brightness(brightness);

[backcolor=rgb(255, 255, 255) !important][size=1em]
57
OV7670_Contrast(contrast);

[backcolor=rgb(248, 248, 248) !important][size=1em]
58
    OV7670_Special_Effects(effect);  

[backcolor=rgb(255, 255, 255) !important][size=1em]
59


[backcolor=rgb(248, 248, 248) !important][size=1em]
60
TIM6_Int_Init(10000,7199);   //10Khz计数频率,1秒钟中断     

[backcolor=rgb(255, 255, 255) !important][size=1em]
61
EXTI8_Init();    //使能定时器捕获

[backcolor=rgb(248, 248, 248) !important][size=1em]
62
OV7670_Window_Set(10,174,240,320);  //设置窗口   

[backcolor=rgb(255, 255, 255) !important][size=1em]
63
    OV7670_CS=0;

[backcolor=rgb(248, 248, 248) !important][size=1em]
64


[backcolor=rgb(255, 255, 255) !important][size=1em]
65
delay_init();            //延时函数初始化   

[backcolor=rgb(248, 248, 248) !important][size=1em]
66
NVIC_Configuration();    //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

[backcolor=rgb(255, 255, 255) !important][size=1em]
67
uart_init(9600);        //串口初始化为9600   

[backcolor=rgb(248, 248, 248) !important][size=1em]
68


[backcolor=rgb(255, 255, 255) !important][size=1em]
69
while(1)

[backcolor=rgb(248, 248, 248) !important][size=1em]
70
{

[backcolor=rgb(255, 255, 255) !important][size=1em]
71
if(USART_RX_STA&0x8000)

[backcolor=rgb(248, 248, 248) !important][size=1em]
72
{      

[backcolor=rgb(255, 255, 255) !important][size=1em]
73
len=USART_RX_STA&0x3f;//得到此次接收到的数据长度

[backcolor=rgb(248, 248, 248) !important][size=1em]
74
     printf("\r\n您发送的消息为:\r\n\r\n");

[backcolor=rgb(255, 255, 255) !important][size=1em]
75
for(t=0;t<len;t++)

[backcolor=rgb(248, 248, 248) !important][size=1em]
76
{

[backcolor=rgb(255, 255, 255) !important][size=1em]
77
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据

[backcolor=rgb(248, 248, 248) !important][size=1em]
78
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束

[backcolor=rgb(255, 255, 255) !important][size=1em]
79
}

[backcolor=rgb(248, 248, 248) !important][size=1em]
80
           camera_refresh();

[backcolor=rgb(255, 255, 255) !important][size=1em]
81


[backcolor=rgb(248, 248, 248) !important][size=1em]
82
delay_ms(10);

[backcolor=rgb(255, 255, 255) !important][size=1em]
83
}else

[backcolor=rgb(248, 248, 248) !important][size=1em]
84
{

[backcolor=rgb(255, 255, 255) !important][size=1em]
85
       printf("请输入数据,以回车键结束\n");

[backcolor=rgb(248, 248, 248) !important][size=1em]
86
  delay_ms(10);  

[backcolor=rgb(255, 255, 255) !important][size=1em]
87
}

[backcolor=rgb(248, 248, 248) !important][size=1em]
88


[backcolor=rgb(255, 255, 255) !important][size=1em]
89
}  

[backcolor=rgb(248, 248, 248) !important][size=1em]
90


[backcolor=rgb(255, 255, 255) !important][size=1em]
91
}





<
回复

使用道具 举报

8

主题

28

回帖

0

蝴蝶豆

初级会员

最后登录
2015-4-17
 楼主| 发表于 2015-3-4 23:00:33 | 显示全部楼层
亲各位大神帮助。。。。。
回复 支持 反对

使用道具 举报

8

主题

28

回帖

0

蝴蝶豆

初级会员

最后登录
2015-4-17
 楼主| 发表于 2015-3-4 23:00:50 | 显示全部楼层
谢谢了啊。。。。。。。。。
回复 支持 反对

使用道具 举报

76

主题

5715

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-10-15
发表于 2015-3-5 09:28:54 | 显示全部楼层
自言自语,还乱七八糟。一看就是来混水摸鱼来了。
回复 支持 反对

使用道具 举报

76

主题

5715

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-10-15
发表于 2015-3-5 09:29:33 | 显示全部楼层
就算是复制别人的东西,也要排个版啊。
回复 支持 反对

使用道具 举报

13

主题

368

回帖

9

蝴蝶豆

金牌会员

最后登录
2020-11-12
发表于 2015-3-6 09:57:17 | 显示全部楼层
帮顶,希望早点解决,也好学习学习
回复 支持 反对

使用道具 举报

26

主题

845

回帖

0

蝴蝶豆

金牌会员

最后登录
2018-9-27
发表于 2015-5-29 12:22:48 | 显示全部楼层
楼主使用ov7670带FIFO还需要接SCCB引脚吗?就是SIOC和SIOD?
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版