发布时间:2025-12-09 16:25:34 浏览次数:12
时钟源是低速内部时钟LSI,通过预分频器进行调节,最大256.计数器减到零,重启服务器。需要在计数时间到达前,进行喂狗,不然喂狗失败,系统重启。
独立看门狗的时钟
STM32F4 的独立看门狗由内部专门的 32Khz 低速时钟(LSI)驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部RC时钟,所以并不是准确的32Khz,而是在 15~47Khz 之间的一个可变化的时钟,只是我们在估算的时候,以 32Khz 的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。
使用时需要发送0X5555,取消写保护
开启STM32的独立看门狗,按键按下即喂狗,如果超时未喂狗,则看门狗复位系统,用指示灯指示系统复位
1、配置串口
2、激活看门狗
3、配置时钟,使能外部时钟
4、配置按键
5、配置LED灯
6、看门狗配置,看门狗时钟源为独立的内部时钟LSI:32KHz,分频32使计数器为1KHz,周期为1ms,重载计数器为3000,复位时间为3s。
1、启动函数
2、配置函数
3、LED功能实现,正常情况LED灯点亮,如果复位LED会熄灭0.5s,再次点亮
4、刷新喂**作函数
5、按下按键进行喂狗
6、要在启动后大概3s内按下按钮进行喂**作,不然喂狗失败,复位
窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位(WWDG->CR 的第六位)变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。在递减计数器达到窗口配置寄存器(WWDG->CFR)数值之前,如果 7 位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个 MCU 复位。
①窗口看门狗时钟 ②计数器时钟 ③计数器 ④窗口值
窗口看门狗时钟来自 PCLK1,PCLK1 最大是 42M,由 RCC 时钟控制器开启。
计数器时钟由 CK计时器时钟经过预分频器分频得到,分频系数由配置寄存器 CFR 的
位 8:7 WDGTB[1:0]配置
开启STM32的窗口看门狗,并使能唤醒中断。主程序正常运行时喂狗,用按键中断模拟程序故障死机,此时将触发唤醒中断并产生复位,用LED灯指示唤醒中断的触发。
1、串口配置
2、LED灯配置
3、按键配置,将其配置为外部中断
4、外部时钟
5、看门狗,将其激活
6、窗口看门狗挂载在APB1上,最大42M。
计数器最大 0X7F(127),减小到0X3F(64)会复位,到0X40时会产生一个唤醒中断,窗口值为90,在90-127之间不能喂狗。初始值为127,要大于90,最大127.
7、使能中断
1、计数器小于上窗口值进行喂狗,循环执行。
2、按键中断,产生异常
3、计数器到达0X40,触发早期唤醒中断
4、LED设置,先熄灭
唤醒中断触发,点亮LED