正点原子精英板移植freemodbus-v1.6

移植完成通讯测试截图:

硬件连接:

移植过程:

一、首先下载:FreeModbusV1.6源码

FreeMODBUS官网:

https://www.embedded-solutions.at/zh-hans/freemodbus/

准备一份精英板工程文件夹

修改名称为:

解压FreeModbusV1.6源码

里面的文件:

Demo例有很多移植例子就是没有STM32的......

在精英板工程文件夹里添加一个文件夹FreeModbus

将FreeModbusV1.6源码文件夹里的modbus文件夹内的所有文件复制到精英板工程文件夹里的FreeModbus文件夹里

再将FreeModbusV1.6源码文件夹里的demo文件夹内的BARE文件夹内的port文件夹复制到精英板工程文件夹里的FreeModbus文件夹里

打开MDK工程,添加工程分组FreeModbus,并将工程文件夹FreeModbus内的除Port内的所有.c文件添加到工程分组FreeModbus内

填加相应的头文件目录:

添加工程分组FreeModbusPort,并将工程文件夹FreeModbus内的port文件内所有.c文件添加进来:

编译发现两个错,五个警告:

接下来就是修改文件了:

port.h 可以不修改

porttimer.c 

添加定时器初始化代码这里使用TIM参数50us时基

BOOL

xMBPortTimersInit( USHORT usTim1Timerout50us )

定时器开启函数实现

void

vMBPortTimersEnable(  )

定时器关闭函数实现

void

vMBPortTimersDisable(  )

添加定时器中断服务程序

Portserial.c

发送接收使能函数配置:

void

vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable )

串口初始化函数配置:

BOOL

xMBPortSerialInit( UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity )

配置串口发送和接收字节函数:

BOOL

xMBPortSerialPutByte( CHAR ucByte )

最后添加串口中断处理函数

在main.c添加四个处理函数

注意事项:mbRTU.ceMBRTUSend中稍作修改,代码如下。

/* Activate the transmitter. */

//发送状态转换,在中断中不断发送

eSndState = STATE_TX_XMIT;

//插入代码 启动第一次发送,这样才可以进入发送完成中断

xMBPortSerialPutByte( ( CHAR )*pucSndBufferCur );

pucSndBufferCur++; 

usSndBufferCount--;

//使能发送状态,禁止接收状态

vMBPortSerialEnable( FALSE, TRUE );

寄存器的起始地址

若出现无法读取寄存器起始地址0地址内容,在计算偏移地址时要多-1或者定义起始地址为1,可解决问题,

也可以修改Freemodbus函数让其从0地址开始处理,而不是1地址。

参考资料:https://www.amobbs.com/thread-5491615-1-1.html

代码已上传我的资源,需要的朋友自行下载吧。

https://download.csdn.net/download/qq_41664294/11264558

  • 6
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
freemodbus-v1.6 是一个开源的Modbus通信协议栈库,用于实现基于Modbus协议的工业自动化系统。这个库提供了一系列的功能,包括Modbus主机和从机的实现,支持串口和以太网通信,适用于不同的硬件平台。 freemodbus-v1.6的主要特点有: 1. 开源免费:这个库是开源的,任何人都可以免费使用、修改和分享它。它基于GNU General Public License 2.0(GPLv2)许可证发布,这意味着用户可以自由地使用和修改源代码。 2. 灵活性:freemodbus-v1.6具有高度的灵活性,可以用于不同的硬件平台和操作系统。它支持多种串口和以太网通信方式,适用于各种工业自动化环境。 3. 数据传输可靠性:这个库提供了高度可靠的数据传输机制,保证了数据的完整性和准确性。它支持不同的Modbus传输模式,如RTU(二进制)和ASCII(文本),以满足不同的应用需求。 4. 易于集成和使用:freemodbus-v1.6的代码简洁清晰,易于理解和使用。它提供了丰富的API和示例代码,帮助用户快速集成和开发Modbus通信功能。 5. 多种功能扩展:除了基本的Modbus功能,freemodbus-v1.6还支持多种扩展功能,如Modbus TCP支持、多连接支持、Modbus主站/从站模式等。用户可以根据自己的需求选择并扩展这些功能。 总之,freemodbus-v1.6是一个强大而灵活的Modbus通信协议栈库,适用于各种工业自动化场景。它的开源免费和易于集成使用的特点,使得它成为了许多工程师和开发者的首选。无论是初学者还是经验丰富的专业人士,都能够通过使用freemodbus-v1.6轻松地实现Modbus通信功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值