zhy233090130 发表于 2020-2-26 21:01:35

STM32F030长时间运行后,串口会死掉

STM32F030与其它设备通讯两个多星期都正常,但是搁置了一个多月(板子一直没有下电)后测试发现不能与设备通讯了。板子重新上下电后才可以正常通讯,请问有什么方法可以解决该问题?
PS:使用的是HAL库,串口+DMA接收和发送。

mylovemcu 发表于 2020-2-27 08:15:22

这种问题最不好处理先要确定一下是不是单片机死机了加一个指示灯闪烁判断一下(不可以在中断中闪烁灯必须在主程序中)死机的话就用看门狗可以复位当然最好是找出来是什么问题主要是软件设计的问题可能有些中断位开启以后没有在中断函数中消除中断标志平时不用没有触发长时间搁置后由于环境其他因素导致触发以后陷入死循环导致死机

zhy233090130 发表于 2020-2-27 08:40:59

mylovemcu 发表于 2020-2-27 08:15
这种问题最不好处理先要确定一下是不是单片机死机了加一个指示灯闪烁判断一下(不可以在中断中闪烁灯   ...

程序里有看门狗的,不像是MCU死机了,另外串口中断中是清标志位的。测试串口通信两三个星期都没有问题,搁置一个多月后就不能与设备通讯了,感觉是MCU的串口模块死机了,能否有状态位可以知道串口死掉?

mylovemcu 发表于 2020-2-27 08:54:11

zhy233090130 发表于 2020-2-27 08:40
程序里有看门狗的,不像是MCU死机了,另外串口中断中是清标志位的。测试串口通信两三个星期都没有问题, ...

没听过单独一个模块死机的但串口有一个问题就是双方串口不能休眠串口不支持热插拔休眠以后就需要重新复位才能使用
这种问题不好找原因从头至尾检查一遍硬件和软件有隐患的地方都处理偶发性的问题最难搞

zhy233090130 发表于 2020-2-27 17:14:45

mylovemcu 发表于 2020-2-27 08:54
没听过单独一个模块死机的但串口有一个问题就是双方串口不能休眠串口不支持热插拔休眠以后就需要重 ...

我现在发现这样的问题,MCU的串口波特率是9600,串口工具设置除9600外的值会造成MCU的串口通讯有问题,你有碰都过类似的情况吗?怎么处理的?谢谢!

mylovemcu 发表于 2020-2-28 08:11:44

zhy233090130 发表于 2020-2-27 17:14
我现在发现这样的问题,MCU的串口波特率是9600,串口工具设置除9600外的值会造成MCU的串口通讯有问题,你 ...

是什么问题?误码率高吗?误码率高的话 需要看双方的误码率都是多少不同的主频不同的波特率会产生误码率   一般9600都是0误码率比如51单片机选用11.0592MHz的晶振就是因为串口波特率的原因

zhy233090130 发表于 2020-2-28 09:08:40

mylovemcu 发表于 2020-2-28 08:11
是什么问题?误码率高吗?误码率高的话 需要看双方的误码率都是多少不同的主频不同的波特率会产生误 ...

不是误码率的问题,串口工具用波特率9600与MCU通讯一直正常,用其它波特率如38400给MCU发数据后,串口工具改回9600,MCU也收不到数据也发不出数据,就需要把MCU上下电后才能正常收发

butterflyspring 发表于 2020-3-6 17:02:20

串口的故障标志有处理么?增加一个出错处理吧。但还有一种可能,收到错误数据后处理时导致逻辑问题,这个方面也考虑一下吧:)

天臆弄人 发表于 2020-3-7 11:02:33

是MCU死了,还是串口死了啊

zhy233090130 发表于 2020-3-7 20:40:48

天臆弄人 发表于 2020-3-7 11:02
是MCU死了,还是串口死了啊

MCU有看门狗没死,应该是串口模块死了
页: [1] 2
查看完整版本: STM32F030长时间运行后,串口会死掉