我用下面程序由UART5向SIM900发送数据,为什么也进入RXNE中断!我向SIM900发送的数据同样在UART5_RX_BUF显示了
void Send_Com5_Byte(u8 Input)
{
UART5->DR=Input;
while((UART5->SR&0X40)==0);//等待发送结束
}
void Send_Com5_String(u8 *Point, u8 Count)
{
USART_ClearFlag(UART5,USART_FLAG_TXE);
while(Count>0)
{
Send_Com5_Byte(*Point) ;
  oint++;
Count--;
}
}
void UART5_IRQHandler(void)
{
u8 Res5;
if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res5 =UART5->DR;//(USART1->DR); //读取接收到的数据
if((UART5_RX_STA&0x80)==0)//接收未完成
{
if(UART5_RX_STA&0x40)//接收到了0x0d
{
if(Res5!=0x0a) UART5_RX_STA=0;//接收错误,重新开始
else UART5_RX_STA|=0x80; //接收完成了
}
else //还没收到0X0D
{
if(Res5==0x0d)UART5_RX_STA|=0x40;
else
{
UART5_RX_BUF[UART5_RX_STA&0X3F]=Res5 ;
UART5_RX_STA++;
if(UART5_RX_STA>(UART5_REC_LEN-1))UART5_RX_STA=0;//接收数据错误,重新开始接收
}
}
}
}
} |