The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
Anna Bridge
Date:
Fri Jun 22 15:38:59 2018 +0100
Revision:
169:a7c7b631e539
Parent:
163:e59c8e839560
mbed library. Release version 162

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 156:ff21514d8981 1 /**
AnnaBridge 156:ff21514d8981 2 ******************************************************************************
AnnaBridge 156:ff21514d8981 3 * @file stm32f4xx_hal_adc.h
AnnaBridge 156:ff21514d8981 4 * @author MCD Application Team
AnnaBridge 156:ff21514d8981 5 * @brief Header file containing functions prototypes of ADC HAL library.
AnnaBridge 156:ff21514d8981 6 ******************************************************************************
AnnaBridge 156:ff21514d8981 7 * @attention
AnnaBridge 156:ff21514d8981 8 *
AnnaBridge 156:ff21514d8981 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
AnnaBridge 156:ff21514d8981 10 *
AnnaBridge 156:ff21514d8981 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 156:ff21514d8981 12 * are permitted provided that the following conditions are met:
AnnaBridge 156:ff21514d8981 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 156:ff21514d8981 14 * this list of conditions and the following disclaimer.
AnnaBridge 156:ff21514d8981 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 156:ff21514d8981 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 156:ff21514d8981 17 * and/or other materials provided with the distribution.
AnnaBridge 156:ff21514d8981 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 156:ff21514d8981 19 * may be used to endorse or promote products derived from this software
AnnaBridge 156:ff21514d8981 20 * without specific prior written permission.
AnnaBridge 156:ff21514d8981 21 *
AnnaBridge 156:ff21514d8981 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 156:ff21514d8981 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 156:ff21514d8981 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 156:ff21514d8981 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 156:ff21514d8981 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 156:ff21514d8981 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 156:ff21514d8981 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 156:ff21514d8981 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 156:ff21514d8981 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 156:ff21514d8981 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 156:ff21514d8981 32 *
AnnaBridge 156:ff21514d8981 33 ******************************************************************************
AnnaBridge 156:ff21514d8981 34 */
AnnaBridge 156:ff21514d8981 35
AnnaBridge 156:ff21514d8981 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 156:ff21514d8981 37 #ifndef __STM32F4xx_ADC_H
AnnaBridge 156:ff21514d8981 38 #define __STM32F4xx_ADC_H
AnnaBridge 156:ff21514d8981 39
AnnaBridge 156:ff21514d8981 40 #ifdef __cplusplus
AnnaBridge 156:ff21514d8981 41 extern "C" {
AnnaBridge 156:ff21514d8981 42 #endif
AnnaBridge 156:ff21514d8981 43
AnnaBridge 156:ff21514d8981 44 /* Includes ------------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 45 #include "stm32f4xx_hal_def.h"
AnnaBridge 156:ff21514d8981 46
Anna Bridge 169:a7c7b631e539 47 /* Include low level driver */
Anna Bridge 169:a7c7b631e539 48 #include "stm32f4xx_ll_adc.h"
Anna Bridge 169:a7c7b631e539 49
AnnaBridge 156:ff21514d8981 50 /** @addtogroup STM32F4xx_HAL_Driver
AnnaBridge 156:ff21514d8981 51 * @{
AnnaBridge 156:ff21514d8981 52 */
AnnaBridge 156:ff21514d8981 53
AnnaBridge 156:ff21514d8981 54 /** @addtogroup ADC
AnnaBridge 156:ff21514d8981 55 * @{
AnnaBridge 156:ff21514d8981 56 */
AnnaBridge 156:ff21514d8981 57
AnnaBridge 156:ff21514d8981 58 /* Exported types ------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 59 /** @defgroup ADC_Exported_Types ADC Exported Types
AnnaBridge 156:ff21514d8981 60 * @{
AnnaBridge 156:ff21514d8981 61 */
AnnaBridge 156:ff21514d8981 62
AnnaBridge 156:ff21514d8981 63 /**
AnnaBridge 156:ff21514d8981 64 * @brief Structure definition of ADC and regular group initialization
AnnaBridge 156:ff21514d8981 65 * @note Parameters of this structure are shared within 2 scopes:
AnnaBridge 156:ff21514d8981 66 * - Scope entire ADC (affects regular and injected groups): ClockPrescaler, Resolution, ScanConvMode, DataAlign, ScanConvMode, EOCSelection, LowPowerAutoWait, LowPowerAutoPowerOff, ChannelsBank.
AnnaBridge 156:ff21514d8981 67 * - Scope regular group: ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion, ExternalTrigConvEdge, ExternalTrigConv.
AnnaBridge 156:ff21514d8981 68 * @note The setting of these parameters with function HAL_ADC_Init() is conditioned to ADC state.
AnnaBridge 156:ff21514d8981 69 * ADC state can be either:
AnnaBridge 156:ff21514d8981 70 * - For all parameters: ADC disabled
AnnaBridge 156:ff21514d8981 71 * - For all parameters except 'Resolution', 'ScanConvMode', 'DiscontinuousConvMode', 'NbrOfDiscConversion' : ADC enabled without conversion on going on regular group.
AnnaBridge 156:ff21514d8981 72 * - For parameters 'ExternalTrigConv' and 'ExternalTrigConvEdge': ADC enabled, even with conversion on going.
AnnaBridge 156:ff21514d8981 73 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
AnnaBridge 156:ff21514d8981 74 * without error reporting (as it can be the expected behaviour in case of intended action to update another parameter (which fulfills the ADC state condition) on the fly).
AnnaBridge 156:ff21514d8981 75 */
AnnaBridge 156:ff21514d8981 76 typedef struct
AnnaBridge 156:ff21514d8981 77 {
AnnaBridge 156:ff21514d8981 78 uint32_t ClockPrescaler; /*!< Select ADC clock prescaler. The clock is common for
AnnaBridge 156:ff21514d8981 79 all the ADCs.
AnnaBridge 156:ff21514d8981 80 This parameter can be a value of @ref ADC_ClockPrescaler */
AnnaBridge 156:ff21514d8981 81 uint32_t Resolution; /*!< Configures the ADC resolution.
AnnaBridge 156:ff21514d8981 82 This parameter can be a value of @ref ADC_Resolution */
AnnaBridge 156:ff21514d8981 83 uint32_t DataAlign; /*!< Specifies ADC data alignment to right (MSB on register bit 11 and LSB on register bit 0) (default setting)
AnnaBridge 156:ff21514d8981 84 or to left (if regular group: MSB on register bit 15 and LSB on register bit 4, if injected group (MSB kept as signed value due to potential negative value after offset application): MSB on register bit 14 and LSB on register bit 3).
AnnaBridge 156:ff21514d8981 85 This parameter can be a value of @ref ADC_Data_align */
AnnaBridge 156:ff21514d8981 86 uint32_t ScanConvMode; /*!< Configures the sequencer of regular and injected groups.
AnnaBridge 156:ff21514d8981 87 This parameter can be associated to parameter 'DiscontinuousConvMode' to have main sequence subdivided in successive parts.
AnnaBridge 156:ff21514d8981 88 If disabled: Conversion is performed in single mode (one channel converted, the one defined in rank 1).
AnnaBridge 156:ff21514d8981 89 Parameters 'NbrOfConversion' and 'InjectedNbrOfConversion' are discarded (equivalent to set to 1).
AnnaBridge 156:ff21514d8981 90 If enabled: Conversions are performed in sequence mode (multiple ranks defined by 'NbrOfConversion'/'InjectedNbrOfConversion' and each channel rank).
AnnaBridge 156:ff21514d8981 91 Scan direction is upward: from rank1 to rank 'n'.
AnnaBridge 156:ff21514d8981 92 This parameter can be set to ENABLE or DISABLE */
AnnaBridge 156:ff21514d8981 93 uint32_t EOCSelection; /*!< Specifies what EOC (End Of Conversion) flag is used for conversion by polling and interruption: end of conversion of each rank or complete sequence.
AnnaBridge 156:ff21514d8981 94 This parameter can be a value of @ref ADC_EOCSelection.
AnnaBridge 156:ff21514d8981 95 Note: For injected group, end of conversion (flag&IT) is raised only at the end of the sequence.
AnnaBridge 156:ff21514d8981 96 Therefore, if end of conversion is set to end of each conversion, injected group should not be used with interruption (HAL_ADCEx_InjectedStart_IT)
AnnaBridge 156:ff21514d8981 97 or polling (HAL_ADCEx_InjectedStart and HAL_ADCEx_InjectedPollForConversion). By the way, polling is still possible since driver will use an estimated timing for end of injected conversion.
AnnaBridge 156:ff21514d8981 98 Note: If overrun feature is intended to be used, use ADC in mode 'interruption' (function HAL_ADC_Start_IT() ) with parameter EOCSelection set to end of each conversion or in mode 'transfer by DMA' (function HAL_ADC_Start_DMA()).
AnnaBridge 156:ff21514d8981 99 If overrun feature is intended to be bypassed, use ADC in mode 'polling' or 'interruption' with parameter EOCSelection must be set to end of sequence */
AnnaBridge 156:ff21514d8981 100 uint32_t ContinuousConvMode; /*!< Specifies whether the conversion is performed in single mode (one conversion) or continuous mode for regular group,
AnnaBridge 156:ff21514d8981 101 after the selected trigger occurred (software start or external trigger).
AnnaBridge 156:ff21514d8981 102 This parameter can be set to ENABLE or DISABLE. */
AnnaBridge 156:ff21514d8981 103 uint32_t NbrOfConversion; /*!< Specifies the number of ranks that will be converted within the regular group sequencer.
AnnaBridge 156:ff21514d8981 104 To use regular group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
AnnaBridge 156:ff21514d8981 105 This parameter must be a number between Min_Data = 1 and Max_Data = 16. */
AnnaBridge 156:ff21514d8981 106 uint32_t DiscontinuousConvMode; /*!< Specifies whether the conversions sequence of regular group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts).
AnnaBridge 156:ff21514d8981 107 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
AnnaBridge 156:ff21514d8981 108 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
AnnaBridge 156:ff21514d8981 109 This parameter can be set to ENABLE or DISABLE. */
AnnaBridge 156:ff21514d8981 110 uint32_t NbrOfDiscConversion; /*!< Specifies the number of discontinuous conversions in which the main sequence of regular group (parameter NbrOfConversion) will be subdivided.
AnnaBridge 156:ff21514d8981 111 If parameter 'DiscontinuousConvMode' is disabled, this parameter is discarded.
AnnaBridge 156:ff21514d8981 112 This parameter must be a number between Min_Data = 1 and Max_Data = 8. */
AnnaBridge 156:ff21514d8981 113 uint32_t ExternalTrigConv; /*!< Selects the external event used to trigger the conversion start of regular group.
AnnaBridge 156:ff21514d8981 114 If set to ADC_SOFTWARE_START, external triggers are disabled.
AnnaBridge 156:ff21514d8981 115 If set to external trigger source, triggering is on event rising edge by default.
AnnaBridge 156:ff21514d8981 116 This parameter can be a value of @ref ADC_External_trigger_Source_Regular */
AnnaBridge 156:ff21514d8981 117 uint32_t ExternalTrigConvEdge; /*!< Selects the external trigger edge of regular group.
AnnaBridge 156:ff21514d8981 118 If trigger is set to ADC_SOFTWARE_START, this parameter is discarded.
AnnaBridge 156:ff21514d8981 119 This parameter can be a value of @ref ADC_External_trigger_edge_Regular */
AnnaBridge 156:ff21514d8981 120 uint32_t DMAContinuousRequests; /*!< Specifies whether the DMA requests are performed in one shot mode (DMA transfer stop when number of conversions is reached)
AnnaBridge 156:ff21514d8981 121 or in Continuous mode (DMA transfer unlimited, whatever number of conversions).
AnnaBridge 156:ff21514d8981 122 Note: In continuous mode, DMA must be configured in circular mode. Otherwise an overrun will be triggered when DMA buffer maximum pointer is reached.
AnnaBridge 156:ff21514d8981 123 Note: This parameter must be modified when no conversion is on going on both regular and injected groups (ADC disabled, or ADC enabled without continuous mode or external trigger that could launch a conversion).
AnnaBridge 156:ff21514d8981 124 This parameter can be set to ENABLE or DISABLE. */
AnnaBridge 156:ff21514d8981 125 }ADC_InitTypeDef;
AnnaBridge 156:ff21514d8981 126
AnnaBridge 156:ff21514d8981 127
AnnaBridge 156:ff21514d8981 128
AnnaBridge 156:ff21514d8981 129 /**
AnnaBridge 156:ff21514d8981 130 * @brief Structure definition of ADC channel for regular group
AnnaBridge 156:ff21514d8981 131 * @note The setting of these parameters with function HAL_ADC_ConfigChannel() is conditioned to ADC state.
AnnaBridge 156:ff21514d8981 132 * ADC can be either disabled or enabled without conversion on going on regular group.
AnnaBridge 156:ff21514d8981 133 */
AnnaBridge 156:ff21514d8981 134 typedef struct
AnnaBridge 156:ff21514d8981 135 {
AnnaBridge 156:ff21514d8981 136 uint32_t Channel; /*!< Specifies the channel to configure into ADC regular group.
AnnaBridge 156:ff21514d8981 137 This parameter can be a value of @ref ADC_channels */
AnnaBridge 156:ff21514d8981 138 uint32_t Rank; /*!< Specifies the rank in the regular group sequencer.
AnnaBridge 156:ff21514d8981 139 This parameter must be a number between Min_Data = 1 and Max_Data = 16 */
AnnaBridge 156:ff21514d8981 140 uint32_t SamplingTime; /*!< Sampling time value to be set for the selected channel.
AnnaBridge 156:ff21514d8981 141 Unit: ADC clock cycles
AnnaBridge 156:ff21514d8981 142 Conversion time is the addition of sampling time and processing time (12 ADC clock cycles at ADC resolution 12 bits, 11 cycles at 10 bits, 9 cycles at 8 bits, 7 cycles at 6 bits).
AnnaBridge 156:ff21514d8981 143 This parameter can be a value of @ref ADC_sampling_times
AnnaBridge 156:ff21514d8981 144 Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups.
AnnaBridge 156:ff21514d8981 145 If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting.
AnnaBridge 156:ff21514d8981 146 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
AnnaBridge 156:ff21514d8981 147 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
AnnaBridge 156:ff21514d8981 148 Refer to device datasheet for timings values, parameters TS_vrefint, TS_temp (values rough order: 4us min). */
AnnaBridge 156:ff21514d8981 149 uint32_t Offset; /*!< Reserved for future use, can be set to 0 */
AnnaBridge 156:ff21514d8981 150 }ADC_ChannelConfTypeDef;
AnnaBridge 156:ff21514d8981 151
AnnaBridge 156:ff21514d8981 152 /**
AnnaBridge 156:ff21514d8981 153 * @brief ADC Configuration multi-mode structure definition
AnnaBridge 156:ff21514d8981 154 */
AnnaBridge 156:ff21514d8981 155 typedef struct
AnnaBridge 156:ff21514d8981 156 {
AnnaBridge 156:ff21514d8981 157 uint32_t WatchdogMode; /*!< Configures the ADC analog watchdog mode.
AnnaBridge 156:ff21514d8981 158 This parameter can be a value of @ref ADC_analog_watchdog_selection */
AnnaBridge 156:ff21514d8981 159 uint32_t HighThreshold; /*!< Configures the ADC analog watchdog High threshold value.
AnnaBridge 156:ff21514d8981 160 This parameter must be a 12-bit value. */
AnnaBridge 156:ff21514d8981 161 uint32_t LowThreshold; /*!< Configures the ADC analog watchdog High threshold value.
AnnaBridge 156:ff21514d8981 162 This parameter must be a 12-bit value. */
AnnaBridge 156:ff21514d8981 163 uint32_t Channel; /*!< Configures ADC channel for the analog watchdog.
AnnaBridge 156:ff21514d8981 164 This parameter has an effect only if watchdog mode is configured on single channel
AnnaBridge 156:ff21514d8981 165 This parameter can be a value of @ref ADC_channels */
AnnaBridge 156:ff21514d8981 166 uint32_t ITMode; /*!< Specifies whether the analog watchdog is configured
AnnaBridge 156:ff21514d8981 167 is interrupt mode or in polling mode.
AnnaBridge 156:ff21514d8981 168 This parameter can be set to ENABLE or DISABLE */
AnnaBridge 156:ff21514d8981 169 uint32_t WatchdogNumber; /*!< Reserved for future use, can be set to 0 */
AnnaBridge 156:ff21514d8981 170 }ADC_AnalogWDGConfTypeDef;
AnnaBridge 156:ff21514d8981 171
AnnaBridge 156:ff21514d8981 172 /**
AnnaBridge 156:ff21514d8981 173 * @brief HAL ADC state machine: ADC states definition (bitfields)
AnnaBridge 156:ff21514d8981 174 */
AnnaBridge 156:ff21514d8981 175 /* States of ADC global scope */
AnnaBridge 156:ff21514d8981 176 #define HAL_ADC_STATE_RESET 0x00000000U /*!< ADC not yet initialized or disabled */
AnnaBridge 156:ff21514d8981 177 #define HAL_ADC_STATE_READY 0x00000001U /*!< ADC peripheral ready for use */
AnnaBridge 156:ff21514d8981 178 #define HAL_ADC_STATE_BUSY_INTERNAL 0x00000002U /*!< ADC is busy to internal process (initialization, calibration) */
AnnaBridge 156:ff21514d8981 179 #define HAL_ADC_STATE_TIMEOUT 0x00000004U /*!< TimeOut occurrence */
AnnaBridge 156:ff21514d8981 180
AnnaBridge 156:ff21514d8981 181 /* States of ADC errors */
AnnaBridge 156:ff21514d8981 182 #define HAL_ADC_STATE_ERROR_INTERNAL 0x00000010U /*!< Internal error occurrence */
AnnaBridge 156:ff21514d8981 183 #define HAL_ADC_STATE_ERROR_CONFIG 0x00000020U /*!< Configuration error occurrence */
AnnaBridge 156:ff21514d8981 184 #define HAL_ADC_STATE_ERROR_DMA 0x00000040U /*!< DMA error occurrence */
AnnaBridge 156:ff21514d8981 185
AnnaBridge 156:ff21514d8981 186 /* States of ADC group regular */
AnnaBridge 156:ff21514d8981 187 #define HAL_ADC_STATE_REG_BUSY 0x00000100U /*!< A conversion on group regular is ongoing or can occur (either by continuous mode,
AnnaBridge 156:ff21514d8981 188 external trigger, low power auto power-on (if feature available), multimode ADC master control (if feature available)) */
AnnaBridge 156:ff21514d8981 189 #define HAL_ADC_STATE_REG_EOC 0x00000200U /*!< Conversion data available on group regular */
AnnaBridge 156:ff21514d8981 190 #define HAL_ADC_STATE_REG_OVR 0x00000400U /*!< Overrun occurrence */
AnnaBridge 156:ff21514d8981 191
AnnaBridge 156:ff21514d8981 192 /* States of ADC group injected */
AnnaBridge 156:ff21514d8981 193 #define HAL_ADC_STATE_INJ_BUSY 0x00001000U /*!< A conversion on group injected is ongoing or can occur (either by auto-injection mode,
AnnaBridge 156:ff21514d8981 194 external trigger, low power auto power-on (if feature available), multimode ADC master control (if feature available)) */
AnnaBridge 156:ff21514d8981 195 #define HAL_ADC_STATE_INJ_EOC 0x00002000U /*!< Conversion data available on group injected */
AnnaBridge 156:ff21514d8981 196
AnnaBridge 156:ff21514d8981 197 /* States of ADC analog watchdogs */
AnnaBridge 156:ff21514d8981 198 #define HAL_ADC_STATE_AWD1 0x00010000U /*!< Out-of-window occurrence of analog watchdog 1 */
AnnaBridge 156:ff21514d8981 199 #define HAL_ADC_STATE_AWD2 0x00020000U /*!< Not available on STM32F4 device: Out-of-window occurrence of analog watchdog 2 */
AnnaBridge 156:ff21514d8981 200 #define HAL_ADC_STATE_AWD3 0x00040000U /*!< Not available on STM32F4 device: Out-of-window occurrence of analog watchdog 3 */
AnnaBridge 156:ff21514d8981 201
AnnaBridge 156:ff21514d8981 202 /* States of ADC multi-mode */
AnnaBridge 156:ff21514d8981 203 #define HAL_ADC_STATE_MULTIMODE_SLAVE 0x00100000U /*!< Not available on STM32F4 device: ADC in multimode slave state, controlled by another ADC master ( */
AnnaBridge 156:ff21514d8981 204
AnnaBridge 156:ff21514d8981 205
AnnaBridge 156:ff21514d8981 206 /**
AnnaBridge 156:ff21514d8981 207 * @brief ADC handle Structure definition
AnnaBridge 156:ff21514d8981 208 */
AnnaBridge 156:ff21514d8981 209 typedef struct
AnnaBridge 156:ff21514d8981 210 {
AnnaBridge 156:ff21514d8981 211 ADC_TypeDef *Instance; /*!< Register base address */
AnnaBridge 156:ff21514d8981 212
AnnaBridge 156:ff21514d8981 213 ADC_InitTypeDef Init; /*!< ADC required parameters */
AnnaBridge 156:ff21514d8981 214
AnnaBridge 156:ff21514d8981 215 __IO uint32_t NbrOfCurrentConversionRank; /*!< ADC number of current conversion rank */
AnnaBridge 156:ff21514d8981 216
AnnaBridge 156:ff21514d8981 217 DMA_HandleTypeDef *DMA_Handle; /*!< Pointer DMA Handler */
AnnaBridge 156:ff21514d8981 218
AnnaBridge 156:ff21514d8981 219 HAL_LockTypeDef Lock; /*!< ADC locking object */
AnnaBridge 156:ff21514d8981 220
AnnaBridge 156:ff21514d8981 221 __IO uint32_t State; /*!< ADC communication state */
AnnaBridge 156:ff21514d8981 222
AnnaBridge 156:ff21514d8981 223 __IO uint32_t ErrorCode; /*!< ADC Error code */
AnnaBridge 156:ff21514d8981 224 }ADC_HandleTypeDef;
AnnaBridge 156:ff21514d8981 225 /**
AnnaBridge 156:ff21514d8981 226 * @}
AnnaBridge 156:ff21514d8981 227 */
AnnaBridge 156:ff21514d8981 228
AnnaBridge 156:ff21514d8981 229 /* Exported constants --------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 230 /** @defgroup ADC_Exported_Constants ADC Exported Constants
AnnaBridge 156:ff21514d8981 231 * @{
AnnaBridge 156:ff21514d8981 232 */
AnnaBridge 156:ff21514d8981 233
AnnaBridge 156:ff21514d8981 234 /** @defgroup ADC_Error_Code ADC Error Code
AnnaBridge 156:ff21514d8981 235 * @{
AnnaBridge 156:ff21514d8981 236 */
AnnaBridge 156:ff21514d8981 237 #define HAL_ADC_ERROR_NONE 0x00U /*!< No error */
AnnaBridge 156:ff21514d8981 238 #define HAL_ADC_ERROR_INTERNAL 0x01U /*!< ADC IP internal error: if problem of clocking,
AnnaBridge 156:ff21514d8981 239 enable/disable, erroneous state */
AnnaBridge 156:ff21514d8981 240 #define HAL_ADC_ERROR_OVR 0x02U /*!< Overrun error */
AnnaBridge 156:ff21514d8981 241 #define HAL_ADC_ERROR_DMA 0x04U /*!< DMA transfer error */
AnnaBridge 156:ff21514d8981 242 /**
AnnaBridge 156:ff21514d8981 243 * @}
AnnaBridge 156:ff21514d8981 244 */
AnnaBridge 156:ff21514d8981 245
AnnaBridge 156:ff21514d8981 246
AnnaBridge 156:ff21514d8981 247 /** @defgroup ADC_ClockPrescaler ADC Clock Prescaler
AnnaBridge 156:ff21514d8981 248 * @{
AnnaBridge 156:ff21514d8981 249 */
AnnaBridge 156:ff21514d8981 250 #define ADC_CLOCK_SYNC_PCLK_DIV2 0x00000000U
AnnaBridge 156:ff21514d8981 251 #define ADC_CLOCK_SYNC_PCLK_DIV4 ((uint32_t)ADC_CCR_ADCPRE_0)
AnnaBridge 156:ff21514d8981 252 #define ADC_CLOCK_SYNC_PCLK_DIV6 ((uint32_t)ADC_CCR_ADCPRE_1)
AnnaBridge 156:ff21514d8981 253 #define ADC_CLOCK_SYNC_PCLK_DIV8 ((uint32_t)ADC_CCR_ADCPRE)
AnnaBridge 156:ff21514d8981 254 /**
AnnaBridge 156:ff21514d8981 255 * @}
AnnaBridge 156:ff21514d8981 256 */
AnnaBridge 156:ff21514d8981 257
AnnaBridge 156:ff21514d8981 258 /** @defgroup ADC_delay_between_2_sampling_phases ADC Delay Between 2 Sampling Phases
AnnaBridge 156:ff21514d8981 259 * @{
AnnaBridge 156:ff21514d8981 260 */
AnnaBridge 156:ff21514d8981 261 #define ADC_TWOSAMPLINGDELAY_5CYCLES 0x00000000U
AnnaBridge 156:ff21514d8981 262 #define ADC_TWOSAMPLINGDELAY_6CYCLES ((uint32_t)ADC_CCR_DELAY_0)
AnnaBridge 156:ff21514d8981 263 #define ADC_TWOSAMPLINGDELAY_7CYCLES ((uint32_t)ADC_CCR_DELAY_1)
AnnaBridge 156:ff21514d8981 264 #define ADC_TWOSAMPLINGDELAY_8CYCLES ((uint32_t)(ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))
AnnaBridge 156:ff21514d8981 265 #define ADC_TWOSAMPLINGDELAY_9CYCLES ((uint32_t)ADC_CCR_DELAY_2)
AnnaBridge 156:ff21514d8981 266 #define ADC_TWOSAMPLINGDELAY_10CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0))
AnnaBridge 156:ff21514d8981 267 #define ADC_TWOSAMPLINGDELAY_11CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1))
AnnaBridge 156:ff21514d8981 268 #define ADC_TWOSAMPLINGDELAY_12CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))
AnnaBridge 156:ff21514d8981 269 #define ADC_TWOSAMPLINGDELAY_13CYCLES ((uint32_t)ADC_CCR_DELAY_3)
AnnaBridge 156:ff21514d8981 270 #define ADC_TWOSAMPLINGDELAY_14CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0))
AnnaBridge 156:ff21514d8981 271 #define ADC_TWOSAMPLINGDELAY_15CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1))
AnnaBridge 156:ff21514d8981 272 #define ADC_TWOSAMPLINGDELAY_16CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))
AnnaBridge 156:ff21514d8981 273 #define ADC_TWOSAMPLINGDELAY_17CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2))
AnnaBridge 156:ff21514d8981 274 #define ADC_TWOSAMPLINGDELAY_18CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0))
AnnaBridge 156:ff21514d8981 275 #define ADC_TWOSAMPLINGDELAY_19CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1))
AnnaBridge 156:ff21514d8981 276 #define ADC_TWOSAMPLINGDELAY_20CYCLES ((uint32_t)ADC_CCR_DELAY)
AnnaBridge 156:ff21514d8981 277 /**
AnnaBridge 156:ff21514d8981 278 * @}
AnnaBridge 156:ff21514d8981 279 */
AnnaBridge 156:ff21514d8981 280
AnnaBridge 156:ff21514d8981 281 /** @defgroup ADC_Resolution ADC Resolution
AnnaBridge 156:ff21514d8981 282 * @{
AnnaBridge 156:ff21514d8981 283 */
AnnaBridge 156:ff21514d8981 284 #define ADC_RESOLUTION_12B 0x00000000U
AnnaBridge 156:ff21514d8981 285 #define ADC_RESOLUTION_10B ((uint32_t)ADC_CR1_RES_0)
AnnaBridge 156:ff21514d8981 286 #define ADC_RESOLUTION_8B ((uint32_t)ADC_CR1_RES_1)
AnnaBridge 156:ff21514d8981 287 #define ADC_RESOLUTION_6B ((uint32_t)ADC_CR1_RES)
AnnaBridge 156:ff21514d8981 288 /**
AnnaBridge 156:ff21514d8981 289 * @}
AnnaBridge 156:ff21514d8981 290 */
AnnaBridge 156:ff21514d8981 291
AnnaBridge 156:ff21514d8981 292 /** @defgroup ADC_External_trigger_edge_Regular ADC External Trigger Edge Regular
AnnaBridge 156:ff21514d8981 293 * @{
AnnaBridge 156:ff21514d8981 294 */
AnnaBridge 156:ff21514d8981 295 #define ADC_EXTERNALTRIGCONVEDGE_NONE 0x00000000U
AnnaBridge 156:ff21514d8981 296 #define ADC_EXTERNALTRIGCONVEDGE_RISING ((uint32_t)ADC_CR2_EXTEN_0)
AnnaBridge 156:ff21514d8981 297 #define ADC_EXTERNALTRIGCONVEDGE_FALLING ((uint32_t)ADC_CR2_EXTEN_1)
AnnaBridge 156:ff21514d8981 298 #define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING ((uint32_t)ADC_CR2_EXTEN)
AnnaBridge 156:ff21514d8981 299 /**
AnnaBridge 156:ff21514d8981 300 * @}
AnnaBridge 156:ff21514d8981 301 */
AnnaBridge 156:ff21514d8981 302
AnnaBridge 156:ff21514d8981 303 /** @defgroup ADC_External_trigger_Source_Regular ADC External Trigger Source Regular
AnnaBridge 156:ff21514d8981 304 * @{
AnnaBridge 156:ff21514d8981 305 */
AnnaBridge 156:ff21514d8981 306 /* Note: Parameter ADC_SOFTWARE_START is a software parameter used for */
AnnaBridge 156:ff21514d8981 307 /* compatibility with other STM32 devices. */
AnnaBridge 156:ff21514d8981 308 #define ADC_EXTERNALTRIGCONV_T1_CC1 0x00000000U
AnnaBridge 156:ff21514d8981 309 #define ADC_EXTERNALTRIGCONV_T1_CC2 ((uint32_t)ADC_CR2_EXTSEL_0)
AnnaBridge 156:ff21514d8981 310 #define ADC_EXTERNALTRIGCONV_T1_CC3 ((uint32_t)ADC_CR2_EXTSEL_1)
AnnaBridge 156:ff21514d8981 311 #define ADC_EXTERNALTRIGCONV_T2_CC2 ((uint32_t)(ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
AnnaBridge 156:ff21514d8981 312 #define ADC_EXTERNALTRIGCONV_T2_CC3 ((uint32_t)ADC_CR2_EXTSEL_2)
AnnaBridge 156:ff21514d8981 313 #define ADC_EXTERNALTRIGCONV_T2_CC4 ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))
AnnaBridge 156:ff21514d8981 314 #define ADC_EXTERNALTRIGCONV_T2_TRGO ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))
AnnaBridge 156:ff21514d8981 315 #define ADC_EXTERNALTRIGCONV_T3_CC1 ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
AnnaBridge 156:ff21514d8981 316 #define ADC_EXTERNALTRIGCONV_T3_TRGO ((uint32_t)ADC_CR2_EXTSEL_3)
AnnaBridge 156:ff21514d8981 317 #define ADC_EXTERNALTRIGCONV_T4_CC4 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_0))
AnnaBridge 156:ff21514d8981 318 #define ADC_EXTERNALTRIGCONV_T5_CC1 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1))
AnnaBridge 156:ff21514d8981 319 #define ADC_EXTERNALTRIGCONV_T5_CC2 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
AnnaBridge 156:ff21514d8981 320 #define ADC_EXTERNALTRIGCONV_T5_CC3 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2))
AnnaBridge 156:ff21514d8981 321 #define ADC_EXTERNALTRIGCONV_T8_CC1 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))
AnnaBridge 156:ff21514d8981 322 #define ADC_EXTERNALTRIGCONV_T8_TRGO ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))
AnnaBridge 156:ff21514d8981 323 #define ADC_EXTERNALTRIGCONV_Ext_IT11 ((uint32_t)ADC_CR2_EXTSEL)
AnnaBridge 156:ff21514d8981 324 #define ADC_SOFTWARE_START ((uint32_t)ADC_CR2_EXTSEL + 1U)
AnnaBridge 156:ff21514d8981 325 /**
AnnaBridge 156:ff21514d8981 326 * @}
AnnaBridge 156:ff21514d8981 327 */
AnnaBridge 156:ff21514d8981 328
AnnaBridge 156:ff21514d8981 329 /** @defgroup ADC_Data_align ADC Data Align
AnnaBridge 156:ff21514d8981 330 * @{
AnnaBridge 156:ff21514d8981 331 */
AnnaBridge 156:ff21514d8981 332 #define ADC_DATAALIGN_RIGHT 0x00000000U
AnnaBridge 156:ff21514d8981 333 #define ADC_DATAALIGN_LEFT ((uint32_t)ADC_CR2_ALIGN)
AnnaBridge 156:ff21514d8981 334 /**
AnnaBridge 156:ff21514d8981 335 * @}
AnnaBridge 156:ff21514d8981 336 */
AnnaBridge 156:ff21514d8981 337
AnnaBridge 156:ff21514d8981 338 /** @defgroup ADC_channels ADC Common Channels
AnnaBridge 156:ff21514d8981 339 * @{
AnnaBridge 156:ff21514d8981 340 */
AnnaBridge 156:ff21514d8981 341 #define ADC_CHANNEL_0 0x00000000U
AnnaBridge 156:ff21514d8981 342 #define ADC_CHANNEL_1 ((uint32_t)ADC_CR1_AWDCH_0)
AnnaBridge 156:ff21514d8981 343 #define ADC_CHANNEL_2 ((uint32_t)ADC_CR1_AWDCH_1)
AnnaBridge 156:ff21514d8981 344 #define ADC_CHANNEL_3 ((uint32_t)(ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
AnnaBridge 156:ff21514d8981 345 #define ADC_CHANNEL_4 ((uint32_t)ADC_CR1_AWDCH_2)
AnnaBridge 156:ff21514d8981 346 #define ADC_CHANNEL_5 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0))
AnnaBridge 156:ff21514d8981 347 #define ADC_CHANNEL_6 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1))
AnnaBridge 156:ff21514d8981 348 #define ADC_CHANNEL_7 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
AnnaBridge 156:ff21514d8981 349 #define ADC_CHANNEL_8 ((uint32_t)ADC_CR1_AWDCH_3)
AnnaBridge 156:ff21514d8981 350 #define ADC_CHANNEL_9 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_0))
AnnaBridge 156:ff21514d8981 351 #define ADC_CHANNEL_10 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1))
AnnaBridge 156:ff21514d8981 352 #define ADC_CHANNEL_11 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
AnnaBridge 156:ff21514d8981 353 #define ADC_CHANNEL_12 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2))
AnnaBridge 156:ff21514d8981 354 #define ADC_CHANNEL_13 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0))
AnnaBridge 156:ff21514d8981 355 #define ADC_CHANNEL_14 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1))
AnnaBridge 156:ff21514d8981 356 #define ADC_CHANNEL_15 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
AnnaBridge 156:ff21514d8981 357 #define ADC_CHANNEL_16 ((uint32_t)ADC_CR1_AWDCH_4)
AnnaBridge 156:ff21514d8981 358 #define ADC_CHANNEL_17 ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_0))
AnnaBridge 156:ff21514d8981 359 #define ADC_CHANNEL_18 ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_1))
AnnaBridge 156:ff21514d8981 360
AnnaBridge 156:ff21514d8981 361 #define ADC_CHANNEL_VREFINT ((uint32_t)ADC_CHANNEL_17)
AnnaBridge 156:ff21514d8981 362 #define ADC_CHANNEL_VBAT ((uint32_t)ADC_CHANNEL_18)
AnnaBridge 156:ff21514d8981 363 /**
AnnaBridge 156:ff21514d8981 364 * @}
AnnaBridge 156:ff21514d8981 365 */
AnnaBridge 156:ff21514d8981 366
AnnaBridge 156:ff21514d8981 367 /** @defgroup ADC_sampling_times ADC Sampling Times
AnnaBridge 156:ff21514d8981 368 * @{
AnnaBridge 156:ff21514d8981 369 */
AnnaBridge 156:ff21514d8981 370 #define ADC_SAMPLETIME_3CYCLES 0x00000000U
AnnaBridge 156:ff21514d8981 371 #define ADC_SAMPLETIME_15CYCLES ((uint32_t)ADC_SMPR1_SMP10_0)
AnnaBridge 156:ff21514d8981 372 #define ADC_SAMPLETIME_28CYCLES ((uint32_t)ADC_SMPR1_SMP10_1)
AnnaBridge 156:ff21514d8981 373 #define ADC_SAMPLETIME_56CYCLES ((uint32_t)(ADC_SMPR1_SMP10_1 | ADC_SMPR1_SMP10_0))
AnnaBridge 156:ff21514d8981 374 #define ADC_SAMPLETIME_84CYCLES ((uint32_t)ADC_SMPR1_SMP10_2)
AnnaBridge 156:ff21514d8981 375 #define ADC_SAMPLETIME_112CYCLES ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_0))
AnnaBridge 156:ff21514d8981 376 #define ADC_SAMPLETIME_144CYCLES ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_1))
AnnaBridge 156:ff21514d8981 377 #define ADC_SAMPLETIME_480CYCLES ((uint32_t)ADC_SMPR1_SMP10)
AnnaBridge 156:ff21514d8981 378 /**
AnnaBridge 156:ff21514d8981 379 * @}
AnnaBridge 156:ff21514d8981 380 */
AnnaBridge 156:ff21514d8981 381
AnnaBridge 156:ff21514d8981 382 /** @defgroup ADC_EOCSelection ADC EOC Selection
AnnaBridge 156:ff21514d8981 383 * @{
AnnaBridge 156:ff21514d8981 384 */
AnnaBridge 156:ff21514d8981 385 #define ADC_EOC_SEQ_CONV 0x00000000U
AnnaBridge 156:ff21514d8981 386 #define ADC_EOC_SINGLE_CONV 0x00000001U
AnnaBridge 156:ff21514d8981 387 #define ADC_EOC_SINGLE_SEQ_CONV 0x00000002U /*!< reserved for future use */
AnnaBridge 156:ff21514d8981 388 /**
AnnaBridge 156:ff21514d8981 389 * @}
AnnaBridge 156:ff21514d8981 390 */
AnnaBridge 156:ff21514d8981 391
AnnaBridge 156:ff21514d8981 392 /** @defgroup ADC_Event_type ADC Event Type
AnnaBridge 156:ff21514d8981 393 * @{
AnnaBridge 156:ff21514d8981 394 */
AnnaBridge 156:ff21514d8981 395 #define ADC_AWD_EVENT ((uint32_t)ADC_FLAG_AWD)
AnnaBridge 156:ff21514d8981 396 #define ADC_OVR_EVENT ((uint32_t)ADC_FLAG_OVR)
AnnaBridge 156:ff21514d8981 397 /**
AnnaBridge 156:ff21514d8981 398 * @}
AnnaBridge 156:ff21514d8981 399 */
AnnaBridge 156:ff21514d8981 400
AnnaBridge 156:ff21514d8981 401 /** @defgroup ADC_analog_watchdog_selection ADC Analog Watchdog Selection
AnnaBridge 156:ff21514d8981 402 * @{
AnnaBridge 156:ff21514d8981 403 */
AnnaBridge 156:ff21514d8981 404 #define ADC_ANALOGWATCHDOG_SINGLE_REG ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN))
AnnaBridge 156:ff21514d8981 405 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN))
AnnaBridge 156:ff21514d8981 406 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN | ADC_CR1_JAWDEN))
AnnaBridge 156:ff21514d8981 407 #define ADC_ANALOGWATCHDOG_ALL_REG ((uint32_t)ADC_CR1_AWDEN)
AnnaBridge 156:ff21514d8981 408 #define ADC_ANALOGWATCHDOG_ALL_INJEC ((uint32_t)ADC_CR1_JAWDEN)
AnnaBridge 156:ff21514d8981 409 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC ((uint32_t)(ADC_CR1_AWDEN | ADC_CR1_JAWDEN))
AnnaBridge 156:ff21514d8981 410 #define ADC_ANALOGWATCHDOG_NONE 0x00000000U
AnnaBridge 156:ff21514d8981 411 /**
AnnaBridge 156:ff21514d8981 412 * @}
AnnaBridge 156:ff21514d8981 413 */
AnnaBridge 156:ff21514d8981 414
AnnaBridge 156:ff21514d8981 415 /** @defgroup ADC_interrupts_definition ADC Interrupts Definition
AnnaBridge 156:ff21514d8981 416 * @{
AnnaBridge 156:ff21514d8981 417 */
AnnaBridge 156:ff21514d8981 418 #define ADC_IT_EOC ((uint32_t)ADC_CR1_EOCIE)
AnnaBridge 156:ff21514d8981 419 #define ADC_IT_AWD ((uint32_t)ADC_CR1_AWDIE)
AnnaBridge 156:ff21514d8981 420 #define ADC_IT_JEOC ((uint32_t)ADC_CR1_JEOCIE)
AnnaBridge 156:ff21514d8981 421 #define ADC_IT_OVR ((uint32_t)ADC_CR1_OVRIE)
AnnaBridge 156:ff21514d8981 422 /**
AnnaBridge 156:ff21514d8981 423 * @}
AnnaBridge 156:ff21514d8981 424 */
AnnaBridge 156:ff21514d8981 425
AnnaBridge 156:ff21514d8981 426 /** @defgroup ADC_flags_definition ADC Flags Definition
AnnaBridge 156:ff21514d8981 427 * @{
AnnaBridge 156:ff21514d8981 428 */
AnnaBridge 156:ff21514d8981 429 #define ADC_FLAG_AWD ((uint32_t)ADC_SR_AWD)
AnnaBridge 156:ff21514d8981 430 #define ADC_FLAG_EOC ((uint32_t)ADC_SR_EOC)
AnnaBridge 156:ff21514d8981 431 #define ADC_FLAG_JEOC ((uint32_t)ADC_SR_JEOC)
AnnaBridge 156:ff21514d8981 432 #define ADC_FLAG_JSTRT ((uint32_t)ADC_SR_JSTRT)
AnnaBridge 156:ff21514d8981 433 #define ADC_FLAG_STRT ((uint32_t)ADC_SR_STRT)
AnnaBridge 156:ff21514d8981 434 #define ADC_FLAG_OVR ((uint32_t)ADC_SR_OVR)
AnnaBridge 156:ff21514d8981 435 /**
AnnaBridge 156:ff21514d8981 436 * @}
AnnaBridge 156:ff21514d8981 437 */
AnnaBridge 156:ff21514d8981 438
AnnaBridge 156:ff21514d8981 439 /** @defgroup ADC_channels_type ADC Channels Type
AnnaBridge 156:ff21514d8981 440 * @{
AnnaBridge 156:ff21514d8981 441 */
AnnaBridge 156:ff21514d8981 442 #define ADC_ALL_CHANNELS 0x00000001U
AnnaBridge 156:ff21514d8981 443 #define ADC_REGULAR_CHANNELS 0x00000002U /*!< reserved for future use */
AnnaBridge 156:ff21514d8981 444 #define ADC_INJECTED_CHANNELS 0x00000003U /*!< reserved for future use */
AnnaBridge 156:ff21514d8981 445 /**
AnnaBridge 156:ff21514d8981 446 * @}
AnnaBridge 156:ff21514d8981 447 */
AnnaBridge 156:ff21514d8981 448
AnnaBridge 156:ff21514d8981 449 /**
AnnaBridge 156:ff21514d8981 450 * @}
AnnaBridge 156:ff21514d8981 451 */
AnnaBridge 156:ff21514d8981 452
AnnaBridge 156:ff21514d8981 453 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 454 /** @defgroup ADC_Exported_Macros ADC Exported Macros
AnnaBridge 156:ff21514d8981 455 * @{
AnnaBridge 156:ff21514d8981 456 */
AnnaBridge 156:ff21514d8981 457
AnnaBridge 156:ff21514d8981 458 /** @brief Reset ADC handle state
AnnaBridge 163:e59c8e839560 459 * @param __HANDLE__ ADC handle
AnnaBridge 156:ff21514d8981 460 * @retval None
AnnaBridge 156:ff21514d8981 461 */
AnnaBridge 156:ff21514d8981 462 #define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_ADC_STATE_RESET)
AnnaBridge 156:ff21514d8981 463
AnnaBridge 156:ff21514d8981 464 /**
AnnaBridge 156:ff21514d8981 465 * @brief Enable the ADC peripheral.
AnnaBridge 163:e59c8e839560 466 * @param __HANDLE__ ADC handle
AnnaBridge 156:ff21514d8981 467 * @retval None
AnnaBridge 156:ff21514d8981 468 */
AnnaBridge 156:ff21514d8981 469 #define __HAL_ADC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 |= ADC_CR2_ADON)
AnnaBridge 156:ff21514d8981 470
AnnaBridge 156:ff21514d8981 471 /**
AnnaBridge 156:ff21514d8981 472 * @brief Disable the ADC peripheral.
AnnaBridge 163:e59c8e839560 473 * @param __HANDLE__ ADC handle
AnnaBridge 156:ff21514d8981 474 * @retval None
AnnaBridge 156:ff21514d8981 475 */
AnnaBridge 156:ff21514d8981 476 #define __HAL_ADC_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 &= ~ADC_CR2_ADON)
AnnaBridge 156:ff21514d8981 477
AnnaBridge 156:ff21514d8981 478 /**
AnnaBridge 156:ff21514d8981 479 * @brief Enable the ADC end of conversion interrupt.
AnnaBridge 163:e59c8e839560 480 * @param __HANDLE__ specifies the ADC Handle.
AnnaBridge 163:e59c8e839560 481 * @param __INTERRUPT__ ADC Interrupt.
AnnaBridge 156:ff21514d8981 482 * @retval None
AnnaBridge 156:ff21514d8981 483 */
AnnaBridge 156:ff21514d8981 484 #define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) |= (__INTERRUPT__))
AnnaBridge 156:ff21514d8981 485
AnnaBridge 156:ff21514d8981 486 /**
AnnaBridge 156:ff21514d8981 487 * @brief Disable the ADC end of conversion interrupt.
AnnaBridge 163:e59c8e839560 488 * @param __HANDLE__ specifies the ADC Handle.
AnnaBridge 163:e59c8e839560 489 * @param __INTERRUPT__ ADC interrupt.
AnnaBridge 156:ff21514d8981 490 * @retval None
AnnaBridge 156:ff21514d8981 491 */
AnnaBridge 156:ff21514d8981 492 #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) &= ~(__INTERRUPT__))
AnnaBridge 156:ff21514d8981 493
AnnaBridge 156:ff21514d8981 494 /** @brief Check if the specified ADC interrupt source is enabled or disabled.
AnnaBridge 163:e59c8e839560 495 * @param __HANDLE__ specifies the ADC Handle.
AnnaBridge 163:e59c8e839560 496 * @param __INTERRUPT__ specifies the ADC interrupt source to check.
AnnaBridge 156:ff21514d8981 497 * @retval The new state of __IT__ (TRUE or FALSE).
AnnaBridge 156:ff21514d8981 498 */
AnnaBridge 156:ff21514d8981 499 #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__))
AnnaBridge 156:ff21514d8981 500
AnnaBridge 156:ff21514d8981 501 /**
AnnaBridge 156:ff21514d8981 502 * @brief Clear the ADC's pending flags.
AnnaBridge 163:e59c8e839560 503 * @param __HANDLE__ specifies the ADC Handle.
AnnaBridge 163:e59c8e839560 504 * @param __FLAG__ ADC flag.
AnnaBridge 156:ff21514d8981 505 * @retval None
AnnaBridge 156:ff21514d8981 506 */
AnnaBridge 156:ff21514d8981 507 #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = ~(__FLAG__))
AnnaBridge 156:ff21514d8981 508
AnnaBridge 156:ff21514d8981 509 /**
AnnaBridge 156:ff21514d8981 510 * @brief Get the selected ADC's flag status.
AnnaBridge 163:e59c8e839560 511 * @param __HANDLE__ specifies the ADC Handle.
AnnaBridge 163:e59c8e839560 512 * @param __FLAG__ ADC flag.
AnnaBridge 156:ff21514d8981 513 * @retval None
AnnaBridge 156:ff21514d8981 514 */
AnnaBridge 156:ff21514d8981 515 #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
AnnaBridge 156:ff21514d8981 516
AnnaBridge 156:ff21514d8981 517 /**
AnnaBridge 156:ff21514d8981 518 * @}
AnnaBridge 156:ff21514d8981 519 */
AnnaBridge 156:ff21514d8981 520
AnnaBridge 156:ff21514d8981 521 /* Include ADC HAL Extension module */
AnnaBridge 156:ff21514d8981 522 #include "stm32f4xx_hal_adc_ex.h"
AnnaBridge 156:ff21514d8981 523
AnnaBridge 156:ff21514d8981 524 /* Exported functions --------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 525 /** @addtogroup ADC_Exported_Functions
AnnaBridge 156:ff21514d8981 526 * @{
AnnaBridge 156:ff21514d8981 527 */
AnnaBridge 156:ff21514d8981 528
AnnaBridge 156:ff21514d8981 529 /** @addtogroup ADC_Exported_Functions_Group1
AnnaBridge 156:ff21514d8981 530 * @{
AnnaBridge 156:ff21514d8981 531 */
AnnaBridge 156:ff21514d8981 532 /* Initialization/de-initialization functions ***********************************/
AnnaBridge 156:ff21514d8981 533 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 534 HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc);
AnnaBridge 156:ff21514d8981 535 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 536 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 537 /**
AnnaBridge 156:ff21514d8981 538 * @}
AnnaBridge 156:ff21514d8981 539 */
AnnaBridge 156:ff21514d8981 540
AnnaBridge 156:ff21514d8981 541 /** @addtogroup ADC_Exported_Functions_Group2
AnnaBridge 156:ff21514d8981 542 * @{
AnnaBridge 156:ff21514d8981 543 */
AnnaBridge 156:ff21514d8981 544 /* I/O operation functions ******************************************************/
AnnaBridge 156:ff21514d8981 545 HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 546 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 547 HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 548
AnnaBridge 156:ff21514d8981 549 HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 550
AnnaBridge 156:ff21514d8981 551 HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 552 HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 553
AnnaBridge 156:ff21514d8981 554 void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 555
AnnaBridge 156:ff21514d8981 556 HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);
AnnaBridge 156:ff21514d8981 557 HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 558
AnnaBridge 156:ff21514d8981 559 uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 560
AnnaBridge 156:ff21514d8981 561 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 562 void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 563 void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 564 void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc);
AnnaBridge 156:ff21514d8981 565 /**
AnnaBridge 156:ff21514d8981 566 * @}
AnnaBridge 156:ff21514d8981 567 */
AnnaBridge 156:ff21514d8981 568
AnnaBridge 156:ff21514d8981 569 /** @addtogroup ADC_Exported_Functions_Group3
AnnaBridge 156:ff21514d8981 570 * @{
AnnaBridge 156:ff21514d8981 571 */
AnnaBridge 156:ff21514d8981 572 /* Peripheral Control functions *************************************************/
AnnaBridge 156:ff21514d8981 573 HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig);
AnnaBridge 156:ff21514d8981 574 HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig);
AnnaBridge 156:ff21514d8981 575 /**
AnnaBridge 156:ff21514d8981 576 * @}
AnnaBridge 156:ff21514d8981 577 */
AnnaBridge 156:ff21514d8981 578
AnnaBridge 156:ff21514d8981 579 /** @addtogroup ADC_Exported_Functions_Group4
AnnaBridge 156:ff21514d8981 580 * @{
AnnaBridge 156:ff21514d8981 581 */
AnnaBridge 156:ff21514d8981 582 /* Peripheral State functions ***************************************************/
AnnaBridge 156:ff21514d8981 583 uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc);
AnnaBridge 156:ff21514d8981 584 uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc);
AnnaBridge 156:ff21514d8981 585 /**
AnnaBridge 156:ff21514d8981 586 * @}
AnnaBridge 156:ff21514d8981 587 */
AnnaBridge 156:ff21514d8981 588
AnnaBridge 156:ff21514d8981 589 /**
AnnaBridge 156:ff21514d8981 590 * @}
AnnaBridge 156:ff21514d8981 591 */
AnnaBridge 156:ff21514d8981 592 /* Private types -------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 593 /* Private variables ---------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 594 /* Private constants ---------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 595 /** @defgroup ADC_Private_Constants ADC Private Constants
AnnaBridge 156:ff21514d8981 596 * @{
AnnaBridge 156:ff21514d8981 597 */
AnnaBridge 156:ff21514d8981 598 /* Delay for ADC stabilization time. */
AnnaBridge 156:ff21514d8981 599 /* Maximum delay is 1us (refer to device datasheet, parameter tSTAB). */
AnnaBridge 156:ff21514d8981 600 /* Unit: us */
AnnaBridge 156:ff21514d8981 601 #define ADC_STAB_DELAY_US 3U
AnnaBridge 156:ff21514d8981 602 /* Delay for temperature sensor stabilization time. */
AnnaBridge 156:ff21514d8981 603 /* Maximum delay is 10us (refer to device datasheet, parameter tSTART). */
AnnaBridge 156:ff21514d8981 604 /* Unit: us */
AnnaBridge 156:ff21514d8981 605 #define ADC_TEMPSENSOR_DELAY_US 10U
AnnaBridge 156:ff21514d8981 606 /**
AnnaBridge 156:ff21514d8981 607 * @}
AnnaBridge 156:ff21514d8981 608 */
AnnaBridge 156:ff21514d8981 609
AnnaBridge 156:ff21514d8981 610 /* Private macro ------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 611
AnnaBridge 156:ff21514d8981 612 /** @defgroup ADC_Private_Macros ADC Private Macros
AnnaBridge 156:ff21514d8981 613 * @{
AnnaBridge 156:ff21514d8981 614 */
AnnaBridge 156:ff21514d8981 615 /* Macro reserved for internal HAL driver usage, not intended to be used in
AnnaBridge 156:ff21514d8981 616 code of final user */
AnnaBridge 156:ff21514d8981 617
AnnaBridge 156:ff21514d8981 618 /**
AnnaBridge 156:ff21514d8981 619 * @brief Verification of ADC state: enabled or disabled
AnnaBridge 163:e59c8e839560 620 * @param __HANDLE__ ADC handle
AnnaBridge 156:ff21514d8981 621 * @retval SET (ADC enabled) or RESET (ADC disabled)
AnnaBridge 156:ff21514d8981 622 */
AnnaBridge 156:ff21514d8981 623 #define ADC_IS_ENABLE(__HANDLE__) \
AnnaBridge 156:ff21514d8981 624 ((( ((__HANDLE__)->Instance->SR & ADC_SR_ADONS) == ADC_SR_ADONS ) \
AnnaBridge 156:ff21514d8981 625 ) ? SET : RESET)
AnnaBridge 156:ff21514d8981 626
AnnaBridge 156:ff21514d8981 627 /**
AnnaBridge 156:ff21514d8981 628 * @brief Test if conversion trigger of regular group is software start
AnnaBridge 156:ff21514d8981 629 * or external trigger.
AnnaBridge 163:e59c8e839560 630 * @param __HANDLE__ ADC handle
AnnaBridge 156:ff21514d8981 631 * @retval SET (software start) or RESET (external trigger)
AnnaBridge 156:ff21514d8981 632 */
AnnaBridge 156:ff21514d8981 633 #define ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \
AnnaBridge 156:ff21514d8981 634 (((__HANDLE__)->Instance->CR2 & ADC_CR2_EXTEN) == RESET)
AnnaBridge 156:ff21514d8981 635
AnnaBridge 156:ff21514d8981 636 /**
AnnaBridge 156:ff21514d8981 637 * @brief Test if conversion trigger of injected group is software start
AnnaBridge 156:ff21514d8981 638 * or external trigger.
AnnaBridge 163:e59c8e839560 639 * @param __HANDLE__ ADC handle
AnnaBridge 156:ff21514d8981 640 * @retval SET (software start) or RESET (external trigger)
AnnaBridge 156:ff21514d8981 641 */
AnnaBridge 156:ff21514d8981 642 #define ADC_IS_SOFTWARE_START_INJECTED(__HANDLE__) \
AnnaBridge 156:ff21514d8981 643 (((__HANDLE__)->Instance->CR2 & ADC_CR2_JEXTEN) == RESET)
AnnaBridge 156:ff21514d8981 644
AnnaBridge 156:ff21514d8981 645 /**
AnnaBridge 156:ff21514d8981 646 * @brief Simultaneously clears and sets specific bits of the handle State
AnnaBridge 156:ff21514d8981 647 * @note: ADC_STATE_CLR_SET() macro is merely aliased to generic macro MODIFY_REG(),
AnnaBridge 156:ff21514d8981 648 * the first parameter is the ADC handle State, the second parameter is the
AnnaBridge 156:ff21514d8981 649 * bit field to clear, the third and last parameter is the bit field to set.
AnnaBridge 156:ff21514d8981 650 * @retval None
AnnaBridge 156:ff21514d8981 651 */
AnnaBridge 156:ff21514d8981 652 #define ADC_STATE_CLR_SET MODIFY_REG
AnnaBridge 156:ff21514d8981 653
AnnaBridge 156:ff21514d8981 654 /**
AnnaBridge 156:ff21514d8981 655 * @brief Clear ADC error code (set it to error code: "no error")
AnnaBridge 163:e59c8e839560 656 * @param __HANDLE__ ADC handle
AnnaBridge 156:ff21514d8981 657 * @retval None
AnnaBridge 156:ff21514d8981 658 */
AnnaBridge 156:ff21514d8981 659 #define ADC_CLEAR_ERRORCODE(__HANDLE__) \
AnnaBridge 156:ff21514d8981 660 ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)
AnnaBridge 156:ff21514d8981 661
AnnaBridge 156:ff21514d8981 662
AnnaBridge 156:ff21514d8981 663 #define IS_ADC_CLOCKPRESCALER(ADC_CLOCK) (((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV2) || \
AnnaBridge 156:ff21514d8981 664 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV4) || \
AnnaBridge 156:ff21514d8981 665 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV6) || \
AnnaBridge 156:ff21514d8981 666 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV8))
AnnaBridge 156:ff21514d8981 667 #define IS_ADC_SAMPLING_DELAY(DELAY) (((DELAY) == ADC_TWOSAMPLINGDELAY_5CYCLES) || \
AnnaBridge 156:ff21514d8981 668 ((DELAY) == ADC_TWOSAMPLINGDELAY_6CYCLES) || \
AnnaBridge 156:ff21514d8981 669 ((DELAY) == ADC_TWOSAMPLINGDELAY_7CYCLES) || \
AnnaBridge 156:ff21514d8981 670 ((DELAY) == ADC_TWOSAMPLINGDELAY_8CYCLES) || \
AnnaBridge 156:ff21514d8981 671 ((DELAY) == ADC_TWOSAMPLINGDELAY_9CYCLES) || \
AnnaBridge 156:ff21514d8981 672 ((DELAY) == ADC_TWOSAMPLINGDELAY_10CYCLES) || \
AnnaBridge 156:ff21514d8981 673 ((DELAY) == ADC_TWOSAMPLINGDELAY_11CYCLES) || \
AnnaBridge 156:ff21514d8981 674 ((DELAY) == ADC_TWOSAMPLINGDELAY_12CYCLES) || \
AnnaBridge 156:ff21514d8981 675 ((DELAY) == ADC_TWOSAMPLINGDELAY_13CYCLES) || \
AnnaBridge 156:ff21514d8981 676 ((DELAY) == ADC_TWOSAMPLINGDELAY_14CYCLES) || \
AnnaBridge 156:ff21514d8981 677 ((DELAY) == ADC_TWOSAMPLINGDELAY_15CYCLES) || \
AnnaBridge 156:ff21514d8981 678 ((DELAY) == ADC_TWOSAMPLINGDELAY_16CYCLES) || \
AnnaBridge 156:ff21514d8981 679 ((DELAY) == ADC_TWOSAMPLINGDELAY_17CYCLES) || \
AnnaBridge 156:ff21514d8981 680 ((DELAY) == ADC_TWOSAMPLINGDELAY_18CYCLES) || \
AnnaBridge 156:ff21514d8981 681 ((DELAY) == ADC_TWOSAMPLINGDELAY_19CYCLES) || \
AnnaBridge 156:ff21514d8981 682 ((DELAY) == ADC_TWOSAMPLINGDELAY_20CYCLES))
AnnaBridge 156:ff21514d8981 683 #define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_RESOLUTION_12B) || \
AnnaBridge 156:ff21514d8981 684 ((RESOLUTION) == ADC_RESOLUTION_10B) || \
AnnaBridge 156:ff21514d8981 685 ((RESOLUTION) == ADC_RESOLUTION_8B) || \
AnnaBridge 156:ff21514d8981 686 ((RESOLUTION) == ADC_RESOLUTION_6B))
AnnaBridge 156:ff21514d8981 687 #define IS_ADC_EXT_TRIG_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \
AnnaBridge 156:ff21514d8981 688 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISING) || \
AnnaBridge 156:ff21514d8981 689 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \
AnnaBridge 156:ff21514d8981 690 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING))
AnnaBridge 156:ff21514d8981 691 #define IS_ADC_EXT_TRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1) || \
AnnaBridge 156:ff21514d8981 692 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2) || \
AnnaBridge 156:ff21514d8981 693 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3) || \
AnnaBridge 156:ff21514d8981 694 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
AnnaBridge 156:ff21514d8981 695 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC3) || \
AnnaBridge 156:ff21514d8981 696 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC4) || \
AnnaBridge 156:ff21514d8981 697 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
AnnaBridge 156:ff21514d8981 698 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC1) || \
AnnaBridge 156:ff21514d8981 699 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
AnnaBridge 156:ff21514d8981 700 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC4) || \
AnnaBridge 156:ff21514d8981 701 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC1) || \
AnnaBridge 156:ff21514d8981 702 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC2) || \
AnnaBridge 156:ff21514d8981 703 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC3) || \
AnnaBridge 156:ff21514d8981 704 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_CC1) || \
AnnaBridge 156:ff21514d8981 705 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_TRGO) || \
AnnaBridge 156:ff21514d8981 706 ((REGTRIG) == ADC_EXTERNALTRIGCONV_Ext_IT11)|| \
AnnaBridge 156:ff21514d8981 707 ((REGTRIG) == ADC_SOFTWARE_START))
AnnaBridge 156:ff21514d8981 708 #define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DATAALIGN_RIGHT) || \
AnnaBridge 156:ff21514d8981 709 ((ALIGN) == ADC_DATAALIGN_LEFT))
AnnaBridge 156:ff21514d8981 710 #define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SAMPLETIME_3CYCLES) || \
AnnaBridge 156:ff21514d8981 711 ((TIME) == ADC_SAMPLETIME_15CYCLES) || \
AnnaBridge 156:ff21514d8981 712 ((TIME) == ADC_SAMPLETIME_28CYCLES) || \
AnnaBridge 156:ff21514d8981 713 ((TIME) == ADC_SAMPLETIME_56CYCLES) || \
AnnaBridge 156:ff21514d8981 714 ((TIME) == ADC_SAMPLETIME_84CYCLES) || \
AnnaBridge 156:ff21514d8981 715 ((TIME) == ADC_SAMPLETIME_112CYCLES) || \
AnnaBridge 156:ff21514d8981 716 ((TIME) == ADC_SAMPLETIME_144CYCLES) || \
AnnaBridge 156:ff21514d8981 717 ((TIME) == ADC_SAMPLETIME_480CYCLES))
AnnaBridge 156:ff21514d8981 718 #define IS_ADC_EOCSelection(EOCSelection) (((EOCSelection) == ADC_EOC_SINGLE_CONV) || \
AnnaBridge 156:ff21514d8981 719 ((EOCSelection) == ADC_EOC_SEQ_CONV) || \
AnnaBridge 156:ff21514d8981 720 ((EOCSelection) == ADC_EOC_SINGLE_SEQ_CONV))
AnnaBridge 156:ff21514d8981 721 #define IS_ADC_EVENT_TYPE(EVENT) (((EVENT) == ADC_AWD_EVENT) || \
AnnaBridge 156:ff21514d8981 722 ((EVENT) == ADC_OVR_EVENT))
AnnaBridge 156:ff21514d8981 723 #define IS_ADC_ANALOG_WATCHDOG(WATCHDOG) (((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \
AnnaBridge 156:ff21514d8981 724 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_INJEC) || \
AnnaBridge 156:ff21514d8981 725 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC) || \
AnnaBridge 156:ff21514d8981 726 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REG) || \
AnnaBridge 156:ff21514d8981 727 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_INJEC) || \
AnnaBridge 156:ff21514d8981 728 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REGINJEC) || \
AnnaBridge 156:ff21514d8981 729 ((WATCHDOG) == ADC_ANALOGWATCHDOG_NONE))
AnnaBridge 156:ff21514d8981 730 #define IS_ADC_CHANNELS_TYPE(CHANNEL_TYPE) (((CHANNEL_TYPE) == ADC_ALL_CHANNELS) || \
AnnaBridge 156:ff21514d8981 731 ((CHANNEL_TYPE) == ADC_REGULAR_CHANNELS) || \
AnnaBridge 156:ff21514d8981 732 ((CHANNEL_TYPE) == ADC_INJECTED_CHANNELS))
AnnaBridge 156:ff21514d8981 733 #define IS_ADC_THRESHOLD(THRESHOLD) ((THRESHOLD) <= 0xFFFU)
AnnaBridge 156:ff21514d8981 734
AnnaBridge 156:ff21514d8981 735 #define IS_ADC_REGULAR_LENGTH(LENGTH) (((LENGTH) >= 1U) && ((LENGTH) <= 16U))
AnnaBridge 156:ff21514d8981 736 #define IS_ADC_REGULAR_RANK(RANK) (((RANK) >= 1U) && ((RANK) <= (16U)))
AnnaBridge 156:ff21514d8981 737 #define IS_ADC_REGULAR_DISC_NUMBER(NUMBER) (((NUMBER) >= 1U) && ((NUMBER) <= 8U))
AnnaBridge 156:ff21514d8981 738 #define IS_ADC_RANGE(RESOLUTION, ADC_VALUE) \
AnnaBridge 156:ff21514d8981 739 ((((RESOLUTION) == ADC_RESOLUTION_12B) && ((ADC_VALUE) <= 0x0FFFU)) || \
AnnaBridge 156:ff21514d8981 740 (((RESOLUTION) == ADC_RESOLUTION_10B) && ((ADC_VALUE) <= 0x03FFU)) || \
AnnaBridge 156:ff21514d8981 741 (((RESOLUTION) == ADC_RESOLUTION_8B) && ((ADC_VALUE) <= 0x00FFU)) || \
AnnaBridge 156:ff21514d8981 742 (((RESOLUTION) == ADC_RESOLUTION_6B) && ((ADC_VALUE) <= 0x003FU)))
AnnaBridge 156:ff21514d8981 743
AnnaBridge 156:ff21514d8981 744 /**
AnnaBridge 156:ff21514d8981 745 * @brief Set ADC Regular channel sequence length.
AnnaBridge 163:e59c8e839560 746 * @param _NbrOfConversion_ Regular channel sequence length.
AnnaBridge 156:ff21514d8981 747 * @retval None
AnnaBridge 156:ff21514d8981 748 */
AnnaBridge 156:ff21514d8981 749 #define ADC_SQR1(_NbrOfConversion_) (((_NbrOfConversion_) - (uint8_t)1U) << 20U)
AnnaBridge 156:ff21514d8981 750
AnnaBridge 156:ff21514d8981 751 /**
AnnaBridge 156:ff21514d8981 752 * @brief Set the ADC's sample time for channel numbers between 10 and 18.
AnnaBridge 163:e59c8e839560 753 * @param _SAMPLETIME_ Sample time parameter.
AnnaBridge 163:e59c8e839560 754 * @param _CHANNELNB_ Channel number.
AnnaBridge 156:ff21514d8981 755 * @retval None
AnnaBridge 156:ff21514d8981 756 */
AnnaBridge 156:ff21514d8981 757 #define ADC_SMPR1(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3U * (((uint32_t)((uint16_t)(_CHANNELNB_))) - 10U)))
AnnaBridge 156:ff21514d8981 758
AnnaBridge 156:ff21514d8981 759 /**
AnnaBridge 156:ff21514d8981 760 * @brief Set the ADC's sample time for channel numbers between 0 and 9.
AnnaBridge 163:e59c8e839560 761 * @param _SAMPLETIME_ Sample time parameter.
AnnaBridge 163:e59c8e839560 762 * @param _CHANNELNB_ Channel number.
AnnaBridge 156:ff21514d8981 763 * @retval None
AnnaBridge 156:ff21514d8981 764 */
AnnaBridge 156:ff21514d8981 765 #define ADC_SMPR2(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3U * ((uint32_t)((uint16_t)(_CHANNELNB_)))))
AnnaBridge 156:ff21514d8981 766
AnnaBridge 156:ff21514d8981 767 /**
AnnaBridge 156:ff21514d8981 768 * @brief Set the selected regular channel rank for rank between 1 and 6.
AnnaBridge 163:e59c8e839560 769 * @param _CHANNELNB_ Channel number.
AnnaBridge 163:e59c8e839560 770 * @param _RANKNB_ Rank number.
AnnaBridge 156:ff21514d8981 771 * @retval None
AnnaBridge 156:ff21514d8981 772 */
AnnaBridge 156:ff21514d8981 773 #define ADC_SQR3_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5U * ((_RANKNB_) - 1U)))
AnnaBridge 156:ff21514d8981 774
AnnaBridge 156:ff21514d8981 775 /**
AnnaBridge 156:ff21514d8981 776 * @brief Set the selected regular channel rank for rank between 7 and 12.
AnnaBridge 163:e59c8e839560 777 * @param _CHANNELNB_ Channel number.
AnnaBridge 163:e59c8e839560 778 * @param _RANKNB_ Rank number.
AnnaBridge 156:ff21514d8981 779 * @retval None
AnnaBridge 156:ff21514d8981 780 */
AnnaBridge 156:ff21514d8981 781 #define ADC_SQR2_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5U * ((_RANKNB_) - 7U)))
AnnaBridge 156:ff21514d8981 782
AnnaBridge 156:ff21514d8981 783 /**
AnnaBridge 156:ff21514d8981 784 * @brief Set the selected regular channel rank for rank between 13 and 16.
AnnaBridge 163:e59c8e839560 785 * @param _CHANNELNB_ Channel number.
AnnaBridge 163:e59c8e839560 786 * @param _RANKNB_ Rank number.
AnnaBridge 156:ff21514d8981 787 * @retval None
AnnaBridge 156:ff21514d8981 788 */
AnnaBridge 156:ff21514d8981 789 #define ADC_SQR1_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5U * ((_RANKNB_) - 13U)))
AnnaBridge 156:ff21514d8981 790
AnnaBridge 156:ff21514d8981 791 /**
AnnaBridge 156:ff21514d8981 792 * @brief Enable ADC continuous conversion mode.
AnnaBridge 163:e59c8e839560 793 * @param _CONTINUOUS_MODE_ Continuous mode.
AnnaBridge 156:ff21514d8981 794 * @retval None
AnnaBridge 156:ff21514d8981 795 */
AnnaBridge 156:ff21514d8981 796 #define ADC_CR2_CONTINUOUS(_CONTINUOUS_MODE_) ((_CONTINUOUS_MODE_) << 1U)
AnnaBridge 156:ff21514d8981 797
AnnaBridge 156:ff21514d8981 798 /**
AnnaBridge 156:ff21514d8981 799 * @brief Configures the number of discontinuous conversions for the regular group channels.
AnnaBridge 163:e59c8e839560 800 * @param _NBR_DISCONTINUOUSCONV_ Number of discontinuous conversions.
AnnaBridge 156:ff21514d8981 801 * @retval None
AnnaBridge 156:ff21514d8981 802 */
AnnaBridge 163:e59c8e839560 803 #define ADC_CR1_DISCONTINUOUS(_NBR_DISCONTINUOUSCONV_) (((_NBR_DISCONTINUOUSCONV_) - 1U) << ADC_CR1_DISCNUM_Pos)
AnnaBridge 156:ff21514d8981 804
AnnaBridge 156:ff21514d8981 805 /**
AnnaBridge 156:ff21514d8981 806 * @brief Enable ADC scan mode.
AnnaBridge 163:e59c8e839560 807 * @param _SCANCONV_MODE_ Scan conversion mode.
AnnaBridge 156:ff21514d8981 808 * @retval None
AnnaBridge 156:ff21514d8981 809 */
AnnaBridge 156:ff21514d8981 810 #define ADC_CR1_SCANCONV(_SCANCONV_MODE_) ((_SCANCONV_MODE_) << 8U)
AnnaBridge 156:ff21514d8981 811
AnnaBridge 156:ff21514d8981 812 /**
AnnaBridge 156:ff21514d8981 813 * @brief Enable the ADC end of conversion selection.
AnnaBridge 163:e59c8e839560 814 * @param _EOCSelection_MODE_ End of conversion selection mode.
AnnaBridge 156:ff21514d8981 815 * @retval None
AnnaBridge 156:ff21514d8981 816 */
AnnaBridge 156:ff21514d8981 817 #define ADC_CR2_EOCSelection(_EOCSelection_MODE_) ((_EOCSelection_MODE_) << 10U)
AnnaBridge 156:ff21514d8981 818
AnnaBridge 156:ff21514d8981 819 /**
AnnaBridge 156:ff21514d8981 820 * @brief Enable the ADC DMA continuous request.
AnnaBridge 163:e59c8e839560 821 * @param _DMAContReq_MODE_ DMA continuous request mode.
AnnaBridge 156:ff21514d8981 822 * @retval None
AnnaBridge 156:ff21514d8981 823 */
AnnaBridge 156:ff21514d8981 824 #define ADC_CR2_DMAContReq(_DMAContReq_MODE_) ((_DMAContReq_MODE_) << 9U)
AnnaBridge 156:ff21514d8981 825
AnnaBridge 156:ff21514d8981 826 /**
AnnaBridge 156:ff21514d8981 827 * @brief Return resolution bits in CR1 register.
AnnaBridge 163:e59c8e839560 828 * @param __HANDLE__ ADC handle
AnnaBridge 156:ff21514d8981 829 * @retval None
AnnaBridge 156:ff21514d8981 830 */
AnnaBridge 156:ff21514d8981 831 #define ADC_GET_RESOLUTION(__HANDLE__) (((__HANDLE__)->Instance->CR1) & ADC_CR1_RES)
AnnaBridge 156:ff21514d8981 832
AnnaBridge 156:ff21514d8981 833 /**
AnnaBridge 156:ff21514d8981 834 * @}
AnnaBridge 156:ff21514d8981 835 */
AnnaBridge 156:ff21514d8981 836
AnnaBridge 156:ff21514d8981 837 /* Private functions ---------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 838 /** @defgroup ADC_Private_Functions ADC Private Functions
AnnaBridge 156:ff21514d8981 839 * @{
AnnaBridge 156:ff21514d8981 840 */
AnnaBridge 156:ff21514d8981 841
AnnaBridge 156:ff21514d8981 842 /**
AnnaBridge 156:ff21514d8981 843 * @}
AnnaBridge 156:ff21514d8981 844 */
AnnaBridge 156:ff21514d8981 845
AnnaBridge 156:ff21514d8981 846 /**
AnnaBridge 156:ff21514d8981 847 * @}
AnnaBridge 156:ff21514d8981 848 */
AnnaBridge 156:ff21514d8981 849
AnnaBridge 156:ff21514d8981 850 /**
AnnaBridge 156:ff21514d8981 851 * @}
AnnaBridge 156:ff21514d8981 852 */
AnnaBridge 156:ff21514d8981 853
AnnaBridge 156:ff21514d8981 854 #ifdef __cplusplus
AnnaBridge 156:ff21514d8981 855 }
AnnaBridge 156:ff21514d8981 856 #endif
AnnaBridge 156:ff21514d8981 857
AnnaBridge 156:ff21514d8981 858 #endif /*__STM32F4xx_ADC_H */
AnnaBridge 156:ff21514d8981 859
AnnaBridge 156:ff21514d8981 860
AnnaBridge 156:ff21514d8981 861 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/