blob: 252aa2ef6642acf7661f7ccaab31320fc3d3ea43 (
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
|
/**
******************************************************************************
* @file lib_cmp.h
* @author Application Team
* @version V1.1.0
* @date 2019-10-28
* @brief CMP library.
******************************************************************************
* @attention
*
******************************************************************************
*/
#ifndef __LIB_CMP_H
#define __LIB_CMP_H
#ifdef __cplusplus
extern "C" {
#endif
#include "target.h"
/* CMP Time struct */
typedef struct
{
uint32_t DebSel;
uint32_t SignalSourceSel;
uint32_t BiasSel;
} CMP_TypeDef;
typedef struct
{
uint32_t ModeSel;
uint32_t CheckPeriod;
uint32_t CheckNum;
} CMP_CountTypeDef;
typedef struct
{
uint32_t DebSel;
uint32_t OutputSel;
} CMP_OutputTypeDef;
typedef struct
{
uint32_t INTNumSel;
uint32_t SubSel;
uint32_t THRNum;
} CMP_INTTypeDef;
/* Macros --------------------------------------------------------------------*/
/***** CMP_DEBConfig *****/
//CMPx
#define CMP_1 (0x00U)
#define CMP_2 (0x02U)
#define IS_CMP(__CMP__) (((__CMP__) == CMP_1) || ((__CMP__) == CMP_2))
/************** Bits definition for ANA_REG2 register ******************/
#define ANA_REG2_CMP1SEL_0 (0x0U << ANA_REG2_CMP1SEL_Pos)
#define ANA_REG2_CMP1SEL_1 (0x1U << ANA_REG2_CMP1SEL_Pos)
#define ANA_REG2_CMP1SEL_2 (0x2U << ANA_REG2_CMP1SEL_Pos)
#define ANA_REG2_CMP1SEL_3 (0x3U << ANA_REG2_CMP1SEL_Pos)
#define ANA_REG2_CMP2SEL_0 (0x0U << ANA_REG2_CMP2SEL_Pos)
#define ANA_REG2_CMP2SEL_1 (0x1U << ANA_REG2_CMP2SEL_Pos)
#define ANA_REG2_CMP2SEL_2 (0x2U << ANA_REG2_CMP2SEL_Pos)
#define ANA_REG2_CMP2SEL_3 (0x3U << ANA_REG2_CMP2SEL_Pos)
/************** Bits definition for ANA_REG5 register ******************/
#define ANA_REG5_CMP1IT_0 (0x0U << ANA_REG5_CMP1IT_Pos)
#define ANA_REG5_CMP1IT_1 (0x1U << ANA_REG5_CMP1IT_Pos)
#define ANA_REG5_CMP1IT_2 (0x2U << ANA_REG5_CMP1IT_Pos)
#define ANA_REG5_CMP1IT_3 (0x3U << ANA_REG5_CMP1IT_Pos)
#define ANA_REG5_CMP2IT_0 (0x0U << ANA_REG5_CMP2IT_Pos)
#define ANA_REG5_CMP2IT_1 (0x1U << ANA_REG5_CMP2IT_Pos)
#define ANA_REG5_CMP2IT_2 (0x2U << ANA_REG5_CMP2IT_Pos)
#define ANA_REG5_CMP2IT_3 (0x3U << ANA_REG5_CMP2IT_Pos)
/************** Bits definition for ANA_CTRL register ******************/
//Debounce
#define CMP_DEB_NONE (0x0U)
#define CMP_DEB_RTCCLK_2 (0x1U)
#define CMP_DEB_RTCCLK_3 (0x2U)
#define CMP_DEB_RTCCLK_4 (0x3U)
#define IS_CMP_DEB(__DEB__) (((__DEB__) == CMP_DEB_NONE) ||\
((__DEB__) == CMP_DEB_RTCCLK_2) ||\
((__DEB__) == CMP_DEB_RTCCLK_3) ||\
((__DEB__) == CMP_DEB_RTCCLK_4))
/***** SourceSelect (CMP_ConfigSignalSource) *****/
#define CMP_SIGNALSRC_PPIN_TO_VREF 0x00
#define CMP_SIGNALSRC_PPIN_TO_BGPREF 0x01
#define CMP_SIGNALSRC_PBAT_TO_VREF 0x80
#define CMP_SIGNALSRC_PBAT_TO_BGPREF 0x81
#define CMP_SIGNALSRC_NPIN_TO_VREF 0x10
#define CMP_SIGNALSRC_NPIN_TO_BGPREF 0x11
#define CMP_SIGNALSRC_PPIN_TO_NPIN 0x20
#define CMP_SIGNALSRC_PBAT_TO_NPIN 0xA0
#define IS_CMP_SIGNALSRC(__SIGNALSRC__) (((__SIGNALSRC__) == CMP_SIGNALSRC_PPIN_TO_VREF) ||\
((__SIGNALSRC__) == CMP_SIGNALSRC_PPIN_TO_BGPREF) ||\
((__SIGNALSRC__) == CMP_SIGNALSRC_PPIN_TO_NPIN) ||\
((__SIGNALSRC__) == CMP_SIGNALSRC_PBAT_TO_NPIN) ||\
((__SIGNALSRC__) == CMP_SIGNALSRC_PBAT_TO_VREF) ||\
((__SIGNALSRC__) == CMP_SIGNALSRC_PBAT_TO_BGPREF) ||\
((__SIGNALSRC__) == CMP_SIGNALSRC_NPIN_TO_VREF) ||\
((__SIGNALSRC__) == CMP_SIGNALSRC_NPIN_TO_BGPREF))
/***** BiasSel (CMP_BiasConfig) *****/
#define CMP_BIAS_20nA (0x0U)
#define CMP_BIAS_100nA (0x1U)
#define CMP_BIAS_500nA (0x2U)
#define IS_CMP_BIAS(__BIAS__) (((__BIAS__) == CMP_BIAS_20nA) ||\
((__BIAS__) == CMP_BIAS_100nA) ||\
((__BIAS__) == CMP_BIAS_500nA))
/***** CheckPeriod (CMP_CheckFrequecnyConfig) *****/
#define CMP_PERIOD_30US 0
#define CMP_PERIOD_7_8125MS 1
#define CMP_PERIOD_125MS 2
#define CMP_PERIOD_250MS 3
#define CMP_PERIOD_500MS 4
#define IS_CMP_CHECKPERIOD(__CHECKPERIOD__) (((__CHECKPERIOD__) == CMP_PERIOD_30US) ||\
((__CHECKPERIOD__) == CMP_PERIOD_7_8125MS)||\
((__CHECKPERIOD__) == CMP_PERIOD_125MS) ||\
((__CHECKPERIOD__) == CMP_PERIOD_250MS) ||\
((__CHECKPERIOD__) == CMP_PERIOD_500MS))
/***** Mode (CMP_ModeConfig) *****/
#define CMP_MODE_OFF (0x0U)
#define CMP_MODE_RISING (0x1U)
#define CMP_MODE_FALLING (0x2U)
#define CMP_MODE_BOTH (0x3U)
#define IS_CMP_MODE(__MODE__) (((__MODE__) == CMP_MODE_OFF) ||\
((__MODE__) == CMP_MODE_RISING) ||\
((__MODE__) == CMP_MODE_FALLING) ||\
((__MODE__) == CMP_MODE_BOTH))
//CountSel
#define CMP_COUNT_NOSUB 0
#define CMP_COUNT_SUB 1
#define IS_CMP_COUNT(__COUNT__) (((__COUNT__) == CMP_COUNT_NOSUB) ||\
((__COUNT__) == CMP_COUNT_SUB))
//SubSel
#define CMP_INTNUM_EVERY 0
#define CMP_INTNUM_1 1
#define IS_CMP_INTNUM(__INTNUM__) (((__INTNUM__) == CMP_INTNUM_EVERY) ||\
((__INTNUM__) == CMP_INTNUM_1))
//THRNum
#define IS_CMP_THRNUM(__THRNUM__) ((__THRNUM__) < 65536UL)
#define CMP_CHKNUM_1 0
#define CMP_CHKNUM_2 1
#define CMP_CHKNUM_3 2
#define CMP_CHKNUM_4 3
#define CMP_CHKNUM_5 4
#define CMP_CHKNUM_6 5
#define CMP_CHKNUM_7 6
#define CMP_CHKNUM_8 7
#define CMP_CHKNUM_9 8
#define CMP_CHKNUM_10 9
#define CMP_CHKNUM_11 10
#define CMP_CHKNUM_12 11
#define CMP_CHKNUM_13 12
#define CMP_CHKNUM_14 13
#define CMP_CHKNUM_15 14
#define CMP_CHKNUM_16 15
#define IS_CMP_CHKNUM(__CHKNUM__) (__CHKNUM__ < 16)
//DebSel
//SubSel
#define CMP_OUTPUT_DEB 0
#define CMP_OUTPUT_NODEB 1
#define IS_CMP_OUTPUTDEB(__OUTPUTDEB__) (((__OUTPUTDEB__) == CMP_OUTPUT_DEB) ||\
((__OUTPUTDEB__) == CMP_OUTPUT_NODEB))
/* Exported Functions ------------------------------------------------------- */
/* CMP Exported Functions Group1:
(De)Initialization ------------------------*/
void CMP_DeInit(uint32_t CMPx);
void CMP_Init(uint32_t CMPx, CMP_TypeDef *InitStruct);
void CMP_StructInit(CMP_TypeDef *InitStruct);
void CMP_CountStructInit(CMP_CountTypeDef *InitStruct);
void CMP_CountInit(uint32_t CMPx, CMP_CountTypeDef *InitStruct);
void CMP_INTStructInit(CMP_INTTypeDef *InitStruct);
void CMP_INTInit(uint32_t CMPx, CMP_INTTypeDef *InitStruct);
void CMP_OutputStructInit(CMP_OutputTypeDef *InitStruct);
void CMP_OutputInit(uint32_t CMPx, CMP_OutputTypeDef *InitStruct);
/* CMP Exported Functions Group2:
Interrupt (flag) --------------------------*/
void CMP_INTConfig(uint32_t CMPx, uint32_t NewState);
uint8_t CMP_GetINTStatus(uint32_t CMPx);
void CMP_ClearINTStatus(uint32_t CMPx);
/* CMP Exported Functions Group3:
MISC Configuration ------------------------*/
void CMP_Cmd(uint32_t CMPx, uint32_t NewState);
uint32_t CMP_GetCNTValue(uint32_t CMPx);
void CMP_ClearCNTValue(uint32_t CMPx);
uint8_t CMP_GetOutputValue(uint32_t CMPx);
#ifdef __cplusplus
}
#endif
#endif /* __LIB_CMP_H */
/*********************************** END OF FILE ******************************/
|