独立看门狗的窗功能
IWDG的作用是在程序跑飞后,令CPU复位,提高软件的强壮性。
而IWDG窗功能相当于控制喂狗的时机,即设定喂狗操作的起点(窗时间),早于窗时间喂狗会令CPU复位。
设计目标
- 配置IWDG的下溢出时间为1s,配置IWDG的窗时间为0.5s。
芯片配置
1、以HSI为PLL时钟源,将片上所有时钟都配置在64MHz
(图略,配置同上一篇文章)
2、配置PA5(板载LD4灯)为推挽输出L
(图略,配置同上一篇文章)
3、启用IWDG,配置如下图所示
IWDG的时钟源是LSI,频率是32KHz,32分频后,IWDG的计时频率是1KHz。(注意:下图中分频系数设置错了,应设置为32-1)
设定下溢出计数值为999次(1000-1),则喂狗的最晚时间是1s;设定窗计数值为499次(500-1),则喂狗的最早时间是0.5s,一旦早于这个时间才喂狗,会触发看门狗复位。
程序修改
共通部分:初阶/高阶 共用新增代码
(代码略,同上一篇文章)
1、过早喂狗:主循环增加以下代码
while ( 1 ) {
HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_Pin);
HAL_Delay(250);
IWDG_Feed();
}
2、正常喂狗:主循环内的延时调整到750ms
while ( 1 ) {
HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_Pin);
HAL_Delay(750);
IWDG_Feed();
}
运行测试
1、过早喂狗:0.25s<0.5s,NG,板载LD4几乎一直常亮
2、正常喂狗:0.5s<0.75s<1s,OK,板载LD4的闪烁频率是1.5s,占空比是50%