1 /*
2  * Copyright (c) 2006-2020, YICHIP Development Team
3  * @file     yc_wdt.c
4  * @brief    This file provides all the WDT firmware functions.
5  *
6  * Change Logs:
7  * Date           Author             Version        Notes
8  * 2021-01-04     yangzhengfeng      V1.0.0         the first version
9  */
10 #include "yc_wdt.h"
11 
12 /**
13  * @brief  Set WDT Clk Div
14  * @param  Wdtclkdiv: Wdtclkdiv value equal 1 to 16
15  * @retval none
16  */
WDT_CLKDIV(uint32_t Wdtclkdiv)17 void WDT_CLKDIV(uint32_t Wdtclkdiv)
18 {
19     _ASSERT(IS_WDT_CLKDI(Wdtclkdiv));
20 
21     MWDT->CONFIG.bit.CLK_DIV = Wdtclkdiv;
22 }
23 
24 /**
25  * @brief  Set reload counter
26  * @param  Reload: Reload counter equal to 2 to 31
27  * @retval none
28  */
WDT_SetReload(uint32_t Reload)29 void WDT_SetReload(uint32_t Reload)
30 {
31     _ASSERT(IS_WDT_RELOAD(Reload));
32 
33     MWDT->CONFIG.bit.RELOAD = Reload;
34 }
35 
36 /**
37  * @brief  Feed the watchdog function
38  * @param  none
39  * @retval none
40  */
WDT_ReloadCounter(void)41 void WDT_ReloadCounter(void)
42 {
43     MWDT->KICK.reg = COUNTER_RELOAD_KEY;
44 }
45 
46 /**
47  * @brief  Enable WDT
48  * @param  none
49  * @retval none
50  */
WDT_Enable(void)51 void WDT_Enable(void)
52 {
53     MWDT->CONFIG.bit.EN = ENABLE;
54 }
55 
56 /**
57  * @brief Set WDT  mode
58  * @param WDT_Mode : Select the following values :
59  *        WDT_CPUReset
60  *        WDT_Interrupt.
61  * @retval none
62  * @description If Select WDT_CPUReset Mode,the bit for WDT RESET will be set;if
63  *              Select WDT_Interrupt the bit for WDT RESET will
64  */
WDT_ModeConfig(WDT_ModeTypeDef WDT_Mode)65 void WDT_ModeConfig(WDT_ModeTypeDef WDT_Mode)
66 {
67     _ASSERT(IS_WDT_MODE(WDT_Mode));
68 
69     if(WDT_CPUReset == WDT_Mode)
70     {
71         MWDT->CONFIG.bit.MODE = WDT_CPUReset;
72         MRSTGEN->RST_EN.bit.WDT = ENABLE;
73     }
74     else if(WDT_Interrupt == WDT_Mode)
75     {
76         MWDT->CONFIG.bit.MODE = WDT_Interrupt;
77         MRSTGEN->RST_EN.bit.WDT = DISABLE;
78     }
79 }
80 
81 /**
82  * @brief  Get interrupt Status
83  * @param  none
84  * @retval SET:interrupt ocuured.
85  */
WDT_GetITStatus(void)86 uint8_t WDT_GetITStatus(void)
87 {
88     uint16_t ret;
89 
90     ret = MWDT->IRQ_STATUS.bit.STATE;
91 
92     return ret ;
93 }
94 
95 /**
96  * @brief  Clear interrupt
97  * @param  none
98  * @retval none
99  */
WDT_ClearITPendingBit(void)100 void WDT_ClearITPendingBit(void)
101 {
102     MWDT->CLEAR.reg = 1;
103 }
104 
105 /************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
106