STM32中,如何理解看门狗

在STM32微控制器中,看门狗(Watchdog)是一种硬件计时器,用于监控系统运行状态 ,防止软件死锁或跑飞。其核心机制是:系统需定期"喂狗"(复位看门狗计数器),若未及时喂狗,则触发系统复位,使程序恢复至初始状态。


看门狗类型及特点

STM32提供两种看门狗,各有适用场景:

1. 独立看门狗(IWDG)
  • 时钟源 :独立内部低速时钟(LSI,~32-40kHz),不受主时钟影响(即使主时钟故障仍有效)。

  • 特点

    • 配置后无法停止(只能通过复位关闭)。

    • 超时时间范围宽(毫秒到秒级)。

    • 适合监控严重故障(如程序跑飞、死循环)。

  • 工作流程

cs 复制代码
初始化 → 启动计数器 → 定期喂狗(复位计数器)→ 若超时未喂狗 → 触发系统复位
2. 窗口看门狗(WWDG)
  • 时钟源:APB1总线时钟(PCLK1)分频。

  • 特点

    • 必须在指定时间窗口内喂狗(既不能过早也不能过晚)。

    • 提供提前唤醒中断(EWI),允许在复位前执行紧急操作。

    • 适合监控代码执行时效性(如任务调度超时)。

  • 工作流程

cs 复制代码
初始化 → 启动计数器 → 在窗口期内喂狗 → 若喂狗过早/过晚 → 触发复位

关键概念详解

超时时间计算
  • IWDG公式

    示例(LSI=40kHz,预分频=32,RLR=1000):

    Ttimeout=100040000×32=0.8秒Ttimeout​=400001000​×32=0.8秒

  • WWDG公式

喂狗操作
  • IWDG喂狗 :向键寄存器(IWDG_KR)写入0xAAAA

  • WWDG喂狗 :向控制寄存器(WWDG_CR)写入值(需在0x40~0x7F之间)。


配置步骤(以IWDG为例,HAL库)

cs 复制代码
#include "stm32f1xx_hal.h"

IWDG_HandleTypeDef hiwdg;

void IWDG_Init(void) {
  hiwdg.Instance = IWDG;
  hiwdg.Init.Prescaler = IWDG_PRESCALER_32;  // 预分频系数
  hiwdg.Init.Reload    = 1000;               // 重载值(超时时间)
  HAL_IWDG_Init(&hiwdg);                     // 初始化
  HAL_IWDG_Start(&hiwdg);                    // 启动看门狗
}

void main(void) {
  IWDG_Init();
  while (1) {
    // ... 正常代码 ...
    HAL_IWDG_Refresh(&hiwdg);  // 定期喂狗(需在超时前执行)
  }
}

使用注意事项

  1. 喂狗位置

    • 放在主循环或关键任务中,避免在阻塞函数中饿死看门狗

    • 若使用RTOS,可在空闲任务中喂狗(但需确保任务调度正常)。

  2. 调试影响

    • 调试时暂停MCU会导致看门狗复位,可通过DBGMCU模块临时冻结看门狗。
  3. 窗口看门狗窗口期

    • 窗口上限由WWDG_CFR寄存器设定,喂狗需在[窗口值, 0x3F]之间。

应用场景对比

场景 推荐看门狗 原因
高可靠性系统(工业控制) IWDG 独立时钟,抗干扰能力强
实时任务监控 WWDG 精确时间窗口,可捕获逻辑错误
低功耗应用 IWDG LSI功耗低于主时钟

通过合理配置看门狗,可显著提升STM32系统的抗故障能力,确保设备在异常状态下自动恢复。

相关推荐
richxu202510016 小时前
学完了江科大STM32,下一步该怎么学?
stm32·单片机·嵌入式硬件·学习
Deitymoon6 小时前
STM32——SPI通信
stm32·单片机·嵌入式硬件
2035去旅行7 小时前
WIFI传输带宽
arm开发·嵌入式硬件
linbaiwan6667 小时前
内置VDD稳压管减少外围元件的三款LED驱动芯片集成度
单片机·嵌入式硬件
三品吉他手会点灯8 小时前
STM32F103 学习笔记-21-串口通信(第6节)-串口发送命令控制RGB灯
笔记·stm32·单片机·嵌入式硬件·学习
yongui478349 小时前
水表集中抄表器单片机实现方案
单片机·嵌入式硬件
iCxhust12 小时前
8086 Proteus 8253制作跑表
单片机·嵌入式硬件·proteus·微机原理·8088单板机
xiangw@GZ12 小时前
HDI 高密度互连板阶数的深度理解
服务器·单片机·嵌入式硬件
@残梦13 小时前
200、stm32定义缓冲区用在DMA上时,需要谨记4字节地址对齐规则
stm32·单片机·嵌入式硬件
深圳市尚想信息技术有限公司14 小时前
HTW1000 烧录器/仿真器 TENX(十速)/海速芯 MCU在线/串联烧录器 单片机开发 嵌入式系统应用
单片机·烧录器·单片机开发·tenx·十速·海速芯