OpenEdv-开源电子网

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

串口通信主站协议解析程序优化

[复制链接]

13

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2021-3-6
在线时间
115 小时
发表于 2022-6-28 17:31:05 | 显示全部楼层 |阅读模式
无标题.png
如图,代码是MODBUS主站代码,访问从机后需要等待从机返回指令,解析,如果从机没有返回或者返回指令解析失败,将重新发送指令,循环tim次。
问题:
   代码需要等待从机指令正确返回,而从机收到数据后会处理,然后再返回数据(固定),大概需要20ms时间,主站中就需要等待25ms,如果从机没有及时返回或者因为干扰原因导致数据异常,就会多次等待,造成CPU浪费严重。就算使用实时系统也没有明显改善,代码主要就是主站通信代码,串口资源在没有跳出协议解析时是一直被占用的。
so,所以各位有没有更合适的解决方案?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

644

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1976
金钱
1976
注册时间
2021-4-16
在线时间
505 小时
发表于 2022-6-29 10:01:45 | 显示全部楼层
回复 支持 反对

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8463
金钱
8463
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-6-29 10:53:52 | 显示全部楼层
状态机了解一下:
//定时调用此函数
void pwm_pro(void)
{
static char state=0;//状态

switch(state)
{
   case 0:发送指令;state++;break;
   case 1:读取指令;if(超时)state=0;break;
   .......
}

}

另外可以了解一下“小小调度器”
专治疑难杂症
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 14:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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