中级会员 
   
	- 积分
 - 329
 
        - 金钱
 - 329 
 
       - 注册时间
 - 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);        //恢复默认扫描方向          }  }         |   
 
 
 
 |