1.STM32CubeMX配置
keil5文件输出如下:
点击右上角GENERATE CODE
2.代码解析
IWDG_HandleTypeDef hiwdg;
void MX_IWDG_Init(void)
{
hiwdg.Instance = IWDG;
hiwdg.Init.Prescaler = IWDG_PRESCALER_4;//4分频,频率为10KHz
hiwdg.Init.Window = 4095;//看门狗窗口值,0~4095
hiwdg.Init.Reload = 4095;//看门狗重置值,0~4095,重置后会自减,减到0时MCU会复位。
if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
{
Error_Handler();
}
}
//main.c
MX_IWDG_Init(); //初始化独立看门狗
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); //开机/重启闪2次灯
HAL_Delay(100);
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
HAL_Delay(100);
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
HAL_Delay(100);
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
while (1)
{
while(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == 1) //检测按键是否按下
{
HAL_Delay(500); //延时500ms,足够让看门狗触发重启。
}
HAL_IWDG_Refresh(&hiwdg); //喂狗:重装看门狗数据为4095.
}