看门狗:本质上可以看成是一个定时器电路,一般就是分为输入和输出两部分,输入我们俗称“喂狗”,输出可以直接理解为复位,或者大家熟悉的重启。
使用看门狗时,当MCU正常工作时,我们就会定期喂狗,如果超过预先设置好的时间没有喂狗,看门狗电路没有及时清零,就会跳转到我们所谓的输出部分,也就是回馈一个复位信号给MCU,复位MCU。
主要是用于防止程序跑飞,或者MCU死机。(重启大法好)
基本工作原理:在系统运行之后启动看门狗的计数器,看门狗开始自动计数,如果到达预先设置好的时间还没有及时重新赋值,那么看门狗的计数器就会溢出,引起看门狗中断,导致系统复位。
stm32 独立看门狗的配置流程:
1.取消寄存器写保护:
IWDG_WriteAccessCmd();
2.设置独立看门狗的预分频系数,确定时钟:
IWDG_SetPrescaler();
3.设置看门狗重装载值,确定溢出时间:
IWDG_SetReload();
4. 使能看门狗
IWDG_Enable();
5. 应用程序喂狗:
IWDG_ReloadCounter();
溢出时间计算:
Tout=((4×2^prer) ×rlr) /40 (M3)
其中 :
Tout 为看门狗溢出时间(单位为 ms);
prer 为看门狗时钟预分频值(IWDG_PR 值),范围为 0~7;
rlr 为看门狗的重装载值(IWDG_RLR 的值&#x