RT-Thread Studio之freemodbus调试


前言

这篇文章主要是对rtthread studio freemodbus模块的调试以及问题的解决方案,其中有版本问题,以及官方示例代码无法得到结果的调试总结。

一、RT-Thread Settings配置

1.添加软件包

在这里插入图片描述

2.软件包参数进行配置

对软件包的一些参数进行配置,记住一定要选择latest版本(别选择图片里面的v1.6版本,会有bug!!!!!!!!!!!!!!)。
在这里插入图片描述
在这里插入图片描述

二、添加宏定义

第1步 在board.h重新定义
#define BSP_USING_UART2
#define BSP_UART2_TX_PIN “PA2”
#define BSP_UART2_RX_PIN “PA3”
例如本人开发板的485通讯口是连接在串口2上的。
在这里插入图片描述
在这里插入图片描述

三、编写测试代码与测试实验

1.具体部分测试代码如下

在这里插入图片描述

static void send_thread_entry(void *parameter)
{
    eMBMasterReqErrCode error_code = MB_MRE_NO_ERR;
    rt_uint16_t error_count = 0;
    USHORT data[MB_SEND_REG_NUM] = {0};

    while (1)
    {
        /* Test Modbus Master */
        data[0] = (USHORT)(rt_tick_get() / 10);
        data[1] = (USHORT)(rt_tick_get() % 10);
        rt_thread_mdelay(10);
        error_code = eMBMasterReqWriteMultipleHoldingRegister(SLAVE_ADDR,          /* salve address */
                                                              MB_SEND_REG_START,   /* register start address */
                                                              MB_SEND_REG_NUM,     /* register total number */
                                                              data,                /* data to be written */
                                                              RT_WAITING_FOREVER); /* timeout */

        /* Record the number of errors */
        if (error_code != MB_MRE_NO_ERR)
        {
            error_count++;
        }
        rt_kprintf("data[0] is %d\n",data[0]);
        rt_thread_mdelay(1000);
    }
}

2.代码测试与结果分析

1.测试前准备

用到的软件为Modbus Slave
在这里插入图片描述

2.V1.6版本测试结果

通过测试,程序会卡死,会出现assertion failed。
在这里插入图片描述

3.latest版本测试结果

latest版本,能将数据通过freemodbus协议将数据发送出去。
在这里插入图片描述

总结

这个模块的使用一定要注意以下两个方面:
1)freemodbus版本的选择,一定得选择latest版本。
2)在官方的例程得数据发送得前面一定得有一定的时延,不然数据发不出去,程序不会执行发送程序后的程序(例如我的打印数据的代码,这个调试心得是因为debug在线调试发现代码不往下执行,并且将打印数据的函数放前面就会正常,一旦上方没有其他代码就得不到数据,最终确定为延时的问题)。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值