void camera_refresh(void)
{
u32 j;
u16 color;
if(ov_sta==2)
{
LCD_Scan_Dir(L2R_U2D); //从上到下,从左到右
LCD_SetCursor(0x00,0x0000); //设置光标位置
LCD_WriteRAM_Prepare(); //开始写入GRAM
OV7670_CS=0;
OV7670_RRST=0; //开始复位读指针
OV7670_RCK=0;
OV7670_RCK=1;
OV7670_RCK=0;
OV7670_RRST=1; //复位读指针结束
OV7670_RCK=1;
for(j=0;j<76800;j++)
{
GPIOB->CRL=0X88888888;
OV7670_RCK=0;
color=OV7670_DATA; //读数据
OV7670_RCK=1;
color<<=8;
OV7670_RCK=0;
color|=OV7670_DATA; //读数据
OV7670_RCK=1;
GPIOB->CRL=0X33333333;
LCD_WR_DATA(color);
}
OV7670_CS=1;
OV7670_RCK=0;
OV7670_RCK=1;
EXTI->  R=1<<15; //清除LINE8上的中断标志位
ov_sta=0; //开始下一次采集
ov_frame++;
LCD_Scan_Dir(DFT_SCAN_DIR); //恢复默认扫描方向
}
}
以上是刷新函数;#define OV7670_DATA GPIOB->IDR&0x00FF;遇到一个很奇怪的问题,就是数据端口D0~D7开始用的是PB0~PB7;后来想移植到另一块板子上面去,改成接到PF0~PF7上面去(ZET6),但是我只改掉上面的数据端口宏定义#define OV7670_DATA GPIOF->IDR&0x00FF;没有改掉刷新里面的GPIOB,液晶就显示出摄像头拍摄的画面来了,而且测试彩条也出来了。但是全部改成PF的正常设置后,测试彩条没有了,而且画面也没了,是乱七八糟的整块颜色在刷屏。 |