FreeModbus在STM32上移植。

 http://www.amobbs.com/thread-4848191-1-1.html (出处: amoBBS 阿莫电子论坛)

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(文件大小:483K) (原文件名:STM32_MODBUS.rar)

你可能感兴趣的:(Freemodbus)