初级会员

- 积分
- 96
- 金钱
- 96
- 注册时间
- 2014-8-26
- 在线时间
- 0 小时
|
5金钱
最近在做串口摄像头驱动。我是用串口空闲中断和串口接收中断。代码如下:我看不出哪里错了,或者有逻辑错误。
/*串口中断*/
void USART1_IRQHandler(void)
{
u8 bRes;
/*接收中断*/
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
bRes = USART_ReceiveData(USART1);
if(USART_RX_STA<USART_REC_LEN)
{
USART_RX_BUF[USART_RX_STA++]= bRes;
}
}
/*如果是空闲中断*/
if(USART_GetITStatus(USART1, USART_IT_IDLE)!= RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_IDLE);
USART_ReceiveData(USART1); /*读DR*/
USART_RX_STA |=1<<15;
}
/*如果有溢出*/
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET)
{
USART_ClearFlag(USART1,USART_FLAG_ORE); /*读SR*/
USART_ReceiveData(USART1); /*读DR*/
}
}
/*串口接收*/
void Uart1_Recv(u8 *bpBuf,u16 wLen) /*接收n个字符*/
{
while(!(USART_RX_STA&0x8000));
memcpy(bpBuf,USART_RX_BUF,wLen);
USART_RX_STA=0;
}
在摄像头的驱动里面调用Uart1_Recv接收数据。
|
|