初级会员

- 积分
- 106
- 金钱
- 106
- 注册时间
- 2016-1-7
- 在线时间
- 15 小时
|
1金钱
串口中断程序如下:
void USART1_IRQHandler(void) //串口1中断服务程序
{
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART1);
printf(" %X \r\n",Res); //这里出现问题
if(USART_RX_STA&0x8000)
{
}else
{
if((USART_RX_STA&0x4000) && (USART_RX_STA&0x2000) )
{
USART_RX_BUF[0]=Res ;
USART_RX_STA|=0x8000;
}
else
{
if(USART_RX_STA&0x4000)//已经有读取到0xFC 14位
{
if(Res!=0xFD)
USART_RX_STA=0;
else
USART_RX_STA|=0x2000; //置13位
}
else if(USART_RX_STA & 0x2000)
{
if(Res!=0xFC)
USART_RX_STA = 0;
else
USART_RX_STA |= 0x4000; //置14位
}
else
{
if(Res==0xFD)
{
USART_RX_STA |= 0x2000;
}
if(Res==0xFC)
{
USART_RX_STA |= 0x4000;
}
}
}
}
}
}
通过串口助手发送16进制的数据 FC FD 11(包括发送新行)时,串口助手中只打印了FC和FD, 而 11没有打印处理
|
|