1 /**
2   ******************************************************************************
3   * @file    lib_ana.c
4   * @author  Application Team
5   * @version V1.1.0
6   * @date    2019-10-28
7   * @brief   Analog library.
8   ******************************************************************************
9   * @attention
10   *
11   *
12   ******************************************************************************
13   */
14 
15 /* Includes ------------------------------------------------------------------*/
16 #include "lib_ana.h"
17 
18 /**
19   * @brief  Gets analog status.
20   * @param  StatusMask:
21                 ANA_STATUS_AVCCLV
22                 ANA_STATUS_VDCINDROP
23                 ANA_STATUS_VDDALARM
24                 ANA_STATUS_COMP2
25                 ANA_STATUS_COMP1
26                 ANA_STATUS_LOCKL
27                 ANA_STATUS_LOCKH
28   * @retval Analog status
29   */
ANA_GetStatus(uint32_t StatusMask)30 uint8_t ANA_GetStatus(uint32_t StatusMask)
31 {
32   /* Check parameters */
33   assert_parameters(IS_ANA_STATUS(StatusMask));
34 
35   if (ANA->CMPOUT & StatusMask)
36   {
37     return 1;
38   }
39   else
40   {
41     return 0;
42   }
43 }
44 
45 /**
46   * @brief  Gets analog interrupt status.
47   * @param  IntMask:
48                 ANA_INT_UPPER_TH3
49                 ANA_INT_LOWER_TH3
50                 ANA_INT_UPPER_TH2
51                 ANA_INT_LOWER_TH2
52                 ANA_INT_UPPER_TH1
53                 ANA_INT_LOWER_TH1
54                 ANA_INT_UPPER_TH0
55                 ANA_INT_LOWER_TH0
56                 ANA_INT_TADC_OVER
57                 ANA_INT_REGERR
58                 ANA_INT_SLPFAIL_VDCIN
59                 ANA_INT_AVCCLV
60                 ANA_INT_VDCINDROP
61                 ANA_INT_VDDALARM
62                 ANA_INT_COMP2
63                 ANA_INT_COMP1
64                 ANA_INT_ADCA
65                 ANA_INT_ADCM
66   * @retval interrupt status.
67   */
ANA_GetINTStatus(uint32_t IntMask)68 uint8_t ANA_GetINTStatus(uint32_t IntMask)
69 {
70   /* Check parameters */
71   assert_parameters(IS_ANA_INTSTSR(IntMask));
72 
73   if (ANA->INTSTS&IntMask)
74   {
75     return 1;
76   }
77   else
78   {
79     return 0;
80   }
81 }
82 
83 /**
84   * @brief  Clears analog interrupt status.
85   * @param  IntMask:status to clear, can use the '|' operator.
86                 ANA_INT_UPPER_TH3
87                 ANA_INT_LOWER_TH3
88                 ANA_INT_UPPER_TH2
89                 ANA_INT_LOWER_TH2
90                 ANA_INT_UPPER_TH1
91                 ANA_INT_LOWER_TH1
92                 ANA_INT_UPPER_TH0
93                 ANA_INT_LOWER_TH0
94                 ANA_INT_TADC_OVER
95                 ANA_INT_REGERR
96                 ANA_INT_SLPFAIL_VDCIN
97                 ANA_INT_AVCCLV
98                 ANA_INT_VDCINDROP
99                 ANA_INT_VDDALARM
100                 ANA_INT_COMP2
101                 ANA_INT_COMP1
102                 ANA_INT_ADCA
103                 ANA_INT_ADCM
104   * @retval None
105   */
ANA_ClearINTStatus(uint32_t IntMask)106 void ANA_ClearINTStatus(uint32_t IntMask)
107 {
108   /* Check parameters */
109   assert_parameters(IS_ANA_INTSTSC(IntMask));
110 
111   ANA->INTSTS = IntMask;
112 }
113 
114 /**
115   * @brief  Enables or disables analog interrupt.
116   * @param  IntMask:status to clear, can use the '|' operator.
117                 ANA_INT_UPPER_TH3
118                 ANA_INT_LOWER_TH3
119                 ANA_INT_UPPER_TH2
120                 ANA_INT_LOWER_TH2
121                 ANA_INT_UPPER_TH1
122                 ANA_INT_LOWER_TH1
123                 ANA_INT_UPPER_TH0
124                 ANA_INT_LOWER_TH0
125                 ANA_INT_TADC_OVER
126                 ANA_INT_REGERR
127                 ANA_INT_SLPFAIL_VDCIN
128                 ANA_INT_AVCCLV
129                 ANA_INT_VDCINDROP
130                 ANA_INT_VDDALARM
131                 ANA_INT_COMP2
132                 ANA_INT_COMP1
133                 ANA_INT_ADCA
134                 ANA_INT_ADCM
135             NewState:
136                 ENABLE
137                 DISABLE
138   * @retval None
139   */
ANA_INTConfig(uint32_t IntMask,uint32_t NewState)140 void ANA_INTConfig(uint32_t IntMask, uint32_t NewState)
141 {
142   uint32_t tmp;
143 
144   /* Check parameters */
145   assert_parameters(IS_ANA_INT(IntMask));
146   assert_parameters(IS_FUNCTIONAL_STATE(NewState));
147 
148   tmp = ANA->INTEN;
149   if (NewState == ENABLE)
150   {
151     tmp |= IntMask;
152   }
153   else
154   {
155     tmp &= ~IntMask;
156   }
157   ANA->INTEN = tmp;
158 }
159 
160 /*********************************** END OF FILE ******************************/
161