📖 第 18 章:独立看门狗(IWDG)实验(IWDG)

🔧 正点原子《DMF407 开发指南》V1.0 · Chapter 18
🗨️ 「系统死机了?独立看门狗让 MCU 自己重启。」
这一章在干嘛? 独立看门狗 IWDG 实验:LSI 32 kHz 时钟、12 位递减计数器、喂狗时机。学会在 main 里周期性喂狗,系统卡死后自动复位。
18.1 IWDG 简介18.2 硬件设计18.3 程序设计18.4 下载验证

18.1 IWDG 简介

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

原书图 18.1.1:IWDG 框图
原书图 18.1.1:IWDG 框图

核心公式:

[[formula|超时时间 Tout = (4 × 2^prv × rlr) / 32 kHz]]

prv分频最小超时最大
分频最小超时最大
0/40.125 ms512 ms
1/80.25 ms1024 ms
2/160.5 ms2048 ms
3/321 ms4096 ms
4/642 ms8192 ms
5/1284 ms16384 ms
6/2568 ms32768 ms
7/2568 ms32768 ms(手册表有重复,最大算 32 秒)

典型:prv=64 (2 ms),rlr=2500 → Tout ≈ 5 秒。

18.2 硬件设计

无外部电路,纯片内外设。

18.3 程序设计

18.3.1 编程步骤

  1. IWDG_HandleTypeDef hiwdg; 定义;
  2. hiwdg.Instance = IWDG; hiwdg.Init.Prescaler = 64; hiwdg.Init.Reload = 2500; 配置;
  3. HAL_IWDG_Init(&hiwdg);
  4. 主循环里 HAL_IWDG_Refresh(&hiwdg); 喂狗。

18.3.2 关键代码

while (1) {
    delay_ms(1000);
    HAL_IWDG_Refresh(&hiwdg);   // 喂狗,告诉 MCU「我还活着」
}

原书图 18.3.2.1:IWDG 喂狗流程图
原书图 18.3.2.1:IWDG 喂狗流程图

IWDG 一旦启动无法关闭,只能刷新。要停止 IWDG 必须系统复位。

实验: 注释掉喂狗代码 → 5 秒后开发板自动复位,看 LED 停止闪烁。

18.4 下载验证

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

原书图 18.4.1:喂狗失败导致复位现象
原书图 18.4.1:喂狗失败导致复位现象

🧠 小测验
IWDG 的时钟源是什么?
LSI 内部 32 kHz RC,独立于主时钟。
IWDG 启动后还能关闭吗?
不能,只能刷新。
喂狗函数?
HAL_IWDG_Refresh(&hiwdg);
← 上一篇🏠 顶层目录下一篇 →