9.STM32之兩隻看門狗
1.獨立看門狗 IWDG
由內部時鐘LSI提供,故不需要時鐘使能,為遞減計數器。獨立看門狗啟用後,計數器遞減到0時復位,因此需要在計數器減到0之前進行喂狗操作。
步驟:取消防寫-設定時鐘分頻係數-設定重灌載值-看門狗使能-喂狗程式
相關函式:#include "stm32f4xx_iwdg.h"
void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
void IWDG_SetReload(uint16_t Reload);
void IWDG_Enable(void);
void IWDG_ReloadCounter(void);
2.視窗看門狗 WWDG
為內建的6位遞減計數器,在PCLK1分頻時鐘的驅動下工作。看門狗使能後,計數器減至0X40時會產生早期喚醒中斷(EWI),在此中斷服務中進行喂狗操作。若計數器繼續遞減至0X3F,則產生看門狗復位。此外,看設定視窗外進行喂狗操作,同樣會產生復位,即喂狗時間在一個視窗之內,並且可以靈活的配置此視窗。
相關函式:#include <stm32f4xx_wwdg.h>
void WWDG_SetPrescaler(uint32_t WWDG_Prescaler); 設定時鐘分頻係數
void WWDG_SetWindowValue(uint8_t WindowValue); 設定視窗值 0X40~0X7F範圍內
void WWDG_EnableIT(void);
void WWDG_EnableIT(void);
void WWDG_IRQHandler(void);
void WWDG_ClearFlag(void);
void WWDG_SetCounter(uint8_t Counter);