一、介绍
FreeModbus是一个开源modbus协议栈,里面包含了modbus rtu、ascii和tcp三种传输帧,功能齐全;本身是GPL协议,允许商用,实在懒得写协议栈可以用这个
二、源码下载
官网
https://www.embedded-solutions.at/en/freemodbus-downloads/
下载链接
https://github.com/cwalter-at/freemodbus
三、目录介绍
1、demo里面是不同平台的示例程序,包括接口
2、doc帮助文档
3、modbus里面是modbus的实现
4、tool一个windows的工具
5、modbus目录
四、移植
1、添加freemodbus\modbus所有文件到工程
2、在freemodbus\demo找一个相似的平台的目录添加到工程,这里以AVR为例
3、修改接口
freemodbus\demo\AVR\port有4个文件
(1)port.h
添加平台头文件
修改进入临界区和出临界区,改成总中断的关闭和打开
(2)portserial.c
实现串口相关底层函数
vMBPortSerialEnable()使能串口函数
xMBPortSerialInit()串口进行初始化由eMBRTUInit函数进行调用。
xMBPortSerialPutByte()串口发送函数
xMBPortSerialGetByte()串口接收函数
USART1_IRQHandler()串口中断函数
(3)porttimer.c
xMBPortTimersInit定时器初始化
vMBPortTimersEnable( )定时器使能
vMBPortTimersDisable( )定时器使能取消
TIM2_IRQHandler(void)定时器中断
(4)portevent.c
xMBPortEventInit()初始化事件队列
xMBPortEventPost()发送一个事件
xMBPortEventGet()读取一个事件
4、编写主函数文件,或者直接使用demo.c