freemodbus的官方介绍和下载入口,官方仓库链接:https://github.com/cwalter-at/freemodbus
modbus自己实现的话往往是有选择的支持几条指令,像断帧和异常处理可能是完全不处理的,用freemodbus实现的话要简单很多,可移植性也会更好
△ 本文的移植方法主要参考这个仓库(参考仓库1):https://github.com/eziya/STM32_HAL_FREEMODBUS_RTU
△ 一些调整参考这个仓库(参考仓库2):https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32,因为freemodbus主机并不开源,此仓库在freemodbus基础上实现了一个主机
△ 本文主要记录移植的主要步骤,不涉及其他分析,不涉及代码精简优化
△ 这里使用平台为stm32,移植官方仓库的代码,移植方法参考上面的两个仓库,模式为串口RTU
官方的仓库下载好是这样的
把这些文件夹下的文件全加到自己的项目中,./modbus
和./demo/BARE
可以一股脑的把所有的源文件和头文件目录都加上去
portserial.c
、portimer.c
、demo.c
、stm32xxxx_it.c参考仓库1
是一个stm32f4的hal工程,只要照着改就可以了,修改的内容也不多,,,参考仓库2
来完善demo.c
中的几个回调函数并添加对应的寄存器
user_mb_app.c
文件改下几个回调函数就可以了参考仓库1
是没有的,基本都是CV就行了。至此修改完成mbconfig.h
中修改授之以鱼不如授之以渔,方法如上,多折腾几遍就好了,上文中并没有事无巨细的实例操作,,,没有粘太多代码,因为只要按上面的步骤看别人的例子代码都是现成的。。。感谢开源社区的贡献者们!!