dffzh 发表于 2025-7-11 14:35

【每周分享】MCU独立看门狗和窗口看门狗的区别和使用

在嵌入式软件开发中,我们会经常使用看门狗(watchdog)定时器来监控和恢复因程序跑飞或者死锁等故障造成的系统问题。而在MCU中,常用的看门狗一般是硬件看门狗定时器,主要包括独立看门狗(IndependentWatchdog, IWDG)和窗口看门狗(Window Watchdog, WWDG),在MCU的数据手册里,也都能看到这两种看门狗的详细介绍。既然有两种看门狗,那在使用方式或者应用场景上肯定有所区别,接下来就对两种看门狗的区别和使用进行一些说明。独立看门狗:有独立的时钟源,其时钟源一般为MCU内部独立的低频时钟,通常为LSI(内部低速振动器),即使MCU主时钟失效了也可以正常工作。
当看门狗定时器的计数器从初始值递减到0时即会发生看门狗复位,因此一般只需要在超时前执行“喂狗”操作,也就是重载计数器即可,时间窗口要求相对宽松。下面是某款MCU的独立看门狗框图:窗口看门狗:时钟源一般依赖于系统时钟,如果系统时钟失效,则窗口看门狗定时器即会失效。
必须在特定的时间窗口内喂狗,比如0x3F~0x7F之间,过早或者过晚喂狗都会造成看门狗复位,因此窗口看门狗对喂狗的时机要求相对较高。下面是某款MCU的窗口看门狗框图:以下将两种看门狗的主要特性写入表中,对比起来比较可能会更加直观:
主要特性独立看门狗窗口看门狗
时钟源独立低频时钟系统主时钟
复位条件计数器减到0计数器超出窗口或减到0x3F值
喂狗时间要求超时前即可,无严格窗口必须在规定时间窗口内
中断支持通常无中断,直接复位可以配置提前中断
灵活性配置简单,适应性广需要精确控制喂狗时机
应用场景程序卡死和跑飞等系统故障监控软件时序、关键任务按时执行
总之,独立看门狗更“鲁棒”,窗口看门狗更“精确”,需要根据系统可靠性和实时性等需求选择合适的看门狗定时器。
页: [1]
查看完整版本: 【每周分享】MCU独立看门狗和窗口看门狗的区别和使用