🐕 看门狗定时器

目标

配置独立看门狗(IWDG),模拟系统死锁场景,验证看门狗自动复位功能。

硬件准备

代码示例

#include "stm32h7xx_hal.h"

IWDG_HandleTypeDef hiwdg;

void IWDG_Init(void) {
    hiwdg.Instance       = IWDG1;
    hiwdg.Init.Prescaler = IWDG_PRESCALER_64;
    hiwdg.Init.Reload    = 2000;  /* ~4 秒超时 */
    hiwdg.Init.Window    = IWDG_WINDOW_DISABLE;
    HAL_IWDG_Init(&hiwdg);
}

int main(void) {
    HAL_Init();
    IWDG_Init();

    while (1) {
        HAL_IWDG_Refresh(&hiwdg);  /* 喂狗 */
        HAL_Delay(1000);
        /* 注释掉上面的喂狗行可触发复位 */
    }
}

步骤说明

  1. 初始化 IWDG,设置约 4 秒超时。
  2. 在主循环中定期调用 HAL_IWDG_Refresh() 喂狗。
  3. 注释掉喂狗语句,观察系统在 4 秒后自动复位。
  4. 通过串口打印验证复位行为。
提示: 遇到问题可查看 Q&A 页面,或在工蜂仓库提交 Issue。