串口中断接收数据,无法判断

2019-10-15 21:06发布

利用战舰开发板,通过串口1中断接收数据,然后电脑中通过sscom4.2向stm32发送数据,stm32串口能够接收到数据,但是在串口中断函数中,无法判断接收到的数据,具体代码如下所示:
void USART1_IRQHandler(void)                        //串口1中断处理程序
        {
        u8 Res;
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  
                {
                        Res =USART_ReceiveData(USART1);        //接收电脑发送的数据
                        USART_SendData(USART1,Res);            //向电脑回传接收到的数据,能正确的接收到数据
               
                        switch(Res)                                //电脑发送0x99,串口能够接收到0x99,但是程序中不会执行switch段程序 ,但是发送0x31的时候则电脑端能接收到yes,而且改成0x51,0x61等只要后面有1。。switch程序不改,电脑端也能接收到yes,这一点很奇怪
                        {
                                case 0x31:
                                        printf("yes ");
                                        break;
                                case 0x99:
                                        printf("no ");
                                        break;
                        }

              }
       }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
feilusia
1楼-- · 2019-10-16 01:29
 精彩回答 2  元偷偷看……
xyl210xyl
2楼-- · 2019-10-16 02:47
看下变量的生命周期在不在作用范围内,还有串口进来直接判断这样是不可靠
lvkanger
3楼-- · 2019-10-16 05:50
发送0X51的时候串口助手有收到0X51吗?
abdfgh
4楼-- · 2019-10-16 10:23
switch函数最下面要加deafault默认执行函数)break;否则只要有一次判断有问题就跑偏了,你可以把switch改成if,else if格式再试一遍来验证你的函数是不是有问题

一周热门 更多>