amobbs.com 阿莫电子技术论坛

标题: 请教一下哪位在28035上做过freemodbus移植?运行时不进中断 [打印本页]

作者: jiang_520_smart    时间: 2020-4-15 20:26
标题: 请教一下哪位在28035上做过freemodbus移植?运行时不进中断
本帖最后由 jiang_520_smart 于 2020-4-15 20:25 编辑

从freemodbus网站下载的v1.6版源码,参照596142041大神在F28335上移植的代码进行了修改。根据freemodbus应用说明,在指定的源文件处增加串口和定时器的初始化、中断等处理。
修改完成后,在主函数中初始化modbus,并使能,在死循环中调用相应的函数。用电脑串口发送查询帧,不进入接收中断,导致modbus认为总线始终是空闲的。无法工作。
在主函数中屏蔽初始化和使能modbus的代码,直接初始化定时器、开收发中断、开定时器中断,接收中断中读取接收到的字节,再使能发送并将接收到的字节发出,在发送完成中断中重新使能接收,能够正常收发。定时器中断打开,也能正常进入。
目前分析原因可能是内存划分不合理,造成数据调用时出错。
cmd文件是在产品上用过的。对.map文件不太懂,查找不到原因。因此请教,请有经验的兄弟指点。
附件是在CCSv9上创建的工程文件夹。

作者: CCS    时间: 2020-4-15 20:34
你不用Modbus,串口中断能进入吗?估计是你的中断配置有问题。
作者: jiang_520_smart    时间: 2020-4-15 20:35
CCS 发表于 2020-4-15 20:34
你不用Modbus,串口中断能进入吗?估计是你的中断配置有问题。

能进入,收发中断都能进。
作者: CCS    时间: 2020-4-15 20:41
看看你的程序调用xMBPortSerialInit是不是正确,这个函数里面对串口的配置是不是正确的
作者: jiang_520_smart    时间: 2020-4-16 09:33
CCS 发表于 2020-4-15 20:41
看看你的程序调用xMBPortSerialInit是不是正确,这个函数里面对串口的配置是不是正确的 ...

我直接在主函数里调用这个串口初始化函数,是正确的。
实际使用modbus的时候调用eMBInit这个函数,这个函数里含有串口初始化的调用。
作者: CCS    时间: 2020-4-16 10:28
你确定接收中断一次都进不了吗?还是modbus没返回,认为没进接收中断?
作者: jiang_520_smart    时间: 2020-4-18 09:09
CCS 发表于 2020-4-16 10:28
你确定接收中断一次都进不了吗?还是modbus没返回,认为没进接收中断?

中断进不了,modbus还没开始工作。怎么也得从进接收中断开始吧?
作者: 596142041    时间: 2020-4-19 01:04
不知道你在初始化的时候开启了中断了没,之前我是在28335的平台上面进行验证的,之后还在STM32F4的平台上面验证过
作者: jiang_520_smart    时间: 2020-4-20 11:18
596142041 发表于 2020-4-19 01:04
不知道你在初始化的时候开启了中断了没,之前我是在28335的平台上面进行验证的,之后还在STM32F4的平台上面验 ...

原创来了 中断配置是没问题的。我把初始化子函数自己调出来,收发中断和定时器中断都能进入。




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4