新手上路
- 积分
- 27
- 金钱
- 27
- 注册时间
- 2019-3-7
- 在线时间
- 5 小时
|
问题一:76800的数组太大我只能用指针uint8_t* image_1 = ((uint8_t*)0x10000000),这样有什么影响吗?
问题二:我想把像素点存入一个数组image_1[j]=color,但是每次LCD都只显示一张图片就不再变了,只要我把这一行代码注释掉LCD就可以正常显示,这是什么原因呢?407的开发板是带有FIFO的。
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "lcd.h"
#include "usart2.h"
#include "timer.h"
#include "ov7670.h"
#include "dcmi.h"
#include "sram.h"
#include "stdlib.h"
extern u8 ov_sta;
uint16_t image_number;
uint8_t* image_1 = ((uint8_t*)0x10000000);
void camera_refresh1(void)
{
u32 j;
u16 color;
u16 c;
if(ov_sta)
{
LCD_Scan_Dir(U2D_L2R);
if(lcddev.id==0X1963)LCD_Set_Window((lcddev.width-240)/2,(lcddev.height-320)/2,240,320);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
else if(lcddev.id==0X5510||lcddev.id==0X5310)LCD_Set_Window((lcddev.width-320)/2,(lcddev.height-240)/2,320,240);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
LCD_WriteRAM_Prepare(); //¿aê¼D′èëGRAM
OV7670_RRST=0;
OV7670_RCK_L;
OV7670_RCK_H;
OV7670_RCK_L;
OV7670_RRST=1;
OV7670_RCK_H;
for(j=0;j<76800;j++)
{
OV7670_RCK_L;
color=OV7670_DATA;
OV7670_RCK_H;
color<<=8;
OV7670_RCK_L;
color|=OV7670_DATA;
OV7670_RCK_H;
//LCD->LCD_RAM=color;
LCD_WR_DATA(color);
image_1[j]=color;
}
delay_ms(1000);
ov_sta=0; //ÇåáãÖ¡ÖD¶Ï±ê
LCD_Scan_Dir(DFT_SCAN_DIR); //»Ö¸′ĬèÏé¨Ãè·½Ïò
LED1=!LED1;
}
}
/*
void camera_refresh2(void)
{
u32 j;
u16 color;
u16 c;
if(ov_sta)//óDÖ¡ÖD¶Ï¸üD£¿
{
LCD_Scan_Dir(U2D_L2R); //′óéÏμ½ÏÂ,′ó×óμ½óò
//ÏñËØÎa320*240
if(lcddev.id==0X1963)LCD_Set_Window((lcddev.width-240)/2,(lcddev.height-320)/2,240,320);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
else if(lcddev.id==0X5510||lcddev.id==0X5310)LCD_Set_Window((lcddev.width-320)/2,(lcddev.height-240)/2,320,240);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
LCD_WriteRAM_Prepare(); //¿aê¼D′èëGRAM
OV7670_RRST=0; //¿a꼸′λ¶áÖ¸Õë
OV7670_RCK_L;
OV7670_RCK_H;
OV7670_RCK_L;
OV7670_RRST=1; //¸′λ¶áÖ¸Õë½áêø
OV7670_RCK_H;
for(j=0;j<76800;j++)
{
OV7670_RCK_L;
color=OV7670_DATA; //¶áêy¾Y
OV7670_RCK_H;
color<<=8;
OV7670_RCK_L;
color|=OV7670_DATA; //¶áêy¾Y
OV7670_RCK_H;
LCD->LCD_RAM=color;
image_2[j]=color;
//LCD_WR_DATA(color);
}
delay_ms(1000);
ov_sta=0; //ÇåáãÖ¡ÖD¶Ï±ê
LCD_Scan_Dir(DFT_SCAN_DIR); //»Ö¸′ĬèÏé¨Ãè·½Ïò
LED1=!LED1;
}
}*/
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏè¼¶·Ö×é2
delay_init(168); //3õê¼»ˉÑóê±oˉêy
uart_init(115200); //3õê¼»ˉ′®¿ú2¨ìØÂêÎa115200
LED_Init(); //3õê¼»ˉLED
LCD_Init(); //LCD3õê¼»ˉ
KEY_Init(); //°′¼ü3õê¼»ˉ
TIM3_Int_Init(10000-1,8400-1);//10Khz¼Æêy,1ÃëÖóÖD¶Ïò»′Î
FSMC_SRAM_Init();
POINT_COLOR=BLUE;//éèÖÃ×ÖìåÎaà¶é«
LCD_ShowString(40,60,200,24,24,"STM32F4");
LCD_ShowString(40,100,200,24,24,"OV7670 TEST");
LCD_ShowString(40,140,200,24,24,"ATOM@ALIENTEK");
LCD_ShowString(40,180,200,24,24,"2019/3/7");
while(OV7670_Init())//3õê¼»ˉOV7670
{
LCD_ShowString(40,220,200,24,24,"OV7670 ERR");
delay_ms(200);
LCD_Fill(40,220,239,170,WHITE);
delay_ms(200);
LED0=!LED0;
}
LCD_ShowString(40,220,200,24,24,"OV7670 OK");
delay_ms(1500);
image_number = 1;//óÃóú±æ±eí¼Æ¬μÄÏèoó′ÎDòμÄDÅoÅá¿
EXTI8_Init(); //ê1Äü¶¨ê±Æ÷2¶»ñ
OV7670_Window_Set(12,176,240,320); //éèÖÃ′°¿ú
OV7670_CS=0;
LCD_Clear(WHITE);
while(1)
{
camera_refresh1();//¸üDÂÏÔê¾
//camera_refresh2();//¸üDÂÏÔê¾
static int i=0;
i++;
if(i==15)//DS0éá˸.
{
i=0;
LED0=!LED0;
}
}
}
|
|