
本文概述
看门狗是嵌入式系统防止程序跑飞的最后防线,STM32的IWDG和WWDG是面试常考题。面试官想听的不是背寄存器,而是你懂不懂两种看门狗的原理差异(IWDG独立时钟、WWDG窗口机制)、各自能防什么问题、以及喂狗时机和典型应用场景。本文从“看门狗是程序异常的兜底”讲起,对比IWDG(独立RC时钟、溢出即复位、适合防死循环)和WWDG(窗口内喂狗、提前/超时都复位、还能产生中断、适合监控任务时序),讲配置要点和常见坑,强调超时时间由时钟与预分频决定、按实际任务周期算,不套固定值。
核心要点
看门狗作用:程序跑飞或死循环时自动复位,是系统可靠性的兜底
IWDG独立看门狗:用独立RC时钟(LSI),一旦启动不可关闭,溢出即复位,防死循环
WWDG窗口看门狗:必须在窗口内喂狗,提前或超时都复位,还能先产生中断,监控任务时序
IWDG配置:时钟分频+重装载值决定超时时间,喂狗用重装载寄存器
WWDG配置:窗口值+计数器初值决定可喂狗窗口,注意窗口寄存器和计数器的配合
选择依据:只防跑飞用IWDG,要监控任务执行时序/提前警告用WWDG
面试官考察点
考察点拆解
面试官问STM32看门狗,重点考察:第一,你懂不懂IWDG和WWDG的本质区别——独立时钟溢出复位 vs 窗口机制;第二,你会不会配置超时时间,理解时间由时钟和分频/重装值决定;第三,你懂不懂窗口看门狗“提前喂狗也复位”的机制,能讲清它和独立看门狗适用场景的不同;第四,你有没有实际用过,知道喂狗位置和常见坑。
追问方向:IWDG和WWDG区别、超时时间怎么算、为什么WWDG提前喂狗会复位、什么时候用哪个、喂狗放哪里。
回答思路
答题主线
建议按“看门狗作用 → IWDG原理与配置 → WWDG原理与配置 → 对比选择 → 实战坑”来答,先讲清两种机制再落到选型。
先讲看门狗作用:防跑飞兜底。
讲IWDG:独立时钟、溢出复位、配置。
讲WWDG:窗口机制、提前/超时复位、中断。
对比选择:什么场景用哪个。
讲坑:喂狗位置、调试影响。
参考回答
我先讲看门狗的作用,再对比STM32的两种看门狗。
第一,看门狗是什么。看门狗是一个独立计数器:程序正常运行时要定时“喂狗”(重装载),如果程序跑飞、死循环或异常,没有及时喂狗,计数器溢出就触发系统复位,把程序拉回来。它是系统可靠性的兜底机制。
第二,IWDG独立看门狗。
时钟:用独立的低速RC时钟(LSI),不依赖系统主时钟,即使主时钟异常也还在走;
机制:计数器递减到0就复位;溢出时间由预分频和重装载值决定;一旦启动不可关闭(只能复位关闭);
配置:设预分频和重装载值(如按LSI频率算出目标超时时间),然后启动;喂狗就是重装载计数器。
第三,WWDG窗口看门狗。
机制:必须在窗口内喂狗——提前喂狗(窗口未开)或超时(窗口已关)都会复位;
特点:可以配置在超时前先产生中断(做现场保存或提示),再复位;
意义:不只是防死循环,还能监控主程序是否按时执行到喂狗点,任务节奏乱了也会复位。
第四,怎么选。
只想防止程序死循环跑飞、不关心任务节奏 → IWDG,简单可靠;
想监控任务是否按预期节奏执行(比如某个关键循环必须在规定时间内跑完)→ WWDG,窗口机制能发现“提前或超时”两种异常;
需要复位前做处理(存现场、指示)→ WWDG的中断特性。
第五,实战注意。喂狗位置要放在主循环的关键路径或任务调度的固定点,不能放在中断里无脑喂(否则死循环也能被喂狗掩盖);超时时间要按系统最坏执行周期算,留裕量但不至于太宽;调试时看门狗会干扰单步调试,注意策略(如调试时禁用)。

扫码关注





























