在一个设定好的区间进行喂狗
与独立看门狗不同的是,独立看门狗只需要在计时到0之前喂狗。而窗口看门狗需要在设定好的区间内进行喂狗,否则进行reset。
下限
递减计数器不断的往下递减计数,当减到一个固定值 0X40时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。
上限
是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫窗口的上限,上限值由用户独立设置。
窗口看门狗计数器的值必须在上窗口和下窗口之间才可以喂狗。
功能框图

时钟源
PCLK1,PCLK1 最大是 36M,由 RCC 时钟控制器开启。

计数器时钟 PCLK -> CK时钟 -> 计数器时钟
1.计数器时钟由 CK计时器时钟经过预分频器分频得到。
2.CK 计时器时钟=PCLK1/4096,除以 4096是手册规定的,没有为什么。
3.分频系数由配置寄存器 CFR 的位 8:7 WDGTB[1:0]配置,可以是[0,1,2,3]。
所以计数器的时钟 CNT_CK=PCLK1/4096/(2^WDGTB),这就可以算出计数器减一个数的时间 T= 1/CNT_CK = Tpclk1 * 4096 * (2^WDGTB)。。
计数器
1.窗口看门狗的计数器是一个递减计数器,共有 7 位,其值存在控制寄存器 CR 的位 6:0,即 T[6:0]。
2.但是由于窗口看门狗需要在窗口内喂狗,所以计数器的值只能是:0X40~0X7F 之间。
3.当递减计数器递减到 0X40的时候,还不会马上产生复位,如果使能了提前唤醒中断:CFR位 9 EWI 置1,则产生提前唤醒中断。
中断服务程序里面我们就需要做最重要的工作,比如保存重要数据,或者报警等。
窗口值设置和计算看门狗复位时间
详见参考手册
使用
看门狗配置
/* WWDG 配置函数
* tr :递减计时器的值, 取值范围为:0x7f~0x40
* wr :窗口值,取值范围为:0x7f~0x40
* prv:预分频器值,取值可以是
* @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/1
* @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2
* @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4
* @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8
*/
void WWDG_Config(uint8_t tr,

本文详细解释了窗口看门狗的工作机制,包括递减计数器的上下限设定、计数器时钟的计算、喂狗函数以及中断服务程序的使用。重点介绍了如何配置WWDG以监控程序执行,确保在设定的时间范围内喂狗以防止复位。
最低0.47元/天 解锁文章
1413

被折叠的 条评论
为什么被折叠?



