本帖最后由 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 上传
2.可能串口接收中断里做的事情太多.9600时,有足够的时间处理,115200时,可能处理不过来.建议接收中断里面,只将接收到的数据放到缓冲区,不做其他处理,
3.屏不显示,但定时器还在工作,说明单片没有死机,可能程序卡在某处,或者一直在中断里面出不来.请检查程序的容错能力.
4.485在收发切换时,最好有一小段延时,因为当接收完成后需要发送数据时,如果立刻切换到发送状态并发送,可能导致第一个字节对方收不到.
5.问题描述不够详细,最好贴上代码,大家帮你分析.
一周热门 更多>