图像方向也北旋转了90度. 在附上关键性的代码: 截图函数: 1 void OV7670_shot(void){ 0 1 u16 color; 2 if(ov_sta==2){ //针中断更新 3 OV7670_CS=0; 4 5 OV7670_RRST=0; //开始复位读指针 6 OV7670_RCK=0; 7 OV7670_RCK=1; 8 OV7670_RCK=0; 9 OV7670_RRST=1; //复位读指针结束 10 OV7670_RCK=1; 11 12 int16_t j = 0; 13 int16_t i = 0; 14 for( i=0; i < camera_image_height; i++){ 15 uint16_t length = camera_image_width * 2 +4; 16 uint8_t line[ length ]; 17 for( j=(camera_image_width-1); j>=0; j-- ){ 18 19 /*//高字节*/ 20 OV7670_RCK=0; 21 line[j*2+1] = GPIOC->IDR&0XFF; 22 OV7670_RCK=1; 23 24 //底字节 25 OV7670_RCK=0; 26 line[j*2+0] = GPIOC->IDR&0XFF; 27 OV7670_RCK=1; 28 } 29 line[ camera_image_width * 2 +0] = HIGH_BYTE_16(i); 30 line[ camera_image_width * 2 +1] = LOW_BYTE_16(i); 31 line[ camera_image_width * 2 +2] = HIGH_BYTE_16( camera_image_width ); 32 line[ camera_image_width * 2 +3] = LOW_BYTE_16( camera_image_width ); 33 whl102l_send_image( line, length); 34 35 } 36 37 OV7670_CS=1; 38 p_count =0; 39 EXTI_ClearITPendingBit(EXTI_Line8); //清除LINE8上的中断标志位 40 ov_sta=0; //开始下一次采集 41 ov_frame++; 42 } 43 } 复制代码窗口设置函数: 20 void OV7670_Window_Set(u16 sx,u16 sy,u16 width,u16 height) 19 { 18 u16 endx; 17 u16 endy; 16 u8 temp; 15 endx=sx+width*2; 14 endy=sy+height*2; 13 if(endy>784)endy-=784; 12 temp=SCCB_RD_Reg(0X03); 11 temp&=0XF0; 10 temp|=((endx&0X03)<<2)|(sx&0X03); 9 8 SCCB_WR_Reg(0X03,temp); 7 SCCB_WR_Reg(0X19,sx>>2); 6 SCCB_WR_Reg(0X1A,endx>>2); 5 4 temp=SCCB_RD_Reg(0X32); 3 temp&=0XC0; 2 temp|=((endy&0X07)<<3)|(sy&0X07); 1 SCCB_WR_Reg(0X17,sy>>3); 0 SCCB_WR_Reg(0X18,endy>>3); 1 } 复制代码外部中断函数: 6 void EXTI9_5_IRQHandler(void){ 7 if(EXTI_GetITStatus(EXTI_Line8)==SET)//是8线的中断 8 { 9 if(ov_sta<2) 10 { 11 if(ov_sta==0) 12 { 13 printf( "允许写入\n" ); 14 OV7670_WRST=0; //复位写指针 15 OV7670_WRST=1; 16 OV7670_WREN=1; //允许写入FIFO 17 }else{ 18 printf( "禁止写入\n" ); 19 OV7670_WREN=0; //禁止写入FIFO 20 OV7670_WRST=0; //复位写指针 21 OV7670_WRST=1; 22 } 23 ov_sta++; 24 } 25 } 26 27 EXTI_ClearITPendingBit(EXTI_Line8); //清除EXTI8线路挂起位 28 } 复制代码寄存器配置: const u8 ov7670_init_reg_tbl[][2]= { {0x3a, 0x04}, {0x40, 0x10}, {0x12, 0x14}, {0x32, 0x80}, {0x17, 0x17}, {0x18, 0x05}, {0x19, 0x02}, {0x1a, 0x7b},//0x7a, {0x03, 0x0a},//0x0a, {0x0c, 0x0c}, {0x3e, 0x00},// {0x70, 0x00}, {0x71, 0x01}, //{0x71, 0x80}, //0x80测试彩条 {0x72, 0x11}, {0x73, 0x09},// {0xa2, 0x02}, {0x11, 0x00}, {0x7a, 0x20}, {0x7b, 0x1c}, {0x7c, 0x28}, {0x7d, 0x3c}, {0x7e, 0x55}, {0x7f, 0x68}, {0x80, 0x76}, {0x81, 0x80}, {0x82, 0x88}, {0x83, 0x8f}, {0x84, 0x96}, {0x85, 0xa3}, {0x86, 0xaf}, {0x87, 0xc4}, {0x88, 0xd7}, {0x89, 0xe8}, {0x13, 0xe0}, {0x00, 0x00}, {0x10, 0x00}, {0x0d, 0x00}, {0x14, 0x38}, {0xa5, 0x05}, {0xab, 0x07}, {0x24, 0x75}, {0x25, 0x63}, {0x26, 0xA5}, {0x9f, 0x78}, {0xa0, 0x68}, {0xa1, 0x03},//0x0b, {0xa6, 0xdf},//0xd8, {0xa7, 0xdf},//0xd8, {0xa8, 0xf0}, {0xa9, 0x90}, {0xaa, 0x94}, {0x13, 0xe5}, {0x0e, 0x61}, {0x0f, 0x4b}, {0x16, 0x02}, {0x1e, 0x27},//0x07, {0x21, 0x02}, {0x22, 0x91}, {0x29, 0x07}, {0x33, 0x0b}, {0x35, 0x0b}, {0x37, 0x1d}, {0x38, 0x71}, {0x39, 0x2a}, {0x3c, 0x78}, {0x4d, 0x40}, {0x4e, 0x20}, {0x69, 0x5d}, {0x6b, 0x40},//PLL {0x74, 0x19}, {0x8d, 0x4f}, {0x8e, 0x00}, {0x8f, 0x00}, {0x90, 0x00}, {0x91, 0x00}, {0x92, 0x00},//0x19,//0x66 {0x96, 0x00}, {0x9a, 0x80}, {0xb0, 0x84}, {0xb1, 0x0c}, {0xb2, 0x0e}, {0xb3, 0x82}, {0xb8, 0x0a}, {0x43, 0x14}, {0x44, 0xf0}, {0x45, 0x34}, {0x46, 0x58}, {0x47, 0x28}, {0x48, 0x3a}, {0x59, 0x88}, {0x5a, 0x88}, {0x5b, 0x44}, {0x5c, 0x67}, {0x5d, 0x49}, {0x5e, 0x0e}, {0x64, 0x04}, {0x65, 0x20}, {0x66, 0x05}, {0x94, 0x04}, {0x95, 0x08}, {0x6c, 0x0a}, {0x6d, 0x55}, {0x6e, 0x11}, {0x6f, 0x9f}, {0x6a, 0x40}, //{0x01, 0x60}, //{0x02, 0x60}, {0x13, 0xe7}, {0x15, 0x00}, {0x4f, 0x80}, {0x50, 0x80}, {0x51, 0x00}, {0x52, 0x22}, {0x53, 0x5e}, {0x54, 0x80}, {0x55, 0x00},//亮度 {0x56, 0x60},//对比度 {0x57, 0x90}, {0x58, 0x9e}, {0x41, 0x08}, {0x3f, 0x05},//边缘增强调整 {0x75, 0x05}, {0x76, 0xe1}, {0x4c, 0x0F},//噪声抑制强度 {0x77, 0x0a}, {0x3d, 0xc2}, //0xc0, {0x4b, 0x09}, {0xc9, 0xc8}, {0x41, 0x38}, {0x34, 0x11}, {0x3b, 0x02},//0x00,//0x02, {0xa4, 0x89},//0x88, {0x96, 0x00}, {0x97, 0x30}, {0x98, 0x20}, {0x99, 0x30}, {0x9a, 0x84}, {0x9b, 0x29}, {0x9c, 0x03}, {0x9d, 0x4c}, {0x9e, 0x3f}, {0x78, 0x04}, {0x79, 0x01}, {0xc8, 0xf0}, {0x79, 0x0f}, {0xc8, 0x00}, {0x79, 0x10}, {0xc8, 0x7e}, {0x79, 0x0a}, {0xc8, 0x80}, {0x79, 0x0b}, {0xc8, 0x01}, {0x79, 0x0c}, {0xc8, 0x0f}, {0x79, 0x0d}, {0xc8, 0x20}, {0x79, 0x09}, {0xc8, 0x80}, {0x79, 0x02}, {0xc8, 0xc0}, {0x79, 0x03}, {0xc8, 0x40}, {0x79, 0x05}, {0xc8, 0x30}, {0x69, 0xaa},// {0x09, 0x00}, {0x3b, 0x42}, {0x2d, 0x01}, };复制代码
所在话题
参与活动
-
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16