独立看门狗时钟频率一般以40KHz,但不是非常准确,变化范围在15-47KHz。
看门狗在开启后不能关闭,除非复位。
1.寄存器
关键字寄存器 IWDG_KR:用来写指令,指令有0xAAAA(把IWDG_RLR的值载入到计数器,避免 产生复位),0x5555(允许对IWDG_PR和IWDG_RLR寄存器的访问),0xCCCC(开启看门狗)。
IWDG_PR 和 IWDG_RLR 寄存器具有写保护功能,IWDG_PR分频系数,只用了最低三个位:
110 |
101 |
100 |
011 |
010 |
001 |
000 |
256分频 |
128分频 |
64分频 |
32分频 |
16分频 |
8分频 |
4分频 |
IWDG_RLR重载寄存器:保存了要载入看门狗计数器中的值。
2.看门狗实现
2.1取消寄存器写保护(向IWDG_KR写入0x5555),就可以操作IWDG_PR和IWDG_RLR了;
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
2.2设置独立看门狗的预分频系数和重装载值
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
void IWDG_SetReload(uint16_t Reload);
看门狗的溢出时间:Tout=((4×2^prer) ×rlr) /40
2.3重载计数值喂狗(向IWDG_KR写入0xAAAA)
IWDG_ReloadCounter();
2.4启动看门狗(向IWDG_KR写入0xCCCC)
IWDG_Enable();