单片机死机后怎么自动恢复?

嵌入式 · 1 浏览
单片机死机后怎么自动恢复?

回答(4)

如果系统对实时性要求高,看门狗超时太短会误复位,建议用窗口看门狗(WWDG)更精准。
码农老王 · 2026-08-17
建议加个心跳LED,死机时看门狗复位后LED闪速变化,能快速判断是复位还是真死。
嵌入式小白 · 2026-08-17
喂狗别放中断里,我吃过亏,中断里喂狗主循环死锁照样复位不了,白搭。
老电工阿强 · 2026-08-17
单片机死机后自动恢复的核心是看门狗(WDT)。硬件看门狗(如STM32的IWDG)在程序跑飞或死循环时无法及时喂狗,超时后强制复位。软件上要确保喂狗代码放在主循环或关键任务中,避免在中断里喂狗(否则死循环可能绕过)。 实操建议: 1. 初始化独立看门狗,设置合适的超时时间(如1秒),喂狗间隔小于超时值。 2. 在主循环末尾喂狗,并监控关键任务标志,若任务卡死则主动触发软件复位(NVIC_SystemReset)。 3. 对电源波动或EMI干扰,可加外部看门狗芯片(如MAX706)或使用双看门狗策略。 4. 记录复位原因(RCC_CSR寄存器),便于调试。 示例代码(STM32): ```c void IWDG_Init(void) { IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); IWDG_SetPrescaler(IWDG_Prescaler_64); // 约1s超时 IWDG_SetReload(0xFFF); IWDG_ReloadCounter(); IWDG_Enable(); } int main(void) { IWDG_Init(); while(1) { // 业务逻辑 IWDG_ReloadCounter(); // 喂狗 } } ``` 注意:看门狗不能解决所有死机(如硬件故障),需配合外部复位电路和故障诊断。
mcuku 阿沐 · 2026-08-17