STM32学习-理解窗口看门狗


——————————————————————————————————————————————————————————

无论是谁,你的一天也只有二十四小时。

你可以玩,可以睡大觉,可以去学习,也可以去探索那片从未到达的那片海。

时间不会为任何人停留,你可以选择原地踏步,当然你也可以选择勇攀高峰。

------多年以后你会感谢现在努力的自己!

—————————————————————————————————————————————————————————————


窗口看门狗(WWDG)的通俗的解释就是,只有在一定的时间之内可以喂狗,过早的喂狗,或者过晚的喂狗,都会产生一个复位信号。这个一定的时间的上限称为上窗口,时间的下限是下窗口(固定的0x3F)。上窗口的时间是可变的可以通过寄存器设定,下窗口的时间是固定的。


一直不理解为什么用两个寄存器来控制,想了一早上好不容易想通了,现在记录:

这个WWDG_CRF和WWDG_CR寄存器的的第六位可以记做W[6:0]和T[6:0],这样可以理解为W[6:0]和T[6:0]可以存储同样多的数据。即0x7F到0x00。因为喂狗的时间有上下限,下窗口的的值是0x3F。上窗口的值是由W[6:0]寄存器保存的,这样我们就明白了W[6:0]的值不能低于0x3F。(如果低于0x3F,就不能形成窗口)。W[6:0]最大的值就是0x7F。因此,最大的喂狗时间是计数从0x7F到0x3F之间的时间。


注意点

IWDG有自己的时钟是内部的专门的大约40MHz的时钟驱动。是独立的RC时钟。不需要使能。

WWDG是使用的的是PCLK1的时钟,需要先使能时钟。

程序的步骤:

第一步 使能   

RCC_APB1PeriphClockCmd();

第二步 设定值

WWDG_SetPrescaler();   //设定分频系数

WWDG_SetWindowValue();//设定装载值

第三步 清除提前唤醒标志位

void WWDG_ClearFlag(void);

没有写完。。 






你可能感兴趣的:(STM32学习)