什么是窗口看门狗?
之所以称为窗口就是因为其喂狗时间是一个有上下限的范围内(窗口),你可以通过设定相关寄存器,设定其上限时间(下限固定)。喂狗的时间不能过早也不能过晚。
窗口看门狗有关代码
初始化函数
参数:递减计数器初始值,上窗口值,预分频值
void WWDG_Config(uint8_t tr, uint8_t wr, uint32_t prv)
{
// 开启 WWDG 时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
// 设置递减计数器的值
WWDG_SetCounter( tr );
// 设置预分频器的值
WWDG_SetPrescaler( prv );
// 设置上窗口值
WWDG_SetWindowValue( wr );
// 设置计数器的值,使能 WWDG
WWDG_Enable(WWDG_CNT);
// 清除提前唤醒中断标志位
WWDG_ClearFlag();
// 配置 WWDG 中断优先级
WWDG_NVIC_Config();
// 开 WWDG 中断
WWDG_EnableIT();
}
喂狗函数
WWDG_SetCounter( wwdg_cnt );
本质上就是设置递减计数器的值
中断函数
void WWDG_IRQHandler(void)
清楚标志位函函数
WWDG_ClearFlag();
编程总结
根据等待时间以及窗口时间,计算出需要初始化的值,初始化函数后,记得使能中断请求,最后编写中断函数,记得加上清楚标志位的函数