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; //開始復位讀指針
OV7670_RCK=0;
OV7670_RCK=1;
OV7670_RCK=0;
OV7670_RRST=1; //復位讀指針結束
OV7670_CS=0;
delay_us(50);
usart_byte(0x01); //上位機數據協議
usart_byte(0xfe); //上位機數據協議
for(j=0;j<76800;j++)
{
OV7670_RCK=0;
__asm{nop;}
OV7670_RCK=1;
__asm{nop;}
// color<<=8;
color=(GPIOC->IDR&0XFF); //讀數據
OV7670_RCK=0;
__asm{nop;}
color|=GPIOB->IDR&0XFF; //讀數據
OV7670_RCK=1;
__asm{nop;}
usart_byte(color);
}
OV7670_CS=1;
usart_byte(0xfe); //上位機數據協議
usart_byte(0x01); //數據協議
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; //復位寫指針
__asm{nop;}
OV7670_WRST=0;
delay_us(2);
OV7670_WRST=1;
OV7670_WREN=1; //允許寫入FIFO
}
}
EXTI_ClearITPendingBit(EXTI_Line8); //清除EXTI8線路掛起位
}
用USART 串口給PC 上位機顯示 主要是color的數據 需不需要處,怎么處理才能顯示 。。
還有 FIFO 的 時序是否正確 大家幫忙看看 謝謝
|