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系统的抗故障能力,确保设备在异常状态下自动恢复。

相关推荐
国科安芯4 小时前
立方星与微纳卫星综合电子微型化趋势下的抗辐射MCU选型综述
人工智能·单片机·嵌入式硬件·mcu·risc-v·抗辐射
xunyan62344 小时前
3-1 独立按键控制LED亮灭(SDCC + Notepad++ + STC-ISP/普中ISP)
单片机·嵌入式硬件·接口隔离原则
WD137298015575 小时前
WD5030L,为充电桩、工业设备、5G 基站、车载系统、消费电子提供电源,7-30V 的宽压输入
stm32·单片机·嵌入式硬件·5g·车载系统·51单片机
创界工坊工作室7 小时前
30-基于STM32的小麦烘干塔温度控制系统设计
stm32·单片机·嵌入式硬件·proteus
Zwawa8 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
c语言·单片机·嵌入式
单片机仿真设计9 小时前
【proteus仿真设计】基于 STM32 的开荒机器人遥控控制系统设计(仿真图+程序)
stm32·嵌入式硬件·机器人·proteus
smartpi_ai9 小时前
51 单片机写好了,大模型语音怎么接?17T 全驱动的现成方案、双板串口分工的边界与画板前的三项硬件确认
单片机·嵌入式硬件·学习
我先去打把游戏先9 小时前
NimBLE是什么-ESP32蓝牙协议栈详解
单片机·嵌入式硬件·ubuntu
木子n110 小时前
车载以太网与SOME/IP服务化通信实战-02.状态机与订阅:SOME/IP-SD的三态迁移、重传账与上电风暴
嵌入式硬件·网络协议·车载系统·车载以太网·some/ip
Gongsion10 小时前
30V输入耐压|1.5μA超低静态电流|200mA输出,CSM52系列:线性稳压器LDO,12V母线转3.3V/5V传感器、MCU弱电支路可靠稳压方案
单片机·嵌入式硬件·车载系统·无人机·智能家居