STM32F4xx HAL Documentation
Hardware Abstraction Layer for STM32F4 familiy
Loading...
Searching...
No Matches
stm32f4xx_hal_adc.h
Go to the documentation of this file.
1
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef __STM32F4xx_ADC_H
21#define __STM32F4xx_ADC_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32f4xx_hal_def.h"
29
30/* Include low level driver */
31#include "stm32f4xx_ll_adc.h"
32
41/* Exported types ------------------------------------------------------------*/
59typedef struct
60{
61 uint32_t ClockPrescaler;
64 uint32_t Resolution;
66 uint32_t DataAlign;
69 uint32_t ScanConvMode;
76 uint32_t EOCSelection;
83 FunctionalState ContinuousConvMode;
86 uint32_t NbrOfConversion;
89 FunctionalState DiscontinuousConvMode;
103 FunctionalState DMAContinuousRequests;
109
110
111
117typedef struct
118{
119 uint32_t Channel;
121 uint32_t Rank;
123 uint32_t SamplingTime;
132 uint32_t Offset;
134
138typedef struct
139{
140 uint32_t WatchdogMode;
142 uint32_t HighThreshold;
144 uint32_t LowThreshold;
146 uint32_t Channel;
149 FunctionalState ITMode;
152 uint32_t WatchdogNumber;
154
158/* States of ADC global scope */
159#define HAL_ADC_STATE_RESET 0x00000000U
160#define HAL_ADC_STATE_READY 0x00000001U
161#define HAL_ADC_STATE_BUSY_INTERNAL 0x00000002U
162#define HAL_ADC_STATE_TIMEOUT 0x00000004U
164/* States of ADC errors */
165#define HAL_ADC_STATE_ERROR_INTERNAL 0x00000010U
166#define HAL_ADC_STATE_ERROR_CONFIG 0x00000020U
167#define HAL_ADC_STATE_ERROR_DMA 0x00000040U
169/* States of ADC group regular */
170#define HAL_ADC_STATE_REG_BUSY 0x00000100U
172#define HAL_ADC_STATE_REG_EOC 0x00000200U
173#define HAL_ADC_STATE_REG_OVR 0x00000400U
175/* States of ADC group injected */
176#define HAL_ADC_STATE_INJ_BUSY 0x00001000U
178#define HAL_ADC_STATE_INJ_EOC 0x00002000U
180/* States of ADC analog watchdogs */
181#define HAL_ADC_STATE_AWD1 0x00010000U
182#define HAL_ADC_STATE_AWD2 0x00020000U
183#define HAL_ADC_STATE_AWD3 0x00040000U
185/* States of ADC multi-mode */
186#define HAL_ADC_STATE_MULTIMODE_SLAVE 0x00100000U
192#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
193typedef struct __ADC_HandleTypeDef
194#else
195typedef struct
196#endif
197{
198 ADC_TypeDef *Instance;
208 __IO uint32_t State;
210 __IO uint32_t ErrorCode;
211#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
212 void (* ConvCpltCallback)(struct __ADC_HandleTypeDef *hadc);
213 void (* ConvHalfCpltCallback)(struct __ADC_HandleTypeDef *hadc);
214 void (* LevelOutOfWindowCallback)(struct __ADC_HandleTypeDef *hadc);
215 void (* ErrorCallback)(struct __ADC_HandleTypeDef *hadc);
216 void (* InjectedConvCpltCallback)(struct __ADC_HandleTypeDef *hadc);
217 void (* MspInitCallback)(struct __ADC_HandleTypeDef *hadc);
218 void (* MspDeInitCallback)(struct __ADC_HandleTypeDef *hadc);
219#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
221
222#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
226typedef enum
227{
228 HAL_ADC_CONVERSION_COMPLETE_CB_ID = 0x00U,
229 HAL_ADC_CONVERSION_HALF_CB_ID = 0x01U,
230 HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID = 0x02U,
231 HAL_ADC_ERROR_CB_ID = 0x03U,
232 HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID = 0x04U,
233 HAL_ADC_MSPINIT_CB_ID = 0x05U,
234 HAL_ADC_MSPDEINIT_CB_ID = 0x06U
235} HAL_ADC_CallbackIDTypeDef;
236
240typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc);
242#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
243
248/* Exported constants --------------------------------------------------------*/
256#define HAL_ADC_ERROR_NONE 0x00U
257#define HAL_ADC_ERROR_INTERNAL 0x01U
259#define HAL_ADC_ERROR_OVR 0x02U
260#define HAL_ADC_ERROR_DMA 0x04U
261#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
262#define HAL_ADC_ERROR_INVALID_CALLBACK (0x10U)
263#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
272#define ADC_CLOCK_SYNC_PCLK_DIV2 0x00000000U
273#define ADC_CLOCK_SYNC_PCLK_DIV4 ((uint32_t)ADC_CCR_ADCPRE_0)
274#define ADC_CLOCK_SYNC_PCLK_DIV6 ((uint32_t)ADC_CCR_ADCPRE_1)
275#define ADC_CLOCK_SYNC_PCLK_DIV8 ((uint32_t)ADC_CCR_ADCPRE)
283#define ADC_TWOSAMPLINGDELAY_5CYCLES 0x00000000U
284#define ADC_TWOSAMPLINGDELAY_6CYCLES ((uint32_t)ADC_CCR_DELAY_0)
285#define ADC_TWOSAMPLINGDELAY_7CYCLES ((uint32_t)ADC_CCR_DELAY_1)
286#define ADC_TWOSAMPLINGDELAY_8CYCLES ((uint32_t)(ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))
287#define ADC_TWOSAMPLINGDELAY_9CYCLES ((uint32_t)ADC_CCR_DELAY_2)
288#define ADC_TWOSAMPLINGDELAY_10CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0))
289#define ADC_TWOSAMPLINGDELAY_11CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1))
290#define ADC_TWOSAMPLINGDELAY_12CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))
291#define ADC_TWOSAMPLINGDELAY_13CYCLES ((uint32_t)ADC_CCR_DELAY_3)
292#define ADC_TWOSAMPLINGDELAY_14CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0))
293#define ADC_TWOSAMPLINGDELAY_15CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1))
294#define ADC_TWOSAMPLINGDELAY_16CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))
295#define ADC_TWOSAMPLINGDELAY_17CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2))
296#define ADC_TWOSAMPLINGDELAY_18CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0))
297#define ADC_TWOSAMPLINGDELAY_19CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1))
298#define ADC_TWOSAMPLINGDELAY_20CYCLES ((uint32_t)ADC_CCR_DELAY)
306#define ADC_RESOLUTION_12B 0x00000000U
307#define ADC_RESOLUTION_10B ((uint32_t)ADC_CR1_RES_0)
308#define ADC_RESOLUTION_8B ((uint32_t)ADC_CR1_RES_1)
309#define ADC_RESOLUTION_6B ((uint32_t)ADC_CR1_RES)
317#define ADC_EXTERNALTRIGCONVEDGE_NONE 0x00000000U
318#define ADC_EXTERNALTRIGCONVEDGE_RISING ((uint32_t)ADC_CR2_EXTEN_0)
319#define ADC_EXTERNALTRIGCONVEDGE_FALLING ((uint32_t)ADC_CR2_EXTEN_1)
320#define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING ((uint32_t)ADC_CR2_EXTEN)
328/* Note: Parameter ADC_SOFTWARE_START is a software parameter used for */
329/* compatibility with other STM32 devices. */
330#define ADC_EXTERNALTRIGCONV_T1_CC1 0x00000000U
331#define ADC_EXTERNALTRIGCONV_T1_CC2 ((uint32_t)ADC_CR2_EXTSEL_0)
332#define ADC_EXTERNALTRIGCONV_T1_CC3 ((uint32_t)ADC_CR2_EXTSEL_1)
333#define ADC_EXTERNALTRIGCONV_T2_CC2 ((uint32_t)(ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
334#define ADC_EXTERNALTRIGCONV_T2_CC3 ((uint32_t)ADC_CR2_EXTSEL_2)
335#define ADC_EXTERNALTRIGCONV_T2_CC4 ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))
336#define ADC_EXTERNALTRIGCONV_T2_TRGO ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))
337#define ADC_EXTERNALTRIGCONV_T3_CC1 ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
338#define ADC_EXTERNALTRIGCONV_T3_TRGO ((uint32_t)ADC_CR2_EXTSEL_3)
339#define ADC_EXTERNALTRIGCONV_T4_CC4 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_0))
340#define ADC_EXTERNALTRIGCONV_T5_CC1 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1))
341#define ADC_EXTERNALTRIGCONV_T5_CC2 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
342#define ADC_EXTERNALTRIGCONV_T5_CC3 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2))
343#define ADC_EXTERNALTRIGCONV_T8_CC1 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))
344#define ADC_EXTERNALTRIGCONV_T8_TRGO ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))
345#define ADC_EXTERNALTRIGCONV_Ext_IT11 ((uint32_t)ADC_CR2_EXTSEL)
346#define ADC_SOFTWARE_START ((uint32_t)ADC_CR2_EXTSEL + 1U)
354#define ADC_DATAALIGN_RIGHT 0x00000000U
355#define ADC_DATAALIGN_LEFT ((uint32_t)ADC_CR2_ALIGN)
363#define ADC_CHANNEL_0 0x00000000U
364#define ADC_CHANNEL_1 ((uint32_t)ADC_CR1_AWDCH_0)
365#define ADC_CHANNEL_2 ((uint32_t)ADC_CR1_AWDCH_1)
366#define ADC_CHANNEL_3 ((uint32_t)(ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
367#define ADC_CHANNEL_4 ((uint32_t)ADC_CR1_AWDCH_2)
368#define ADC_CHANNEL_5 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0))
369#define ADC_CHANNEL_6 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1))
370#define ADC_CHANNEL_7 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
371#define ADC_CHANNEL_8 ((uint32_t)ADC_CR1_AWDCH_3)
372#define ADC_CHANNEL_9 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_0))
373#define ADC_CHANNEL_10 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1))
374#define ADC_CHANNEL_11 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
375#define ADC_CHANNEL_12 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2))
376#define ADC_CHANNEL_13 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0))
377#define ADC_CHANNEL_14 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1))
378#define ADC_CHANNEL_15 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
379#define ADC_CHANNEL_16 ((uint32_t)ADC_CR1_AWDCH_4)
380#define ADC_CHANNEL_17 ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_0))
381#define ADC_CHANNEL_18 ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_1))
382
383#define ADC_CHANNEL_VREFINT ((uint32_t)ADC_CHANNEL_17)
384#define ADC_CHANNEL_VBAT ((uint32_t)ADC_CHANNEL_18)
392#define ADC_SAMPLETIME_3CYCLES 0x00000000U
393#define ADC_SAMPLETIME_15CYCLES ((uint32_t)ADC_SMPR1_SMP10_0)
394#define ADC_SAMPLETIME_28CYCLES ((uint32_t)ADC_SMPR1_SMP10_1)
395#define ADC_SAMPLETIME_56CYCLES ((uint32_t)(ADC_SMPR1_SMP10_1 | ADC_SMPR1_SMP10_0))
396#define ADC_SAMPLETIME_84CYCLES ((uint32_t)ADC_SMPR1_SMP10_2)
397#define ADC_SAMPLETIME_112CYCLES ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_0))
398#define ADC_SAMPLETIME_144CYCLES ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_1))
399#define ADC_SAMPLETIME_480CYCLES ((uint32_t)ADC_SMPR1_SMP10)
407#define ADC_EOC_SEQ_CONV 0x00000000U
408#define ADC_EOC_SINGLE_CONV 0x00000001U
409#define ADC_EOC_SINGLE_SEQ_CONV 0x00000002U
417#define ADC_AWD_EVENT ((uint32_t)ADC_FLAG_AWD)
418#define ADC_OVR_EVENT ((uint32_t)ADC_FLAG_OVR)
426#define ADC_ANALOGWATCHDOG_SINGLE_REG ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN))
427#define ADC_ANALOGWATCHDOG_SINGLE_INJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN))
428#define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN | ADC_CR1_JAWDEN))
429#define ADC_ANALOGWATCHDOG_ALL_REG ((uint32_t)ADC_CR1_AWDEN)
430#define ADC_ANALOGWATCHDOG_ALL_INJEC ((uint32_t)ADC_CR1_JAWDEN)
431#define ADC_ANALOGWATCHDOG_ALL_REGINJEC ((uint32_t)(ADC_CR1_AWDEN | ADC_CR1_JAWDEN))
432#define ADC_ANALOGWATCHDOG_NONE 0x00000000U
440#define ADC_IT_EOC ((uint32_t)ADC_CR1_EOCIE)
441#define ADC_IT_AWD ((uint32_t)ADC_CR1_AWDIE)
442#define ADC_IT_JEOC ((uint32_t)ADC_CR1_JEOCIE)
443#define ADC_IT_OVR ((uint32_t)ADC_CR1_OVRIE)
451#define ADC_FLAG_AWD ((uint32_t)ADC_SR_AWD)
452#define ADC_FLAG_EOC ((uint32_t)ADC_SR_EOC)
453#define ADC_FLAG_JEOC ((uint32_t)ADC_SR_JEOC)
454#define ADC_FLAG_JSTRT ((uint32_t)ADC_SR_JSTRT)
455#define ADC_FLAG_STRT ((uint32_t)ADC_SR_STRT)
456#define ADC_FLAG_OVR ((uint32_t)ADC_SR_OVR)
464#define ADC_ALL_CHANNELS 0x00000001U
465#define ADC_REGULAR_CHANNELS 0x00000002U
466#define ADC_INJECTED_CHANNELS 0x00000003U
475/* Exported macro ------------------------------------------------------------*/
484#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
485#define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) \
486 do{ \
487 (__HANDLE__)->State = HAL_ADC_STATE_RESET; \
488 (__HANDLE__)->MspInitCallback = NULL; \
489 (__HANDLE__)->MspDeInitCallback = NULL; \
490 } while(0)
491#else
492#define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) \
493 ((__HANDLE__)->State = HAL_ADC_STATE_RESET)
494#endif
495
501#define __HAL_ADC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 |= ADC_CR2_ADON)
502
508#define __HAL_ADC_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 &= ~ADC_CR2_ADON)
509
516#define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) |= (__INTERRUPT__))
517
524#define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) &= ~(__INTERRUPT__))
525
531#define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__))
532
539#define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = ~(__FLAG__))
540
547#define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
548
553/* Include ADC HAL Extension module */
554#include "stm32f4xx_hal_adc_ex.h"
555
556/* Exported functions --------------------------------------------------------*/
564/* Initialization/de-initialization functions ***********************************/
569
570#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
571/* Callbacks Register/UnRegister functions ***********************************/
572HAL_StatusTypeDef HAL_ADC_RegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID, pADC_CallbackTypeDef pCallback);
573HAL_StatusTypeDef HAL_ADC_UnRegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID);
574#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
582/* I/O operation functions ******************************************************/
586
587HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef *hadc, uint32_t EventType, uint32_t Timeout);
588
591
593
594HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length);
596
597uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc);
598
610/* Peripheral Control functions *************************************************/
620/* Peripheral State functions ***************************************************/
621uint32_t HAL_ADC_GetState(ADC_HandleTypeDef *hadc);
622uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc);
630/* Private types -------------------------------------------------------------*/
631/* Private variables ---------------------------------------------------------*/
632/* Private constants ---------------------------------------------------------*/
636/* Delay for ADC stabilization time. */
637/* Maximum delay is 1us (refer to device datasheet, parameter tSTAB). */
638/* Unit: us */
639#define ADC_STAB_DELAY_US 3U
640/* Delay for temperature sensor stabilization time. */
641/* Maximum delay is 10us (refer to device datasheet, parameter tSTART). */
642/* Unit: us */
643#define ADC_TEMPSENSOR_DELAY_US 10U
648/* Private macro ------------------------------------------------------------*/
649
653/* Macro reserved for internal HAL driver usage, not intended to be used in
654 code of final user */
655
661#define ADC_IS_ENABLE(__HANDLE__) \
662 ((( ((__HANDLE__)->Instance->SR & ADC_SR_ADONS) == ADC_SR_ADONS ) \
663 ) ? SET : RESET)
664
671#define ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \
672 (((__HANDLE__)->Instance->CR2 & ADC_CR2_EXTEN) == RESET)
673
680#define ADC_IS_SOFTWARE_START_INJECTED(__HANDLE__) \
681 (((__HANDLE__)->Instance->CR2 & ADC_CR2_JEXTEN) == RESET)
682
690#define ADC_STATE_CLR_SET MODIFY_REG
691
697#define ADC_CLEAR_ERRORCODE(__HANDLE__) \
698 ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)
699
700
701#define IS_ADC_CLOCKPRESCALER(ADC_CLOCK) (((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV2) || \
702 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV4) || \
703 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV6) || \
704 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV8))
705#define IS_ADC_SAMPLING_DELAY(DELAY) (((DELAY) == ADC_TWOSAMPLINGDELAY_5CYCLES) || \
706 ((DELAY) == ADC_TWOSAMPLINGDELAY_6CYCLES) || \
707 ((DELAY) == ADC_TWOSAMPLINGDELAY_7CYCLES) || \
708 ((DELAY) == ADC_TWOSAMPLINGDELAY_8CYCLES) || \
709 ((DELAY) == ADC_TWOSAMPLINGDELAY_9CYCLES) || \
710 ((DELAY) == ADC_TWOSAMPLINGDELAY_10CYCLES) || \
711 ((DELAY) == ADC_TWOSAMPLINGDELAY_11CYCLES) || \
712 ((DELAY) == ADC_TWOSAMPLINGDELAY_12CYCLES) || \
713 ((DELAY) == ADC_TWOSAMPLINGDELAY_13CYCLES) || \
714 ((DELAY) == ADC_TWOSAMPLINGDELAY_14CYCLES) || \
715 ((DELAY) == ADC_TWOSAMPLINGDELAY_15CYCLES) || \
716 ((DELAY) == ADC_TWOSAMPLINGDELAY_16CYCLES) || \
717 ((DELAY) == ADC_TWOSAMPLINGDELAY_17CYCLES) || \
718 ((DELAY) == ADC_TWOSAMPLINGDELAY_18CYCLES) || \
719 ((DELAY) == ADC_TWOSAMPLINGDELAY_19CYCLES) || \
720 ((DELAY) == ADC_TWOSAMPLINGDELAY_20CYCLES))
721#define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_RESOLUTION_12B) || \
722 ((RESOLUTION) == ADC_RESOLUTION_10B) || \
723 ((RESOLUTION) == ADC_RESOLUTION_8B) || \
724 ((RESOLUTION) == ADC_RESOLUTION_6B))
725#define IS_ADC_EXT_TRIG_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \
726 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISING) || \
727 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \
728 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING))
729#define IS_ADC_EXT_TRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1) || \
730 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2) || \
731 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3) || \
732 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
733 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC3) || \
734 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC4) || \
735 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
736 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC1) || \
737 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
738 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC4) || \
739 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC1) || \
740 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC2) || \
741 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC3) || \
742 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_CC1) || \
743 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_TRGO) || \
744 ((REGTRIG) == ADC_EXTERNALTRIGCONV_Ext_IT11)|| \
745 ((REGTRIG) == ADC_SOFTWARE_START))
746#define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DATAALIGN_RIGHT) || \
747 ((ALIGN) == ADC_DATAALIGN_LEFT))
748#define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SAMPLETIME_3CYCLES) || \
749 ((TIME) == ADC_SAMPLETIME_15CYCLES) || \
750 ((TIME) == ADC_SAMPLETIME_28CYCLES) || \
751 ((TIME) == ADC_SAMPLETIME_56CYCLES) || \
752 ((TIME) == ADC_SAMPLETIME_84CYCLES) || \
753 ((TIME) == ADC_SAMPLETIME_112CYCLES) || \
754 ((TIME) == ADC_SAMPLETIME_144CYCLES) || \
755 ((TIME) == ADC_SAMPLETIME_480CYCLES))
756#define IS_ADC_EOCSelection(EOCSelection) (((EOCSelection) == ADC_EOC_SINGLE_CONV) || \
757 ((EOCSelection) == ADC_EOC_SEQ_CONV) || \
758 ((EOCSelection) == ADC_EOC_SINGLE_SEQ_CONV))
759#define IS_ADC_EVENT_TYPE(EVENT) (((EVENT) == ADC_AWD_EVENT) || \
760 ((EVENT) == ADC_OVR_EVENT))
761#define IS_ADC_ANALOG_WATCHDOG(WATCHDOG) (((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \
762 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_INJEC) || \
763 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC) || \
764 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REG) || \
765 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_INJEC) || \
766 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REGINJEC) || \
767 ((WATCHDOG) == ADC_ANALOGWATCHDOG_NONE))
768#define IS_ADC_CHANNELS_TYPE(CHANNEL_TYPE) (((CHANNEL_TYPE) == ADC_ALL_CHANNELS) || \
769 ((CHANNEL_TYPE) == ADC_REGULAR_CHANNELS) || \
770 ((CHANNEL_TYPE) == ADC_INJECTED_CHANNELS))
771#define IS_ADC_THRESHOLD(THRESHOLD) ((THRESHOLD) <= 0xFFFU)
772
773#define IS_ADC_REGULAR_LENGTH(LENGTH) (((LENGTH) >= 1U) && ((LENGTH) <= 16U))
774#define IS_ADC_REGULAR_RANK(RANK) (((RANK) >= 1U) && ((RANK) <= (16U)))
775#define IS_ADC_REGULAR_DISC_NUMBER(NUMBER) (((NUMBER) >= 1U) && ((NUMBER) <= 8U))
776#define IS_ADC_RANGE(RESOLUTION, ADC_VALUE) \
777 ((((RESOLUTION) == ADC_RESOLUTION_12B) && ((ADC_VALUE) <= 0x0FFFU)) || \
778 (((RESOLUTION) == ADC_RESOLUTION_10B) && ((ADC_VALUE) <= 0x03FFU)) || \
779 (((RESOLUTION) == ADC_RESOLUTION_8B) && ((ADC_VALUE) <= 0x00FFU)) || \
780 (((RESOLUTION) == ADC_RESOLUTION_6B) && ((ADC_VALUE) <= 0x003FU)))
781
787#define ADC_SQR1(_NbrOfConversion_) (((_NbrOfConversion_) - (uint8_t)1U) << 20U)
788
795#define ADC_SMPR1(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3U * (((uint32_t)((uint16_t)(_CHANNELNB_))) - 10U)))
796
803#define ADC_SMPR2(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3U * ((uint32_t)((uint16_t)(_CHANNELNB_)))))
804
811#define ADC_SQR3_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5U * ((_RANKNB_) - 1U)))
812
819#define ADC_SQR2_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5U * ((_RANKNB_) - 7U)))
820
827#define ADC_SQR1_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5U * ((_RANKNB_) - 13U)))
828
834#define ADC_CR2_CONTINUOUS(_CONTINUOUS_MODE_) ((_CONTINUOUS_MODE_) << 1U)
835
841#define ADC_CR1_DISCONTINUOUS(_NBR_DISCONTINUOUSCONV_) (((_NBR_DISCONTINUOUSCONV_) - 1U) << ADC_CR1_DISCNUM_Pos)
842
848#define ADC_CR1_SCANCONV(_SCANCONV_MODE_) ((_SCANCONV_MODE_) << 8U)
849
855#define ADC_CR2_EOCSelection(_EOCSelection_MODE_) ((_EOCSelection_MODE_) << 10U)
856
862#define ADC_CR2_DMAContReq(_DMAContReq_MODE_) ((_DMAContReq_MODE_) << 9U)
863
869#define ADC_GET_RESOLUTION(__HANDLE__) (((__HANDLE__)->Instance->CR1) & ADC_CR1_RES)
870
875/* Private functions ---------------------------------------------------------*/
892#ifdef __cplusplus
893}
894#endif
895
896#endif /*__STM32F4xx_ADC_H */
897
898
HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc)
Deinitializes the ADCx peripheral registers to their default reset values.
HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc)
Initializes the ADCx peripheral according to the specified parameters in the ADC_InitStruct and initi...
void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
Initializes the ADC MSP.
void HAL_ADC_MspDeInit(ADC_HandleTypeDef *hadc)
DeInitializes the ADC MSP.
HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef *hadc, uint32_t EventType, uint32_t Timeout)
Poll for conversion event.
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc)
Enables ADC and starts conversion of the regular channels.
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef *hadc)
Disables ADC and stop conversion of regular channels.
void HAL_ADC_IRQHandler(ADC_HandleTypeDef *hadc)
Handles ADC interrupt request.
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc)
Gets the converted value from data register of regular channel.
void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc)
Analog watchdog callback in non blocking mode.
HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length)
Enables ADC DMA request after last transfer (Single-ADC mode) and enables ADC peripheral.
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
Regular conversion complete callback in non blocking mode.
void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef *hadc)
Regular conversion half DMA transfer callback in non blocking mode.
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout)
Poll for regular conversion complete.
void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc)
Error ADC callback.
HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef *hadc)
Disables ADC DMA (Single-ADC mode) and disables ADC peripheral.
HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef *hadc)
Disables the interrupt and stop ADC conversion of regular channels.
HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef *hadc)
Enables the interrupt and starts ADC conversion of regular channels.
HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConfTypeDef *sConfig)
Configures for the selected ADC regular channel its corresponding rank in the sequencer and its sampl...
HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef *hadc, ADC_AnalogWDGConfTypeDef *AnalogWDGConfig)
Configures the analog watchdog.
uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc)
Return the ADC error code.
uint32_t HAL_ADC_GetState(ADC_HandleTypeDef *hadc)
return the ADC state
Header file of ADC HAL module.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition
HAL_LockTypeDef
HAL Lock structures definition
ADC Configuration multi-mode structure definition.
Structure definition of ADC channel for regular group.
ADC handle Structure definition.
DMA_HandleTypeDef * DMA_Handle
__IO uint32_t NbrOfCurrentConversionRank
ADC_InitTypeDef Init
__IO uint32_t ErrorCode
HAL_LockTypeDef Lock
Structure definition of ADC and regular group initialization.
FunctionalState ContinuousConvMode
FunctionalState DMAContinuousRequests
uint32_t NbrOfDiscConversion
uint32_t ExternalTrigConvEdge
FunctionalState DiscontinuousConvMode
DMA handle Structure definition.