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条回答
tcm123
1楼-- · 2019-12-27 21:00
检查下程序里有没死循环等待的语句,如果有加入超时跳出以确认是硬件问题还是软件问题
波特率高了误码率可能高了,程序如果有问题就会出现这种现象
guxingganyue
2楼-- · 2019-12-28 01:39
 精彩回答 2  元偷偷看……
Achin
3楼-- · 2019-12-28 03:28
中断里做的事情太多了吧?
jiege0119
4楼-- · 2019-12-28 05:40
guxingganyue 发表于 2012-11-22 09:38
串口接收程序应该没有问题
9600的波特率没死机就可以证明

9600的波特率没死机只能证明低速时软件能正常运行,并不能保证115200也能正常使用,还是先查软件比较好,像2楼说的
a105
5楼-- · 2019-12-28 10:35
你应该在串口中断里判断是否为正常接收,如果不是那你要清噪声标志位或错误位,具体是那位你试试,这种现象我在STM8上就遇到过
zzfei90
6楼-- · 2019-12-28 15:20
问题描述不清楚啊,上位机是电脑?还是别的单片机?LCD和LED都是在下位机上?LCD是靠什么刷新的?是接收到数据后刷新?
建议你先不加LCD,就测试下串口看有没问题

一周热门 更多>