int main(void) { u8 i; delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2 uart_init(9600); OV7670_Init(); LED_Init(); //初始化与LED连接的硬件接口 LCD_Init(); //初始化LCD if(lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X5510||lcddev.id==0X1963) //强制设置屏幕分辨率为320*240.以支持3.5寸大屏 { lcddev.width=240; lcddev.height=320; } usmart_dev.init(72); //初始化USMART POINT_COLOR=RED;//设置字体为红色 LCD_ShowString(60,50,200,200,16,"Mini STM32"); LCD_ShowString(60,70,200,200,16,"OV7670 TEST"); LCD_ShowString(60,90,200,200,16,"ATOM@ALIENTEK"); LCD_ShowString(60,110,200,200,16,"2014/3/27"); LCD_ShowString(60,130,200,200,16,"Use USMART To Set!"); LCD_ShowString(60,150,200,200,16,"OV7670 Init..."); while(OV7670_Init())//初始化OV7670 { LCD_ShowString(60,150,200,200,16,"OV7670 Error!!"); delay_ms(200); LCD_Fill(60,150,239,166,WHITE); delay_ms(200); } LCD_ShowString(60,150,200,200,16,"OV7670 Init OK"); delay_ms(1500); TIM3_Int_Init(10000,7199); //TIM3,10Khz计数频率,1秒钟中断 EXTI15_Init(); //使能定时器捕获 OV7670_Window_Set(10,174,240,320); //设置窗口 OV7670_CS=0; while(1) { camera_refresh(); //更新显示 if(i!=ov_frame) //DS0闪烁. { i=ov_frame; LED0=!LED0; } } }
int main(void) { u8 key; u8 lightmode=0,saturation=2,contrast=2; u8 effect=0; u8 i=0; u8 msgbuf[15]; //消息缓存区 u8 tm=0; delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级 uart_init(115200); //串口初始化为 115200 usmart_dev.init(72); //初始化USMART LED_Init(); //初始化与LED连接的硬件接口 KEY_Init(); //初始化按键 LCD_Init(); //初始化LCD TPAD_Init(6); //触摸按键初始化 POINT_COLOR=RED; //设置字体为红色 LCD_ShowString(30,50,200,16,16,"ELITE STM32F103 ^_^"); LCD_ShowString(30,70,200,16,16,"OV7670 TEST"); LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK"); LCD_ShowString(30,110,200,16,16,"2015/1/18"); LCD_ShowString(30,130,200,16,16,"KEY0:Light Mode"); LCD_ShowString(30,150,200,16,16,"KEY1:Saturation"); LCD_ShowString(30,170,200,16,16,"KEY_UP:Contrast"); LCD_ShowString(30,190,200,16,16,"TPAD:Effects"); LCD_ShowString(30,210,200,16,16,"OV7670 Init..."); while(OV7670_Init())//初始化OV7670 { LCD_ShowString(30,210,200,16,16,"OV7670 Error!!"); delay_ms(200); LCD_Fill(30,210,239,246,WHITE); delay_ms(200); } LCD_ShowString(30,210,200,16,16,"OV7670 Init OK"); delay_ms(1500); OV7670_Light_Mode(lightmode); OV7670_Color_Saturation(saturation); OV7670_Contrast(contrast); OV7670_Special_Effects(effect); TIM6_Int_Init(10000,7199); //10Khz计数频率,1秒钟中断 EXTI8_Init(); //使能定时器捕获 OV7670_Window_Set(12,176,240,320); //设置窗口 OV7670_CS=0; LCD_Clear(BLACK); while(1) { key=KEY_Scan(0);//不支持连按 if(key) { tm=20; switch(key) { case KEY0_PRES: //灯光模式Light Mode lightmode++; if(lightmode>4)lightmode=0; OV7670_Light_Mode(lightmode); sprintf((char*)msgbuf,"%s",LMODE_TBL[lightmode]); break; case KEY1_PRES: //饱和度Saturation saturation++; if(saturation>4)saturation=0; OV7670_Color_Saturation(saturation); sprintf((char*)msgbuf,"Saturation:%d",(signed char)saturation-2); break; case WKUP_PRES: //对比度Contrast contrast++; if(contrast>4)contrast=0; OV7670_Contrast(contrast); sprintf((char*)msgbuf,"Contrast:%d",(signed char)contrast-2); break; } } if(TPAD_Scan(0))//检测到触摸按键 { effect++; if(effect>6)effect=0; OV7670_Special_Effects(effect);//设置特效 sprintf((char*)msgbuf,"%s",EFFECTS_TBL[effect]); tm=20; } camera_refresh();//更新显示 if(tm) { LCD_ShowString((lcddev.width-240)/2+30,(lcddev.height-320)/2+60,200,16,16,msgbuf); tm--; } i++; if(i==15)//DS0闪烁. { i=0; LED0=!LED0; } } }