20 #ifndef __STM32F4xx_ADC_EX_H
21 #define __STM32F4xx_ADC_EX_H
136 #define ADC_MODE_INDEPENDENT 0x00000000U
137 #define ADC_DUALMODE_REGSIMULT_INJECSIMULT ((uint32_t)ADC_CCR_MULTI_0)
138 #define ADC_DUALMODE_REGSIMULT_ALTERTRIG ((uint32_t)ADC_CCR_MULTI_1)
139 #define ADC_DUALMODE_INJECSIMULT ((uint32_t)(ADC_CCR_MULTI_2 | ADC_CCR_MULTI_0))
140 #define ADC_DUALMODE_REGSIMULT ((uint32_t)(ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1))
141 #define ADC_DUALMODE_INTERL ((uint32_t)(ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0))
142 #define ADC_DUALMODE_ALTERTRIG ((uint32_t)(ADC_CCR_MULTI_3 | ADC_CCR_MULTI_0))
143 #define ADC_TRIPLEMODE_REGSIMULT_INJECSIMULT ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_0))
144 #define ADC_TRIPLEMODE_REGSIMULT_AlterTrig ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_1))
145 #define ADC_TRIPLEMODE_INJECSIMULT ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_0))
146 #define ADC_TRIPLEMODE_REGSIMULT ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1))
147 #define ADC_TRIPLEMODE_INTERL ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0))
148 #define ADC_TRIPLEMODE_ALTERTRIG ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_3 | ADC_CCR_MULTI_0))
156 #define ADC_DMAACCESSMODE_DISABLED 0x00000000U
157 #define ADC_DMAACCESSMODE_1 ((uint32_t)ADC_CCR_DMA_0)
158 #define ADC_DMAACCESSMODE_2 ((uint32_t)ADC_CCR_DMA_1)
159 #define ADC_DMAACCESSMODE_3 ((uint32_t)ADC_CCR_DMA)
167 #define ADC_EXTERNALTRIGINJECCONVEDGE_NONE 0x00000000U
168 #define ADC_EXTERNALTRIGINJECCONVEDGE_RISING ((uint32_t)ADC_CR2_JEXTEN_0)
169 #define ADC_EXTERNALTRIGINJECCONVEDGE_FALLING ((uint32_t)ADC_CR2_JEXTEN_1)
170 #define ADC_EXTERNALTRIGINJECCONVEDGE_RISINGFALLING ((uint32_t)ADC_CR2_JEXTEN)
178 #define ADC_EXTERNALTRIGINJECCONV_T1_CC4 0x00000000U
179 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO ((uint32_t)ADC_CR2_JEXTSEL_0)
180 #define ADC_EXTERNALTRIGINJECCONV_T2_CC1 ((uint32_t)ADC_CR2_JEXTSEL_1)
181 #define ADC_EXTERNALTRIGINJECCONV_T2_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0))
182 #define ADC_EXTERNALTRIGINJECCONV_T3_CC2 ((uint32_t)ADC_CR2_JEXTSEL_2)
183 #define ADC_EXTERNALTRIGINJECCONV_T3_CC4 ((uint32_t)(ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0))
184 #define ADC_EXTERNALTRIGINJECCONV_T4_CC1 ((uint32_t)(ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1))
185 #define ADC_EXTERNALTRIGINJECCONV_T4_CC2 ((uint32_t)(ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0))
186 #define ADC_EXTERNALTRIGINJECCONV_T4_CC3 ((uint32_t)ADC_CR2_JEXTSEL_3)
187 #define ADC_EXTERNALTRIGINJECCONV_T4_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_0))
188 #define ADC_EXTERNALTRIGINJECCONV_T5_CC4 ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_1))
189 #define ADC_EXTERNALTRIGINJECCONV_T5_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0))
190 #define ADC_EXTERNALTRIGINJECCONV_T8_CC2 ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2))
191 #define ADC_EXTERNALTRIGINJECCONV_T8_CC3 ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0))
192 #define ADC_EXTERNALTRIGINJECCONV_T8_CC4 ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1))
193 #define ADC_EXTERNALTRIGINJECCONV_EXT_IT15 ((uint32_t)ADC_CR2_JEXTSEL)
194 #define ADC_INJECTED_SOFTWARE_START ((uint32_t)ADC_CR2_JEXTSEL + 1U)
202 #define ADC_INJECTED_RANK_1 0x00000001U
203 #define ADC_INJECTED_RANK_2 0x00000002U
204 #define ADC_INJECTED_RANK_3 0x00000003U
205 #define ADC_INJECTED_RANK_4 0x00000004U
213 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || \
214 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) || \
215 defined(STM32F410Rx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || \
217 #define ADC_CHANNEL_TEMPSENSOR ((uint32_t)ADC_CHANNEL_16)
221 #if defined(STM32F411xE) || defined(STM32F413xx) || defined(STM32F423xx) || defined(STM32F427xx) || defined(STM32F437xx) ||\
222 defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
223 #define ADC_CHANNEL_DIFFERENCIATION_TEMPSENSOR_VBAT 0x10000000U
224 #define ADC_CHANNEL_TEMPSENSOR ((uint32_t)ADC_CHANNEL_18 | ADC_CHANNEL_DIFFERENCIATION_TEMPSENSOR_VBAT)
239 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
251 #define __HAL_ADC_PATH_INTERNAL_VBAT_DISABLE() (ADC->CCR &= ~(ADC_CCR_VBATE))
304 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || \
305 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F410Tx) || defined(STM32F410Cx) || \
306 defined(STM32F410Rx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || \
308 #define IS_ADC_CHANNEL(CHANNEL) ((CHANNEL) <= ADC_CHANNEL_18)
312 #if defined(STM32F411xE) || defined(STM32F413xx) || defined(STM32F423xx) || defined(STM32F427xx) || \
313 defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F446xx) || \
314 defined(STM32F469xx) || defined(STM32F479xx)
315 #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) <= ADC_CHANNEL_18) || \
316 ((CHANNEL) == ADC_CHANNEL_TEMPSENSOR))
319 #define IS_ADC_MODE(MODE) (((MODE) == ADC_MODE_INDEPENDENT) || \
320 ((MODE) == ADC_DUALMODE_REGSIMULT_INJECSIMULT) || \
321 ((MODE) == ADC_DUALMODE_REGSIMULT_ALTERTRIG) || \
322 ((MODE) == ADC_DUALMODE_INJECSIMULT) || \
323 ((MODE) == ADC_DUALMODE_REGSIMULT) || \
324 ((MODE) == ADC_DUALMODE_INTERL) || \
325 ((MODE) == ADC_DUALMODE_ALTERTRIG) || \
326 ((MODE) == ADC_TRIPLEMODE_REGSIMULT_INJECSIMULT) || \
327 ((MODE) == ADC_TRIPLEMODE_REGSIMULT_AlterTrig) || \
328 ((MODE) == ADC_TRIPLEMODE_INJECSIMULT) || \
329 ((MODE) == ADC_TRIPLEMODE_REGSIMULT) || \
330 ((MODE) == ADC_TRIPLEMODE_INTERL) || \
331 ((MODE) == ADC_TRIPLEMODE_ALTERTRIG))
332 #define IS_ADC_DMA_ACCESS_MODE(MODE) (((MODE) == ADC_DMAACCESSMODE_DISABLED) || \
333 ((MODE) == ADC_DMAACCESSMODE_1) || \
334 ((MODE) == ADC_DMAACCESSMODE_2) || \
335 ((MODE) == ADC_DMAACCESSMODE_3))
336 #define IS_ADC_EXT_INJEC_TRIG_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGINJECCONVEDGE_NONE) || \
337 ((EDGE) == ADC_EXTERNALTRIGINJECCONVEDGE_RISING) || \
338 ((EDGE) == ADC_EXTERNALTRIGINJECCONVEDGE_FALLING) || \
339 ((EDGE) == ADC_EXTERNALTRIGINJECCONVEDGE_RISINGFALLING))
340 #define IS_ADC_EXT_INJEC_TRIG(INJTRIG) (((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_CC4) || \
341 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO) || \
342 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_CC1) || \
343 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO) || \
344 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC2) || \
345 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC4) || \
346 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_CC1) || \
347 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_CC2) || \
348 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_CC3) || \
349 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO) || \
350 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T5_CC4) || \
351 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T5_TRGO) || \
352 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_CC2) || \
353 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_CC3) || \
354 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_CC4) || \
355 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_EXT_IT15)|| \
356 ((INJTRIG) == ADC_INJECTED_SOFTWARE_START))
357 #define IS_ADC_INJECTED_LENGTH(LENGTH) (((LENGTH) >= 1U) && ((LENGTH) <= 4U))
358 #define IS_ADC_INJECTED_RANK(RANK) (((RANK) >= 1U) && ((RANK) <= 4U))
367 #define ADC_JSQR(_CHANNELNB_, _RANKNB_, _JSQR_JL_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5U * (uint8_t)(((_RANKNB_) + 3U) - (_JSQR_JL_))))
375 #if defined(STM32F405xx) || defined(STM32F407xx) || defined(STM32F415xx) || defined(STM32F417xx) || defined(STM32F427xx) || defined(STM32F429xx) || defined(STM32F437xx) || defined(STM32F439xx) || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
376 #define ADC_COMMON_REGISTER(__HANDLE__) ADC123_COMMON
378 #define ADC_COMMON_REGISTER(__HANDLE__) ADC1_COMMON
HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef *hadc, ADC_InjectionConfTypeDef *sConfigInjected)
Configures for the selected ADC injected channel its corresponding rank in the sequencer and its samp...
uint32_t HAL_ADCEx_MultiModeGetValue(ADC_HandleTypeDef *hadc)
Returns the last ADC1, ADC2 and ADC3 regular conversions results data in the selected multi mode.
HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout)
Poll for injected conversion complete.
HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef *hadc)
Disables ADC DMA (multi-ADC mode) and disables ADC peripheral.
uint32_t HAL_ADCEx_InjectedGetValue(ADC_HandleTypeDef *hadc, uint32_t InjectedRank)
Gets the converted value from data register of injected channel.
HAL_StatusTypeDef HAL_ADCEx_InjectedStop(ADC_HandleTypeDef *hadc)
Stop conversion of injected channels. Disable ADC peripheral if no regular conversion is on going.
HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef *hadc)
Enables the selected ADC software start conversion of the injected channels.
HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length)
Enables ADC DMA request after last transfer (Multi-ADC mode) and enables ADC peripheral.
HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef *hadc, ADC_MultiModeTypeDef *multimode)
Configures the ADC multi-mode.
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc)
Injected conversion complete callback in non blocking mode.
HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(ADC_HandleTypeDef *hadc)
Stop conversion of injected channels, disable interruption of end-of-conversion. Disable ADC peripher...
HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef *hadc)
Enables the interrupt and starts ADC conversion of injected channels.
FunctionalState AutoInjectedConv
uint32_t InjectedSamplingTime
uint32_t ExternalTrigInjecConvEdge
uint32_t TwoSamplingDelay
FunctionalState InjectedDiscontinuousConvMode
uint32_t ExternalTrigInjecConv
uint32_t InjectedNbrOfConversion
ADC Configuration injected Channel structure definition.
ADC Configuration multi-mode structure definition.
struct __ADC_HandleTypeDef else typedef struct endif ADC_HandleTypeDef
ADC handle Structure definition.
This file contains HAL common defines, enumeration, macros and structures definitions.