新手入门
- 积分
- 11
- 金钱
- 11
- 注册时间
- 2018-8-2
- 在线时间
- 3 小时
|
5金钱
这个是在正点原子给的串口通讯例程的基础上修改的,我想让串口1在接受数据时,看到0xaa(数据头)开始接收,收到0x0d 0x0a时结束。代码如下,可是用串口助手显示并没有收到数据,求助大神们,是哪里出了问题?
void USART1_IRQHandler(void)
{
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART1);
if(Res==0xbb)
{
USART_RX_STA|=0x2000;
}
if(((USART_RX_STA&0x8000)==0)&&((USART_RX_STA&0x2000)!=0))
{
if(USART_RX_STA&0x4000)
{
if(Res!=0x0a)USART_RX_STA=0;
else
{
USART_RX_STA|=0x8000;
}
}
else
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X1FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;
}
}
}
}
}
|
最佳答案
查看完整内容[请看2#楼]
思路有问题,如果对方发完0xaa不停顿继续发下面的,就由不得你做什么判断,还不如照章全收放在一个数组里,然后再做判断。
|