1 #include "yc_wdt.h" 2 3 #define WDT_ENABLE_BIT_Mask 6 4 #define WDT_MODE_BIT_Mask 5 5 #define SYSCTRL_WDT_EN_BIT_Mask 1 6 7 /**************the value of feed dog************/ 8 #define COUNTER_RELOAD_KEY 0x5937 9 WDT_SetReload(uint32_t Reload)10void WDT_SetReload(uint32_t Reload) 11 { 12 uint32_t wdt_config = 0; 13 14 _ASSERT(ISWDTRELOAD(Reload)); 15 16 wdt_config = WD_CONFIG; 17 wdt_config &= 0xE0; 18 wdt_config |= Reload; 19 WD_CONFIG = wdt_config; 20 } 21 WDT_ReloadCounter(void)22void WDT_ReloadCounter(void) 23 { 24 WD_KICK = COUNTER_RELOAD_KEY; 25 } 26 WDT_Enable(void)27void WDT_Enable(void) 28 { 29 WD_CONFIG |= (1 << WDT_ENABLE_BIT_Mask); 30 } 31 WDT_ModeConfig(WDT_ModeTypeDef WDT_Mode)32void WDT_ModeConfig(WDT_ModeTypeDef WDT_Mode) 33 { 34 WD_CONFIG &= ~(1 << WDT_MODE_BIT_Mask); 35 WD_CONFIG |= (WDT_Mode << WDT_MODE_BIT_Mask); 36 if (WDT_CPUReset == WDT_Mode) 37 { 38 SYSCTRL_RST_EN |= (1 << 1); 39 } 40 else 41 { 42 SYSCTRL_RST_EN &= ~(1 << 1); 43 } 44 } 45 WDT_GetITStatus(void)46ITStatus WDT_GetITStatus(void) 47 { 48 return (ITStatus)(WD_KICK & 1); 49 } 50 WDT_ClearITPendingBit(void)51void WDT_ClearITPendingBit(void) 52 { 53 WD_CLEAR = 1; 54 } 55