先看一张图
1. 时钟
① :内部低速时钟
独立看门狗采用的时内部低速时钟(LSI),通常为30-60KHZ,一般取40KHZ作为系统时钟频率。真正所使用的时钟,是在预分频后的时钟。
②:计数器
12位的计数器,开启看门狗后,可重载进去一个初值逐渐递减,递减至0后产生复位,注意:( 初值 <= 0xFFF)
2. 寄存器
①:预分频控制寄存器(IWDG_PR)
这个寄存器是将40KHZ的系统时钟进行分频操作,以适应MCU与不同外设通信时满足相同的频率要求。
一般取值有4、8、16、32、64、128分频,其值与预分频系数PRE的关系为:
IWDG_PR = 4 * 2^PRE
其中 PRE---------预分频系数,一般取(0~6)
分频后的时钟不再是40KHZ,而是 = 40 / IWDG_PR
②:重装载寄存器(IWDG_RLR)
通过写入0xAAAA到后面的键寄存器(IWDG_KR),就能将这个寄存器的值,重装载到计数器中,这就是所谓的喂狗操作。重载值 <= 0xFFF;
重装载的值大小,决定了计数器溢出时间,即:
Tout = (4 * 2^PRE)/ 40 * IWDG_RLR
③:键寄存器(IWDG_KR)
16位寄存器,通过写入键寄存器,从而间接控制其他寄存器的操作
写入:
1. 0x5555 ----- 取消寄存器IWDG_PR和IWDG_RLRD的写访问保护
2. 0xAAAA ----- 把IWDG_RLR中的值重载到计数器中
3. 0xCCCC -----打开IWDG并启动
④:状态寄存器(IWDG_SR)
PVU :bit0,当1:预分频值正在更新中;当0:预分频值更新完毕
RVU: bit1,当1:重装载值正在更新中;当0:重装载值更新完毕
当这两个bit 都为0时,表示已经配置好重装载值,预分频值。