G32R430 Device Driver Layer v1.0.4
G32R4xx Device Driver Layer API Reference
g32r4xx_ddl_adc12.h
Go to the documentation of this file.
1
42
43/* Define to prevent recursive inclusion -------------------------------------*/
44#ifndef G32R4xx_DDL_ADC12_H
45#define G32R4xx_DDL_ADC12_H
46
47#ifdef __cplusplus
48extern "C" {
49#endif
50
51/* Includes ------------------------------------------------------------------*/
52#include "g32r4xx.h"
53
57
58#if defined (ADC3)
59
63
64/* Private types -------------------------------------------------------------*/
65/* Private variables ---------------------------------------------------------*/
66
67/* Private constants ---------------------------------------------------------*/
71
72/* Internal mask for ADC group regular sequencer: */
73/* To select into literal DDL_ADC12_REG_RANK_x the relevant bits for: */
74/* - sequencer register offset */
75/* - sequencer rank bits position into the selected register */
76
77/* Internal register offset for ADC group regular sequencer configuration */
78/* (offset placed into a spare area of literal definition) */
79#define ADC12_SQR1_REGOFFSET (0x00000000UL)
80#define ADC12_SQR2_REGOFFSET (0x00000100UL)
81#define ADC12_SQR3_REGOFFSET (0x00000200UL)
82
83#define ADC12_REG_SQRX_REGOFFSET_MASK (ADC12_SQR1_REGOFFSET | ADC12_SQR2_REGOFFSET | ADC12_SQR3_REGOFFSET)
84#define ADC12_SQRX_REGOFFSET_POS (8UL) /* Position of bits ADC12_SQRx_REGOFFSET in ADC12_REG_SQRX_REGOFFSET_MASK */
85#define ADC12_REG_RANK_ID_SQRX_MASK (0x1F)
86
87/* Definition of ADC group regular sequencer bits information to be inserted */
88/* into ADC group regular sequencer ranks literals definition. */
89#define ADC12_REG_RANK_1_SQRX_BITOFFSET_POS (ADC_SQR1_SQ1_Pos)
90#define ADC12_REG_RANK_2_SQRX_BITOFFSET_POS (ADC_SQR1_SQ2_Pos)
91#define ADC12_REG_RANK_3_SQRX_BITOFFSET_POS (ADC_SQR1_SQ3_Pos)
92#define ADC12_REG_RANK_4_SQRX_BITOFFSET_POS (ADC_SQR1_SQ4_Pos)
93#define ADC12_REG_RANK_5_SQRX_BITOFFSET_POS (ADC_SQR1_SQ5_Pos)
94#define ADC12_REG_RANK_6_SQRX_BITOFFSET_POS (ADC_SQR1_SQ6_Pos)
95#define ADC12_REG_RANK_7_SQRX_BITOFFSET_POS (ADC_SQR1_SQ7_Pos)
96#define ADC12_REG_RANK_8_SQRX_BITOFFSET_POS (ADC_SQR2_SQ8_Pos)
97#define ADC12_REG_RANK_9_SQRX_BITOFFSET_POS (ADC_SQR2_SQ9_Pos)
98#define ADC12_REG_RANK_10_SQRX_BITOFFSET_POS (ADC_SQR2_SQ10_Pos)
99#define ADC12_REG_RANK_11_SQRX_BITOFFSET_POS (ADC_SQR2_SQ11_Pos)
100#define ADC12_REG_RANK_12_SQRX_BITOFFSET_POS (ADC_SQR2_SQ12_Pos)
101#define ADC12_REG_RANK_13_SQRX_BITOFFSET_POS (ADC_SQR2_SQ13_Pos)
102#define ADC12_REG_RANK_14_SQRX_BITOFFSET_POS (ADC_SQR2_SQ14_Pos)
103#define ADC12_REG_RANK_15_SQRX_BITOFFSET_POS (ADC_SQR3_SQ15_Pos)
104#define ADC12_REG_RANK_16_SQRX_BITOFFSET_POS (ADC_SQR3_SQ16_Pos)
105
106/* Internal mask for ADC group injected sequencer: */
107/* To select into literal DDL_ADC12_INJ_RANK_x the relevant bits for: */
108/* - data register offset */
109/* - sequencer rank bits position into the selected register */
110
111/* Internal register offset for ADC group injected data register */
112/* (offset placed into a spare area of literal definition) */
113#define ADC12_JDR1_REGOFFSET (0x00000000UL)
114#define ADC12_JDR2_REGOFFSET (0x00000100UL)
115#define ADC12_JDR3_REGOFFSET (0x00000200UL)
116#define ADC12_JDR4_REGOFFSET (0x00000300UL)
117
118#define ADC12_INJ_JDRX_REGOFFSET_MASK (ADC12_JDR1_REGOFFSET | ADC12_JDR2_REGOFFSET \
119 | ADC12_JDR3_REGOFFSET | ADC12_JDR4_REGOFFSET)
120#define ADC12_INJ_RANK_ID_JSQR_MASK (0x1F)
121#define ADC12_JDRX_REGOFFSET_POS (8UL) /* Position of bits ADC12_JDRx_REGOFFSET in ADC12_INJ_JDRX_REGOFFSET_MASK */
122
123/* Definition of ADC group injected sequencer bits information to be inserted */
124/* into ADC group injected sequencer ranks literals definition. */
125#define ADC12_INJ_RANK_1_JSQR_BITOFFSET_POS (ADC_JSQR_JSQ1_Pos)
126#define ADC12_INJ_RANK_3_JSQR_BITOFFSET_POS (ADC_JSQR_JSQ3_Pos)
127#define ADC12_INJ_RANK_2_JSQR_BITOFFSET_POS (ADC_JSQR_JSQ2_Pos)
128#define ADC12_INJ_RANK_4_JSQR_BITOFFSET_POS (ADC_JSQR_JSQ4_Pos)
129
130/* Internal mask for ADC group regular trigger: */
131/* To select into literal DDL_ADC12_REG_TRIG_x the relevant bits for: */
132/* - regular trigger source */
133/* - regular trigger edge */
134#define ADC12_REG_TRIG_EXT_EDGE_DEFAULT (ADC_CFGR_EXTEN_0) /* Trigger edge set to rising edge */
135
136/* Mask containing trigger source masks for each of possible */
137/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
138/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
139#define ADC12_REG_TRIG_SOURCE_MASK (((DDL_ADC12_REG_TRIG_SOFTWARE & ADC_CFGR_EXTSEL) << (4U * 0UL)) | \
140 ((ADC_CFGR_EXTSEL) << (4U * 1UL)) | \
141 ((ADC_CFGR_EXTSEL) << (4U * 2UL)) | \
142 ((ADC_CFGR_EXTSEL) << (4U * 3UL)) )
143
144/* Mask containing trigger edge masks for each of possible */
145/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
146/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
147#define ADC12_REG_TRIG_EDGE_MASK (((DDL_ADC12_REG_TRIG_SOFTWARE & ADC_CFGR_EXTEN) << (4U * 0UL)) | \
148 ((ADC12_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 1UL)) | \
149 ((ADC12_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 2UL)) | \
150 ((ADC12_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 3UL)) )
151
152/* Definition of ADC group regular trigger bits information. */
153#define ADC12_REG_TRIG_EXTSEL_BITOFFSET_POS (ADC_CFGR_EXTSEL_Pos)
154#define ADC12_REG_TRIG_EXTEN_BITOFFSET_POS (ADC_CFGR_EXTEN_Pos)
155
156/* Internal mask for ADC group injected trigger: */
157/* To select into literal DDL_ADC12_INJ_TRIG_x the relevant bits for: */
158/* - injected trigger source */
159/* - injected trigger edge */
160#define ADC12_INJ_TRIG_EXT_EDGE_DEFAULT (ADC_JSQR_JEXTEN_0) /* Trigger edge set to rising edge */
161
162/* Mask containing trigger source masks for each of possible */
163/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
164/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
165#define ADC12_INJ_TRIG_SOURCE_MASK (((DDL_ADC12_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTSEL) << (4U * 0UL)) | \
166 ((ADC_JSQR_JEXTSEL) << (4U * 1UL)) | \
167 ((ADC_JSQR_JEXTSEL) << (4U * 2UL)) | \
168 ((ADC_JSQR_JEXTSEL) << (4U * 3UL)) )
169
170/* Mask containing trigger edge masks for each of possible */
171/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
172/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
173#define ADC12_INJ_TRIG_EDGE_MASK (((DDL_ADC12_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTEN) << (4U * 0UL)) | \
174 ((ADC12_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 1UL)) | \
175 ((ADC12_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 2UL)) | \
176 ((ADC12_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 3UL)) )
177
178/* Definition of ADC group injected trigger bits information. */
179#define ADC12_INJ_TRIG_EXTSEL_BITOFFSET_POS (ADC_JSQR_JEXTSEL_Pos)
180#define ADC12_INJ_TRIG_EXTEN_BITOFFSET_POS (ADC_JSQR_JEXTEN_Pos)
181
182/* Internal mask for ADC channel: */
183/* To select into literal DDL_ADC12_CHANNEL_x the relevant bits for: */
184/* - channel identifier defined by number */
185/* - channel identifier defined by bitfield */
186/* - channel differentiation between external channels (connected to */
187/* GPIO pins) and internal channels (connected to internal paths) */
188/* - channel sampling time defined by SMPRx register offset */
189/* and SMPx bits positions into SMPRx register */
190#define ADC12_CHANNEL_ID_NUMBER_MASK (ADC_CFGR_AWD1CH)
191#define ADC12_CHANNEL_ID_NUMBER_BITOFFSET_POS (ADC_CFGR_AWD1CH_Pos)
192#define ADC12_CHANNEL_ID_MASK (ADC12_CHANNEL_ID_NUMBER_MASK \
193 | ADC12_CHANNEL_ID_INTERNAL_CH_MASK)
194/* Equivalent mask of ADC12_CHANNEL_NUMBER_MASK aligned on register LSB (bit 0) */
195#define ADC12_CHANNEL_ID_NUMBER_MASK_POSBIT0 (ADC_SQR2_SQ8) /* Equivalent to shift: (ADC12_CHANNEL_NUMBER_MASK >> [Position of bitfield "ADC12_CHANNEL_NUMBER_MASK" in register]) */
196
197/* Channel differentiation between external and internal channels */
198#define ADC12_CHANNEL_ID_INTERNAL_CH (0x80000000UL) /* Marker of internal channel */
199#define ADC12_CHANNEL_ID_INTERNAL_CH_2 (0x00080000UL) /* Marker of internal channel for other ADC instances, in case of different ADC internal channels mapped on same channel number on different ADC instances */
200#define ADC12_CHANNEL_ID_INTERNAL_CH_MASK (ADC12_CHANNEL_ID_INTERNAL_CH | ADC12_CHANNEL_ID_INTERNAL_CH_2)
201
202/* Internal register offset for ADC channel sampling time configuration */
203/* (offset placed into a spare area of literal definition) */
204#define ADC12_SMPR1_REGOFFSET (0x00000000UL)
205#define ADC12_SMPR2_REGOFFSET (0x02000000UL)
206#define ADC12_CHANNEL_SMPRX_REGOFFSET_MASK (ADC12_SMPR1_REGOFFSET | ADC12_SMPR2_REGOFFSET)
207#define ADC12_SMPRX_REGOFFSET_POS (25UL) /* Position of bits ADC12_SMPRx_REGOFFSET in ADC12_CHANNEL_SMPRX_REGOFFSET_MASK */
208
209#define ADC12_CHANNEL_SMPx_BITOFFSET_MASK (0x01F00000UL)
210#define ADC12_CHANNEL_SMPx_BITOFFSET_POS (20UL) /* Value equivalent to bitfield "ADC12_CHANNEL_SMPx_BITOFFSET_MASK" position in register */
211
212/* Definition of channels ID number information to be inserted into */
213/* channels literals definition. */
214#define ADC12_CHANNEL_0_NUMBER (0x00000000UL)
215#define ADC12_CHANNEL_1_NUMBER (ADC_CFGR_AWD1CH_0)
216#define ADC12_CHANNEL_2_NUMBER (ADC_CFGR_AWD1CH_1)
217#define ADC12_CHANNEL_3_NUMBER (ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
218#define ADC12_CHANNEL_4_NUMBER (ADC_CFGR_AWD1CH_2)
219#define ADC12_CHANNEL_5_NUMBER (ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_0)
220#define ADC12_CHANNEL_6_NUMBER (ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1)
221#define ADC12_CHANNEL_7_NUMBER (ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
222#define ADC12_CHANNEL_8_NUMBER (ADC_CFGR_AWD1CH_3)
223#define ADC12_CHANNEL_9_NUMBER (ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_0)
224#define ADC12_CHANNEL_10_NUMBER (ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_1)
225#define ADC12_CHANNEL_11_NUMBER (ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
226#define ADC12_CHANNEL_12_NUMBER (ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2)
227#define ADC12_CHANNEL_13_NUMBER (ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_0)
228#define ADC12_CHANNEL_14_NUMBER (ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1)
229#define ADC12_CHANNEL_15_NUMBER (ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
230
231/* Definition of channels sampling time information to be inserted into */
232/* channels literals definition. */
233#define ADC12_CHANNEL_0_SMP (ADC12_SMPR1_REGOFFSET | (( 0UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP0" position in register */
234#define ADC12_CHANNEL_1_SMP (ADC12_SMPR1_REGOFFSET | (( 4UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP1" position in register */
235#define ADC12_CHANNEL_2_SMP (ADC12_SMPR1_REGOFFSET | (( 8UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP2" position in register */
236#define ADC12_CHANNEL_3_SMP (ADC12_SMPR1_REGOFFSET | ((12UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP3" position in register */
237#define ADC12_CHANNEL_4_SMP (ADC12_SMPR1_REGOFFSET | ((16UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP4" position in register */
238#define ADC12_CHANNEL_5_SMP (ADC12_SMPR1_REGOFFSET | ((20UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP5" position in register */
239#define ADC12_CHANNEL_6_SMP (ADC12_SMPR1_REGOFFSET | ((24UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP6" position in register */
240#define ADC12_CHANNEL_7_SMP (ADC12_SMPR1_REGOFFSET | ((28UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP7" position in register */
241#define ADC12_CHANNEL_8_SMP (ADC12_SMPR2_REGOFFSET | (( 0UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR2_SMP8" position in register */
242#define ADC12_CHANNEL_9_SMP (ADC12_SMPR2_REGOFFSET | (( 4UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR2_SMP9" position in register */
243#define ADC12_CHANNEL_10_SMP (ADC12_SMPR2_REGOFFSET | (( 8UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR2_SMP10" position in register */
244#define ADC12_CHANNEL_11_SMP (ADC12_SMPR2_REGOFFSET | ((12UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR2_SMP11" position in register */
245#define ADC12_CHANNEL_12_SMP (ADC12_SMPR2_REGOFFSET | ((16UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR2_SMP12" position in register */
246#define ADC12_CHANNEL_13_SMP (ADC12_SMPR2_REGOFFSET | ((20UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR2_SMP13" position in register */
247#define ADC12_CHANNEL_14_SMP (ADC12_SMPR2_REGOFFSET | ((24UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR2_SMP14" position in register */
248#define ADC12_CHANNEL_15_SMP (ADC12_SMPR2_REGOFFSET | ((28UL) << ADC12_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR2_SMP15" position in register */
249/* Internal mask for ADC analog watchdog: */
250/* To select into literals DDL_ADC12_AWD_CHANNELx_xxx the relevant bits for: */
251/* (concatenation of multiple bits used in different analog watchdogs, */
252/* - analog watchdog 1: monitored channel defined by number, */
253/* selection of ADC group (ADC groups regular and-or injected). */
254/* - analog watchdog 2 and 3: monitored channel defined by bitfield, no */
255/* selection on groups. */
256
257/* Internal register offset for ADC analog watchdog channel configuration */
258#define ADC12_AWD_CR1_REGOFFSET (0x00000000UL)
259#define ADC12_AWD_CR2_REGOFFSET (0x00100000UL)
260#define ADC12_AWD_CR3_REGOFFSET (0x00200000UL)
261
262/* Register offset gap between AWD1 and AWD2-AWD3 configuration registers */
263/* (Set separately as ADC12_AWD_CRX_REGOFFSET to spare 32 bits space */
264#define ADC12_AWD_CR12_REGOFFSETGAP_MASK (ADC_AWD2CR_AWD2CH_0)
265#define ADC12_AWD_CR12_REGOFFSETGAP_VAL (0x00000010UL)
266
267#define ADC12_AWD_CRX_REGOFFSET_MASK (ADC12_AWD_CR1_REGOFFSET | ADC12_AWD_CR2_REGOFFSET | ADC12_AWD_CR3_REGOFFSET)
268
269#define ADC12_AWD_CR1_CHANNEL_MASK (ADC_CFGR_AWD1CH | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
270#define ADC12_AWD_CR23_CHANNEL_MASK (ADC_AWD2CR_AWD2CH)
271#define ADC12_AWD_CR_ALL_CHANNEL_MASK (ADC12_AWD_CR1_CHANNEL_MASK | ADC12_AWD_CR23_CHANNEL_MASK)
272
273#define ADC12_AWD_CRX_REGOFFSET_POS (20UL) /* Position of bits ADC12_AWD_CRx_REGOFFSET in ADC12_AWD_CRX_REGOFFSET_MASK */
274
275/* Internal register offset for ADC analog watchdog threshold configuration */
276#define ADC12_AWD_TR1_REGOFFSET (ADC12_AWD_CR1_REGOFFSET)
277#define ADC12_AWD_TR2_REGOFFSET (ADC12_AWD_CR2_REGOFFSET)
278#define ADC12_AWD_TR3_REGOFFSET (ADC12_AWD_CR3_REGOFFSET)
279#define ADC12_AWD_TRX_REGOFFSET_MASK (ADC12_AWD_TR1_REGOFFSET | ADC12_AWD_TR2_REGOFFSET | ADC12_AWD_TR3_REGOFFSET)
280#define ADC12_AWD_TRX_REGOFFSET_POS (ADC12_AWD_CRX_REGOFFSET_POS) /* Position of bits ADC12_SQRx_REGOFFSET in ADC12_AWD_TRX_REGOFFSET_MASK */
281#define ADC12_AWD_TRX_BIT_HIGH_MASK (0x00010000UL) /* Selection of 1 bit to discriminate threshold high: mask of bit */
282#define ADC12_AWD_TRX_BIT_HIGH_POS (16UL) /* Selection of 1 bit to discriminate threshold high: position of bit */
283#define ADC12_AWD_TRX_BIT_HIGH_SHIFT4 (ADC12_AWD_TRX_BIT_HIGH_POS - 4UL) /* Shift of bit ADC12_AWD_TRX_BIT_HIGH to position to perform a shift of 4 ranks */
284
285/* Internal mask for ADC offset: */
286/* Internal register offset for ADC offset number configuration */
287#define ADC12_OFR0_REGOFFSET (0x00000000UL)
288#define ADC12_OFR1_REGOFFSET (0x00000001UL)
289#define ADC12_OFR2_REGOFFSET (0x00000002UL)
290#define ADC12_OFR3_REGOFFSET (0x00000003UL)
291#define ADC12_OFRx_REGOFFSET_MASK (ADC12_OFR0_REGOFFSET | ADC12_OFR1_REGOFFSET \
292 | ADC12_OFR2_REGOFFSET | ADC12_OFR3_REGOFFSET)
293
294/* ADC registers bits positions */
295#define ADC12_CFGR_AWD1SGL_BITOFFSET_POS (ADC_CFGR_AWD1SGL_Pos)
296#define ADC12_CFGR_AWD1EN_BITOFFSET_POS (ADC_CFGR_AWD1EN_Pos)
297#define ADC12_CFGR_JAWD1EN_BITOFFSET_POS (ADC_CFGR_JAWD1EN_Pos)
298#define ADC12_TR1_HT1_BITOFFSET_POS (ADC_TR1_HT1_Pos)
299
300/* ADC registers bits groups */
301#define ADC12_CR_BITS_PROPERTY_RS (ADC_CR_JADSTP | ADC_CR_ADSTP | ADC_CR_JADSTART | ADC_CR_ADSTART | ADC_CR_ADEN) /* ADC register CR bits with HW property "rs": Software can read as well as set this bit. Writing '0' has no effect on the bit value. */
302
306
307#define DDL_ADC12_REG_TRIG_SOFTWARE (0x00000000UL)
308#define DDL_ADC12_REG_TRIG_EXT_TMR1_CC1 (ADC12_REG_TRIG_EXT_EDGE_DEFAULT)
309#define DDL_ADC12_REG_TRIG_EXT_TMR1_CC2 (ADC_CFGR_EXTSEL_0 | ADC12_REG_TRIG_EXT_EDGE_DEFAULT)
310#define DDL_ADC12_REG_TRIG_EXT_TMR1_CC3 (ADC_CFGR_EXTSEL_1 | ADC12_REG_TRIG_EXT_EDGE_DEFAULT)
311#define DDL_ADC12_REG_TRIG_EXT_TMR2_CC2 (ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC12_REG_TRIG_EXT_EDGE_DEFAULT)
312#define DDL_ADC12_REG_TRIG_EXT_TMR3_TRGO (ADC_CFGR_EXTSEL_2 | ADC12_REG_TRIG_EXT_EDGE_DEFAULT)
313#define DDL_ADC12_REG_TRIG_EXT_TMR4_CC4 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC12_REG_TRIG_EXT_EDGE_DEFAULT)
314#define DDL_ADC12_REG_TRIG_EXT_EINT_LINE11 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC12_REG_TRIG_EXT_EDGE_DEFAULT)
318
322#define DDL_ADC12_REG_TRIG_EXT_RISING (ADC_CFGR_EXTEN_0)
323#define DDL_ADC12_REG_TRIG_EXT_DISABLE (0x00000000UL)
327
331#define DDL_ADC12_REG_SEQ_SCAN_DISABLE (0x00000000UL)
332#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_2RANKS ( ADC_SQR1_RL_0)
333#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_3RANKS ( ADC_SQR1_RL_1 )
334#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_4RANKS ( ADC_SQR1_RL_1 | ADC_SQR1_RL_0)
335#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_5RANKS ( ADC_SQR1_RL_2 )
336#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_6RANKS ( ADC_SQR1_RL_2 | ADC_SQR1_RL_0)
337#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_7RANKS ( ADC_SQR1_RL_2 | ADC_SQR1_RL_1 )
338#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_8RANKS ( ADC_SQR1_RL_2 | ADC_SQR1_RL_1 | ADC_SQR1_RL_0)
339#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_9RANKS (ADC_SQR1_RL_3 )
340#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_10RANKS (ADC_SQR1_RL_3 | ADC_SQR1_RL_0)
341#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_11RANKS (ADC_SQR1_RL_3 | ADC_SQR1_RL_1 )
342#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_12RANKS (ADC_SQR1_RL_3 | ADC_SQR1_RL_1 | ADC_SQR1_RL_0)
343#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_13RANKS (ADC_SQR1_RL_3 | ADC_SQR1_RL_2 )
344#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_14RANKS (ADC_SQR1_RL_3 | ADC_SQR1_RL_2 | ADC_SQR1_RL_0)
345#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_15RANKS (ADC_SQR1_RL_3 | ADC_SQR1_RL_2 | ADC_SQR1_RL_1)
346#define DDL_ADC12_REG_SEQ_SCAN_ENABLE_16RANKS (ADC_SQR1_RL_3 | ADC_SQR1_RL_2 | ADC_SQR1_RL_1 | ADC_SQR1_RL_0)
350
354#define DDL_ADC12_REG_SEQ_DISCONT_DISABLE (0x00000000UL)
355#define DDL_ADC12_REG_SEQ_DISCONT_1RANK ( ADC_CFGR_DISCEN)
356#define DDL_ADC12_REG_SEQ_DISCONT_2RANKS ( ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN)
357#define DDL_ADC12_REG_SEQ_DISCONT_3RANKS ( ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCEN)
358#define DDL_ADC12_REG_SEQ_DISCONT_4RANKS ( ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN)
359#define DDL_ADC12_REG_SEQ_DISCONT_5RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCEN)
360#define DDL_ADC12_REG_SEQ_DISCONT_6RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN)
361#define DDL_ADC12_REG_SEQ_DISCONT_7RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCEN)
362#define DDL_ADC12_REG_SEQ_DISCONT_8RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN)
366
370#define DDL_ADC12_REG_RANK_1 (ADC12_SQR1_REGOFFSET | ADC12_REG_RANK_1_SQRX_BITOFFSET_POS)
371#define DDL_ADC12_REG_RANK_2 (ADC12_SQR1_REGOFFSET | ADC12_REG_RANK_2_SQRX_BITOFFSET_POS)
372#define DDL_ADC12_REG_RANK_3 (ADC12_SQR1_REGOFFSET | ADC12_REG_RANK_3_SQRX_BITOFFSET_POS)
373#define DDL_ADC12_REG_RANK_4 (ADC12_SQR1_REGOFFSET | ADC12_REG_RANK_4_SQRX_BITOFFSET_POS)
374#define DDL_ADC12_REG_RANK_5 (ADC12_SQR1_REGOFFSET | ADC12_REG_RANK_5_SQRX_BITOFFSET_POS)
375#define DDL_ADC12_REG_RANK_6 (ADC12_SQR1_REGOFFSET | ADC12_REG_RANK_6_SQRX_BITOFFSET_POS)
376#define DDL_ADC12_REG_RANK_7 (ADC12_SQR1_REGOFFSET | ADC12_REG_RANK_7_SQRX_BITOFFSET_POS)
377#define DDL_ADC12_REG_RANK_8 (ADC12_SQR2_REGOFFSET | ADC12_REG_RANK_8_SQRX_BITOFFSET_POS)
378#define DDL_ADC12_REG_RANK_9 (ADC12_SQR2_REGOFFSET | ADC12_REG_RANK_9_SQRX_BITOFFSET_POS)
379#define DDL_ADC12_REG_RANK_10 (ADC12_SQR2_REGOFFSET | ADC12_REG_RANK_10_SQRX_BITOFFSET_POS)
380#define DDL_ADC12_REG_RANK_11 (ADC12_SQR2_REGOFFSET | ADC12_REG_RANK_11_SQRX_BITOFFSET_POS)
381#define DDL_ADC12_REG_RANK_12 (ADC12_SQR2_REGOFFSET | ADC12_REG_RANK_12_SQRX_BITOFFSET_POS)
382#define DDL_ADC12_REG_RANK_13 (ADC12_SQR2_REGOFFSET | ADC12_REG_RANK_13_SQRX_BITOFFSET_POS)
383#define DDL_ADC12_REG_RANK_14 (ADC12_SQR2_REGOFFSET | ADC12_REG_RANK_14_SQRX_BITOFFSET_POS)
384#define DDL_ADC12_REG_RANK_15 (ADC12_SQR3_REGOFFSET | ADC12_REG_RANK_15_SQRX_BITOFFSET_POS)
385#define DDL_ADC12_REG_RANK_16 (ADC12_SQR3_REGOFFSET | ADC12_REG_RANK_16_SQRX_BITOFFSET_POS)
389
393#define DDL_ADC12_INJ_SEQ_SCAN_DISABLE (0x00000000UL)
394#define DDL_ADC12_INJ_SEQ_SCAN_ENABLE_2RANKS ( ADC_JSQR_JL_0)
395#define DDL_ADC12_INJ_SEQ_SCAN_ENABLE_3RANKS (ADC_JSQR_JL_1 )
396#define DDL_ADC12_INJ_SEQ_SCAN_ENABLE_4RANKS (ADC_JSQR_JL_1 | ADC_JSQR_JL_0)
400
404#define DDL_ADC12_INJ_SEQ_DISCONT_DISABLE (0x00000000UL)
405#define DDL_ADC12_INJ_SEQ_DISCONT_1RANK (ADC_CFGR_JDISCEN)
409
410/* Exported types ------------------------------------------------------------*/
411#if defined(USE_FULL_DDL_DRIVER)
415
436typedef struct
437{
438 uint32_t DataAlignment;
439
441
461typedef struct
462{
463 uint32_t TriggerSource;
464
466
468
469 uint32_t ContinuousMode;
470
471 uint32_t DMATransfer;
472
474
494typedef struct
495{
496 uint32_t TriggerSource;
497
499
501
502 uint32_t TrigAuto;
503
505
509#endif /* USE_FULL_DDL_DRIVER */
510
511/* Private macros ------------------------------------------------------------*/
518/* List of ADC registers intended to be used (most commonly) with */
519/* DMA transfer. */
520/* Refer to function @ref DDL_ADC12_DMA_GetRegAddr(). */
521#define DDL_ADC12_DMA_REG_REGULAR_DATA (0x00000000UL) /* ADC group regular conversion data register (corresponding to register DR) to be used with ADC configured in independent mode. Without DMA transfer, register accessed by DDL function @ref DDL_ADC12_REG_ReadConversionData32() and other functions @ref DDL_ADC12_REG_ReadConversionDatax() */
525
529#define DDL_ADC12_JOFFSET_1 ADC12_OFR0_REGOFFSET
530#define DDL_ADC12_JOFFSET_2 ADC12_OFR1_REGOFFSET
531#define DDL_ADC12_JOFFSET_3 ADC12_OFR2_REGOFFSET
532#define DDL_ADC12_JOFFSET_4 ADC12_OFR3_REGOFFSET
536
540#define DDL_ADC12_CHANNEL_0 (ADC12_CHANNEL_0_NUMBER | ADC12_CHANNEL_0_SMP)
541#define DDL_ADC12_CHANNEL_1 (ADC12_CHANNEL_1_NUMBER | ADC12_CHANNEL_1_SMP)
542#define DDL_ADC12_CHANNEL_2 (ADC12_CHANNEL_2_NUMBER | ADC12_CHANNEL_2_SMP)
543#define DDL_ADC12_CHANNEL_3 (ADC12_CHANNEL_3_NUMBER | ADC12_CHANNEL_3_SMP)
544#define DDL_ADC12_CHANNEL_4 (ADC12_CHANNEL_4_NUMBER | ADC12_CHANNEL_4_SMP)
545#define DDL_ADC12_CHANNEL_5 (ADC12_CHANNEL_5_NUMBER | ADC12_CHANNEL_5_SMP)
546#define DDL_ADC12_CHANNEL_6 (ADC12_CHANNEL_6_NUMBER | ADC12_CHANNEL_6_SMP)
547#define DDL_ADC12_CHANNEL_7 (ADC12_CHANNEL_7_NUMBER | ADC12_CHANNEL_7_SMP)
548#define DDL_ADC12_CHANNEL_8 (ADC12_CHANNEL_8_NUMBER | ADC12_CHANNEL_8_SMP)
549#define DDL_ADC12_CHANNEL_9 (ADC12_CHANNEL_9_NUMBER | ADC12_CHANNEL_9_SMP)
550#define DDL_ADC12_CHANNEL_10 (ADC12_CHANNEL_10_NUMBER | ADC12_CHANNEL_10_SMP)
551#define DDL_ADC12_CHANNEL_11 (ADC12_CHANNEL_11_NUMBER | ADC12_CHANNEL_11_SMP)
552#define DDL_ADC12_CHANNEL_12 (ADC12_CHANNEL_12_NUMBER | ADC12_CHANNEL_12_SMP)
553#define DDL_ADC12_CHANNEL_13 (ADC12_CHANNEL_13_NUMBER | ADC12_CHANNEL_13_SMP)
554#define DDL_ADC12_CHANNEL_14 (ADC12_CHANNEL_14_NUMBER | ADC12_CHANNEL_14_SMP)
555#define DDL_ADC12_CHANNEL_15 (ADC12_CHANNEL_15_NUMBER | ADC12_CHANNEL_15_SMP)
559
563#define DDL_ADC12_REG_CONV_SINGLE (0x00000000UL)
564#define DDL_ADC12_REG_CONV_CONTINUOUS (ADC_CFGR_CONT)
568
572#define DDL_ADC12_REG_DMA_TRANSFER_DISABLE (0x00000000UL)
573#define DDL_ADC12_REG_DMA_TRANSFER_ENABLE ( ADC_CFGR_DMAEN)
577
581#define DDL_ADC12_INJ_TRIG_SOFTWARE (0x00000000UL)
582#define DDL_ADC12_INJ_TRIG_EXT_TMR1_TRGO (ADC12_INJ_TRIG_EXT_EDGE_DEFAULT)
583#define DDL_ADC12_INJ_TRIG_EXT_TMR1_CC4 (ADC_JSQR_JEXTSEL_0 | ADC12_INJ_TRIG_EXT_EDGE_DEFAULT)
584#define DDL_ADC12_INJ_TRIG_EXT_TMR2_TRGO (ADC_JSQR_JEXTSEL_1 | ADC12_INJ_TRIG_EXT_EDGE_DEFAULT)
585#define DDL_ADC12_INJ_TRIG_EXT_TMR2_CC1 (ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC12_INJ_TRIG_EXT_EDGE_DEFAULT)
586#define DDL_ADC12_INJ_TRIG_EXT_TMR3_CC4 (ADC_JSQR_JEXTSEL_2 | ADC12_INJ_TRIG_EXT_EDGE_DEFAULT)
587#define DDL_ADC12_INJ_TRIG_EXT_TMR4_TRGO (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC12_INJ_TRIG_EXT_EDGE_DEFAULT)
588#define DDL_ADC12_INJ_TRIG_EXT_EINT_LINE15 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC12_INJ_TRIG_EXT_EDGE_DEFAULT)
592
596#define DDL_ADC12_INJ_TRIG_EXT_RISING ( ADC_JSQR_JEXTEN_0)
597#define DDL_ADC12_INJ_TRIG_EXT_DISABLE (0x00000000UL)
601
605#define DDL_ADC12_INJ_RANK_1 (ADC12_JDR1_REGOFFSET | ADC12_INJ_RANK_1_JSQR_BITOFFSET_POS)
606#define DDL_ADC12_INJ_RANK_2 (ADC12_JDR2_REGOFFSET | ADC12_INJ_RANK_2_JSQR_BITOFFSET_POS)
607#define DDL_ADC12_INJ_RANK_3 (ADC12_JDR3_REGOFFSET | ADC12_INJ_RANK_3_JSQR_BITOFFSET_POS)
608#define DDL_ADC12_INJ_RANK_4 (ADC12_JDR4_REGOFFSET | ADC12_INJ_RANK_4_JSQR_BITOFFSET_POS)
612
616#define DDL_ADC12_INJ_TRIG_INDEPENDENT (0x00000000UL)
617#define DDL_ADC12_INJ_TRIG_FROM_GRP_REGULAR (ADC_CFGR_JAUTO)
621
625#define DDL_ADC12_SAMPLINGTIME_7CYCLES (0x00000000)
626#define DDL_ADC12_SAMPLINGTIME_16CYCLES (ADC_SMPR1_SMP0_0)
627#define DDL_ADC12_SAMPLINGTIME_27CYCLES (ADC_SMPR1_SMP0_1)
628#define DDL_ADC12_SAMPLINGTIME_32CYCLES (ADC_SMPR1_SMP0_1 | ADC_SMPR1_SMP0_0)
629#define DDL_ADC12_SAMPLINGTIME_67CYCLES (ADC_SMPR1_SMP0_2)
630#define DDL_ADC12_SAMPLINGTIME_96CYCLES (ADC_SMPR1_SMP0_2 | ADC_SMPR1_SMP0_0)
631#define DDL_ADC12_SAMPLINGTIME_128CYCLES (ADC_SMPR1_SMP0_2 | ADC_SMPR1_SMP0_1)
632#define DDL_ADC12_SAMPLINGTIME_256CYCLES (ADC_SMPR1_SMP0_2 | ADC_SMPR1_SMP0_1 | ADC_SMPR1_SMP0_0)
633
637
641#define DDL_ADC12_AWD1 (ADC12_AWD_CR1_CHANNEL_MASK | ADC12_AWD_CR1_REGOFFSET)
645
649#define DDL_ADC12_AWD_DISABLE (0x00000000UL)
650#define DDL_ADC12_AWD_ALL_CHANNELS_REG (ADC_CFGR_AWD1EN )
651#define DDL_ADC12_AWD_ALL_CHANNELS_INJ (ADC_CFGR_JAWD1EN )
652#define DDL_ADC12_AWD_ALL_CHANNELS_REG_INJ (ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN )
653#define DDL_ADC12_AWD_CHANNEL_0_REG ((DDL_ADC12_CHANNEL_0 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
654#define DDL_ADC12_AWD_CHANNEL_0_INJ ((DDL_ADC12_CHANNEL_0 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
655#define DDL_ADC12_AWD_CHANNEL_0_REG_INJ ((DDL_ADC12_CHANNEL_0 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
656#define DDL_ADC12_AWD_CHANNEL_1_REG ((DDL_ADC12_CHANNEL_1 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
657#define DDL_ADC12_AWD_CHANNEL_1_INJ ((DDL_ADC12_CHANNEL_1 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
658#define DDL_ADC12_AWD_CHANNEL_1_REG_INJ ((DDL_ADC12_CHANNEL_1 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
659#define DDL_ADC12_AWD_CHANNEL_2_REG ((DDL_ADC12_CHANNEL_2 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
660#define DDL_ADC12_AWD_CHANNEL_2_INJ ((DDL_ADC12_CHANNEL_2 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
661#define DDL_ADC12_AWD_CHANNEL_2_REG_INJ ((DDL_ADC12_CHANNEL_2 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
662#define DDL_ADC12_AWD_CHANNEL_3_REG ((DDL_ADC12_CHANNEL_3 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
663#define DDL_ADC12_AWD_CHANNEL_3_INJ ((DDL_ADC12_CHANNEL_3 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
664#define DDL_ADC12_AWD_CHANNEL_3_REG_INJ ((DDL_ADC12_CHANNEL_3 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
665#define DDL_ADC12_AWD_CHANNEL_4_REG ((DDL_ADC12_CHANNEL_4 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
666#define DDL_ADC12_AWD_CHANNEL_4_INJ ((DDL_ADC12_CHANNEL_4 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
667#define DDL_ADC12_AWD_CHANNEL_4_REG_INJ ((DDL_ADC12_CHANNEL_4 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
668#define DDL_ADC12_AWD_CHANNEL_5_REG ((DDL_ADC12_CHANNEL_5 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
669#define DDL_ADC12_AWD_CHANNEL_5_INJ ((DDL_ADC12_CHANNEL_5 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
670#define DDL_ADC12_AWD_CHANNEL_5_REG_INJ ((DDL_ADC12_CHANNEL_5 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
671#define DDL_ADC12_AWD_CHANNEL_6_REG ((DDL_ADC12_CHANNEL_6 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
672#define DDL_ADC12_AWD_CHANNEL_6_INJ ((DDL_ADC12_CHANNEL_6 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
673#define DDL_ADC12_AWD_CHANNEL_6_REG_INJ ((DDL_ADC12_CHANNEL_6 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
674#define DDL_ADC12_AWD_CHANNEL_7_REG ((DDL_ADC12_CHANNEL_7 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
675#define DDL_ADC12_AWD_CHANNEL_7_INJ ((DDL_ADC12_CHANNEL_7 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
676#define DDL_ADC12_AWD_CHANNEL_7_REG_INJ ((DDL_ADC12_CHANNEL_7 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
677#define DDL_ADC12_AWD_CHANNEL_8_REG ((DDL_ADC12_CHANNEL_8 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
678#define DDL_ADC12_AWD_CHANNEL_8_INJ ((DDL_ADC12_CHANNEL_8 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
679#define DDL_ADC12_AWD_CHANNEL_8_REG_INJ ((DDL_ADC12_CHANNEL_8 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
680#define DDL_ADC12_AWD_CHANNEL_9_REG ((DDL_ADC12_CHANNEL_9 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
681#define DDL_ADC12_AWD_CHANNEL_9_INJ ((DDL_ADC12_CHANNEL_9 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
682#define DDL_ADC12_AWD_CHANNEL_9_REG_INJ ((DDL_ADC12_CHANNEL_9 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
683#define DDL_ADC12_AWD_CHANNEL_10_REG ((DDL_ADC12_CHANNEL_10 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
684#define DDL_ADC12_AWD_CHANNEL_10_INJ ((DDL_ADC12_CHANNEL_10 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
685#define DDL_ADC12_AWD_CHANNEL_10_REG_INJ ((DDL_ADC12_CHANNEL_10 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
686#define DDL_ADC12_AWD_CHANNEL_11_REG ((DDL_ADC12_CHANNEL_11 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
687#define DDL_ADC12_AWD_CHANNEL_11_INJ ((DDL_ADC12_CHANNEL_11 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
688#define DDL_ADC12_AWD_CHANNEL_11_REG_INJ ((DDL_ADC12_CHANNEL_11 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
689#define DDL_ADC12_AWD_CHANNEL_12_REG ((DDL_ADC12_CHANNEL_12 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
690#define DDL_ADC12_AWD_CHANNEL_12_INJ ((DDL_ADC12_CHANNEL_12 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
691#define DDL_ADC12_AWD_CHANNEL_12_REG_INJ ((DDL_ADC12_CHANNEL_12 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
692#define DDL_ADC12_AWD_CHANNEL_13_REG ((DDL_ADC12_CHANNEL_13 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
693#define DDL_ADC12_AWD_CHANNEL_13_INJ ((DDL_ADC12_CHANNEL_13 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
694#define DDL_ADC12_AWD_CHANNEL_13_REG_INJ ((DDL_ADC12_CHANNEL_13 & ADC12_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
698
702#define DDL_ADC12_AWD_THRESHOLD_HIGH (ADC_TR1_HT1 )
703#define DDL_ADC12_AWD_THRESHOLD_LOW ( ADC_TR1_LT1)
704#define DDL_ADC12_AWD_THRESHOLDS_HIGH_LOW (ADC_TR1_HT1 | ADC_TR1_LT1)
708
713#define DDL_ADC12_FLAG_EOC ADC_ISR_EOC
714#define DDL_ADC12_FLAG_EOS ADC_ISR_EOS
715#define DDL_ADC12_FLAG_JEOC ADC_ISR_JEOC
716#define DDL_ADC12_FLAG_JEOS ADC_ISR_JEOS
717#define DDL_ADC12_FLAG_AWD1 ADC_ISR_AWD1
721
726#define DDL_ADC12_IT_EOC ADC_IER_EOCIE
727#define DDL_ADC12_IT_EOS ADC_IER_EOSIE
728#define DDL_ADC12_IT_JEOC ADC_IER_JEOCIE
729#define DDL_ADC12_IT_JEOS ADC_IER_JEOSIE
730#define DDL_ADC12_IT_AWD1 ADC_IER_AWD1IE
734
739#define DDL_ADC12_ALIGNMENT_LEFT ADC_CFGR_ALIGN
740#define DDL_ADC12_ALIGNMENT_RIGHT (0x00000000UL)
744
748
749/* Private macros ------------------------------------------------------------*/
753
762#define __ADC12_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \
763 ((__IO uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2UL))))
764
793#define __DDL_ADC12_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) ((uint32_t)((__CHANNEL__ & ADC_CFGR_AWD1CH_Msk) >> ADC_CFGR_AWD1CH_Pos))
794
798
799/* Exported functions --------------------------------------------------------*/
806/* Note: DDL ADC functions to set DMA transfer are located into sections of */
807/* configuration of ADC instance, groups and multimode (if available): */
808/* @ref DDL_ADC12_REG_SetDMATransfer(), ... */
809
837__STATIC_INLINE uint32_t DDL_ADC12_DMA_GetRegAddr(ADC12_TypeDef *ADCx, uint32_t Register)
838{
839 /* Prevent unused argument(s) compilation warning */
840 (void)(Register);
841
842 /* Retrieve address of register DR */
843 return (uint32_t) &(ADCx->DR);
844}
845
849
853
876__STATIC_INLINE void DDL_ADC12_INJ_SetOffset(ADC12_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetLevel)
877{
878 __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->JOFFSET1, Offsety);
879
880 MODIFY_REG(*preg,
881 ADC_JOFFSET1_JOFFSET1,
882 OffsetLevel);
883}
884
897__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetOffset(ADC12_TypeDef *ADCx, uint32_t Offsety)
898{
899 const __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->JOFFSET1, Offsety);
900
901 return (uint32_t)READ_BIT(*preg, ADC_JOFFSET1_JOFFSET1);
902}
903
907
929__STATIC_INLINE void DDL_ADC12_REG_SetTriggerSource(ADC12_TypeDef *ADCx, uint32_t TriggerSource)
930{
931 MODIFY_REG(ADCx->CFGR, ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL, TriggerSource);
932}
933
951__STATIC_INLINE uint32_t DDL_ADC12_REG_GetTriggerSource(ADC12_TypeDef *ADCx)
952{
953 return (uint32_t)READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL);
954}
955
963__STATIC_INLINE uint32_t DDL_ADC12_REG_IsTriggerSourceSWStart(ADC12_TypeDef *ADCx)
964{
965 return ((READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN) == (DDL_ADC12_REG_TRIG_SOFTWARE & ADC_CFGR_EXTEN)) ? 1UL : 0UL);
966}
967
980__STATIC_INLINE void DDL_ADC12_REG_SetTriggerEdge(ADC12_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
981{
982 MODIFY_REG(ADCx->CFGR, ADC_CFGR_EXTEN, ExternalTriggerEdge);
983}
984
993__STATIC_INLINE uint32_t DDL_ADC12_REG_GetTriggerEdge(ADC12_TypeDef *ADCx)
994{
995 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN));
996}
997
1050__STATIC_INLINE void DDL_ADC12_REG_SetSequencerLength(ADC12_TypeDef *ADCx, uint32_t SequencerNbRanks)
1051{
1052 MODIFY_REG(ADCx->SQR1, ADC_SQR1_RL, SequencerNbRanks);
1053}
1054
1103__STATIC_INLINE uint32_t DDL_ADC12_REG_GetSequencerLength(ADC12_TypeDef *ADCx)
1104{
1105 return (uint32_t)(READ_BIT(ADCx->SQR1, ADC_SQR1_RL));
1106}
1107
1129__STATIC_INLINE void DDL_ADC12_REG_SetSequencerDiscont(ADC12_TypeDef *ADCx, uint32_t SeqDiscont)
1130{
1131 MODIFY_REG(ADCx->CFGR, ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM, SeqDiscont);
1132}
1133
1150__STATIC_INLINE uint32_t DDL_ADC12_REG_GetSequencerDiscont(ADC12_TypeDef *ADCx)
1151{
1152 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM));
1153}
1154
1198__STATIC_INLINE void DDL_ADC12_REG_SetSequencerRanks(ADC12_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
1199{
1200 /* Set bits with content of parameter "Channel" with bits position */
1201 /* in register and register position depending on parameter "Rank". */
1202 /* Parameters "Rank" and "Channel" are used with masks because containing */
1203 /* other bits reserved for other purpose. */
1204 __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->SQR1, ((Rank & ADC12_REG_SQRX_REGOFFSET_MASK) >> ADC12_SQRX_REGOFFSET_POS));
1205
1206 MODIFY_REG(*preg,
1209}
1210
1264__STATIC_INLINE uint32_t DDL_ADC12_REG_GetSequencerRanks(ADC12_TypeDef *ADCx, uint32_t Rank)
1265{
1266 const __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->SQR1, ((Rank & ADC12_REG_SQRX_REGOFFSET_MASK) >> ADC12_SQRX_REGOFFSET_POS));
1267
1268 return (uint32_t)((READ_BIT(*preg,
1271 );
1272}
1273
1291__STATIC_INLINE void DDL_ADC12_REG_SetContinuousMode(ADC12_TypeDef *ADCx, uint32_t Continuous)
1292{
1293 MODIFY_REG(ADCx->CFGR, ADC_CFGR_CONT, Continuous);
1294}
1295
1307__STATIC_INLINE uint32_t DDL_ADC12_REG_GetContinuousMode(ADC12_TypeDef *ADCx)
1308{
1309 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_CONT));
1310}
1311
1343__STATIC_INLINE void DDL_ADC12_REG_SetDMATransfer(ADC12_TypeDef *ADCx, uint32_t DMATransfer)
1344{
1345 MODIFY_REG(ADCx->CFGR, ADC_CFGR_DMAEN, DMATransfer);
1346}
1347
1375__STATIC_INLINE uint32_t DDL_ADC12_REG_GetDMATransfer(ADC12_TypeDef *ADCx)
1376{
1377 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DMAEN));
1378}
1379
1383
1409__STATIC_INLINE void DDL_ADC12_INJ_SetTriggerSource(ADC12_TypeDef *ADCx, uint32_t TriggerSource)
1410{
1411 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN, TriggerSource);
1412}
1413
1432__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetTriggerSource(ADC12_TypeDef *ADCx)
1433{
1434 return (uint32_t)READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN);
1435}
1436
1444__STATIC_INLINE uint32_t DDL_ADC12_INJ_IsTriggerSourceSWStart(ADC12_TypeDef *ADCx)
1445{
1446 return ((READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTEN) == (DDL_ADC12_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTEN)) ? 1UL : 0UL);
1447}
1448
1460__STATIC_INLINE void DDL_ADC12_INJ_SetTriggerEdge(ADC12_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
1461{
1462 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JEXTEN, ExternalTriggerEdge);
1463}
1464
1473__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetTriggerEdge(ADC12_TypeDef *ADCx)
1474{
1475 return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTEN));
1476}
1477
1497__STATIC_INLINE void DDL_ADC12_INJ_SetSequencerLength(ADC12_TypeDef *ADCx, uint32_t SequencerNbRanks)
1498{
1499 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JL, SequencerNbRanks);
1500}
1501
1517__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetSequencerLength(ADC12_TypeDef *ADCx)
1518{
1519 return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JL));
1520}
1521
1534__STATIC_INLINE void DDL_ADC12_INJ_SetSequencerDiscont(ADC12_TypeDef *ADCx, uint32_t SeqDiscont)
1535{
1536 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JDISCEN, SeqDiscont);
1537}
1538
1548__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetSequencerDiscont(ADC12_TypeDef *ADCx)
1549{
1550 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JDISCEN));
1551}
1552
1584__STATIC_INLINE void DDL_ADC12_INJ_SetSequencerRanks(ADC12_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
1585{
1586 /* Set bits with content of parameter "Channel" with bits position */
1587 /* in register depending on parameter "Rank". */
1588 /* Parameters "Rank" and "Channel" are used with masks because containing */
1589 /* other bits reserved for other purpose. */
1590 MODIFY_REG(ADCx->JSQR,
1593}
1594
1624__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetSequencerRanks(ADC12_TypeDef *ADCx, uint32_t Rank)
1625{
1626 return (uint32_t)((READ_BIT(ADCx->JSQR,
1629 );
1630}
1631
1660__STATIC_INLINE void DDL_ADC12_INJ_SetTrigAuto(ADC12_TypeDef *ADCx, uint32_t TrigAuto)
1661{
1662 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JAUTO, TrigAuto);
1663}
1664
1673__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetTrigAuto(ADC12_TypeDef *ADCx)
1674{
1675 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JAUTO));
1676}
1677
1787__STATIC_INLINE void DDL_ADC12_INJ_ConfigQueueContext(ADC12_TypeDef *ADCx,
1788 uint32_t TriggerSource,
1789 uint32_t ExternalTriggerEdge,
1790 uint32_t SequencerNbRanks,
1791 uint32_t Rank1_Channel,
1792 uint32_t Rank2_Channel,
1793 uint32_t Rank3_Channel,
1794 uint32_t Rank4_Channel)
1795{
1796 /* Set bits with content of parameter "Rankx_Channel" with bits position */
1797 /* in register depending on literal "DDL_ADC12_INJ_RANK_x". */
1798 /* Parameters "Rankx_Channel" and "DDL_ADC12_INJ_RANK_x" are used with masks */
1799 /* because containing other bits reserved for other purpose. */
1800 /* If parameter "TriggerSource" is set to SW start, then parameter */
1801 /* "ExternalTriggerEdge" is discarded. */
1802 uint32_t is_trigger_not_sw = (uint32_t)((TriggerSource != DDL_ADC12_INJ_TRIG_SOFTWARE) ? 1UL : 0UL);
1803 MODIFY_REG(ADCx->JSQR,
1804 ADC_JSQR_JEXTSEL |
1805 ADC_JSQR_JEXTEN |
1806 ADC_JSQR_JSQ4 |
1807 ADC_JSQR_JSQ3 |
1808 ADC_JSQR_JSQ2 |
1809 ADC_JSQR_JSQ1 |
1810 ADC_JSQR_JL,
1811 (TriggerSource & ADC_JSQR_JEXTSEL) |
1812 (ExternalTriggerEdge * (is_trigger_not_sw)) |
1817 SequencerNbRanks
1818 );
1819}
1820
1824
1874__STATIC_INLINE void DDL_ADC12_SetChannelSamplingTime(ADC12_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime)
1875{
1876 /* Set bits with content of parameter "SamplingTime" with bits position */
1877 /* in register and register position depending on parameter "Channel". */
1878 /* Parameter "Channel" is used with masks because containing */
1879 /* other bits reserved for other purpose. */
1880
1881 __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->SMPR1, ((Channel & ADC12_CHANNEL_SMPRX_REGOFFSET_MASK) >> ADC12_SMPRX_REGOFFSET_POS));
1882 MODIFY_REG(*preg,
1885}
1886
1920__STATIC_INLINE uint32_t DDL_ADC12_GetChannelSamplingTime(ADC12_TypeDef *ADCx, uint32_t Channel)
1921{
1922 const __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->SMPR1, ((Channel & ADC12_CHANNEL_SMPRX_REGOFFSET_MASK) >> ADC12_SMPRX_REGOFFSET_POS));
1923 return (uint32_t)(READ_BIT(*preg,
1926 );
1927}
1928
1932
2010__STATIC_INLINE void DDL_ADC12_SetAnalogWDMonitChannels(ADC12_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDChannelGroup)
2011{
2012 /* Set bits with content of parameter "AWDChannelGroup" with bits position */
2013 /* in register and register position depending on parameter "AWDy". */
2014 /* Parameters "AWDChannelGroup" and "AWDy" are used with masks because */
2015 /* containing other bits reserved for other purpose. */
2016 __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->CFGR, ((AWDy & ADC12_AWD_CRX_REGOFFSET_MASK) >> ADC12_AWD_CRX_REGOFFSET_POS)
2018
2019 MODIFY_REG(*preg,
2021 AWDChannelGroup & AWDy);
2022}
2023
2105__STATIC_INLINE uint32_t DDL_ADC12_GetAnalogWDMonitChannels(ADC12_TypeDef *ADCx, uint32_t AWDy)
2106{
2107 const __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->CFGR, ((AWDy & ADC12_AWD_CRX_REGOFFSET_MASK) >> ADC12_AWD_CRX_REGOFFSET_POS)
2109
2110 uint32_t AnalogWDMonitChannels = (READ_BIT(*preg, AWDy) & ADC12_AWD_CR_ALL_CHANNEL_MASK);
2111
2112 /* If "AnalogWDMonitChannels" == 0, then the selected AWD is disabled */
2113 /* (parameter value DDL_ADC12_AWD_DISABLE). */
2114 /* Else, the selected AWD is enabled and is monitoring a group of channels */
2115 /* or a single channel. */
2116
2117 return AnalogWDMonitChannels;
2118}
2119
2148__STATIC_INLINE void DDL_ADC12_ConfigAnalogWDThresholds(ADC12_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdHighValue,
2149 uint32_t AWDThresholdLowValue)
2150{
2151 /* Set bits with content of parameter "AWDThresholdxxxValue" with bits */
2152 /* position in register and register position depending on parameter */
2153 /* "AWDy". */
2154 /* Parameters "AWDy" and "AWDThresholdxxxValue" are used with masks because */
2155 /* containing other bits reserved for other purpose. */
2156 __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->TR1, ((AWDy & ADC12_AWD_TRX_REGOFFSET_MASK) >> ADC12_AWD_TRX_REGOFFSET_POS));
2157
2158 MODIFY_REG(*preg,
2159 ADC_TR1_HT1 | ADC_TR1_LT1,
2160 (AWDThresholdHighValue << ADC12_TR1_HT1_BITOFFSET_POS) | AWDThresholdLowValue);
2161}
2162
2195__STATIC_INLINE void DDL_ADC12_SetAnalogWDThresholds(ADC12_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow,
2196 uint32_t AWDThresholdValue)
2197{
2198 /* Set bits with content of parameter "AWDThresholdValue" with bits */
2199 /* position in register and register position depending on parameters */
2200 /* "AWDThresholdsHighLow" and "AWDy". */
2201 /* Parameters "AWDy" and "AWDThresholdValue" are used with masks because */
2202 /* containing other bits reserved for other purpose. */
2203 __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->TR1,
2205
2206 MODIFY_REG(*preg,
2207 AWDThresholdsHighLow,
2208 AWDThresholdValue << ((AWDThresholdsHighLow & ADC12_AWD_TRX_BIT_HIGH_MASK) >> ADC12_AWD_TRX_BIT_HIGH_SHIFT4));
2209}
2210
2228__STATIC_INLINE uint32_t DDL_ADC12_GetAnalogWDThresholds(ADC12_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow)
2229{
2230 const __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->TR1,
2232
2233 return (uint32_t)(READ_BIT(*preg,
2234 (AWDThresholdsHighLow | ADC_TR1_LT1))
2235 >> (((AWDThresholdsHighLow & ADC12_AWD_TRX_BIT_HIGH_MASK) >> ADC12_AWD_TRX_BIT_HIGH_SHIFT4)
2236 & ~(AWDThresholdsHighLow & ADC_TR1_LT1)));
2237}
2238
2242
2251__STATIC_INLINE void DDL_ADC12_Enable(ADC12_TypeDef *ADCx)
2252{
2253 /* Note: Write register with some additional bits forced to state reset */
2254 /* instead of modifying only the selected bit for this function, */
2255 /* to not interfere with bits with HW property "rs". */
2256 MODIFY_REG(ADCx->CR,
2257 ADC_CR_ADEN,
2258 ADC_CR_ADEN);
2259}
2260
2266__STATIC_INLINE void DDL_ADC12_Disable(ADC12_TypeDef *ADCx)
2267{
2268 /* Note: Write register with some additional bits forced to state reset */
2269 /* instead of modifying only the selected bit for this function, */
2270 /* to not interfere with bits with HW property "rs". */
2271 MODIFY_REG(ADCx->CR,
2272 ADC_CR_ADEN,
2273 0);
2274}
2275
2281__STATIC_INLINE uint32_t DDL_ADC12_IsEnabled(ADC12_TypeDef *ADCx)
2282{
2283 return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL);
2284}
2285
2294__STATIC_INLINE void DDL_ADC12_SetDataAlignment(ADC12_TypeDef *ADCx, uint32_t Alignment)
2295{
2296 MODIFY_REG(ADCx->CFGR,
2297 ADC_CFGR_ALIGN,
2298 Alignment);
2299}
2300
2308__STATIC_INLINE uint32_t DDL_ADC12_GetDataAlignment(ADC12_TypeDef *ADCx)
2309{
2310 return (uint32_t)READ_BIT(ADCx->CFGR, ADC_CFGR_ALIGN);
2311}
2312
2316
2325__STATIC_INLINE void DDL_ADC12_REG_StartConversion(ADC12_TypeDef *ADCx)
2326{
2327 /* Note: Write register with some additional bits forced to state reset */
2328 /* instead of modifying only the selected bit for this function, */
2329 /* to not interfere with bits with HW property "rs". */
2330 MODIFY_REG(ADCx->CR,
2331 ADC_CR_ADSTART,
2332 ADC_CR_ADSTART);
2333}
2334
2340__STATIC_INLINE void DDL_ADC12_REG_StopConversion(ADC12_TypeDef *ADCx)
2341{
2342 /* Note: Write register with some additional bits forced to state reset */
2343 /* instead of modifying only the selected bit for this function, */
2344 /* to not interfere with bits with HW property "rs". */
2345 MODIFY_REG(ADCx->CR,
2346 ADC_CR_ADSTP,
2347 ADC_CR_ADSTP);
2348}
2349
2355__STATIC_INLINE uint32_t DDL_ADC12_REG_IsConversionOngoing(ADC12_TypeDef *ADCx)
2356{
2357 return ((READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART)) ? 1UL : 0UL);
2358}
2359
2365__STATIC_INLINE uint32_t DDL_ADC12_REG_IsStopConversionOngoing(ADC12_TypeDef *ADCx)
2366{
2367 return ((READ_BIT(ADCx->CR, ADC_CR_ADSTP) == (ADC_CR_ADSTP)) ? 1UL : 0UL);
2368}
2369
2378__STATIC_INLINE uint32_t DDL_ADC12_REG_ReadConversionData32(ADC12_TypeDef *ADCx)
2379{
2380 return (uint32_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA | ADC_DR_ADC2RDATA));
2381}
2382
2386
2390
2396__STATIC_INLINE void DDL_ADC12_INJ_StartConversion(ADC12_TypeDef *ADCx)
2397{
2398 /* Note: Write register with some additional bits forced to state reset */
2399 /* instead of modifying only the selected bit for this function, */
2400 /* to not interfere with bits with HW property "rs". */
2401 MODIFY_REG(ADCx->CR,
2402 ADC_CR_JADSTART,
2403 ADC_CR_JADSTART);
2404}
2405
2411__STATIC_INLINE void DDL_ADC12_INJ_StopConversion(ADC12_TypeDef *ADCx)
2412{
2413 /* Note: Write register with some additional bits forced to state reset */
2414 /* instead of modifying only the selected bit for this function, */
2415 /* to not interfere with bits with HW property "rs". */
2416 MODIFY_REG(ADCx->CR,
2417 ADC_CR_JADSTP,
2418 ADC_CR_JADSTP);
2419}
2420
2426__STATIC_INLINE uint32_t DDL_ADC12_INJ_IsConversionOngoing(ADC12_TypeDef *ADCx)
2427{
2428 return ((READ_BIT(ADCx->CR, ADC_CR_JADSTART) == (ADC_CR_JADSTART)) ? 1UL : 0UL);
2429}
2430
2436__STATIC_INLINE uint32_t DDL_ADC12_INJ_IsStopConversionOngoing(ADC12_TypeDef *ADCx)
2437{
2438 return ((READ_BIT(ADCx->CR, ADC_CR_JADSTP) == (ADC_CR_JADSTP)) ? 1UL : 0UL);
2439}
2440
2454__STATIC_INLINE uint32_t DDL_ADC12_INJ_ReadConversionData32(ADC12_TypeDef *ADCx, uint32_t Rank)
2455{
2456 const __IO uint32_t *preg = __ADC12_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC12_INJ_JDRX_REGOFFSET_MASK) >> ADC12_JDRX_REGOFFSET_POS));
2457
2458 return (uint32_t)(READ_BIT(*preg,
2459 ADC_JDR1_JDATA)
2460 );
2461}
2462
2466
2470
2476__STATIC_INLINE uint32_t DDL_ADC12_IsActiveFlag_EOC(ADC12_TypeDef *ADCx)
2477{
2478 return ((READ_BIT(ADCx->ISR, DDL_ADC12_FLAG_EOC) == (DDL_ADC12_FLAG_EOC)) ? 1UL : 0UL);
2479}
2480
2486__STATIC_INLINE uint32_t DDL_ADC12_IsActiveFlag_EOS(ADC12_TypeDef *ADCx)
2487{
2488 return ((READ_BIT(ADCx->ISR, DDL_ADC12_FLAG_EOS) == (DDL_ADC12_FLAG_EOS)) ? 1UL : 0UL);
2489}
2490
2496__STATIC_INLINE uint32_t DDL_ADC12_IsActiveFlag_JEOC(ADC12_TypeDef *ADCx)
2497{
2498 return ((READ_BIT(ADCx->ISR, DDL_ADC12_FLAG_JEOC) == (DDL_ADC12_FLAG_JEOC)) ? 1UL : 0UL);
2499}
2500
2506__STATIC_INLINE uint32_t DDL_ADC12_IsActiveFlag_JEOS(ADC12_TypeDef *ADCx)
2507{
2508 return ((READ_BIT(ADCx->ISR, DDL_ADC12_FLAG_JEOS) == (DDL_ADC12_FLAG_JEOS)) ? 1UL : 0UL);
2509}
2510
2516__STATIC_INLINE uint32_t DDL_ADC12_IsActiveFlag_AWD1(ADC12_TypeDef *ADCx)
2517{
2518 return ((READ_BIT(ADCx->ISR, DDL_ADC12_FLAG_AWD1) == (DDL_ADC12_FLAG_AWD1)) ? 1UL : 0UL);
2519}
2520
2526__STATIC_INLINE void DDL_ADC12_ClearFlag_EOC(ADC12_TypeDef *ADCx)
2527{
2528 WRITE_REG(ADCx->ISR, DDL_ADC12_FLAG_EOC);
2529}
2530
2536__STATIC_INLINE void DDL_ADC12_ClearFlag_EOS(ADC12_TypeDef *ADCx)
2537{
2538 WRITE_REG(ADCx->ISR, DDL_ADC12_FLAG_EOS);
2539}
2540
2546__STATIC_INLINE void DDL_ADC12_ClearFlag_JEOC(ADC12_TypeDef *ADCx)
2547{
2548 WRITE_REG(ADCx->ISR, DDL_ADC12_FLAG_JEOC);
2549}
2550
2556__STATIC_INLINE void DDL_ADC12_ClearFlag_JEOS(ADC12_TypeDef *ADCx)
2557{
2558 WRITE_REG(ADCx->ISR, DDL_ADC12_FLAG_JEOS);
2559}
2560
2566__STATIC_INLINE void DDL_ADC12_ClearFlag_AWD1(ADC12_TypeDef *ADCx)
2567{
2568 WRITE_REG(ADCx->ISR, DDL_ADC12_FLAG_AWD1);
2569}
2570
2574
2578
2584__STATIC_INLINE void DDL_ADC12_EnableIT_EOC(ADC12_TypeDef *ADCx)
2585{
2586 SET_BIT(ADCx->IER, DDL_ADC12_IT_EOC);
2587}
2588
2594__STATIC_INLINE void DDL_ADC12_EnableIT_EOS(ADC12_TypeDef *ADCx)
2595{
2596 SET_BIT(ADCx->IER, DDL_ADC12_IT_EOS);
2597}
2598
2604__STATIC_INLINE void DDL_ADC12_EnableIT_JEOC(ADC12_TypeDef *ADCx)
2605{
2606 SET_BIT(ADCx->IER, DDL_ADC12_IT_JEOC);
2607}
2608
2614__STATIC_INLINE void DDL_ADC12_EnableIT_JEOS(ADC12_TypeDef *ADCx)
2615{
2616 SET_BIT(ADCx->IER, DDL_ADC12_IT_JEOS);
2617}
2618
2624__STATIC_INLINE void DDL_ADC12_EnableIT_AWD1(ADC12_TypeDef *ADCx)
2625{
2626 SET_BIT(ADCx->IER, DDL_ADC12_IT_AWD1);
2627}
2628
2634__STATIC_INLINE void DDL_ADC12_DisableIT_EOC(ADC12_TypeDef *ADCx)
2635{
2636 CLEAR_BIT(ADCx->IER, DDL_ADC12_IT_EOC);
2637}
2638
2644__STATIC_INLINE void DDL_ADC12_DisableIT_EOS(ADC12_TypeDef *ADCx)
2645{
2646 CLEAR_BIT(ADCx->IER, DDL_ADC12_IT_EOS);
2647}
2648
2654__STATIC_INLINE void DDL_ADC12_DisableIT_JEOC(ADC12_TypeDef *ADCx)
2655{
2656 CLEAR_BIT(ADCx->IER, DDL_ADC12_IT_JEOC);
2657}
2658
2664__STATIC_INLINE void DDL_ADC12_DisableIT_JEOS(ADC12_TypeDef *ADCx)
2665{
2666 CLEAR_BIT(ADCx->IER, DDL_ADC12_IT_JEOS);
2667}
2668
2674__STATIC_INLINE void DDL_ADC12_DisableIT_AWD1(ADC12_TypeDef *ADCx)
2675{
2676 CLEAR_BIT(ADCx->IER, DDL_ADC12_IT_AWD1);
2677}
2678
2685__STATIC_INLINE uint32_t DDL_ADC12_IsEnabledIT_EOC(ADC12_TypeDef *ADCx)
2686{
2687 return ((READ_BIT(ADCx->IER, DDL_ADC12_IT_EOC) == (DDL_ADC12_IT_EOC)) ? 1UL : 0UL);
2688}
2689
2696__STATIC_INLINE uint32_t DDL_ADC12_IsEnabledIT_EOS(ADC12_TypeDef *ADCx)
2697{
2698 return ((READ_BIT(ADCx->IER, DDL_ADC12_IT_EOS) == (DDL_ADC12_IT_EOS)) ? 1UL : 0UL);
2699}
2700
2707__STATIC_INLINE uint32_t DDL_ADC12_IsEnabledIT_JEOC(ADC12_TypeDef *ADCx)
2708{
2709 return ((READ_BIT(ADCx->IER, DDL_ADC12_IT_JEOC) == (DDL_ADC12_IT_JEOC)) ? 1UL : 0UL);
2710}
2711
2718__STATIC_INLINE uint32_t DDL_ADC12_IsEnabledIT_JEOS(ADC12_TypeDef *ADCx)
2719{
2720 return ((READ_BIT(ADCx->IER, DDL_ADC12_IT_JEOS) == (DDL_ADC12_IT_JEOS)) ? 1UL : 0UL);
2721}
2722
2729__STATIC_INLINE uint32_t DDL_ADC12_IsEnabledIT_AWD1(ADC12_TypeDef *ADCx)
2730{
2731 return ((READ_BIT(ADCx->IER, DDL_ADC12_IT_AWD1) == (DDL_ADC12_IT_AWD1)) ? 1UL : 0UL);
2732}
2733
2737
2738#if defined(USE_FULL_DDL_DRIVER)
2742
2743/* De-initialization of ADC instance, ADC group regular and ADC group injected */
2744/* (availability of ADC group injected depends on G32R4 families) */
2745ErrorStatus DDL_ADC12_DeInit(ADC12_TypeDef *ADCx);
2746
2747/* Initialization of some features of ADC instance */
2748ErrorStatus DDL_ADC12_Init(ADC12_TypeDef *ADCx, DDL_ADC12_InitTypeDef *ADC_InitStruct);
2749void DDL_ADC12_StructInit(DDL_ADC12_InitTypeDef *ADC_InitStruct);
2750
2751/* Initialization of some features of ADC instance and ADC group regular */
2752ErrorStatus DDL_ADC12_REG_Init(ADC12_TypeDef *ADCx, DDL_ADC12_REG_InitTypeDef *ADC_REG_InitStruct);
2753void DDL_ADC12_REG_StructInit(DDL_ADC12_REG_InitTypeDef *ADC_REG_InitStruct);
2754
2755/* Initialization of some features of ADC instance and ADC group injected */
2756ErrorStatus DDL_ADC12_INJ_Init(ADC12_TypeDef *ADCx, DDL_ADC12_INJ_InitTypeDef *ADC_INJ_InitStruct);
2757void DDL_ADC12_INJ_StructInit(DDL_ADC12_INJ_InitTypeDef *ADC_INJ_InitStruct);
2758
2762#endif /* USE_FULL_DDL_DRIVER */
2763
2767
2771
2775
2776#endif /* defined (ADC3) */
2780
2781#ifdef __cplusplus
2782}
2783#endif
2784
2785#endif /* G32R4XX_DDL_ADC12_H */
2786
#define DDL_ADC12_FLAG_EOS
#define DDL_ADC12_FLAG_JEOS
#define DDL_ADC12_FLAG_EOC
#define DDL_ADC12_FLAG_JEOC
#define DDL_ADC12_FLAG_AWD1
#define DDL_ADC12_INJ_RANK_4
#define DDL_ADC12_INJ_RANK_3
#define DDL_ADC12_INJ_RANK_1
#define DDL_ADC12_INJ_RANK_2
#define DDL_ADC12_INJ_TRIG_SOFTWARE
#define DDL_ADC12_IT_JEOS
#define DDL_ADC12_IT_EOC
#define DDL_ADC12_IT_AWD1
#define DDL_ADC12_IT_JEOC
#define DDL_ADC12_IT_EOS
#define DDL_ADC12_REG_TRIG_SOFTWARE
__STATIC_INLINE void DDL_ADC12_SetAnalogWDMonitChannels(ADC12_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDChannelGroup)
Set ADC analog watchdog monitored channels: a single channel, multiple channels or all channels,...
__STATIC_INLINE void DDL_ADC12_SetAnalogWDThresholds(ADC12_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow, uint32_t AWDThresholdValue)
Set ADC analog watchdog threshold value of threshold high or low.
__STATIC_INLINE uint32_t DDL_ADC12_GetAnalogWDMonitChannels(ADC12_TypeDef *ADCx, uint32_t AWDy)
Get ADC analog watchdog monitored channel.
__STATIC_INLINE uint32_t DDL_ADC12_GetAnalogWDThresholds(ADC12_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow)
Get ADC analog watchdog threshold value of threshold high, threshold low or raw data with ADC thresho...
__STATIC_INLINE void DDL_ADC12_ConfigAnalogWDThresholds(ADC12_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdHighValue, uint32_t AWDThresholdLowValue)
Set ADC analog watchdog thresholds value of both thresholds high and low.
__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetTrigAuto(ADC12_TypeDef *ADCx)
Get ADC group injected conversion trigger: independent or from ADC group regular.
__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetSequencerLength(ADC12_TypeDef *ADCx)
Get ADC group injected sequencer length and scan direction.
__STATIC_INLINE void DDL_ADC12_INJ_SetTriggerSource(ADC12_TypeDef *ADCx, uint32_t TriggerSource)
Set ADC group injected conversion trigger source: internal (SW start) or from external peripheral (ti...
__STATIC_INLINE void DDL_ADC12_INJ_SetTriggerEdge(ADC12_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
Set ADC group injected conversion trigger polarity. Applicable only for trigger source set to externa...
__STATIC_INLINE void DDL_ADC12_INJ_SetTrigAuto(ADC12_TypeDef *ADCx, uint32_t TrigAuto)
Set ADC group injected conversion trigger: independent or from ADC group regular.
__STATIC_INLINE void DDL_ADC12_INJ_SetSequencerLength(ADC12_TypeDef *ADCx, uint32_t SequencerNbRanks)
Set ADC group injected sequencer length and scan direction.
__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetSequencerDiscont(ADC12_TypeDef *ADCx)
Get ADC group injected sequencer discontinuous mode: sequence subdivided and scan conversions interru...
__STATIC_INLINE uint32_t DDL_ADC12_INJ_IsTriggerSourceSWStart(ADC12_TypeDef *ADCx)
Get ADC group injected conversion trigger source internal (SW start) or external.
__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetTriggerEdge(ADC12_TypeDef *ADCx)
Get ADC group injected conversion trigger polarity. Applicable only for trigger source set to externa...
__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetTriggerSource(ADC12_TypeDef *ADCx)
Get ADC group injected conversion trigger source: internal (SW start) or from external peripheral (ti...
__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetSequencerRanks(ADC12_TypeDef *ADCx, uint32_t Rank)
Get ADC group injected sequence: channel on the selected sequence rank.
__STATIC_INLINE void DDL_ADC12_INJ_SetSequencerRanks(ADC12_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
Set ADC group injected sequence: channel on the selected sequence rank.
__STATIC_INLINE void DDL_ADC12_INJ_SetSequencerDiscont(ADC12_TypeDef *ADCx, uint32_t SeqDiscont)
Set ADC group injected sequencer discontinuous mode: sequence subdivided and scan conversions interru...
__STATIC_INLINE void DDL_ADC12_INJ_ConfigQueueContext(ADC12_TypeDef *ADCx, uint32_t TriggerSource, uint32_t ExternalTriggerEdge, uint32_t SequencerNbRanks, uint32_t Rank1_Channel, uint32_t Rank2_Channel, uint32_t Rank3_Channel, uint32_t Rank4_Channel)
Set one context on ADC group injected that will be checked in contexts queue.
__STATIC_INLINE uint32_t DDL_ADC12_REG_GetSequencerRanks(ADC12_TypeDef *ADCx, uint32_t Rank)
Get ADC group regular sequence: channel on the selected scan sequence rank. Refer to description of f...
__STATIC_INLINE uint32_t DDL_ADC12_REG_GetDMATransfer(ADC12_TypeDef *ADCx)
Get ADC group regular conversion data transfer: no transfer or transfer by DMA, and DMA requests mode...
__STATIC_INLINE void DDL_ADC12_REG_SetTriggerEdge(ADC12_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
Set ADC group regular conversion trigger polarity.
__STATIC_INLINE void DDL_ADC12_REG_SetSequencerDiscont(ADC12_TypeDef *ADCx, uint32_t SeqDiscont)
Set ADC group regular sequencer discontinuous mode: sequence subdivided and scan conversions interrup...
__STATIC_INLINE void DDL_ADC12_REG_SetContinuousMode(ADC12_TypeDef *ADCx, uint32_t Continuous)
Set ADC continuous conversion mode on ADC group regular.
__STATIC_INLINE uint32_t DDL_ADC12_REG_GetTriggerSource(ADC12_TypeDef *ADCx)
Get ADC group regular conversion trigger source: internal (SW start) or from external peripheral (tim...
__STATIC_INLINE void DDL_ADC12_REG_SetSequencerRanks(ADC12_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
Set ADC group regular sequence: channel on the selected scan sequence rank.
__STATIC_INLINE uint32_t DDL_ADC12_REG_GetTriggerEdge(ADC12_TypeDef *ADCx)
Get ADC group regular conversion trigger polarity.
__STATIC_INLINE void DDL_ADC12_REG_SetSequencerLength(ADC12_TypeDef *ADCx, uint32_t SequencerNbRanks)
Set ADC group regular sequencer length and scan direction.
__STATIC_INLINE void DDL_ADC12_REG_SetTriggerSource(ADC12_TypeDef *ADCx, uint32_t TriggerSource)
Set ADC group regular conversion trigger source: internal (SW start) or from external peripheral (tim...
__STATIC_INLINE uint32_t DDL_ADC12_REG_IsTriggerSourceSWStart(ADC12_TypeDef *ADCx)
Get ADC group regular conversion trigger source internal (SW start) or external.
__STATIC_INLINE uint32_t DDL_ADC12_REG_GetContinuousMode(ADC12_TypeDef *ADCx)
Get ADC continuous conversion mode on ADC group regular.
__STATIC_INLINE void DDL_ADC12_REG_SetDMATransfer(ADC12_TypeDef *ADCx, uint32_t DMATransfer)
Set ADC group regular conversion data transfer: no transfer or transfer by DMA, and DMA requests mode...
__STATIC_INLINE uint32_t DDL_ADC12_REG_GetSequencerLength(ADC12_TypeDef *ADCx)
Get ADC group regular sequencer length and scan direction.
__STATIC_INLINE uint32_t DDL_ADC12_REG_GetSequencerDiscont(ADC12_TypeDef *ADCx)
Get ADC group regular sequencer discontinuous mode: sequence subdivided and scan conversions interrup...
__STATIC_INLINE void DDL_ADC12_INJ_SetOffset(ADC12_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetLevel)
Set ADC selected offset number 1, 2, 3 or 4.
__STATIC_INLINE uint32_t DDL_ADC12_INJ_GetOffset(ADC12_TypeDef *ADCx, uint32_t Offsety)
Get for the ADC selected offset number 1, 2, 3 or 4: Offset level (offset to be subtracted from the r...
__STATIC_INLINE uint32_t DDL_ADC12_GetChannelSamplingTime(ADC12_TypeDef *ADCx, uint32_t Channel)
Get sampling time of the selected ADC channel Unit: ADC clock cycles.
__STATIC_INLINE void DDL_ADC12_SetChannelSamplingTime(ADC12_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime)
Set sampling time of the selected ADC channel Unit: ADC clock cycles.
__STATIC_INLINE uint32_t DDL_ADC12_DMA_GetRegAddr(ADC12_TypeDef *ADCx, uint32_t Register)
Function to help to configure DMA transfer from ADC: retrieve the ADC register address from ADC insta...
__STATIC_INLINE uint32_t DDL_ADC12_IsActiveFlag_JEOS(ADC12_TypeDef *ADCx)
Get flag ADC group injected end of sequence conversions.
__STATIC_INLINE uint32_t DDL_ADC12_IsActiveFlag_AWD1(ADC12_TypeDef *ADCx)
Get flag ADC analog watchdog 1 flag.
__STATIC_INLINE uint32_t DDL_ADC12_IsActiveFlag_EOS(ADC12_TypeDef *ADCx)
Get flag ADC group regular end of sequence conversions.
__STATIC_INLINE uint32_t DDL_ADC12_IsActiveFlag_EOC(ADC12_TypeDef *ADCx)
Get flag ADC group regular end of unitary conversion.
__STATIC_INLINE uint32_t DDL_ADC12_IsActiveFlag_JEOC(ADC12_TypeDef *ADCx)
Get flag ADC group injected end of unitary conversion.
__STATIC_INLINE void DDL_ADC12_ClearFlag_AWD1(ADC12_TypeDef *ADCx)
Clear flag ADC analog watchdog 1.
__STATIC_INLINE void DDL_ADC12_ClearFlag_JEOC(ADC12_TypeDef *ADCx)
Clear flag ADC group injected end of unitary conversion.
__STATIC_INLINE void DDL_ADC12_ClearFlag_JEOS(ADC12_TypeDef *ADCx)
Clear flag ADC group injected end of sequence conversions.
__STATIC_INLINE void DDL_ADC12_ClearFlag_EOS(ADC12_TypeDef *ADCx)
Clear flag ADC group regular end of sequence conversions.
__STATIC_INLINE void DDL_ADC12_ClearFlag_EOC(ADC12_TypeDef *ADCx)
Clear flag ADC group regular end of unitary conversion.
__STATIC_INLINE void DDL_ADC12_DisableIT_JEOC(ADC12_TypeDef *ADCx)
Disable interruption ADC group regular end of unitary conversion.
__STATIC_INLINE void DDL_ADC12_EnableIT_JEOC(ADC12_TypeDef *ADCx)
Enable interruption ADC group injected end of unitary conversion.
__STATIC_INLINE uint32_t DDL_ADC12_IsEnabledIT_EOS(ADC12_TypeDef *ADCx)
Get state of interruption ADC group regular end of sequence conversions (0: interrupt disabled,...
__STATIC_INLINE void DDL_ADC12_DisableIT_AWD1(ADC12_TypeDef *ADCx)
Disable interruption ADC analog watchdog 1.
__STATIC_INLINE void DDL_ADC12_EnableIT_EOC(ADC12_TypeDef *ADCx)
Enable interruption ADC group regular end of unitary conversion.
__STATIC_INLINE uint32_t DDL_ADC12_IsEnabledIT_EOC(ADC12_TypeDef *ADCx)
Get state of interruption ADC group regular end of unitary conversion (0: interrupt disabled,...
__STATIC_INLINE void DDL_ADC12_EnableIT_AWD1(ADC12_TypeDef *ADCx)
Enable interruption ADC analog watchdog 1.
__STATIC_INLINE void DDL_ADC12_DisableIT_EOC(ADC12_TypeDef *ADCx)
Disable interruption ADC group regular end of unitary conversion.
__STATIC_INLINE void DDL_ADC12_DisableIT_EOS(ADC12_TypeDef *ADCx)
Disable interruption ADC group regular end of sequence conversions.
__STATIC_INLINE uint32_t DDL_ADC12_IsEnabledIT_JEOC(ADC12_TypeDef *ADCx)
Get state of interruption ADC group injected end of unitary conversion (0: interrupt disabled,...
__STATIC_INLINE uint32_t DDL_ADC12_IsEnabledIT_AWD1(ADC12_TypeDef *ADCx)
Get state of interruption ADC analog watchdog 1 (0: interrupt disabled, 1: interrupt enabled).
__STATIC_INLINE void DDL_ADC12_DisableIT_JEOS(ADC12_TypeDef *ADCx)
Disable interruption ADC group injected end of sequence conversions.
__STATIC_INLINE void DDL_ADC12_EnableIT_JEOS(ADC12_TypeDef *ADCx)
Enable interruption ADC group injected end of sequence conversions.
__STATIC_INLINE uint32_t DDL_ADC12_IsEnabledIT_JEOS(ADC12_TypeDef *ADCx)
Get state of interruption ADC group injected end of sequence conversions (0: interrupt disabled,...
__STATIC_INLINE void DDL_ADC12_EnableIT_EOS(ADC12_TypeDef *ADCx)
Enable interruption ADC group regular end of sequence conversions.
ErrorStatus DDL_ADC12_DeInit(ADC12_TypeDef *ADCx)
De-initialize registers of the selected ADC instance to their default reset values.
void DDL_ADC12_INJ_StructInit(DDL_ADC12_INJ_InitTypeDef *ADC_INJ_InitStruct)
Set each DDL_ADC12_INJ_InitTypeDef field to default value.
ErrorStatus DDL_ADC12_INJ_Init(ADC12_TypeDef *ADCx, DDL_ADC12_INJ_InitTypeDef *ADC_INJ_InitStruct)
Initialize some features of ADC group injected.
void DDL_ADC12_StructInit(DDL_ADC12_InitTypeDef *ADC_InitStruct)
Set each DDL_ADC12_InitTypeDef field to default value.
ErrorStatus DDL_ADC12_Init(ADC12_TypeDef *ADCx, DDL_ADC12_InitTypeDef *ADC_InitStruct)
Initialize some features of ADC instance.
void DDL_ADC12_REG_StructInit(DDL_ADC12_REG_InitTypeDef *ADC_REG_InitStruct)
Set each DDL_ADC12_REG_InitTypeDef field to default value.
ErrorStatus DDL_ADC12_REG_Init(ADC12_TypeDef *ADCx, DDL_ADC12_REG_InitTypeDef *ADC_REG_InitStruct)
Initialize some features of ADC group regular.
__STATIC_INLINE uint32_t DDL_ADC12_INJ_ReadConversionData32(ADC12_TypeDef *ADCx, uint32_t Rank)
Get ADC group injected conversion data, range fit for all ADC configurations: all ADC resolutions and...
__STATIC_INLINE void DDL_ADC12_INJ_StopConversion(ADC12_TypeDef *ADCx)
Stop ADC group injected conversion.
__STATIC_INLINE void DDL_ADC12_INJ_StartConversion(ADC12_TypeDef *ADCx)
Start ADC group injected conversion.
__STATIC_INLINE uint32_t DDL_ADC12_INJ_IsStopConversionOngoing(ADC12_TypeDef *ADCx)
Get ADC group injected command of conversion stop state.
__STATIC_INLINE uint32_t DDL_ADC12_INJ_IsConversionOngoing(ADC12_TypeDef *ADCx)
Get ADC group injected conversion state.
__STATIC_INLINE void DDL_ADC12_REG_StopConversion(ADC12_TypeDef *ADCx)
Stop ADC group regular conversion.
__STATIC_INLINE void DDL_ADC12_REG_StartConversion(ADC12_TypeDef *ADCx)
Start ADC group regular conversion.
__STATIC_INLINE uint32_t DDL_ADC12_REG_IsConversionOngoing(ADC12_TypeDef *ADCx)
Get ADC group regular conversion state.
__STATIC_INLINE uint32_t DDL_ADC12_REG_ReadConversionData32(ADC12_TypeDef *ADCx)
Get ADC group regular conversion data, range fit for all ADC configurations: all ADC resolutions and ...
__STATIC_INLINE uint32_t DDL_ADC12_REG_IsStopConversionOngoing(ADC12_TypeDef *ADCx)
Get ADC group regular command of conversion stop state.
__STATIC_INLINE void DDL_ADC12_Enable(ADC12_TypeDef *ADCx)
Enable the selected ADC instance.
__STATIC_INLINE void DDL_ADC12_SetDataAlignment(ADC12_TypeDef *ADCx, uint32_t Alignment)
Set ADC data alignment.
__STATIC_INLINE uint32_t DDL_ADC12_IsEnabled(ADC12_TypeDef *ADCx)
Get the selected ADC instance enable state.
__STATIC_INLINE void DDL_ADC12_Disable(ADC12_TypeDef *ADCx)
Disable the selected ADC instance.
__STATIC_INLINE uint32_t DDL_ADC12_GetDataAlignment(ADC12_TypeDef *ADCx)
Get ADC data alignment.
#define ADC12_AWD_CR_ALL_CHANNEL_MASK
#define ADC12_REG_RANK_ID_SQRX_MASK
#define ADC12_AWD_TRX_BIT_HIGH_SHIFT4
#define ADC12_REG_SQRX_REGOFFSET_MASK
#define ADC12_CHANNEL_SMPx_BITOFFSET_MASK
#define ADC12_AWD_TRX_REGOFFSET_MASK
#define ADC12_CHANNEL_ID_NUMBER_BITOFFSET_POS
#define ADC12_INJ_JDRX_REGOFFSET_MASK
#define ADC12_TR1_HT1_BITOFFSET_POS
#define ADC12_SMPRX_REGOFFSET_POS
#define ADC12_CHANNEL_ID_NUMBER_MASK
#define ADC12_AWD_CRX_REGOFFSET_POS
#define ADC12_AWD_CRX_REGOFFSET_MASK
#define ADC12_CHANNEL_ID_NUMBER_MASK_POSBIT0
#define ADC12_AWD_TRX_REGOFFSET_POS
#define ADC12_JDRX_REGOFFSET_POS
#define ADC12_AWD_CR12_REGOFFSETGAP_VAL
#define ADC12_AWD_CR12_REGOFFSETGAP_MASK
#define ADC12_CHANNEL_SMPx_BITOFFSET_POS
#define ADC12_SQRX_REGOFFSET_POS
#define ADC12_INJ_RANK_ID_JSQR_MASK
#define ADC12_CHANNEL_SMPRX_REGOFFSET_MASK
#define ADC12_AWD_TRX_BIT_HIGH_MASK
#define __ADC12_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__)
Driver macro reserved for internal use: set a pointer to a register from a register basis from which ...
Structure definition of some features of ADC group injected.
Structure definition of some features of ADC instance.
Structure definition of some features of ADC group regular.