stm32的串口5接485,115200波特率导致死机,9600却没事,求助!!

2019-12-27 18:59发布

本帖最后由 guxingganyue 于 2012-11-22 09:34 编辑

如题,我用stm32f103VET6的串口5和485通信,串口每次向485发送150字节,上位机每个1秒发一条命令,串口收到后就向485发送150字节

目前的现象是115200波特率的话,单片机会死机(lcd屏幕不刷新了),但是定时器中断还能触发(led灯在闪烁),26秒后内部狗复位,一切恢复正常

上位机继续发命令,不到3分钟的时间单片机死了

但是我用9600的波特率通信,1秒发一次命令,测试了1个晚上机器也没有死机

1、单片机和上位机间的连线不是很长,就2米左右,485芯片为:max3485,贵的那种
2、stm32外接8M晶振,系统跑72M

下面是485的连接图:请高手指教

注:把那个120欧姆的电阻去掉与否现象一样

111.png (38.89 KB, 下载次数: 0) 下载附件 2012-11-22 09:32 上传

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
38条回答
dadatou
2019-12-28 19:58
1.硬件没有问题,STM32串口115200波特率长时间工作的飘过,另,从原理上看,485电路也没有问题.
2.可能串口接收中断里做的事情太多.9600时,有足够的时间处理,115200时,可能处理不过来.建议接收中断里面,只将接收到的数据放到缓冲区,不做其他处理,
3.屏不显示,但定时器还在工作,说明单片没有死机,可能程序卡在某处,或者一直在中断里面出不来.请检查程序的容错能力.
4.485在收发切换时,最好有一小段延时,因为当接收完成后需要发送数据时,如果立刻切换到发送状态并发送,可能导致第一个字节对方收不到.
5.问题描述不够详细,最好贴上代码,大家帮你分析.

一周热门 更多>