1 /** 2 ****************************************************************************** 3 * @file stm32wbaxx_hal_adc_ex.h 4 * @author MCD Application Team 5 * @brief Header file of ADC HAL extended module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2022 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef STM32WBAxx_HAL_ADC_EX_H 21 #define STM32WBAxx_HAL_ADC_EX_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32wbaxx_hal_def.h" 29 30 /** @addtogroup STM32WBAxx_HAL_Driver 31 * @{ 32 */ 33 34 /** @addtogroup ADCEx 35 * @{ 36 */ 37 38 /* Exported types ------------------------------------------------------------*/ 39 /** @defgroup ADCEx_Exported_Types ADC Extended Exported Types 40 * @{ 41 */ 42 43 /** 44 * @} 45 */ 46 47 /* Exported constants --------------------------------------------------------*/ 48 49 /** @defgroup ADCEx_Exported_Constants ADC Extended Exported Constants 50 * @{ 51 */ 52 53 /** @defgroup ADC_HAL_EC_GROUPS ADC instance - Groups 54 * @{ 55 */ 56 #define ADC_REGULAR_GROUP (LL_ADC_GROUP_REGULAR) /*!< ADC group regular (available on 57 all STM32 devices) */ 58 /** 59 * @} 60 */ 61 62 /** 63 * @} 64 */ 65 66 /* Exported macros -----------------------------------------------------------*/ 67 68 /* Private macros ------------------------------------------------------------*/ 69 70 /** @defgroup ADCEx_Private_Macro_internal_HAL_driver ADC Extended Private Macros 71 * @{ 72 */ 73 /* Macro reserved for internal HAL driver usage, not intended to be used in */ 74 /* code of final user. */ 75 76 /** 77 * @brief Check whether or not ADC is independent. 78 * @param __HANDLE__ ADC handle. 79 * @note When multimode feature is not available, the macro always returns SET. 80 * @retval SET (ADC is independent) or RESET (ADC is not). 81 */ 82 #define ADC_IS_INDEPENDENT(__HANDLE__) (SET) 83 84 85 /** 86 * @brief Calibration factor size verification (7 bits maximum). 87 * @param __CALIBRATION_FACTOR__ Calibration factor value. 88 * @retval SET (__CALIBRATION_FACTOR__ is within the authorized size) or RESET (__CALIBRATION_FACTOR__ is too large) 89 */ 90 #define IS_ADC_CALFACT(__CALIBRATION_FACTOR__) ((__CALIBRATION_FACTOR__) <= (0x7FU)) 91 92 /** 93 * @brief Verify the ADC oversampling ratio. 94 * @param __RATIO__ programmed ADC oversampling ratio. 95 * @retval SET (__RATIO__ is a valid value) or RESET (__RATIO__ is invalid) 96 */ 97 #define IS_ADC_OVERSAMPLING_RATIO(__RATIO__) (((__RATIO__) == ADC_OVERSAMPLING_RATIO_2 ) || \ 98 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_4 ) || \ 99 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_8 ) || \ 100 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_16 ) || \ 101 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_32 ) || \ 102 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_64 ) || \ 103 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_128 ) || \ 104 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_256 )) 105 106 /** 107 * @brief Verify the ADC oversampling shift. 108 * @param __SHIFT__ programmed ADC oversampling shift. 109 * @retval SET (__SHIFT__ is a valid value) or RESET (__SHIFT__ is invalid) 110 */ 111 #define IS_ADC_RIGHT_BIT_SHIFT(__SHIFT__) (((__SHIFT__) == ADC_RIGHTBITSHIFT_NONE) || \ 112 ((__SHIFT__) == ADC_RIGHTBITSHIFT_1 ) || \ 113 ((__SHIFT__) == ADC_RIGHTBITSHIFT_2 ) || \ 114 ((__SHIFT__) == ADC_RIGHTBITSHIFT_3 ) || \ 115 ((__SHIFT__) == ADC_RIGHTBITSHIFT_4 ) || \ 116 ((__SHIFT__) == ADC_RIGHTBITSHIFT_5 ) || \ 117 ((__SHIFT__) == ADC_RIGHTBITSHIFT_6 ) || \ 118 ((__SHIFT__) == ADC_RIGHTBITSHIFT_7 ) || \ 119 ((__SHIFT__) == ADC_RIGHTBITSHIFT_8 )) 120 121 /** 122 * @brief Verify the ADC oversampling triggered mode. 123 * @param __MODE__ programmed ADC oversampling triggered mode. 124 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid) 125 */ 126 #define IS_ADC_TRIGGERED_OVERSAMPLING_MODE(__MODE__) (((__MODE__) == ADC_TRIGGEREDMODE_SINGLE_TRIGGER) || \ 127 ((__MODE__) == ADC_TRIGGEREDMODE_MULTI_TRIGGER) ) 128 129 130 /** 131 * @} 132 */ 133 134 135 /* Exported functions --------------------------------------------------------*/ 136 /** @addtogroup ADCEx_Exported_Functions 137 * @{ 138 */ 139 140 /** @addtogroup ADCEx_Exported_Functions_Group1 141 * @{ 142 */ 143 /* IO operation functions *****************************************************/ 144 145 /* ADC calibration */ 146 HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef *hadc); 147 uint32_t HAL_ADCEx_Calibration_GetValue(const ADC_HandleTypeDef *hadc); 148 HAL_StatusTypeDef HAL_ADCEx_Calibration_SetValue(ADC_HandleTypeDef *hadc, uint32_t CalibrationFactor); 149 150 /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption) */ 151 void HAL_ADCEx_LevelOutOfWindow2Callback(ADC_HandleTypeDef *hadc); 152 void HAL_ADCEx_LevelOutOfWindow3Callback(ADC_HandleTypeDef *hadc); 153 void HAL_ADCEx_EndOfSamplingCallback(ADC_HandleTypeDef *hadc); 154 void HAL_ADCEx_LDOReadyCallback(ADC_HandleTypeDef *hadc); 155 156 /** 157 * @} 158 */ 159 160 /** @addtogroup ADCEx_Exported_Functions_Group2 161 * @{ 162 */ 163 /* Peripheral Control functions ***********************************************/ 164 HAL_StatusTypeDef HAL_ADCEx_DisableVoltageRegulator(ADC_HandleTypeDef *hadc); 165 166 /** 167 * @} 168 */ 169 170 /** 171 * @} 172 */ 173 174 /** 175 * @} 176 */ 177 178 /** 179 * @} 180 */ 181 182 #ifdef __cplusplus 183 } 184 #endif 185 186 #endif /* STM32WBAxx_HAL_ADC_EX_H */ 187