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 的 时序是否正确 大家帮忙看看 谢谢
|