|
void usart_byte(u8 byte1)
{
USART_SendData(USART1,byte1);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);}
//顯示
void display()
{
u32 j;
u8 color;
if(ov_sta==2)
{
OV7670_WREN=0;
OV7670_RCK=1;
OV7670_RRST=0; //開始復(fù)位讀指針
OV7670_RCK=0;
OV7670_RCK=1;
OV7670_RCK=0;
OV7670_RRST=1; //復(fù)位讀指針結(jié)束
OV7670_CS=0;
delay_us(50);
usart_byte(0x01); //上位機(jī)數(shù)據(jù)協(xié)議
usart_byte(0xfe); //上位機(jī)數(shù)據(jù)協(xié)議
for(j=0;j<76800;j++)
{
OV7670_RCK=0;
__asm{nop;}
OV7670_RCK=1;
__asm{nop;}
// color<<=8;
color=(GPIOC->IDR&0XFF); //讀數(shù)據(jù)
OV7670_RCK=0;
__asm{nop;}
color|=GPIOB->IDR&0XFF; //讀數(shù)據(jù)
OV7670_RCK=1;
__asm{nop;}
usart_byte(color);
}
OV7670_CS=1;
usart_byte(0xfe); //上位機(jī)數(shù)據(jù)協(xié)議
usart_byte(0x01); //數(shù)據(jù)協(xié)議
ov_sta=0; //??????????????
EXTI_ClearITPendingBit(EXTI_Line8); //清除EXTI8線路掛起位
}
}
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line8)==SET)//是8線的中斷
{
ov_sta++;
if(ov_sta==1)
{
OV7670_WRST=1; //復(fù)位寫指針
__asm{nop;}
OV7670_WRST=0;
delay_us(2);
OV7670_WRST=1;
OV7670_WREN=1; //允許寫入FIFO
}
}
EXTI_ClearITPendingBit(EXTI_Line8); //清除EXTI8線路掛起位
}
用USART 串口給PC 上位機(jī)顯示 主要是color的數(shù)據(jù) 需不需要處,怎么處理才能顯示 。。
還有 FIFO 的 時序是否正確 大家?guī)兔纯?謝謝
|
|