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

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

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

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

本帖子中包含更多资源

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

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

109

主题

1164

帖子

22

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

109

主题

1164

帖子

22

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