看门狗:本质上可以看成是一个定时器威廉希尔官方网站
,一般就是分为输入和输出两部分,输入我们俗称“喂狗”,输出可以直接理解为复位,或者大家熟悉的重启。
使用看门狗时,当MCU正常工作时,我们就会定期喂狗,如果超过预先设置好的时间没有喂狗,看门狗威廉希尔官方网站
没有及时清零,就会跳转到我们所谓的输出部分,也就是回馈一个复位信号给MCU,复位MCU。
主要是用于防止程序跑飞,或者MCU死机。(重启大法好)
基本工作原理:在系统运行之后启动看门狗的计数器,看门狗开始自动计数,如果到达预先设置好的时间还没有及时重新赋值,那么看门狗的计数器就会溢出,引起看门狗中断,导致系统复位。
stm32 独立看门狗的配置流程:
1.取消寄存器写保护:
IWDG_WriteAccessCmd();
2.设置独立看门狗的预分频系数,确定时钟:
IWDG_SetPrescaler();
3.设置看门狗重装载值,确定溢出时间:
IWDG_SetReload();
4. 使能看门狗
IWDG_Enable();
5. 应用程序喂狗:
IWDG_ReloadCounter();
溢出时间计算:
Tout=((4×2^prer) ×rlr) /40 (M3)
其中 :
Tout 为看门狗溢出时间(单位为 ms);
prer 为看门狗时钟预分频值(IWDG_PR 值),范围为 0~7;
rlr 为看门狗的重装载值(IWDG_RLR 的值);
窗口看门狗由从APB1时钟分频后得到时钟驱动。通过可配置的时间窗口来检测应用程序非正常的过迟或过早操作。窗口看门狗最适合那些要求看门狗在精确计时窗口起作用的程序。
stm32 窗口看门狗配置步骤:
1.使能看门狗时钟:
RCC_APB1PeriphClockCmd();
2.设置分频系数:
WWDG_SetPrescaler();
3.设置上窗口值:
WWDG_SetWindowValue();
4.开启提前唤醒中断并分组(可选):
WWDG_EnableIT();
NVIC_Init();
5.使能看门狗:
WWDG_Enable();
6.喂狗:
WWDG_SetCounter();
7.编写中断服务函数
WWDG_IRQHandler();
窗口看门狗的超时公式如下:
Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1;
其中:
Twwdg: WWDG 超时时间(单位为 ms)
Fpclk1: APB1 的时钟频率(单位为 Khz)
WDGTB: WWDG 的预分频系数
T[5:0]:窗口看门狗的计数器低 6 位。
看门狗:本质上可以看成是一个定时器威廉希尔官方网站
,一般就是分为输入和输出两部分,输入我们俗称“喂狗”,输出可以直接理解为复位,或者大家熟悉的重启。
使用看门狗时,当MCU正常工作时,我们就会定期喂狗,如果超过预先设置好的时间没有喂狗,看门狗威廉希尔官方网站
没有及时清零,就会跳转到我们所谓的输出部分,也就是回馈一个复位信号给MCU,复位MCU。
主要是用于防止程序跑飞,或者MCU死机。(重启大法好)
基本工作原理:在系统运行之后启动看门狗的计数器,看门狗开始自动计数,如果到达预先设置好的时间还没有及时重新赋值,那么看门狗的计数器就会溢出,引起看门狗中断,导致系统复位。
stm32 独立看门狗的配置流程:
1.取消寄存器写保护:
IWDG_WriteAccessCmd();
2.设置独立看门狗的预分频系数,确定时钟:
IWDG_SetPrescaler();
3.设置看门狗重装载值,确定溢出时间:
IWDG_SetReload();
4. 使能看门狗
IWDG_Enable();
5. 应用程序喂狗:
IWDG_ReloadCounter();
溢出时间计算:
Tout=((4×2^prer) ×rlr) /40 (M3)
其中 :
Tout 为看门狗溢出时间(单位为 ms);
prer 为看门狗时钟预分频值(IWDG_PR 值),范围为 0~7;
rlr 为看门狗的重装载值(IWDG_RLR 的值);
窗口看门狗由从APB1时钟分频后得到时钟驱动。通过可配置的时间窗口来检测应用程序非正常的过迟或过早操作。窗口看门狗最适合那些要求看门狗在精确计时窗口起作用的程序。
stm32 窗口看门狗配置步骤:
1.使能看门狗时钟:
RCC_APB1PeriphClockCmd();
2.设置分频系数:
WWDG_SetPrescaler();
3.设置上窗口值:
WWDG_SetWindowValue();
4.开启提前唤醒中断并分组(可选):
WWDG_EnableIT();
NVIC_Init();
5.使能看门狗:
WWDG_Enable();
6.喂狗:
WWDG_SetCounter();
7.编写中断服务函数
WWDG_IRQHandler();
窗口看门狗的超时公式如下:
Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1;
其中:
Twwdg: WWDG 超时时间(单位为 ms)
Fpclk1: APB1 的时钟频率(单位为 Khz)
WDGTB: WWDG 的预分频系数
T[5:0]:窗口看门狗的计数器低 6 位。
举报