/**************************************************************************** * Copyright: (C)2014 Î人ÁèÔÆÇ¶ÈëʽʵÑéÊÒ www.emblinux.com * Author: GuoWenxue QQ: 281143292 * Description: ±¾Àý³ÌÔڷܶ·STM32 V5¿ª·¢°åÉϵ÷ͨ¹ý; LED1-PB5 LED2-PD6 LED3-PD3 * * ChangeLog: * °æ±¾ºÅ ÈÕÆÚ ×÷Õß ËµÃ÷ * V1.0.0 2014.08.22 GuoWenxue ·¢²¼¸Ã°æ±¾ ****************************************************************************/ #include "stm32f10x.h" #include "stm32v5_uart.h" #include "stm32v5_systick.h" #include "lcd_r61509v.h" #include "lcd_draw.h" #include "stm32v5_ov7670.h" #include void RCC_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE , ENABLE); } static void set_camera_lcd_window(void) { LCDD_Fill(COLOR_WHITE); /* ²Î¿¼LCDÇý¶¯Æ÷ÊÖ²á R61509VÊÖ²á.pdf */ LCD_WriteReg(R61509V_R003H,0x1018); //Entry Mode ͼÏñÏÔʾ·½ÏòΪ×óÏÂÆð ÐеÝÔö Áеݼõ LCD_SetWindow(0, 40, 240, 320); //ÉãÏñÍ·Êä³öΪQVGA,ËùÒÔ´°¿Ú´óСΪ240*320 LCD_SetCursor(0, 359); //ˮƽÏÔʾÆðʼµØÖ·0,´¹Ö±ÏÔʾÆðʼµØÖ·359 } int main(void) { uint32_t i; uint16_t data; RCC_Configuration(); sysclock_init(); /* ³õʼ»¯sysclock,ÌṩÑÓʱº¯Êý */ //dbg_setup_uart(); /* ³õʼ»¯´®¿ÚºÍprintf */ LCD_Initialize(); /* ³õʼ»¯LCD */ OV7670_Initialize(FMT_QVGA_RGB565); /* ³õʼ»¯OV7670ÉãÏñÍ· */ //printf("Start OV7670 camera monitor and LCD display...\n"); set_camera_lcd_window(); g_OV7670_VSYNC = 0; LCD_WriteRAM_Prepare(); //×¼±¸Ð´Êý¾Ýµ½ÏÔÊ¾Çø while(1) { /*ÔÚÏÂÃæµÄ´úÂëÖУ¬ÎÒÃÇÖ±½ÓʹÓÃºê¶ø²»ÊǺ¯Êýµ÷Ó㬿ÉÒÔÃ÷ÏÔ¼Ó¿ì³ÌÐòËÙ¶È£» Èç¹û¸Ä³Éºêµ÷Óã¬ÔÚŲ¶¯ÉãÏñÍ·µÄ¹ý³ÌÖлá³öÏÖ¿¨ÆÁÏÖÏó */ if(2 == g_OV7670_VSYNC) { //printf("Read a frame and write to LCD\n"); OV7670_FIFO_READ_PREPARE(); for(i=0; iIDR<<8) & 0xff00); FIFO_RCLK_H(); FIFO_RCLK_L(); data |= (((GPIOC->IDR) & 0x00ff)); FIFO_RCLK_H(); LCD_D()=data; //½«FIFOÖеÄ16λÊý¾ÝдÈëÏÔÊ¾Çø } g_OV7670_VSYNC = 0; } /* (2 == g_OV7670_VSYNC) */ } }