我用的是STM32F103ZE,摄像头是带FIFO的ov7670,显示屏是ILI9320(320×240),中断的程序如下:
void EXTI15_10_IRQHandler(void)
{
u16 i,j;
u16 t1,t2;
EXTI_ClearITPendingBit(EXTI_Line11);
Vsync_Flag++;
if(Vsync_Flag==1) //FIFO写指针复位
{
FIFO_WRST=1;
FIFO_WRST=0;
for(i=0;i<100;i++);
FIFO_WRST=1;
FIFO_WR=1; //允许CMOS数据写入FIFO
}
if(Vsync_Flag==2)
{
FIFO_WR=0; //禁止CMOS数据写入FIF0
FIFO_RRST=0; //FIFO读指针复位
FIFO_RCK=0;
FIFO_RCK=1;
FIFO_RCK=0;
FIFO_RCK=1;
FIFO_RRST=1;
LCD_SetDisplayWindow(0,0,239,319);
LCD_WriteRAM_Prepare();
delay_us(20);
FIFO_OE=0; //允许FIFO输出
for(i = 0; i < 9600; i ++) //该开发的TFT屏最大显示尺寸320*240
{
for(j = 0; j <8; j ++)
{
FIFO_RCK=0;
FIFO_RCK=1;
t1=(0x00ff&GPIOC->IDR);
FIFO_RCK=0;
FIFO_RCK=1;
t2=(0x00ff&GPIOC->IDR);
LCD_WriteRAM((t1<<8)|t2);
// delay_us(3);
}
}
FIFO_OE=1; //禁止FIFO输出
Vsync_Flag=0;
}
}
问题出在: for(i = 0; i < 9600; i ++)
for(j = 0; j <8; j ++)
......
如果是 i<9600,j<8,TFT可以很清晰的显示摄像头拍摄的图像,
但是如果换成 i<320,j<240 ,或者是其它,TFT就不能清楚的现实图像,这是为什么呢? |