[STM32F1] 485方向脚导致卡死

[复制链接]
758|5
 楼主| DEMRY 发表于 2020-11-4 13:32 | 显示全部楼层 |阅读模式
MAX485+STM32F103。

主机设备数据量偶尔会很大且无间隔。当从机设备回复的时候方向脚置为发送使能,然后启动发送,发送完成进入中断函数将方向脚改为接收使能。但是由于主机设备数据很大,会发生数据碰撞,从而导致从机无法进入发送完成中断,从而导致方向脚无法翻转为接收,从而导致接收中断无法再触发。

我目前在应用层加了很多判断条件,能够降低触发的概率,但是仍会有极低的概率触发。

请教应该怎样处理方向脚的编程,从而从根本上解决这个问题。

再就是为什么485总线的数据碰撞会导致uart发送时无法进入中断。
肥羊 发表于 2020-11-4 15:04 | 显示全部楼层
我猜测大概率是一直在串口中断里面

评论

不在中断里 打断点是一直在main 无法进入中断  发表于 2020-11-4 17:50
xyz549040622 发表于 2020-11-4 15:39 | 显示全部楼层
你应该是没有用modbus,只是单纯的双方收发数据吧。上modbus就好了。
LcwSwust 发表于 2020-11-4 16:53 | 显示全部楼层
你的意思是在发一串数据的中间使能了接收且收到了数据?
接收数据时清除了发送完成中断标志?那就是接收程序的问题了.
一般也不能这样搞啊,要发完一帧之后再使能接收啊.
或者用硬件:
485收发切换.jpg
(电容整小一点)
 楼主| DEMRY 发表于 2020-11-4 17:51 | 显示全部楼层
xyz549040622 发表于 2020-11-4 15:39
你应该是没有用modbus,只是单纯的双方收发数据吧。上modbus就好了。

就是modbus 但是各家程序对于时序处理不严谨导致的  目前主机没办法改  让我的从机改。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部