news 2026/10/27 18:43:34

WDG看门狗

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WDG看门狗

WDG简介

  • WDG(Watchdog)看门狗

  • 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性

  • 看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号

  • STM32内置两个看门狗

    • 独立看门狗(IWDG):独立工作,对时间精度要求较低
    • 窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用

独立看门狗(IWDG)

独立看门狗的时钟是专用的LSI(40KHz),内部低速时钟

IWDG键寄存器

  • 键寄存器本质上是控制寄存器,用于控制硬件电路的工作
  • 在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率
写入键寄存器的值作用
0xCCCC启用独立看门狗
0xAAAAIWDG_RLR中的值重新加载到计数器(喂狗)
0x5555解除IWDG_PR和IWDG_RLR的写保护
0x5555之外的其他值启用IWDG_PR和IWDG_RLR的写保护

IWDG 其他寄存器详解

寄存器位作用
IWDG_PR(预分频)PR[2:0]000/4,001/8,010/16,011/32,100/64,101/128,110~/256
IWDG_RLR(重装载)RL[11:0]重装载值 0~4095,喂狗时把 RL+1 装入计数器
IWDG_SR(状态)PVU / RVU写 PR/RLR 之前必须等这两个位清零,否则写入无效

关键:IWDG 一旦写入 0xCCCC 启动,除了系统复位无法关闭(可通过选项字节改为硬件启动)。所以调试时要么条件编译,要么先注释掉启动代码。

IWDG超时时间

  • 超时时间:TIWDG=TLSI×PR预分频系数×(RL+1)T_{IWDG} = T_{LSI} \times PR预分频系数 \times (RL + 1)TIWDG​=TLSI​×PR预分频系数×(RL+1)
  • 其中:TLSI=1/FLSIT_{LSI} = 1 / F_{LSI}TLSI​=1/FLSI​

注意注明:LSI 实际范围是30~60kHz,所以所有超时都是估算值,设计时留 20% 以上余量。

窗口看门狗(WWDG)

使用APB1的时钟,PCLK1(36HMz)

WWDG工作特性

  • 递减计数器T[6:0]的值小于0x40时,WWDG产生复位
  • 递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位
  • 递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位
  • 定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位

WWDG寄存器详解

寄存器位作用
WWDG_CRWDGA(bit7)+ T[6:0]WDGA 使能看门狗(置 1 后同样无法关闭);T 是 7 位递减计数器
WWDG_CFRWDGTB[1:0] + W[6:0] + EWIWDGTB 分频(00/1,01/2,10/4,11/8);W 是窗口上边界;EWI 使能早期唤醒中断
WWDG_SREWIF早期唤醒中断标志,写 0 清除

窗口机制

窗口机制:喂狗只能发生在 “计数器从 W 递减到 0x40” 这一段区间内—— 喂太早(计数器 > W)复位,喂太晚(计数器 < 0x40 即下溢)也复位。

WWDG超时时间

TWWDG=TPCLK1×4096×2WDGTB×(T[6:0]+1)T_{WWDG} = T_{PCLK1} \times 4096 \times 2^{WDGTB} \times (T[6:0] + 1)TWWDG​=TPCLK1​×4096×2WDGTB×(T[6:0]+1)

以 PCLK1 = 36MHz(T_PCLK1 ≈ 27.78ns)为例:

IWDG 与 WWDG 对比总结

对比项IWDG 独立看门狗WWDG 窗口看门狗
时钟源专用 LSI(30~60kHz)PCLK1(APB1,需开 RCC 时钟)
喂狗限制任意时刻喂狗均可必须在 [0x40, W] 窗口内喂狗
超时范围约 100µs ~ 26s毫秒级(36MHz 下最大约 116ms)
计时精度低(RC 振荡器误差大)较高(跟随主时钟)
复位条件超时未喂狗超时未喂狗或窗口外喂狗
能否关闭启动后不可关闭(除复位)启动后不可关闭(除复位)
应用场景主程序跑飞 / 死循环兜底对执行时序有严格要求的任务

选型建议:只求 "程序别死"→ 用 IWDG,简单可靠;程序对时序敏感、需要防 "异常快速喂狗"→ 用 WWDG;极端可靠性场景可两者同时启用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 18:32:42

2000-2024年 上市公司-企业全要素生产率TFP数据(+代码+文献)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 18:31:50

2001-2024年 上市公司-供应链网络排名数据(xlsx)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 18:29:58

基于 Qwen Code Skills 实践构建自定义数据分析智能体

一、Qwen Code Skills Qwen Code 是一个面向开发者的智能编码助手&#xff0c;类似于 Claude Code&#xff0c;随着 Claude Code 推出 Skills 功能&#xff0c; Qwen Code 也迅速集成了相关功能&#xff0c;通过 Skills 可以将专业知识打包成可发现的功能。每个技能由一个 SKI…

作者头像 李华