44#if defined(USE_FULL_DDL_DRIVER)
54 #define ASSERT_PARAM(_PARAM_) ((void)0U)
61#if defined (ADC1) || defined (ADC2)
101#define ADC_CLOCK_RATIO_VS_CPU_HIGHEST (3968UL)
102#define ADC_TIMEOUT_DISABLE_CPU_CYCLES (ADC_CLOCK_RATIO_VS_CPU_HIGHEST * 1UL)
103#define ADC_TIMEOUT_STOP_CONVERSION_CPU_CYCLES (ADC_CLOCK_RATIO_VS_CPU_HIGHEST * 1UL)
105#define IS_DDL_ADC16_LOW_POWER(__LOW_POWER__) \
106 (((__LOW_POWER__) == DDL_ADC16_LP_MODE_NONE) \
107 || ((__LOW_POWER__) == DDL_ADC16_LP_AUTOWAIT) \
110#define IS_DDL_ADC16_REG_TRIG_SOURCE(__ADC_INSTANCE__, __REG_TRIG_SOURCE__) \
111 (((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_SOFTWARE) \
112 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_TMR1_CC1) \
113 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_TMR1_CC2) \
114 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_TMR1_CC3) \
115 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_TMR2_CC2) \
116 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_TMR3_TRGO) \
117 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_TMR4_CC4) \
118 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_EINT_LINE11) \
119 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_TMR1_TRGO) \
120 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_TMR2_TRGO) \
121 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_TMR4_TRGO) \
122 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_TMR3_CC4) \
123 || ((__REG_TRIG_SOURCE__) == DDL_ADC16_REG_TRIG_EXT_LPTMROUT) \
126#define IS_DDL_ADC16_REG_SEQ_SCAN_LENGTH(__REG_SEQ_SCAN_LENGTH__) \
127 (((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_DISABLE) \
128 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_2RANKS) \
129 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_3RANKS) \
130 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_4RANKS) \
131 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_5RANKS) \
132 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_6RANKS) \
133 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_7RANKS) \
134 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_8RANKS) \
135 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_9RANKS) \
136 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_10RANKS) \
137 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_11RANKS) \
138 || ((__REG_SEQ_SCAN_LENGTH__) == DDL_ADC16_REG_SEQ_SCAN_ENABLE_12RANKS) \
141#define IS_DDL_ADC16_REG_SEQ_SCAN_DISCONT_MODE(__REG_SEQ_DISCONT_MODE__) \
142 (((__REG_SEQ_DISCONT_MODE__) == DDL_ADC16_REG_SEQ_DISCONT_DISABLE) \
143 || ((__REG_SEQ_DISCONT_MODE__) == DDL_ADC16_REG_SEQ_DISCONT_1RANK) \
144 || ((__REG_SEQ_DISCONT_MODE__) == DDL_ADC16_REG_SEQ_DISCONT_2RANKS) \
145 || ((__REG_SEQ_DISCONT_MODE__) == DDL_ADC16_REG_SEQ_DISCONT_3RANKS) \
146 || ((__REG_SEQ_DISCONT_MODE__) == DDL_ADC16_REG_SEQ_DISCONT_4RANKS) \
147 || ((__REG_SEQ_DISCONT_MODE__) == DDL_ADC16_REG_SEQ_DISCONT_5RANKS) \
148 || ((__REG_SEQ_DISCONT_MODE__) == DDL_ADC16_REG_SEQ_DISCONT_6RANKS) \
151#define IS_DDL_ADC16_REG_CONTINUOUS_MODE(__REG_CONTINUOUS_MODE__) \
152 (((__REG_CONTINUOUS_MODE__) == DDL_ADC16_REG_CONV_SINGLE) \
153 || ((__REG_CONTINUOUS_MODE__) == DDL_ADC16_REG_CONV_CONTINUOUS) \
156#define IS_DDL_ADC16_REG_DMA_TRANSFER(__REG_DMA_TRANSFER__) \
157 (((__REG_DMA_TRANSFER__) == DDL_ADC16_REG_DMA_TRANSFER_NONE) \
158 || ((__REG_DMA_TRANSFER__) == DDL_ADC16_REG_DMA_TRANSFER_LIMITED) \
159 || ((__REG_DMA_TRANSFER__) == DDL_ADC16_REG_DMA_TRANSFER_UNLIMITED) \
162#define IS_DDL_ADC16_REG_OVR_DATA_BEHAVIOR(__REG_OVR_DATA_BEHAVIOR__) \
163 (((__REG_OVR_DATA_BEHAVIOR__) == DDL_ADC16_REG_OVR_DATA_PRESERVED) \
164 || ((__REG_OVR_DATA_BEHAVIOR__) == DDL_ADC16_REG_OVR_DATA_OVERWRITTEN) \
167#define IS_DDL_ADC16_INJ_TRIG_SOURCE(__ADC_INSTANCE__, __INJ_TRIG_SOURCE__) \
168 (((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_SOFTWARE) \
169 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_TMR1_TRGO) \
170 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_TMR1_CC4) \
171 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_TMR2_TRGO) \
172 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_TMR2_CC1) \
173 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_TMR2_CC4) \
174 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_TMR4_TRGO) \
175 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_EINT_LINE15) \
176 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_TMR3_CC3) \
177 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_TMR3_TRGO) \
178 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_TMR3_CC1) \
179 || ((__INJ_TRIG_SOURCE__) == DDL_ADC16_INJ_TRIG_EXT_LPTMROUT) \
182#define IS_DDL_ADC16_INJ_TRIG_EXT_EDGE(__INJ_TRIG_EXT_EDGE__) \
183 (((__INJ_TRIG_EXT_EDGE__) == DDL_ADC16_INJ_TRIG_EXT_RISING) \
184 || ((__INJ_TRIG_EXT_EDGE__) == DDL_ADC16_INJ_TRIG_EXT_FALLING) \
185 || ((__INJ_TRIG_EXT_EDGE__) == DDL_ADC16_INJ_TRIG_EXT_RISINGFALLING) \
188#define IS_DDL_ADC16_INJ_TRIG_AUTO(__INJ_TRIG_AUTO__) \
189 (((__INJ_TRIG_AUTO__) == DDL_ADC16_INJ_TRIG_INDEPENDENT) \
190 || ((__INJ_TRIG_AUTO__) == DDL_ADC16_INJ_TRIG_FROM_GRP_REGULAR) \
193#define IS_DDL_ADC16_INJ_SEQ_SCAN_LENGTH(__INJ_SEQ_SCAN_LENGTH__) \
194 (((__INJ_SEQ_SCAN_LENGTH__) == DDL_ADC16_INJ_SEQ_SCAN_DISABLE) \
195 || ((__INJ_SEQ_SCAN_LENGTH__) == DDL_ADC16_INJ_SEQ_SCAN_ENABLE_2RANKS) \
196 || ((__INJ_SEQ_SCAN_LENGTH__) == DDL_ADC16_INJ_SEQ_SCAN_ENABLE_3RANKS) \
197 || ((__INJ_SEQ_SCAN_LENGTH__) == DDL_ADC16_INJ_SEQ_SCAN_ENABLE_4RANKS) \
200#define IS_DDL_ADC16_INJ_SEQ_SCAN_DISCONT_MODE(__INJ_SEQ_DISCONT_MODE__) \
201 (((__INJ_SEQ_DISCONT_MODE__) == DDL_ADC16_INJ_SEQ_DISCONT_DISABLE) \
202 || ((__INJ_SEQ_DISCONT_MODE__) == DDL_ADC16_INJ_SEQ_DISCONT_1RANK) \
205#define IS_DDL_ADC16_SINGLE_DIFFERENTIAL(__SINGLE_DIFFERENTIAL__) \
206 (((__SINGLE_DIFFERENTIAL__) == DDL_ADC16_SINGLE_ENDED) \
207 || ((__SINGLE_DIFFERENTIAL__) == DDL_ADC16_DIFFERENTIAL_ENDED) \
210#define IS_DDL_ADC16_CHANNEL(__CHANNEL__) \
211 (((__CHANNEL__) == DDL_ADC16_CHANNEL_0) \
212 || ((__CHANNEL__) == DDL_ADC16_CHANNEL_1) \
213 || ((__CHANNEL__) == DDL_ADC16_CHANNEL_2) \
214 || ((__CHANNEL__) == DDL_ADC16_CHANNEL_3) \
215 || ((__CHANNEL__) == DDL_ADC16_CHANNEL_4) \
216 || ((__CHANNEL__) == DDL_ADC16_CHANNEL_5) \
252 ErrorStatus status = SUCCESS;
254 __IO uint32_t timeout_cpu_cycles = 0UL;
295 timeout_cpu_cycles--;
296 if (timeout_cpu_cycles == 0UL)
310 if (READ_BIT(ADCx->CR,
311 (ADC_CR_JADSTP | ADC_CR_ADSTP | ADC_CR_JADSTART | ADC_CR_ADSTART
359 MODIFY_REG(ADCx->CFGR,
360 ( ADC_CFGR_AWD1CH | ADC_CFGR_JAUTO | ADC_CFGR_JAWD1EN
361 | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL | ADC_CFGR_JQM
362 | ADC_CFGR_JDISCEN | ADC_CFGR_DISCNUM | ADC_CFGR_DISCEN
363 | ADC_CFGR_AUTDLY | ADC_CFGR_CONT | ADC_CFGR_OVRMOD
364 | ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL
365 | ADC_CFGR_DMACFG | ADC_CFGR_DMAEN),
370 CLEAR_BIT(ADCx->CFGR2,
371 ( ADC_CFGR2_DIFSEL | ADC_CFGR2_AWDFILT
372 | ADC_CFGR2_ROVSM | ADC_CFGR2_TROVS | ADC_CFGR2_OVSS
373 | ADC_CFGR2_OVSR | ADC_CFGR2_JOVSE | ADC_CFGR2_ROVSE)
377 CLEAR_BIT(ADCx->SMPR1,
378 ( ADC_SMPR1_SMP5 | ADC_SMPR1_SMP4 | ADC_SMPR1_SMP3
379 | ADC_SMPR1_SMP2 | ADC_SMPR1_SMP1 | ADC_SMPR1_SMP0)
383 MODIFY_REG(ADCx->TR1, ADC_TR1_HT1 | ADC_TR1_LT1, ADC_TR1_HT1);
386 MODIFY_REG(ADCx->TR2, ADC_TR2_HT2 | ADC_TR2_LT2, ADC_TR2_HT2);
389 MODIFY_REG(ADCx->TR3, ADC_TR3_HT3 | ADC_TR3_LT3, ADC_TR3_HT3);
392 CLEAR_BIT(ADCx->SQR1,
393 ( ADC_SQR1_SQ7 | ADC_SQR1_SQ6 | ADC_SQR1_SQ5
394 | ADC_SQR1_SQ4 | ADC_SQR1_SQ3 | ADC_SQR1_SQ2
395 | ADC_SQR1_SQ1 | ADC_SQR1_RL)
399 CLEAR_BIT(ADCx->SQR2,
400 ( ADC_SQR2_SQ12 | ADC_SQR2_SQ11 | ADC_SQR2_SQ10
401 | ADC_SQR2_SQ9 | ADC_SQR2_SQ8)
405 CLEAR_BIT(ADCx->JSQR,
407 | ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN
408 | ADC_JSQR_JSQ4 | ADC_JSQR_JSQ3
409 | ADC_JSQR_JSQ2 | ADC_JSQR_JSQ1)
416 CLEAR_BIT(ADCx->OFFSET0, ADC_OFFSET0_OFFSET0_EN | ADC_OFFSET0_OFFSET0 | ADC_OFFSET0_OFFSETPOS);
418 CLEAR_BIT(ADCx->OFFSET1, ADC_OFFSET1_OFFSET1_EN | ADC_OFFSET1_OFFSET1 | ADC_OFFSET1_OFFSETPOS);
420 CLEAR_BIT(ADCx->OFFSET2, ADC_OFFSET2_OFFSET2_EN | ADC_OFFSET2_OFFSET2 | ADC_OFFSET2_OFFSETPOS);
422 CLEAR_BIT(ADCx->OFFSET3, ADC_OFFSET3_OFFSET3_EN | ADC_OFFSET3_OFFSET3 | ADC_OFFSET3_OFFSETPOS);
424 CLEAR_BIT(ADCx->OFFSET4, ADC_OFFSET4_OFFSET4_EN | ADC_OFFSET4_OFFSET4 | ADC_OFFSET4_OFFSETPOS);
426 CLEAR_BIT(ADCx->OFFSET5, ADC_OFFSET5_OFFSET5_EN | ADC_OFFSET5_OFFSET5 | ADC_OFFSET5_OFFSETPOS);
432 CLEAR_BIT(ADCx->AWD2CR, ADC_AWD2CR_AWD2CH);
435 CLEAR_BIT(ADCx->AWD3CR, ADC_AWD3CR_AWD3CH);
438 CLEAR_BIT( ADCx->CAL,ADC_CAL_REF_SEL);
486 ErrorStatus status = SUCCESS;
500 MODIFY_REG(ADCx->CFGR, ADC_CFGR_AUTDLY, ADC_InitStruct->
LowPowerMode);
559 ErrorStatus status = SUCCESS;
595 MODIFY_REG(ADCx->CFGR,
614 MODIFY_REG(ADCx->CFGR,
697 ErrorStatus status = SUCCESS;
724 MODIFY_REG(ADCx->CFGR,
734 MODIFY_REG(ADCx->CFGR,
743 MODIFY_REG(ADCx->JSQR,
G32 assert template file. This file should be copied to the application folder and renamed to g32_ass...
#define ASSERT_PARAM(_PARAM_)
Header file of ADC DDL module.
Header file of FLASH DDL module.
Header file of RCM DDL module.
#define DDL_ADC16_FLAG_AWD2
#define DDL_ADC16_FLAG_EOS
#define DDL_ADC16_FLAG_AWD1
#define DDL_ADC16_FLAG_JQOVF
#define DDL_ADC16_FLAG_OVR
#define DDL_ADC16_FLAG_EOSMP
#define DDL_ADC16_FLAG_AWD3
#define DDL_ADC16_FLAG_JEOC
#define DDL_ADC16_FLAG_JEOS
#define DDL_ADC16_FLAG_EOC
#define DDL_ADC16_INJ_SEQ_DISCONT_DISABLE
#define DDL_ADC16_INJ_SEQ_SCAN_DISABLE
#define DDL_ADC16_INJ_TRIG_SOFTWARE
#define DDL_ADC16_INJ_TRIG_INDEPENDENT
#define DDL_ADC16_IT_EOSMP
#define DDL_ADC16_IT_JEOS
#define DDL_ADC16_IT_AWD2
#define DDL_ADC16_IT_JQOVF
#define DDL_ADC16_IT_AWD1
#define DDL_ADC16_IT_AWD3
#define DDL_ADC16_IT_JEOC
#define DDL_ADC16_LP_MODE_NONE
#define DDL_ADC16_REG_CONV_SINGLE
#define DDL_ADC16_REG_DMA_TRANSFER_NONE
#define DDL_ADC16_REG_OVR_DATA_OVERWRITTEN
#define DDL_ADC16_REG_SEQ_DISCONT_DISABLE
#define DDL_ADC16_REG_SEQ_SCAN_DISABLE
#define DDL_ADC16_REG_TRIG_SOFTWARE
__STATIC_INLINE void DDL_ADC16_INJ_SetTriggerSource(ADC16_TypeDef *ADCx, uint32_t TriggerSource)
Set ADC group injected conversion trigger source: internal (SW start) or from external peripheral (ti...
__STATIC_INLINE void DDL_ADC16_REG_SetTriggerSource(ADC16_TypeDef *ADCx, uint32_t TriggerSource)
Set ADC group regular conversion trigger source: internal (SW start) or from external peripheral (tim...
__STATIC_INLINE void DDL_ADC16_REG_SetSequencerLength(ADC16_TypeDef *ADCx, uint32_t SequencerNbRanks)
Set ADC group regular sequencer length and scan direction.
void DDL_ADC16_REG_StructInit(DDL_ADC16_REG_InitTypeDef *ADC_REG_InitStruct)
Set each DDL_ADC16_REG_InitTypeDef field to default value.
void DDL_ADC16_StructInit(DDL_ADC16_InitTypeDef *ADC_InitStruct)
Set each DDL_ADC16_InitTypeDef field to default value.
void DDL_ADC16_INJ_StructInit(DDL_ADC16_INJ_InitTypeDef *ADC_INJ_InitStruct)
Set each DDL_ADC16_INJ_InitTypeDef field to default value.
ErrorStatus DDL_ADC16_DeInit(ADC16_TypeDef *ADCx)
De-initialize registers of the selected ADC instance to their default reset values.
ErrorStatus DDL_ADC16_Init(ADC16_TypeDef *ADCx, DDL_ADC16_InitTypeDef *ADC_InitStruct)
Initialize some features of ADC instance.
ErrorStatus DDL_ADC16_INJ_Init(ADC16_TypeDef *ADCx, DDL_ADC16_INJ_InitTypeDef *ADC_INJ_InitStruct)
Initialize some features of ADC group injected.
ErrorStatus DDL_ADC16_REG_Init(ADC16_TypeDef *ADCx, DDL_ADC16_REG_InitTypeDef *ADC_REG_InitStruct)
Initialize some features of ADC group regular.
__STATIC_INLINE void DDL_ADC16_INJ_StopConversion(ADC16_TypeDef *ADCx)
Stop ADC group injected conversion.
__STATIC_INLINE uint32_t DDL_ADC16_INJ_IsConversionOngoing(ADC16_TypeDef *ADCx)
Get ADC group injected conversion state.
__STATIC_INLINE uint32_t DDL_ADC16_INJ_IsStopConversionOngoing(ADC16_TypeDef *ADCx)
Get ADC group injected command of conversion stop state.
__STATIC_INLINE void DDL_ADC16_REG_StopConversion(ADC16_TypeDef *ADCx)
Stop ADC group regular conversion.
__STATIC_INLINE uint32_t DDL_ADC16_REG_IsStopConversionOngoing(ADC16_TypeDef *ADCx)
Get ADC group regular command of conversion stop state.
__STATIC_INLINE uint32_t DDL_ADC16_REG_IsConversionOngoing(ADC16_TypeDef *ADCx)
Get ADC group regular conversion state.
__STATIC_INLINE void DDL_ADC16_Disable(ADC16_TypeDef *ADCx)
Disable the selected ADC instance.
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabled(ADC16_TypeDef *ADCx)
Get the selected ADC instance enable state.
#define IS_DDL_ADC16_INJ_SEQ_SCAN_LENGTH(__INJ_SEQ_SCAN_LENGTH__)
#define IS_DDL_ADC16_INJ_TRIG_SOURCE(__ADC_INSTANCE__, __INJ_TRIG_SOURCE__)
#define IS_DDL_ADC16_REG_SEQ_SCAN_LENGTH(__REG_SEQ_SCAN_LENGTH__)
#define ADC_TIMEOUT_STOP_CONVERSION_CPU_CYCLES
#define IS_DDL_ADC16_REG_DMA_TRANSFER(__REG_DMA_TRANSFER__)
#define IS_DDL_ADC16_REG_SEQ_SCAN_DISCONT_MODE(__REG_SEQ_DISCONT_MODE__)
#define IS_DDL_ADC16_REG_TRIG_SOURCE(__ADC_INSTANCE__, __REG_TRIG_SOURCE__)
#define IS_DDL_ADC16_REG_OVR_DATA_BEHAVIOR(__REG_OVR_DATA_BEHAVIOR__)
#define IS_DDL_ADC16_INJ_TRIG_AUTO(__INJ_TRIG_AUTO__)
#define IS_DDL_ADC16_INJ_SEQ_SCAN_DISCONT_MODE(__INJ_SEQ_DISCONT_MODE__)
#define IS_DDL_ADC16_LOW_POWER(__LOW_POWER__)
#define IS_DDL_ADC16_REG_CONTINUOUS_MODE(__REG_CONTINUOUS_MODE__)
Structure definition of some features of ADC group injected.
uint32_t SequencerDiscont
Structure definition of some features of ADC instance.
Structure definition of some features of ADC group regular.
uint32_t SequencerDiscont