本帖最后由 powerantone 于 2023-5-10 10:58 编辑
早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。
为了满足更多使用场景,现在很多MCU都集成了两个看门狗:独立看门狗与窗口看门狗。
拿现在大家熟悉的STM32来说,都集成了独立看门狗和窗口看门狗,下面就展开来讲讲这个两个看门狗以及它们的区别。
独立看门狗
独立看门狗,顾名思义,就是独立的一个看门狗,由其专用低速时钟 (LSI) 驱动,因此,即便在主时钟发生故障时仍然保持工作状态。
IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。
独立看门狗特性:
自由运行递减计数器
时钟由独立 RC 振荡器提供(可在待机和停止模式下运行)
当递减计数器值达到 0x000 时产生复位(如果看门狗已激活)
窗口看门狗
窗口看门狗,之所以称为窗口,是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间:喂狗的时间不能过早也不能过晚。
窗口看门狗的上窗口就是配置寄存器WWDG-》CFR里设定的W[6:0];下窗口是固定的0x40;当窗口看门狗的计数器在上窗口值之外,或是低于下窗口值都会产生复位。
上窗口的值可以只有设定,7位二进制数最大只可以设定为127(0x7F),最小又必须大于下窗口的0x40,所以其取值范围为64~127(即:0x40~0x7F);配置寄存器WWDG-》CFR中为计数器设定时钟分频系数,确定这个计数器可以定时的时间范围,从而确定窗口的时间范围。
窗口看门狗的时钟来自于PCLK1,在时钟配置中,其频率为外部时钟经倍频器后的二分频时钟,即为36MHz,根据手册可以知道其定时时间计算方法:
|