summaryrefslogtreecommitdiff
path: root/bsp/Vango/v85xxp/libraries/VangoV85xxP_standard_peripheral/Source/lib_wdt.c
blob: 00e47707be40b80ed9a7ff17a05e3cc2495773d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**
  ******************************************************************************
  * @file    lib_wdt.c 
  * @author  Application Team
  * @version V1.1.0
  * @date    2019-10-28
  * @brief   WDT library.
  ******************************************************************************
  * @attention
  *
  ******************************************************************************
  */
#include "lib_wdt.h"

#define WDTPASS_KEY 0xAA5555AA
#define WDTCLR_KEY  0x55AAAA55

/**
  * @brief  Enables WDT timer.
  * @param  None
  * @retval None
  */
void WDT_Enable(void)
{
  PMU->WDTPASS = WDTPASS_KEY;
  PMU->WDTEN |= PMU_WDTEN_WDTEN;
  
  PMU->WDTPASS = WDTPASS_KEY;
  PMU->WDTEN |= PMU_WDTEN_WDTEN;
}

/**
  * @brief  Disables WDT timer.
  * @param  None
  * @retval None
  */
void WDT_Disable(void)
{
  PMU->WDTPASS = WDTPASS_KEY;
  PMU->WDTEN &= ~PMU_WDTEN_WDTEN;
  
  PMU->WDTPASS = WDTPASS_KEY;
  PMU->WDTEN &= ~PMU_WDTEN_WDTEN;
}

/**
  * @brief  Clears WDT counter.
  * @param  None
  * @retval None
  */
void WDT_Clear(void)
{
  PMU->WDTCLR = WDTCLR_KEY;
}

/**
  * @brief  Configures WDT counting period.
  * @param  counting period:
               WDT_2_SECS
               WDT_4_SECS
               WDT_8_SECS
               WDT_16_SECS
  * @retval None
  */
void WDT_SetPeriod(uint32_t period)
{
  uint32_t tmp;
  
  assert_parameters(IS_WDT_PERIOD(period));
    
  tmp = PMU->WDTEN;
  tmp &= ~PMU_WDTEN_WDTSEL;
  tmp |= period;
  PMU->WDTPASS = WDTPASS_KEY;
  PMU->WDTEN = tmp;
}

/**
  * @brief  Gets WDT counter value.
  * @param  None
  * @retval current counter value.
  */
uint16_t WDT_GetCounterValue(void)
{
  return (PMU->WDTCLR & PMU_WDTCLR_WDTCNT);
}

/*********************************** END OF FILE ******************************/