当前位置: 首页 > news >正文

STM32中,如何理解看门狗

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


看门狗类型及特点

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

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

  • 特点

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

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

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

  • 工作流程

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

  • 特点

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

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

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

  • 工作流程

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

关键概念详解

超时时间计算
  • 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库)

#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精确时间窗口,可捕获逻辑错误
低功耗应用IWDGLSI功耗低于主时钟

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

相关文章:

  • Cisco Packer Tracer 中 VLAN 与三层交换机
  • 算法第32天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 软件项目需求说明书简要模板
  • 【计网】分片
  • 大模型备案关键词各地要求与流程材料解析
  • Cyberduck 是什么
  • 【Tips】关于PCI和PCIe的配置空间差异和io/memory io读写
  • One Year~
  • 如何用Go创建一个 deployment 到容器拉起来的全流程
  • Python 迭代器:从基础到高级
  • 字体查看器
  • meilisearch docker 简单安装
  • 【前端】Hexo一键生成目录插件推荐_放入Hexo博客
  • Linux `cp` 命令深度解析与高阶应用指南
  • 今日分享:怎么综合分析5星股票?
  • 解释PV和PVC的关系,开发有状态应用时如何挂载持久化存储?
  • 软考-系统架构设计师-第八章 数据库设计基础知识
  • MySQL高可用革命:Orchestrator实现零干预的故障转移与智能拓扑管理
  • 鸿蒙NEXT应用加固工具哪家更好?国内主流的6款对比
  • openEuler安装MySql8(tar包模式)
  • wordpress做电影网站/百度快照推广效果怎样
  • 男女做那个那个的视频网站/今天nba新闻最新消息
  • 做网站的公司哪里好/seo排名策略
  • 南宁优化网站网络服务/seo jsbapp9
  • wordpress 农家乐/seo的排名机制
  • 做网站1008做网站 - 百度/项目推广网站