硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4770|回复: 3
收起左侧

[有问必答] modbus主机移植

[复制链接]

7

主题

21

回帖

42

积分

新手上路

积分
42
发表于 2021-3-17 13:40:13 | 显示全部楼层 |阅读模式
移植modbus主机程序的时候,用modbus slave模拟从机,从slave的串口显示是有数据接受和发送的,但是刚上电的时候发送的数据不对,slave从机先收两帧错误码。然后找了下问题,发现串口一被重映射为printf,感觉可能会冲突,就把这个重映射函数给屏蔽了,发现剩下两个485都不能用了,汉哥,有什么解决办法吗,我串口一也需要485输出

回复

使用道具 举报

7

主题

21

回帖

42

积分

新手上路

积分
42
 楼主| 发表于 2021-3-17 15:24:02 | 显示全部楼层
还有个问题就是我单步调试,发现这个g_modh_timeout = 0一直等于0,进入不了解析函数。这个跟什么有关系啊,我现在有三路485,用的串口1,2,3.两路从机,一路主机,两路从机的硬件定时中断函数分别是bsp_StartHardTimer(1, timeout, (void *)MODS_RxTimeOut);bsp_StartHardTimer(2, timeout, (void *)MODSl_RxTimeOut);主机的硬件定时中断是bsp_StartHardTimer(3, timeout, (void *)MODH_RxTimeOut);这个有问题吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2021-3-19 08:47:42 | 显示全部楼层
建议最好两个板子之间调试,然后将相应的信息打印展示出来,这样调试是最可靠的。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2021-3-21 14:44:30 | 显示全部楼层
上周我调试主机模式的时候,读一个BYTE出来后,忘记把缓存的数量减一,导致程序过一会就跑飞。

多看几个历程就清楚了。串口只管收发任务,其中纯粹对接到接收和发送的BUFFER. MODBUS通信协议可以理解成在自己设计的时间节奏去跟那两个buffer做数据解析。
Releasing your creativity
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 03:09 , Processed in 0.151539 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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