🔬 实验16:独立看门狗 (IWDG)

📌 实验目标
  • 理解看门狗定时器的作用
  • 掌握 STM32 独立看门狗的配置方法
  • 学会定时喂狗防止系统复位
  • 验证看门狗超时系统复位

一、实验内容

  1. 配置独立看门狗 IWDG(时钟 LSI 40KHz)
  2. 设置预分频系数和重装值
  3. 在主循环中定时喂狗
  4. 通过 LED 观察正常/复位状态

二、IWDG 配置

IWDG 配置(约 1s 超时)
#include "stm32f10x.h"

void IWDG_Config(void)
{
    // 写保护使能
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

    // 预分频器 = 64,LSI(40KHz) → 625Hz
    IWDG_SetPrescaler(IWDG_Prescaler_64);

    // 重装值 = 625 → 约 1s 超时
    IWDG_SetReload(625);

    // 重载计数器并启动
    IWDG_ReloadCounter();
    IWDG_Enable();
}

int main(void)
{
    IWDG_Config();
    while (1)
    {
        IWDG_ReloadCounter();  // 喂狗
        delay(500);
        // 如果延时超过 1s,系统将复位
    }
}
💡 这段代码怎么用?
  1. 看门狗的意义:程序因干扰跑飞后,只要 超时没喂狗 就自动复位,让系统自愈
  2. 溢出时间公式 Tout = (4×2^prer)×rlr/40(ms):prer=64(2^6 已内含)、rlr=625 → 约 1s;改成 2s 就翻倍 rlr
  3. 喂狗要放在主循环关键位置(不能太晚),IWDG 一旦使能无法关闭,只能复位后重新烧录

三、参考资料

资料文件
独立看门狗 PPT实验六 定时器-独立看门狗.pptx
实验指导文档实验6 定时器-独立看门狗.docx