独立看门狗:可以检测可解决程序运行中的故障。例子:如果一个程序运行时间为50ms,我们设置一个喂狗操作,就是定时监控时间为60ms,如果超过60ms,程序还未运行完毕,表示程序发生故障,即常说的跑飞了。但是它只可以检测,而不能解决。比如某个硬件发生错误,程序跑到这里出错了,看门狗复位后跑到这里再次出错了,无法解决。即只是一个监测手段
我这里设置喂狗时间为64/40*625=1s;
即只要在1s内完成喂狗操作,就不会出错,用LED指示
while循环中设置延迟时间为500ms,在一秒钟之内,现象是上电复位后,延迟一秒钟,显示红灯,然后一直是绿灯,因为会不断的一直喂狗,所以是死循环
如果把while中的延迟时间改为大于1s,现象是,上电复位后,显示红灯,指示是上电的复位,然后是蓝灯闪烁,因为超出喂狗时间了,不会进入while循环中,就是一直执行上面的函数,蓝灯亮灭亮灭
递减计数器的时钟由 LSI 经过一个 8 位的预分频器得到,我们可以操作预分频器寄存
器 IWDG_PR 来设置分频因子,分频因子可以是:[4,8,16,32,64,128,256,256],计数器时钟
CK_CNT= 40/ 4*2^PRV,一个计数器时钟计数器就减一。