求助,两个STM32F407之间的串口通讯协议问题。

2019-07-20 06:52发布

这个是在正点原子给的串口通讯例程的基础上修改的,我想让串口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;         
                                }                 
                        }
                }                    
  }

}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
xuyaqi
1楼-- · 2019-07-20 12:38
思路有问题,如果对方发完0xaa不停顿继续发下面的,就由不得你做什么判断,还不如照章全收放在一个数组里,然后再做判断。
hahaha1123
2楼-- · 2019-07-20 14:43
 精彩回答 2  元偷偷看……
hahaha1123
3楼-- · 2019-07-20 19:33
最后一行改为        if((USART_RX_STA&0x1fff)>(USART_REC_LEN-1))USART_RX_STA=0; 仍然不行
hahaha1123
4楼-- · 2019-07-21 01:06
xuyaqi 发表于 2018-8-4 09:43
思路有问题,如果对方发完0xaa不停顿继续发下面的,就由不得你做什么判断,还不如照章全收放在一个数组里, ...

谢谢!
起航的雄鹰
5楼-- · 2019-07-21 06:24
 精彩回答 2  元偷偷看……

一周热门 更多>