OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2238|回复: 4

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

[复制链接]

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2016-10-19
在线时间
19 小时
发表于 2016-12-29 14:33:35 | 显示全部楼层 |阅读模式
3金钱
利用战舰开发板,通过串口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\n");
                                        break;
                                case 0x99:
                                        printf("no\n");
                                        break;
                        }

              }
       }

最佳答案

查看完整内容[请看2#楼]

switch基本用法没有掌握,switch中要含有defalut
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2016-12-29 14:33:36 | 显示全部楼层
switch基本用法没有掌握,switch中要含有defalut
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复

使用道具 举报

15

主题

406

帖子

0

精华

高级会员

Rank: 4

积分
795
金钱
795
注册时间
2015-3-26
在线时间
151 小时
发表于 2016-12-29 14:40:57 | 显示全部楼层
看下变量的生命周期在不在作用范围内,还有串口进来直接判断这样是不可靠
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7539
金钱
7539
注册时间
2016-11-30
在线时间
641 小时
发表于 2016-12-29 14:50:42 | 显示全部楼层
发送0X51的时候串口助手有收到0X51吗?
回复

使用道具 举报

3

主题

85

帖子

0

精华

高级会员

Rank: 4

积分
586
金钱
586
注册时间
2016-5-13
在线时间
106 小时
发表于 2016-12-29 17:31:25 | 显示全部楼层
switch函数最下面要加deafault默认执行函数)break;否则只要有一次判断有问题就跑偏了,你可以把switch改成if,else if格式再试一遍来验证你的函数是不是有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 05:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表