我这也是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寄存器?
3.怎么配置使用它?
? ? ? ? ? ?1.预期效果,我要设置多少秒的看门狗 ?
?比如我要设置5s左右的,那就可选32k,64分频,2ms/计数, 重载值就是5000/2 = 2500,每次写入2500到RLR寄存器。
对应CubeMX设置:
?测试程序:
?------------------------
预期效果:
? ? ? ? ? ? a.开机后,LD2闪动n次,最后常量代表程序正常启动。
? ? ? ? ? ? b.5s左右不进行喂狗操作,程序复位,重新执行步骤1。如在5s内,按下蓝色按钮,则重新计时5s。
?代码:
? ? ? ? ? ? ?
|