[麦麦茶水间] 【每周分享】MCU独立看门狗和窗口看门狗的区别和使用

[复制链接]
1370|5
 楼主| dffzh 发表于 2025-7-11 14:35 | 显示全部楼层 |阅读模式
在嵌入式软件开发中,我们会经常使用看门狗(watchdog)定时器来监控和恢复因程序跑飞或者死锁等故障造成的系统问题。而在MCU中,常用的看门狗一般是硬件看门狗定时器,主要包括独立看门狗(IndependentWatchdog, IWDG)和窗口看门狗(Window Watchdog, WWDG),在MCU的数据手册里,也都能看到这两种看门狗的详细介绍。
既然有两种看门狗,那在使用方式或者应用场景上肯定有所区别,接下来就对两种看门狗的区别和使用进行一些说明。
独立看门狗:
有独立的时钟源,其时钟源一般为MCU内部独立的低频时钟,通常为LSI(内部低速振动器),即使MCU主时钟失效了也可以正常工作。

当看门狗定时器的计数器从初始值递减到0时即会发生看门狗复位,因此一般只需要在超时前执行“喂狗”操作,也就是重载计数器即可,时间窗口要求相对宽松。下面是某款MCU的独立看门狗框图:
窗口看门狗:
时钟源一般依赖于系统时钟,如果系统时钟失效,则窗口看门狗定时器即会失效。

必须在特定的时间窗口内喂狗,比如0x3F~0x7F之间,过早或者过晚喂狗都会造成看门狗复位,因此窗口看门狗对喂狗的时机要求相对较高。下面是某款MCU的窗口看门狗框图:
以下将两种看门狗的主要特性写入表中,对比起来比较可能会更加直观:
  
主要特性
  
独立看门狗
窗口看门狗
时钟源
独立低频时钟
系统主时钟
复位条件
计数器减到0
计数器超出窗口或减到0x3F值
喂狗时间要求
超时前即可,无严格窗口
必须在规定时间窗口内
中断支持
通常无中断,直接复位
可以配置提前中断
灵活性
配置简单,适应性广
需要精确控制喂狗时机
应用场景
程序卡死和跑飞等系统故障
监控软件时序、关键任务按时执行
总之,独立看门狗更“鲁棒”,窗口看门狗更“精确”,需要根据系统可靠性和实时性等需求选择合适的看门狗定时器。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
huahuagg 发表于 2025-8-28 14:03 | 显示全部楼层
这是哪个系列的手册上的啊。

评论

很多MCU芯片都有这种功能的。  发表于 2025-8-28 15:55
小岛西岸来信 发表于 2025-9-4 13:56 | 显示全部楼层
独立看门狗(IWDG)采用内部低速时钟,适用于对时间精度要求低的场景,需定时喂狗,超时则复位。窗口看门狗(WWDG)用系统时钟,精度高,有喂狗窗口,过早或过晚喂狗都会复位,适合需严格监控程序运行的场景,如实时系统,可检测死循环等异常。

评论

是的,应用场景不一样。  发表于 2025-9-4 14:37
水星限定 发表于 2025-9-27 15:49 | 显示全部楼层
每周分享:MCU 独立看门狗和窗口看门狗的区别与使用
独立看门狗(IWDG)由专用低速时钟供电,不受主时钟影响,用于防止程序死循环,需在超时前喂狗;窗口看门狗(WWDG)由主时钟驱动,有喂狗窗口,仅在窗口内喂狗有效,可防程序跑飞或喂狗过早。IWDG 适用于简单容错,WWDG 适配更高安全性场景(如工业控制)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

143

主题

1393

帖子

23

粉丝
快速回复 在线客服 返回列表 返回顶部