stm32_窗口看门狗

来源:互联网 发布:ubuntu 锐速 编辑:程序博客网 时间:2024/05/22 20:48

当程序跑飞后又回到正常地方或者正好执行了刷新看门狗操作,此情况下一般的看门狗是检查不出来的

故可以使用窗口看门狗,这样保证不会提前或者之后刷新看门狗。可以检查程序没有按正常路线运行而跳过的一些程序段。

窗口看门狗:就是在喂狗时间上有一个上下线。只有在此时间段内才能执行喂狗操作。

上线可以在寄存器中设置;而下线是固定值0x3Fh

工作示意图:


框图:


产生复位情况:

1、当喂狗的时候如果是计数器的值大于设定值;

2、当计数器的值从0x40减到0x3F时,就是图中的T6跳变到0时

超时计算:Twwdg = (4096 * 2 ^WDGTB * (T[5:0] + 1) /  Fpclk1)

WWDGTB是WWDG的预分频系数        Fpclk1是 APB1的时钟分频(Khz)   T(5:0)是看门狗计数器低6位


配置过程:

1、使能看门狗时钟:RCC_APB1PeriphClockCmd()

2、设置分频系数:WWDG_SetPrescaler()

3、设置上窗口值:WWDG_SetWindowValue()

4、开启提前唤醒中断并分组: WWDG_Enable1T()      NVIC_Init()

5、使能看门狗:WWDG_Enable()

6、喂狗:WWDG_SetCounter()

7、中断函数:WWDG_IRQHandler()

1 0
原创粉丝点击