[STM32F1] STM32如何处理嵌入式系统中的复位问题?

[复制链接]
2275|10
 楼主| 王派oo 发表于 2025-2-28 23:07 | 显示全部楼层 |阅读模式
STM32中的复位源有哪些?如何正确处理芯片的复位?
公羊子丹 发表于 2025-3-3 07:47 | 显示全部楼层
STM32F1 的复位源有很多,比如电源复位(POR/PDR)、外部复位(NRST 引脚)、看门狗复位(IWDG/WWDG)、软件复位(NVIC_SystemReset)等,你主要关注哪种?
周半梅 发表于 2025-3-3 07:48 | 显示全部楼层
你有没有检查 RCC_CSR 寄存器?它可以告诉你上次复位的来源,比如是掉电复位、看门狗复位还是软件复位。
帛灿灿 发表于 2025-3-3 07:50 | 显示全部楼层
你的系统是频繁复位,还是复位后不能正常启动?如果是频繁复位,可能是供电不稳定或者 IWDG 被错误触发了。
童雨竹 发表于 2025-3-3 07:51 | 显示全部楼层
试试看在 main() 里先读取 RCC_CSR,然后清除标志,这样可以在下次复位时判断具体的复位原因。
万图 发表于 2025-3-3 07:53 | 显示全部楼层
你的 NRST 引脚有外接上拉电阻吗?如果这个引脚悬空或者受干扰,可能会导致 MCU 异常复位。
Wordsworth 发表于 2025-3-3 07:54 | 显示全部楼层
如果是低功耗模式下复位,检查一下 PWR_CR 和 PWR_CSR,看看是不是掉电或者低功耗唤醒导致的异常复位。
Bblythe 发表于 2025-3-3 07:56 | 显示全部楼层
看门狗复位 (IWDG/WWDG) 需要定期喂狗,否则系统会强制复位,你有没有检查代码里有没有遗漏喂狗的地方?
Pulitzer 发表于 2025-3-3 07:57 | 显示全部楼层
你的 Flash 选项字节里有没有设置 nBOOT0 或 nBOOT1?错误的 BOOT 配置可能导致复位后无法正确启动。
Uriah 发表于 2025-3-3 07:59 | 显示全部楼层
复位后程序有没有异常停滞?可以用 HAL_RCC_GetResetSource() 或手动检查 RCC_CSR,然后串口打印复位原因,看看问题出在哪。
Clyde011 发表于 2025-3-3 08:00 | 显示全部楼层
你是用外部晶振还是内部时钟?如果 HSE 失败,系统可能会进入 HSI 运行模式,但某些情况可能会导致系统卡在复位循环里。
温室雏菊 发表于 2025-3-22 01:23 | 显示全部楼层
STM32 微控制器中,复位源是指导致芯片复位的各种事件或条件。了解这些复位源以及如何正确处理复位,对于系统稳定性和调试非常重要

失物招領 发表于 2025-3-22 02:23 | 显示全部楼层
电源复位,当电源电压从无到有(上电)或低于特定阈值时,芯片会自动复位。由内部电源监控电路触发

她已醉 发表于 2025-3-22 03:25 | 显示全部楼层
NRST 引脚复位,当 NRST 引脚被拉低(低电平有效)时,芯片会复位。通常用于手动复位或外部复位电路

将爱藏于深海 发表于 2025-3-22 04:23 | 显示全部楼层
看门狗复位,如独立看门狗(IWDG):如果看门狗计数器溢出且未及时喂狗,芯片会复位。窗口看门狗(WWDG):如果看门狗计数器在特定窗口外被刷新,芯片会复位

捧一束彼岸花 发表于 2025-3-22 05:23 | 显示全部楼层
通过设置 AIRCR 寄存器中的 SYSRESETREQ 位,可以触发软件复位

故意相遇 发表于 2025-3-22 06:23 | 显示全部楼层
低功耗模式复位,在某些低功耗模式下(如 Standby 模式),芯片可能会复位

春日负喧 发表于 2025-3-22 07:27 | 显示全部楼层
选项字节加载复位,当加载选项字节(Option Bytes)时,芯片会复位

白马过平川 发表于 2025-3-22 08:23 | 显示全部楼层
硬件故障复位,如果检测到硬件故障(如时钟失效、非法内存访问等),芯片会复位

西洲 发表于 2025-3-22 09:23 | 显示全部楼层
STM32 提供了 RCC_CSR 寄存器,用于记录复位源的状态。通过读取该寄存器,可以判断复位的具体原因。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

308

帖子

0

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