STM32
直播中

张览秀

9年用户 1239经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

STM32F030长时间运行后,串口会死掉的原因?怎么解决?

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

回帖(2)

金鼎

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

摩托罗拉

2024-4-16 16:35:09
串口死掉的原因可能是由于硬件或软件问题导致的。

可能的原因包括:
1. 缓冲区溢出:长时间运行后,串口接收或发送的数据量可能超过了串口接收和发送缓冲区的容量,导致数据丢失或无法发送。
2. DMA传输错误:长时间运行后,DMA传输可能发生错误,导致无法正确接收或发送数据。
3. 电源问题:长时间运行后,电源稳定性可能受到影响,导致芯片或串口电路工作不正常。

解决方法:
1. 增加串口接收和发送缓冲区的容量,确保缓冲区足够大,以避免溢出现象发生。
2. 在代码中加入错误处理机制,例如在传输错误的时候重新初始化串口或重启芯片。
3. 检查电源稳定性,确保电源供应正常,可以通过添加电源过滤电路或使用更稳定的电源来解决该问题。
4. 如果问题仍然存在,可以考虑使用更高级的调试工具,如逻辑分析仪,以帮助分析问题所在。

注意:长时间运行后产生的问题也可能是由于其他原因引起的,因此需要仔细调查和分析问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分