STM32F030看门狗

STM32F030的看门狗分独立看门狗和窗口看门狗。

独立看门狗

使用独立的LSI时钟,因此一旦开启就无法停止,除非复位。所以当使用stop模式时,就需要定时唤醒喂狗。

独立看门狗配置代码如下:

    if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)
    {
        RCC_ClearFlag();
    }
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
    IWDG_SetPrescaler(IWDG_Prescaler_128);
    IWDG_SetReload(LsiFreq / 128);                //1s
    IWDG_ReloadCounter();
    IWDG_Enable();

窗口看门狗

使用PCLK1时钟。睡眠模式下,时钟停止。看门狗也停止计数。但喂狗有严格的时间限制,必须在规定的某段时间内喂狗。喂早和喂迟了都会导致系统复位。

窗口看门狗配置代码如下:

    if (RCC_GetFlagStatus(RCC_FLAG_WWDGRST) != RESET)
    {
        RCC_ClearFlag();
    }
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
    WWDG_SetPrescaler(WWDG_Prescaler_8);
    //refresh window is: ~683 * (127-98)= 19.8ms < refresh window < ~683 * 64 = 43.7ms
    WWDG_SetWindowValue(98);        
    WWDG_Enable(127);
    bsp_StartAutoTimer(TMR_WWDG,TMR_PERIOD_30MS);
原文地址:https://www.cnblogs.com/challenge1230/p/7132872.html