[MM32软件] 栈没溢出的情况下为啥还是会死机

[复制链接]
 楼主| SophiaOP 发表于 2025-4-20 16:47 | 显示全部楼层 |阅读模式
灵动MM32F系列频繁死机,断电重启才能恢复!调试发现堆栈溢出但实际用量未超,有没有人遇到过类似玄学问题?开发环境是KEIL5,已排除代码逻辑错误。
xuanhuanzi 发表于 2025-4-23 15:49 | 显示全部楼层
在程序分段做标记,记录死机出现的位置,想法锁定死机位置,看看是相同的位置还是随机位置。可以用printf打印位置标记
xuanhuanzi 发表于 2025-4-23 16:06 | 显示全部楼层
电源与复位电路问题
现象
断电重启才能恢复,可能与电源噪声或复位电路不稳定有关。

排查方法
电源监控:

用示波器观察MCU的VDD和VSS引脚在死机瞬间是否有电压跌落或毛刺。

检查复位引脚(NRST)是否因干扰触发意外复位。

看门狗配置:

确认是否启用独立看门狗(IWDG)但未及时喂狗。

检查窗口看门狗(WWDG)的窗口时间配置是否合理。

解决方案
在VDD附近增加10-100μF电解电容和0.1μF陶瓷电容。

在NRST引脚增加0.1μF电容到地,抑制干扰。

若使用看门狗,添加喂狗日志或调试断点确认喂狗逻辑。
申小林一号 发表于 2025-4-24 18:36 | 显示全部楼层
学习一下
两只袜子 发表于 2025-4-28 12:09 | 显示全部楼层
若同时启用复杂外设,可能导致堆栈与全局变量、堆内存竞争。
jcky001 发表于 2025-4-28 12:10 | 显示全部楼层
临时禁用非关键外设,观察是否仍有死机现象。
cr315 发表于 2025-4-28 12:11 | 显示全部楼层
中断优先级配置不当?
elephant00 发表于 2025-4-28 12:11 | 显示全部楼层
检查中断优先级,避免高优先级中断长时间占用堆栈。
flycamelaaa 发表于 2025-4-28 12:13 | 显示全部楼层
试着降低优化级别。
duo点 发表于 2025-4-28 12:16 | 显示全部楼层
禁用所有外设,仅保留基本时钟和GPIO,观察是否仍有死机现象。
laocuo1142 发表于 2025-4-28 16:00 | 显示全部楼层
建议在链接脚本中为中断单独分配堆栈,避免与主堆栈竞争。
powerantone 发表于 2025-4-28 18:03 | 显示全部楼层
检查硬件复位源是否被误触发。
stormwind123 发表于 2025-4-28 20:00 | 显示全部楼层
看门狗复位。
classroom 发表于 2025-4-28 20:30 | 显示全部楼层
升级J-Link或ULINK的固件至最新版本。
probedog 发表于 2025-4-28 21:00 | 显示全部楼层
电源噪声、晶振不稳定或PCB走线阻抗过高,可能导致MCU运行异常,间接引发堆栈溢出。
桃乐丝 发表于 2025-7-29 16:11 | 显示全部楼层
除栈溢出外,野指针访问、硬件异常(如看门狗未喂)、中断死循环等可致死机。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

293

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

35

主题

293

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部