窗口看门狗,其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间。喂狗的时间不能过早也不能过晚。通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。窗口看门狗的喂狗被限制在一个设置的窗口之内,如果程序不按规定的周期或逻辑运行将会被复位。
窗口看门狗的上窗口,下窗口值是固定的(0X40)。当窗口看门狗的计数器在上窗口值之外被刷新,或者低于下窗口值都会产生复位。上窗口值(W[6:0])是根据实际情况由程序设定的,但是一定要确保窗口值大于 0X40,否则就没有窗口了。
窗口看门狗的超时公式如下:
Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1;
其中:
Twwdg:WWDG超时时间(单位为 ms)
Fpclk1:APB1 的时钟频率(单位为 Khz)
WDGTB:WWDG的预分频系数
T[5:0]:窗口看门狗的计数器低 6 位
为了准确的进行喂狗操作,而不是超前或滞后导致复位,可以在看门狗计数器值T[6:0]变为0x40的时候产生的看门狗中断中进行喂狗操作。使能此造作只需将WWDG_CFR:9的EWI置1即可启用。
软件操作流程如下:
1、使能时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
2、窗口看门狗配置
WWDG_SetPrescaler(PRE); //设置 WWDG预分频值
WWDG_SetWindowValue(WR); //设置窗口值 W[6:0]
WWDG_Enable(TR); //使能看门狗 , 设置 T[6:0].
WWDG_ClearFlag();
WWDG_EnableIT(); //开启窗口看门狗中断
3、喂狗可以使用如下函数重置T[6:0]即可
WWDG_Enable(TR);
4、窗口看门狗中断中的喂狗操作
void WWDG_IRQHandler(void)
{
WWDG_Enable(0x7F);
WWDG_ClearFlag();
本文来源于世强电子元件
电话
0755-27883824
地址:深圳市宝安区西乡街道银田创意园B8栋502
传真:0755-61204158
邮箱 : 13510937553@163.com
点
击
隐
藏