FreeModbus在STM32上移植...1.5的,调试使用的是modscan32,可以响应命令,但是没做返回数据。 使用串口1和TIM2 参考前辈的一些移植范烈,没多少解释,编译通过,但是不能正常接受命令。 我仔细分析了下,FreeModbus使用的定时器和协议上的时序要求不是一样的,区别: RTU模式:协议上是字符间空闲时间大于1.5个字符时间,则认为该帧不完整;帧之间间隔必须大于3.5个字符时间。 FreeModbus在第一次接收到字符时启动定时器,并从空闲状态转入接收状态,每接收一次字符,判断接收字符的长度大于等于4或3(RTU/ASCII模式最小帧长度)&& CRC校验,如接收到完整的帧,则转入执行模式...其中定时器的作用是在一定时间内,若未接收到完整的帧,超时后转入空闲模式,缓存指针指向0位置;该时间长度为 大于最大帧在指定波特率传输一帧所需要的时间,即为定时器溢出中断时间。定时器不涉及RTU传输协议的时间处理(我之前误解了)。 修改定时器时间后,现在可以接收到modscan32发送的标准指令了,不过没有写返回。 里面可能还有一些错误,需要的参考参考,一起讨论学习吧。。。
ourdev_654434SOCVNS.rar
(482.68 KB)
(下载次数: 1580, 2012-12-19 15:09 上传) |
赶紧学习学习
感谢楼主