/****************************************************************************
|
* Copyright: (C)2014 Î人ÁèÔÆÇ¶ÈëʽʵÑéÊÒ www.emblinux.com
|
* Author: GuoWenxue<guowenxue@gmail.com> 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 <stdio.h>
|
|
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; i<OV7670_OUT_MAX_PIXS; i++)
|
{
|
FIFO_RCLK_L();
|
data = ((GPIOC->IDR<<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) */
|
}
|
}
|
|