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