我这也是4年前大学学过,基本忘记了,重新简单的过一遍。
以下内容是个人化理解与文字表述。
简单点,主要是3个问题。
1.看门狗原理是什么?
看门狗是用于检测软件错误导致的故障。使能看门狗,将进行计数器递减计数,如果在寄存器计数到0之前没有写值到重载计数器,系统将产生复位。
2.有哪几个寄存器?
LWDG_KR寄存器:
1.隔一段时间写入AAAAh,使看门狗就不会复位
2.写入5555h, PR和RLR寄存器才能读写
3.写入CCCCh,启动看门狗
IWDG_PR寄存器
时钟分频,影响倒计一个数的时间。例如32k的时钟,4分频,那倒计一个数就是1/8ms。
IWDG_RLR寄存器
12位的寄存器,2的12次方 = 4096,也就是从0计数到4095。
从stm32Cube软件里面可以看到,能够设置的IWDG down-counter reload value最大值就是4095。
例如32k时钟,4分频,最小计1个数1/8ms = 0.125ms, 最大计4096个数,4096 *0125 = 512ms。
IWDG_SR寄存器
![](https://i-blog.csdnimg.cn/blog_migrate/34ac4308a926f8ed3f18eea19d6877d3.png)
3.怎么配置使用它?
1.预期效果,我要设置多少秒的看门狗 ?
比如我要设置5s左右的,那就可选32k,64分频,2ms/计数, 重载值就是5000/2 = 2500,每次写入2500到RLR寄存器。
对应CubeMX设置:
测试程序:
------------------------
预期效果:
a.开机后,LD2闪动n次,最后常量代表程序正常启动。
b.5s左右不进行喂狗操作,程序复位,重新执行步骤1。如在5s内,按下蓝色按钮,则重新计时5s。
代码: