前注:本文章主要讲解【原理】
内容为 'Jojo'编写,日常学习总结,内容如有不足、不妥之处请私信告知,谢谢!
实验
简介
MCU可能工作在一些复杂环境,可能受到某些电磁干扰出现程序跑飞,导致死循环无法继续执行工作,看门狗的作用就是为了避免这种情况。看门狗的本质也是一个定时器,在启动后,需要在一定时间内再给它一个信号,俗称“喂狗”,如果没有按时“喂狗”,说明MCU可能处于非正常状态,这时看门狗就向
MCU发送个复位信号,使整个系统重启,重新进入正常的工作状态。
框图
1. 时钟、预分频器
独立看门狗的时钟源来自
LSI
(内部低速时钟)
分配器(具有写保护功能)
2.重装载值、计数器、键值寄存器
计数器
独立看门狗的计数器是一个
12
位的递减计数器,最大值为
0XFFF
,当计数器减到
0
时,
会产生一个复位信号
:IWDG_RESET
,让程序重新启动运行,如果在计数器减到
0
之前刷新
了计数器的值的话,就不会产生复位信号,重新刷新计数器值的这个动作我们俗称
喂狗
。
重装载值
重装载寄存器是一个
12
位的寄存器,里面装着要刷新到计数器的值,这个值的大小决
定着独立看门狗的溢出时间。超时时间
Tout = (4*2^prv) / 40 * rlv (s)
,
prv
是预分频器寄存
器的值,
rlv
是重装载寄存器的值。
键值寄存器
3.IWGH复位
溢出时间 Tout = prv/40 * rlv (s)
prv
可以取
IWDG_Prescaler_64
,rlv 取
625
,
IWDG_SetPrescaler
(IWDG_Prescaler_64 ,625)。
Tout=64/40*625=1s
。