1、独立看门狗实验
配置:
主要代码:
//初始化
MX_GPIO_Init();
MX_IWDG1_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET);//点亮LED
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET)//按键是否按下
{
HAL_IWDG_Refresh(&hiwdg1);//通过按下按键来喂狗
}
HAL_Delay(10);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
如果按键没有按下,则看门狗在运行一定时间后会重启程序,LED灯闪烁,如果在一定时间内按下则不会重启,LED保持常亮
2、窗口看门狗实验
配置:
主要代码:
主函数内
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET);
HAL_Delay(300);
MX_WWDG1_Init();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET);
/* USER CODE BEGIN 3 */
}
重写callback函数
void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef* hwwdg)
{
HAL_WWDG_Refresh(&hwwdg1);
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4);
HAL_Delay(100);
}
通过LED闪烁可看到在中断函数内不停地喂狗。