金牌会员
 
- 积分
- 2952
- 金钱
- 2952
- 注册时间
- 2015-12-30
- 在线时间
- 360 小时
|
1金钱
根据原子例程,修改的串口1中断接收函数,为什么当数据是F1 D8结尾的时候,数据返回正确,当在发其他数据给串口1的时候,数据没有返回,然后再发F1 D8结尾的数据的时候,数据再也不会返回任何内容,必须重启才能行,求指点下,可能是哪个问题呢
void USART1_IRQHandler(void) //串口1中断服务程序
{
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据
if((USART_RX_STA&0x8000)==0)
{
if(USART_RX_STA&0x4000)//接收到了0x0d
{
if(Res==0xD8)
{
USART_RX_STA|=0x8000; //接收完成了
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res;
}
else USART_RX_STA=0;
}
else //还没收到0X0D
{
if(Res==0xF1)
{
USART_RX_STA|=0x4000;
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res;
USART_RX_STA++;
}
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res;
USART_RX_STA++;
if(USART_RX_STA>63) USART_RX_STA=0;
}
}
}
|
|