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.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition
ADC handle Structure definition.
ADC Configuration injected Channel structure definition.
FunctionalState AutoInjectedConv
uint32_t InjectedSamplingTime
uint32_t ExternalTrigInjecConvEdge
FunctionalState InjectedDiscontinuousConvMode
uint32_t ExternalTrigInjecConv
uint32_t InjectedNbrOfConversion
ADC Configuration multi-mode structure definition.
uint32_t TwoSamplingDelay