1. 程式人生 > >9.STM32之兩隻看門狗

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