WWDG(窗口看门狗)在窗口期喂狗
作用:
原理:
框图
WWDG寄存器:
WWDG_CR控制寄存器
WWDG_CFR配置寄存器
状态寄存器WWDG_SR
超时时间计算公式
最小最大超时值
HAL配置函数:
1. IWDG 和 WWDG 的区别
-
IWDG(独立看门狗)
IWDG
是一个独立于主系统时钟的外设,它的时钟源是由 内部低速时钟(LSI)提供。- 当系统启动时,IWDG 的时钟源已经是启用的,因此你不需要显式地开启时钟。
IWDG
的时钟是始终运行的,这也是它不需要你额外启用时钟的原因。你只需要初始化并配置相关的参数(如预分频器和计数器值)即可。
-
WWDG(窗口看门狗)
WWDG
的时钟源是由 APB 时钟(PCLK1)提供,这就是为什么你需要显式地启用WWDG
时钟。WWDG
的时钟需要通过 RCC 的时钟控制寄存器来启用,在初始化时需要显式调用__HAL_RCC_WWDG_CLK_ENABLE()
。
2. 为什么 IWDG
不需要显式开启时钟?
IWDG
使用的时钟(LSI)在芯片的电源管理和时钟控制系统中是自动启用的,而且它的时钟独立于主系统时钟,所以无需额外配置。
3. 总结:
- IWDG:自动启用时钟,不需要额外配置。
- WWDG:依赖于外部时钟(PCLK1),需要手动启用时钟。
WWDG:
IWDG:
我上面的都是没写回调函数的
下面是回调函数加中断(在这里是WWDG的中断(即唤醒中断))
HAL_WWDG_Init()会自动调用这个函数,初始时是空的,要我们自己写内容(重定义函数)
HAL_WWDG_IRQHandler是公共处理函数,调用它之后,它会调用提前唤醒回调函数。用这种方法会自动清除标志位,如果不用这种方法那就要自己清除标志位