🔬 实验16:独立看门狗 (IWDG)
📌 实验目标
- 理解看门狗定时器的作用
- 掌握 STM32 独立看门狗的配置方法
- 学会定时喂狗防止系统复位
- 验证看门狗超时系统复位
一、实验内容
- 配置独立看门狗 IWDG(时钟 LSI 40KHz)
- 设置预分频系数和重装值
- 在主循环中定时喂狗
- 通过 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,系统将复位
}
}
💡 这段代码怎么用?
- 看门狗的意义:程序因干扰跑飞后,只要 超时没喂狗 就自动复位,让系统自愈
- 溢出时间公式
Tout = (4×2^prer)×rlr/40(ms):prer=64(2^6 已内含)、rlr=625 → 约 1s;改成 2s 就翻倍 rlr - 喂狗要放在主循环关键位置(不能太晚),IWDG 一旦使能无法关闭,只能复位后重新烧录
三、参考资料
| 资料 | 文件 |
|---|---|
| 独立看门狗 PPT | 实验六 定时器-独立看门狗.pptx |
| 实验指导文档 | 实验6 定时器-独立看门狗.docx |