(一)概述
stm32有两个看门狗:硬件看门狗(LSI 40KHz,时间精度不高)和窗口看门狗(APB1)。
(二)硬件看门狗实现代码
IWDG_HandleTypeDef hiwdg;
// 硬件看门狗初始化
static void MX_IWDG_Init(IWDG_HandleTypeDef *pHiwdg)
{
pHiwdg->Instance = IWDG;
pHiwdg->Init.Prescaler = IWDG_PRESCALER_4;
pHiwdg->Init.Reload = 0xFFF; // Tout = ((4 * 2^prer) * rlr) / 40 = 409ms,看门狗溢出时间
if (HAL_IWDG_Init(pHiwdg) != HAL_OK)
{
Error_Handler();
}
}
int main(void)
{
........
MX_IWDG_Init(&hiwdg);
........
HAL_IWDG_Start(&hiwdg);
while (1)
{
........
HAL_IWDG_Refresh(&hiwdg);
}
}
(三)初始上电获取硬件看门狗复位状态
if (__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET)
{
}/* 硬件看门狗复位 */
__HAL_RCC_CLEAR_RESET_FLAGS();
(四)看门狗复位后I