中级会员
- 积分
- 324
- 金钱
- 324
- 注册时间
- 2015-6-23
- 在线时间
- 68 小时
|
发表于 2016-3-22 10:41:04
|
显示全部楼层
有问题想请教:void camera_refresh() { u32 i,j; u16 color; if(ov_sta==2) { LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右 LCD_SetCursor(0x00,0x0000); //设置光标位置 LCD_WriteRAM_Prepare(); //开始写入GRAM OV7670_RRST=0; //开始复位读指针 OV7670_RCK_L; OV7670_RCK_H; OV7670_RCK_L; OV7670_RRST=1; //复位读指针结束 OV7670_RCK_H; /*mode=1为灰度显示,mode=0为RGB565彩色显示*/ if(ov7670_config.mode){ for(i=0; i<ov7670_config.height; i++) { // LCD_SetCursor(i+ov7670_config.xsta,ov7670_config.ysta); //设置光标位置 // LCD_WriteRAM_Prepare(); //开始写入GRAM for(j=0; j<ov7670_config.width; j++) { OV7670_RCK_L; color = GPIOC->IDR&0XFF; //读数据 OV7670_RCK_H; color<<=8; OV7670_RCK_L;//因为设置的是 YUYV输出,第二个字节没用,不需要读,只读Y分量 // color |= GPIOC->IDR&0XFF; // OV7670_RCK_H; /*Y分量转化成RGB565,得到灰度图*/ color_r = color&0xf800; color_b = color>>11; color >>=5; color_g =color&0x07e0; LCD->LCD_RAM= color_r + color_g + color_b; } } }else{ for(i=0; i<ov7670_config.height; i++) { // LCD_SetCursor(i+ov7670_config.xsta,ov7670_config.ysta); //设置光标位置 // LCD_WriteRAM_Prepare(); //开始写入GRAM for(j=0; j<ov7670_config.width; j++) { OV7670_RCK_L; color = GPIOC->IDR&0XFF; //读数据,RGB565高字节 OV7670_RCK_H; color<<=8; OV7670_RCK_L; color |= GPIOC->IDR&0XFF; //读数据,RGB565低字节 OV7670_RCK_H; LCD->LCD_RAM=color; } } } EXTI_ClearITPendingBit(EXTI_Line8); //清除LINE8上的中断标志位 ov_sta=0; //开始下一次采集 ov_frame++; LCD_Scan_Dir(DFT_SCAN_DIR); //恢复默认扫描方向 } } |
|