为什么要有看门狗呢?
因为程序在运行过程中是会跑飞的。我们也不知道飞了,就加一个狗狗看着,相当于一个倒计时,在一定时间内如果没有接收到喂狗信号(倒计时重新开始),就意味着程序可能跑飞了。这时候处理器就会自动复位,重新开始运行啦。
一、独立看门狗
独立看门狗是从一个计数值,减小到0,若在这个过程中没有喂狗,说明程序跑飞,处理器自动复位。
实现功能:
正常情况下是灯一直闪烁,按下按键,即喂狗后 ,灯一直亮。
各种bug,整了一下午,心塞塞。
主函数while前
HAL_Delay(500);
HAL_GPIO_WritePin(LED_G_GPIO_Port, LED_G_Pin, GPIO_PIN_RESET);
由于一直复位,所以灯闪烁。
while中
while (1)
{
//按键消抖
if(HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin)==GPIO_PIN_SET)
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin)==GPIO_PIN_SET)
{
HAL_IWDG_Refresh(&hiwdg);//喂狗
}
}
HAL_Delay(10);
}
这里看门狗设置的时间是大约1s,预分频系数64,重装载值是625。
配置看门狗后,一直按键,不停喂狗,就不再复位。灯就不灭了。