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);

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM