嵌入式技术论坛
直播中

五斤麻辣油

8年用户 1258经验值
擅长:电源/新能源
私信 关注
[问答]

求大佬指点一下FreeModbus从机模式接收中断不能触发

硬件平台: AT32F403A

问题:

我把freemodbus下载到我的项目中, 没有做过的的修改, 只是写了段代码.

static rt_thread_t modbus_thread = RT_NULL;
void AppModbus_Thread(void *parameter){
eMBErrorCode mb_err = MB_ENOERR;
mb_err = eMBInit(MB_RTU,10,2,115200,MB_PAR_NONE);
if(mb_err != MB_ENOERR){
LOG_E("freemodbus init fail. code=%d",mb_err);
}
mb_err = eMBEnable();
if(mb_err != MB_ENOERR){
LOG_E("freemodbus enable fail. code=%d",mb_err);
}
while(1){
mb_err = eMBPoll();
if(mb_err != MB_ENOERR){
LOG_E("freemodbus poll error. code=%d",mb_err);
}
rt_thread_mdelay(1);
}
}
rt_err_t AppModbus_Init(){
modbus_thread = rt_thread_create("modbus", AppModbus_Thread, RT_NULL, 1024, 5, 5);
if(modbus_thread == RT_NULL){
LOG_D("modbus_thread create fail");
return RT_ERROR;
}
if(rt_thread_startup(modbus_thread) != RT_EOK){
LOG_D("modbus_thread startup fail");
return RT_ERROR;
}
return RT_EOK;
}

运行后没有保存,使用Modbus Poll 显示Timeout Error
我尝试了官方的mb_slave_sample 也不能通信.

我debug 逐步运行看串口的初始化, 也没有问题

我试着使用串口发送一个”ok”, 串口发送正常的, 也成功初始化
然后在 接收中断函数打了断点, 每次发送数据无法触发.

我看了enable里的代码,也没有问题.

我没有办法, 上次使用ST裸机移植freemodbus, 也费了好大的力气, 这次用rtt的包, 这个freemodbus还是有好多问题. 希望大佬分享下经验.

回帖(3)

张波

2022-11-25 10:17:36
loogg大佬的agile_modbus非常好用,可以试试
举报

五斤麻辣油

2022-11-25 10:17:48
库内部我没有做任何修改
举报

五斤麻辣油

2022-11-25 10:17:57
问题解决了, 我也找到了不能触发中断的问题了, 硬件那边没有印丝印, 我看了走线图才发现线接错了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分