📄 main.c
字号:
#include <stm32f10x_lib.h>
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "lcd.h"
# include "LCD_GUI.h"
# include "LCD_Driver.h"
# include "usart.h"
# include "MyUSART.h"
# include "ov7670.h"
# include "FIFO.h"
//Mini STM32开发板范例代码10
//TFTLCD显示 实验
extern unsigned char VsyncCnt; //场同步标志
int main(void)
{
u32 i = 0;
u16 j = 0;
u16 temp = 0;
u16 data = 0;
u16 buffer[240] = {0};
u16 t = 0;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72, 38400);
//LED_Init();
//Config2401();
//SetRxMode();
//LCD_Clear(1234) ;
//LCD_LED_ON;
//OV7670_init();
FIFO_PortInit();
FIFO_WRST_L; //写指针复位,开始往FIFO写入数据
Delay_nUS(100);
FIFO_WRST_H;
FIFO_RRST_L; //写指针复位,开始往FIFO写入数据
Delay_nUS(100);
FIFO_RRST_H;
LCD_DriverInit();
LCD_Clear(1234) ;
EXTIX_Init();
while(1)
{
if(OV7670_init())
{
break;
}
}
while(0)
{
LCD_Fill(0, 0, 25, 80, 0x1234);
for(i = 0; i < 100; i ++)
{
LCD_DrawPoint(i, i, 0x5678);
}
}
FIFO_OE_L;
while(1)
{
if(1)//
{
if(VsyncCnt == 2)
{
//0地址读数据,硬件已将OE和RE连在一起
LCD_SetWindow(0, 0, X_END, Y_END);
LCD_WriteGRAM_EN();
t = 0;
for(i = 0; i < 240; i ++) //QVGA格式,240行;每行320个点
{
for(j = 0; j < 320; j ++)
{
FIFO_RCLK_L;
__nop();
__nop();
FIFO_RCLK_H;
__nop();
__nop();
data = FIFO_DATA_PIN;
data <<= 8; //先读高位
FIFO_RCLK_L;
__nop();
__nop();
FIFO_RCLK_H;
__nop();
__nop();
//Delay_nUS(1);
temp = FIFO_DATA_PIN;//再读低位
data |= temp ;
LCD_DATA_OUT(data); //显示读到的数据(RGB565)
}
}
LCD_WR_END();
FIFO_RRST_L; //读指针复位
FIFO_RCLK_L; //至少需要一个时钟周期的跳变才能复位
FIFO_RCLK_H;
FIFO_RCLK_L; //至少需要一个时钟周期的跳变才能复位
FIFO_RCLK_H;
FIFO_RRST_H;
FIFO_WEN_L; //按照手册上说明,复位时WEN要置高,但
FIFO_WRST_L; //MCU的WEN和HREF是做与非逻辑后再输入
__nop(); //到AL422B的,所以MCU的WEN置低则输出到422的WEN一定为低
__nop(); //写指针复位需要一定的延时
FIFO_WRST_H;
VsyncCnt = 0; //开始下一帧数据采集
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -