OpenEdv-开源电子网

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

switch 的default里面存在USART2通信时不正常。

[复制链接]

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-7-29 17:10:38 | 显示全部楼层 |阅读模式
1金钱
今天测试Modbus-RTU从站通讯,从站判断主站请求的功能使用了switch case,发现default中的通讯不能正常执行。
default里面的函数是在遇到不支持的从站功能时执行,用模拟软件发出不支持的功能,每次都在default函数里不能出来,死机。
default执行的函数和其他情况下的函数没有特殊的地方。
我把default执行的函数替换成支持的功能函数,一样出现死机。
[mw_shl_code=c,true] //提取功能码做判断
            switch(RX_Struct.Buffer[1]){
                case 0x01:SlaveFunc_0x01();  //读多个DQ_0xxxx
                          break;
                case 0x0F:SlaveFunc_0x0F();  //写多个DQ_0xxxx
                          break;
                case 0x02:SlaveFunc_0x02();  //读多个DI_1xxxx
                          break;
                case 0x04:SlaveFunc_0x04();  //读多个AI_3xxxx
                          break;
                case 0x03:SlaveFunc_0x03();  //读多个HoldReg_4xxxx
                          break;
                case 0x10:SlaveFunc_0x10();  //写多个HoldReg_4xxxx
                          break;
                default:  //Default_NonSupport();  //不支持的功能处理。
                          SlaveFunc_0x01();
                          
            }[/mw_shl_code]
这是代码片段。
Default_NonSupport()的实现和其他情况下的函数类似,只是数据不同。
换成SlaveFunc_0x01()还是死机。
SlaveFunc_0x01()在case 0x01时是正常执行的。
我把Default_NonSupport()里面的通信功能SendFrame()去掉后正常。
SendFrame()里面调用了USART2串口通信。
--------------
情况就是default里面如果有USART2通信就不行了。
换成USART1是正常的。
乱了。


最佳答案

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

已经找到问题答案了。 粗心了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-7-29 17:10:39 | 显示全部楼层
已经找到问题答案了。
粗心了。
回复

使用道具 举报

18

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
377
金钱
377
注册时间
2013-3-1
在线时间
50 小时
发表于 2018-7-29 18:15:53 | 显示全部楼层
default  后面没有break?
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-7-29 19:29:28 | 显示全部楼层
huarana 发表于 2018-7-29 18:15
default  后面没有break?

default后面有没有break都可以的,最后一条case了嘛。
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-7-29 20:11:14 | 显示全部楼层
问题找到了,不是default的问题。
不过我现在还没有找到导致问题的问题。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 01:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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