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 上传

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
37条回答
dadatou
1楼-- · 2019-12-29 11:05
接收中断里确实不多,定时器中断和接收中断的优先级哪个高啊
zzfei90
2楼-- · 2019-12-29 16:32
定时器中断里面你干什么了?我感觉你定时器中断优先级设的太高了,一般通信才是比较重要的,因为串口是异步通信,如果被其他中断打断的话,可能会造成接收数据错误
你上位机每次下发的数据都一样没有改变吗?
guxingganyue
3楼-- · 2019-12-29 21:27
dadatou 发表于 2012-11-22 10:26
接收中断里确实不多,定时器中断和接收中断的优先级哪个高啊

定时器中断的优先级最高,485串口接收中断的最低
guxingganyue
4楼-- · 2019-12-30 00:55
zzfei90 发表于 2012-11-22 10:28
定时器中断里面你干什么了?我感觉你定时器中断优先级设的太高了,一般通信才是比较重要的,因为串口是异步 ...

不一样,我发4个数据,就是有4个机器并联
dadatou
5楼-- · 2019-12-30 05:47
 精彩回答 2  元偷偷看……
coleyao
6楼-- · 2019-12-30 06:21
我用CM0,定时中断优先级设1,串口中断和滴答中断优先级0,串口设200k速率,没有收发异常!

一周热门 更多>