发新帖我要提问
12
返回列表
打印
[STM32H7]

系统一段时间就死机是堆栈爆了吗?

[复制链接]
楼主: Uriah
手机看帖
扫描二维码
随时随地手机跟帖
21
.ADC转换异常、UART通信故障等硬件问题可能间接导致系统崩溃。

使用特权

评论回复
22
失物招領| | 2025-5-20 10:00 | 只看该作者
未初始化的变量、指针操作不当或数组越界可能引发数据错误。

使用特权

评论回复
23
捧一束彼岸花| | 2025-5-20 16:00 | 只看该作者
动态内存分配(如malloc和free)使用不当可能导致内存碎片化,最终引发死机

使用特权

评论回复
24
iyoum| | 2025-5-21 15:21 | 只看该作者
软件中的逻辑错误、无限循环、资源竞争等都可能导致系统死机。

使用特权

评论回复
25
海滨消消| | 2025-5-21 16:21 | 只看该作者
也可能由硬件故障、内存越界访问等其他因素造成。

使用特权

评论回复
26
cr315| | 2025-5-21 16:22 | 只看该作者
也可能是因为访问了数组范围之外的内存位置或使用野指针导致的。

使用特权

评论回复
27
pl202| | 2025-5-21 16:56 | 只看该作者
检查电源稳定性,可添加电源滤波器;检查硬件连接,确保无误;检查晶振电路是否正常,包括晶振及旁路电容的配置是否得当,以及晶振是否尽可能靠近单片机。

使用特权

评论回复
28
lihuami| | 2025-5-21 17:13 | 只看该作者
检查函数调用深度、中断嵌套层级、局部变量大小。

使用特权

评论回复
29
jcky001| | 2025-5-21 18:08 | 只看该作者
电源干扰、连接器故障或传感器故障等硬件问题,也可能导致程序卡死。

使用特权

评论回复
30
averyleigh| | 2025-5-21 18:53 | 只看该作者
可以通过查看堆栈指针(SP)的值来检查是否发生了堆栈溢出。如果SP的值超出了堆栈区域的正常范围,那么很可能发生了堆栈溢出。

使用特权

评论回复
31
deliahouse887| | 2025-5-21 19:08 | 只看该作者
如果在printf函数和ISR之间共享了某些全局变量,而没有适当的同步机制(如临界区、互斥锁等),可能会导致竞争条件,引起数据不一致或乱码。

使用特权

评论回复
32
macpherson| | 2025-5-21 19:37 | 只看该作者
避免在ISR中使用大块局部变量,改用全局变量或静态变量。

使用特权

评论回复
33
timfordlare| | 2025-5-21 21:00 | 只看该作者
增加堆栈大小、优化代码以减少堆栈使用、使用堆栈溢出检测机制等。

使用特权

评论回复
34
elsaflower| | 2025-5-21 21:32 | 只看该作者
错误的系统配置,如时钟设置错误、中断优先级设置不当等,可能导致系统死机。

使用特权

评论回复
35
mickit| | 2025-5-21 22:20 | 只看该作者
尽量减少ISR内的操作,仅进行必要的状态更新或标志位设置,避免在ISR内部调用printf或其他可能引发长时间阻塞的函数。

使用特权

评论回复
36
macpherson| | 2025-5-21 22:48 | 只看该作者
动态分配内存 后未释放,导致堆空间耗尽,最终与栈空间冲突。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则