1 /**
2   ******************************************************************************
3   * @file    lib_wdt.c
4   * @author  Application Team
5   * @version V4.4.0
6   * @date    2018-09-27
7   * @brief   WDT library.
8   ******************************************************************************
9   * @attention
10   *
11   ******************************************************************************
12   */
13 #include "lib_wdt.h"
14 
15 #define WDTPASS_KEY 0xAA5555AA
16 #define WDTCLR_KEY  0x55AAAA55
17 
18 /**
19   * @brief  Enable WDT timer.
20   * @param  None
21   * @retval None
22   */
WDT_Enable(void)23 void WDT_Enable(void)
24 {
25   PMU->WDTPASS = WDTPASS_KEY;
26   PMU->WDTEN |= PMU_WDTEN_WDTEN;
27 
28   PMU->WDTPASS = WDTPASS_KEY;
29   PMU->WDTEN |= PMU_WDTEN_WDTEN;
30 }
31 
32 /**
33   * @brief  Disable WDT timer.
34   * @param  None
35   * @retval None
36   */
WDT_Disable(void)37 void WDT_Disable(void)
38 {
39   PMU->WDTPASS = WDTPASS_KEY;
40   PMU->WDTEN &= ~PMU_WDTEN_WDTEN;
41 
42   PMU->WDTPASS = WDTPASS_KEY;
43   PMU->WDTEN &= ~PMU_WDTEN_WDTEN;
44 }
45 
46 /**
47   * @brief  Clear WDT counter.
48   * @param  None
49   * @retval None
50   */
WDT_Clear(void)51 void WDT_Clear(void)
52 {
53   PMU->WDTCLR = WDTCLR_KEY;
54 }
55 
56 /**
57   * @brief  Set WDT counting period.
58   * @param  counting period:
59                WDT_2_SECS
60                WDT_1_SECS
61                WDT_0_5_SECS
62                WDT_0_25_SECS
63   * @retval None
64   */
WDT_SetPeriod(uint32_t period)65 void WDT_SetPeriod(uint32_t period)
66 {
67   uint32_t tmp;
68 
69   assert_parameters(IS_WDT_PERIOD(period));
70 
71   tmp = PMU->WDTEN;
72   tmp &= ~PMU_WDTEN_WDTSEL;
73   tmp |= period;
74   PMU->WDTPASS = WDTPASS_KEY;
75   PMU->WDTEN = tmp;
76 }
77 
78 /**
79   * @brief  Get WDT counter value.
80   * @param  None
81   * @retval current counter value.
82   */
WDT_GetCounterValue(void)83 uint16_t WDT_GetCounterValue(void)
84 {
85   return (PMU->WDTCLR & PMU_WDTCLR_WDTCNT);
86 }
87 
88 /*********************************** END OF FILE ******************************/
89