打印
[STM32F1]

485方向脚导致卡死

[复制链接]
570|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DEMRY|  楼主 | 2020-11-4 13:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
MAX485+STM32F103。

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

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

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

再就是为什么485总线的数据碰撞会导致uart发送时无法进入中断。

使用特权

评论回复
沙发
肥羊| | 2020-11-4 15:04 | 只看该作者
我猜测大概率是一直在串口中断里面

使用特权

评论回复
评论
DEMRY 2020-11-4 17:50 回复TA
不在中断里 打断点是一直在main 无法进入中断 
板凳
xyz549040622| | 2020-11-4 15:39 | 只看该作者
你应该是没有用modbus,只是单纯的双方收发数据吧。上modbus就好了。

使用特权

评论回复
地板
LcwSwust| | 2020-11-4 16:53 | 只看该作者
你的意思是在发一串数据的中间使能了接收且收到了数据?
接收数据时清除了发送完成中断标志?那就是接收程序的问题了.
一般也不能这样搞啊,要发完一帧之后再使能接收啊.
或者用硬件:

(电容整小一点)

使用特权

评论回复
5
DEMRY|  楼主 | 2020-11-4 17:51 | 只看该作者
xyz549040622 发表于 2020-11-4 15:39
你应该是没有用modbus,只是单纯的双方收发数据吧。上modbus就好了。

就是modbus 但是各家程序对于时序处理不严谨导致的  目前主机没办法改  让我的从机改。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

21

帖子

0

粉丝