窗口看门狗
窗口就是喂狗事件有一个上下限范围内(窗口);
独立看门狗限制的喂狗时间在0-x,x由相关寄存器决定。
如图是窗口看门狗的工作示意图;只有在刷新窗口才可以喂狗,否则会引起复位。
stm32窗口看门狗复位有两种情况:1.当喂狗的时候如果计数器的值大于某一设定数值W[6:0]时,此设定数值在WWDG_CFR寄存器定义。2.当计数器的数值从0x40减到0x3F时【T6位跳变到0】
超时公式:
窗口看门狗相比于独立看门狗,可以更稳定,避免独立看门狗提前或滞后的情况,从而检测出非正常执行的代码段。
注意事项:
2. 窗口看门狗时钟来源PCLK1(APB1总线时钟)分频后。
窗口看门狗配置步骤:
RCC_APB1PeriphClockCmd();
② 设置分频系数:
WWDG_SetPrescaler();
③ 设置上窗口值:
WWDG_SetWindowValue();
④ 开启提前唤醒中断并分组(可选):
WWDG_EnableIT();
NVIC_Init();
⑤ 使能看门狗:
WWDG_Enable();
⑥ 喂狗:
WWDG_SetCounter();
⑦编写中断服务函数
WWDG_IRQHandler();
接下来话不多说上代码:
其中WWDG_CNT需要定义为全局变量,0x7f 。
通用定时器基本原理
stm32最多拥有8个定时器
stm32拥有三种定时器:高级定时器,通用定时器,基本定时器;
stm32三种定时器的区别:
通用定时器功能特点描述:
向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。
②向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。
③中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。
通用定时器工作过程实为复杂,博主因水品问题说不明白,望读者见谅。