IWDG(Independent Watchdog)= 独立看门狗。

核心公式:
[[formula|超时时间 Tout = (4 × 2^prv × rlr) / 32 kHz]]
| prv | 分频 | 最小超时 | 最大 | ||
|---|---|---|---|---|---|
| 预 | 分频 | 最小超时 | 最大 | ||
| 0 | /4 | 0.125 ms | 512 ms | ||
| 1 | /8 | 0.25 ms | 1024 ms | ||
| 2 | /16 | 0.5 ms | 2048 ms | ||
| 3 | /32 | 1 ms | 4096 ms | ||
| 4 | /64 | 2 ms | 8192 ms | ||
| 5 | /128 | 4 ms | 16384 ms | ||
| 6 | /256 | 8 ms | 32768 ms | ||
| 7 | /256 | 8 ms | 32768 ms(手册表有重复,最大算 32 秒) |
典型:prv=64 (2 ms),rlr=2500 → Tout ≈ 5 秒。
无外部电路,纯片内外设。
IWDG_HandleTypeDef hiwdg; 定义;hiwdg.Instance = IWDG; hiwdg.Init.Prescaler = 64; hiwdg.Init.Reload = 2500; 配置;HAL_IWDG_Init(&hiwdg);HAL_IWDG_Refresh(&hiwdg); 喂狗。while (1) {
delay_ms(1000);
HAL_IWDG_Refresh(&hiwdg); // 喂狗,告诉 MCU「我还活着」
}

正常运行时 LED 闪烁;注释掉 HAL_IWDG_Refresh 后 5 秒 LED 全部灭掉重启。

HAL_IWDG_Refresh(&hiwdg);。