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)10 void 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)22 void WDT_ReloadCounter(void)
23 {
24     WD_KICK = COUNTER_RELOAD_KEY;
25 }
26 
WDT_Enable(void)27 void WDT_Enable(void)
28 {
29     WD_CONFIG |= (1 << WDT_ENABLE_BIT_Mask);
30 }
31 
WDT_ModeConfig(WDT_ModeTypeDef WDT_Mode)32 void 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)46 ITStatus WDT_GetITStatus(void)
47 {
48     return (ITStatus)(WD_KICK & 1);
49 }
50 
WDT_ClearITPendingBit(void)51 void WDT_ClearITPendingBit(void)
52 {
53     WD_CLEAR = 1;
54 }
55