窗口看门狗介绍
什么是窗口看门狗?
窗口看门狗用于监测单片机程序运行时效是否精准,主要检测软件异常,一般用于需要精准检测 程序运行时间的场合。 窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器。
产生复位条件:
当递减计数器值从 0x40 减到 0x3F 时复位(即T6位跳变到0)
计数器的值大于 W[6:0] 值时喂狗会复位。
产生中断条件:
当递减计数器等于 0x40 时可产生提前唤醒中断 (EWI)
在窗口期内重装载计数器的值,防止复位,也就是所谓的喂狗。
窗口看门狗工作原理
![](https://i-blog.csdnimg.cn/blog_migrate/294b0368e709743c7be0e7354021a55f.png)
WWDG框图
![](https://i-blog.csdnimg.cn/blog_migrate/c5607cec3cc44df6782c14eaa710637c.png)
控制寄存器
![](https://i-blog.csdnimg.cn/blog_migrate/62fdb97814a338f186c2e8ba2682eb7c.png)
配置寄存器
![](https://i-blog.csdnimg.cn/blog_migrate/fcf2ead5f35f1981b6e925ccfce873af.png)
状态寄存器
![](https://i-blog.csdnimg.cn/blog_migrate/ceb1bcfed5ec0e7c90ee46e198eff4ea.png)
超时时间计算
![](https://i-blog.csdnimg.cn/blog_migrate/3c08f1eb5e18e1104814ed143b7b84d9.png)
Tout是WWDG超时时间(没喂狗)
Fwwdg是WWDG的时钟源频率(最大36M)
4096是WWDG固定的预分频系数
2^WDGTB是WWDG_CFR寄存器设置的预分频系数值
T[5:0]是WWDG计数器低6位,最多63
窗口看门狗实验
需求:
开启窗口看门狗,计数器值设置为 0X7F ,窗口值设置为 0X5F ,预分频系数为 8 。程序启动时点 亮 LED1 ,300ms 后熄灭。在提前唤醒中断服务函数进行喂狗,同时翻转 LED2 状态。
![](https://i-blog.csdnimg.cn/blog_migrate/e9d45a1e54f02f40fbdb23058f50c0fc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e72b452f9f5b23cde0e14c102311f75e.png)
cubeMX中WWDG配置:
![](https://i-blog.csdnimg.cn/blog_migrate/be24e8c6ff362f0be06bddcc519f5b1d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/355e195e6e788ba1cbafcfbe26423ce8.png)
编程实现:
void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg)
{
HAL_WWDG_Refresh(hwwdg);
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);
}
main函数
MX_GPIO_Init();
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
HAL_Delay(300);
MX_WWDG_Init();
while (1)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
HAL_Delay(40);
}
独立看门狗和窗口看门狗的异同点
![](https://i-blog.csdnimg.cn/blog_migrate/c68fe7ce3b8a9764b38c5632aefa7956.png)