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:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_DISCO_L475VG_IOT01A/TARGET_STM/TARGET_STM32L4/device/stm32l4xx_hal_adc.h@161:aa5281ff4a02
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 145:64910690c574 1 /**
AnnaBridge 145:64910690c574 2 ******************************************************************************
AnnaBridge 145:64910690c574 3 * @file stm32l4xx_hal_adc.h
AnnaBridge 145:64910690c574 4 * @author MCD Application Team
AnnaBridge 145:64910690c574 5 * @brief Header file of ADC HAL module.
AnnaBridge 145:64910690c574 6 ******************************************************************************
AnnaBridge 145:64910690c574 7 * @attention
AnnaBridge 145:64910690c574 8 *
AnnaBridge 145:64910690c574 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
AnnaBridge 145:64910690c574 10 *
AnnaBridge 145:64910690c574 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 145:64910690c574 12 * are permitted provided that the following conditions are met:
AnnaBridge 145:64910690c574 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 145:64910690c574 14 * this list of conditions and the following disclaimer.
AnnaBridge 145:64910690c574 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 145:64910690c574 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 145:64910690c574 17 * and/or other materials provided with the distribution.
AnnaBridge 145:64910690c574 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 145:64910690c574 19 * may be used to endorse or promote products derived from this software
AnnaBridge 145:64910690c574 20 * without specific prior written permission.
AnnaBridge 145:64910690c574 21 *
AnnaBridge 145:64910690c574 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 145:64910690c574 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 145:64910690c574 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 145:64910690c574 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 145:64910690c574 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 145:64910690c574 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 145:64910690c574 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 145:64910690c574 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 145:64910690c574 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 145:64910690c574 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 145:64910690c574 32 *
AnnaBridge 145:64910690c574 33 ******************************************************************************
AnnaBridge 145:64910690c574 34 */
AnnaBridge 145:64910690c574 35
AnnaBridge 145:64910690c574 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 145:64910690c574 37 #ifndef __STM32L4xx_HAL_ADC_H
AnnaBridge 145:64910690c574 38 #define __STM32L4xx_HAL_ADC_H
AnnaBridge 145:64910690c574 39
AnnaBridge 145:64910690c574 40 #ifdef __cplusplus
AnnaBridge 145:64910690c574 41 extern "C" {
AnnaBridge 145:64910690c574 42 #endif
AnnaBridge 145:64910690c574 43
AnnaBridge 145:64910690c574 44 /* Includes ------------------------------------------------------------------*/
AnnaBridge 145:64910690c574 45 #include "stm32l4xx_hal_def.h"
AnnaBridge 145:64910690c574 46
AnnaBridge 161:aa5281ff4a02 47 /* Include low level driver */
AnnaBridge 161:aa5281ff4a02 48 #include "stm32l4xx_ll_adc.h"
AnnaBridge 161:aa5281ff4a02 49
AnnaBridge 145:64910690c574 50 /** @addtogroup STM32L4xx_HAL_Driver
AnnaBridge 145:64910690c574 51 * @{
AnnaBridge 145:64910690c574 52 */
AnnaBridge 145:64910690c574 53
AnnaBridge 145:64910690c574 54 /** @addtogroup ADC
AnnaBridge 145:64910690c574 55 * @{
AnnaBridge 145:64910690c574 56 */
AnnaBridge 145:64910690c574 57
AnnaBridge 145:64910690c574 58 /* Exported types ------------------------------------------------------------*/
AnnaBridge 145:64910690c574 59 /** @defgroup ADC_Exported_Types ADC Exported Types
AnnaBridge 145:64910690c574 60 * @{
AnnaBridge 145:64910690c574 61 */
AnnaBridge 145:64910690c574 62
AnnaBridge 145:64910690c574 63 /**
AnnaBridge 145:64910690c574 64 * @brief ADC group regular oversampling structure definition
AnnaBridge 145:64910690c574 65 */
AnnaBridge 145:64910690c574 66 typedef struct
AnnaBridge 145:64910690c574 67 {
AnnaBridge 145:64910690c574 68 uint32_t Ratio; /*!< Configures the oversampling ratio.
AnnaBridge 161:aa5281ff4a02 69 This parameter can be a value of @ref ADC_HAL_EC_OVS_RATIO */
AnnaBridge 145:64910690c574 70
AnnaBridge 145:64910690c574 71 uint32_t RightBitShift; /*!< Configures the division coefficient for the Oversampler.
AnnaBridge 161:aa5281ff4a02 72 This parameter can be a value of @ref ADC_HAL_EC_OVS_SHIFT */
AnnaBridge 145:64910690c574 73
AnnaBridge 145:64910690c574 74 uint32_t TriggeredMode; /*!< Selects the regular triggered oversampling mode.
AnnaBridge 161:aa5281ff4a02 75 This parameter can be a value of @ref ADC_HAL_EC_OVS_DISCONT_MODE */
AnnaBridge 145:64910690c574 76
AnnaBridge 145:64910690c574 77 uint32_t OversamplingStopReset; /*!< Selects the regular oversampling mode.
AnnaBridge 145:64910690c574 78 The oversampling is either temporary stopped or reset upon an injected
AnnaBridge 145:64910690c574 79 sequence interruption.
AnnaBridge 145:64910690c574 80 If oversampling is enabled on both regular and injected groups, this parameter
AnnaBridge 145:64910690c574 81 is discarded and forced to setting "ADC_REGOVERSAMPLING_RESUMED_MODE"
AnnaBridge 145:64910690c574 82 (the oversampling buffer is zeroed during injection sequence).
AnnaBridge 161:aa5281ff4a02 83 This parameter can be a value of @ref ADC_HAL_EC_OVS_SCOPE_REG */
AnnaBridge 161:aa5281ff4a02 84
AnnaBridge 145:64910690c574 85 }ADC_OversamplingTypeDef;
AnnaBridge 145:64910690c574 86
AnnaBridge 145:64910690c574 87 /**
AnnaBridge 145:64910690c574 88 * @brief Structure definition of ADC instance and ADC group regular.
AnnaBridge 145:64910690c574 89 * @note Parameters of this structure are shared within 2 scopes:
AnnaBridge 145:64910690c574 90 * - Scope entire ADC (affects ADC groups regular and injected): ClockPrescaler, Resolution, DataAlign,
AnnaBridge 145:64910690c574 91 * ScanConvMode, EOCSelection, LowPowerAutoWait.
AnnaBridge 145:64910690c574 92 * - Scope ADC group regular: ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion,
AnnaBridge 145:64910690c574 93 * ExternalTrigConv, ExternalTrigConvEdge, DMAContinuousRequests, Overrun, OversamplingMode, Oversampling.
AnnaBridge 145:64910690c574 94 * @note The setting of these parameters by function HAL_ADC_Init() is conditioned to ADC state.
AnnaBridge 145:64910690c574 95 * ADC state can be either:
AnnaBridge 145:64910690c574 96 * - For all parameters: ADC disabled
AnnaBridge 145:64910690c574 97 * - For all parameters except 'LowPowerAutoWait', 'DMAContinuousRequests' and 'Oversampling': ADC enabled without conversion on going on group regular.
AnnaBridge 145:64910690c574 98 * - For parameters 'LowPowerAutoWait' and 'DMAContinuousRequests': ADC enabled without conversion on going on groups regular and injected.
AnnaBridge 145:64910690c574 99 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
AnnaBridge 145:64910690c574 100 * without error reporting (as it can be the expected behavior in case of intended action to update another parameter
AnnaBridge 145:64910690c574 101 * (which fulfills the ADC state condition) on the fly).
AnnaBridge 145:64910690c574 102 */
AnnaBridge 145:64910690c574 103 typedef struct
AnnaBridge 145:64910690c574 104 {
AnnaBridge 161:aa5281ff4a02 105 uint32_t ClockPrescaler; /*!< Select ADC clock source (synchronous clock derived from APB clock or asynchronous clock derived from system clock or PLL (Refer to reference manual for list of clocks available)) and clock prescaler.
AnnaBridge 161:aa5281ff4a02 106 This parameter can be a value of @ref ADC_HAL_EC_COMMON_CLOCK_SOURCE.
AnnaBridge 161:aa5281ff4a02 107 Note: The ADC clock configuration is common to all ADC instances.
AnnaBridge 145:64910690c574 108 Note: In case of usage of channels on injected group, ADC frequency should be lower than AHB clock frequency /4 for resolution 12 or 10 bits,
AnnaBridge 145:64910690c574 109 AHB clock frequency /3 for resolution 8 bits, AHB clock frequency /2 for resolution 6 bits.
AnnaBridge 145:64910690c574 110 Note: In case of synchronous clock mode based on HCLK/1, the configuration must be enabled only
AnnaBridge 145:64910690c574 111 if the system clock has a 50% duty clock cycle (APB prescaler configured inside RCC
AnnaBridge 145:64910690c574 112 must be bypassed and PCLK clock must have 50% duty cycle). Refer to reference manual for details.
AnnaBridge 161:aa5281ff4a02 113 Note: In case of usage of asynchronous clock, the selected clock must be preliminarily enabled at RCC top level.
AnnaBridge 161:aa5281ff4a02 114 Note: This parameter can be modified only if all ADC instances are disabled. */
AnnaBridge 145:64910690c574 115
AnnaBridge 145:64910690c574 116 uint32_t Resolution; /*!< Configure the ADC resolution.
AnnaBridge 161:aa5281ff4a02 117 This parameter can be a value of @ref ADC_HAL_EC_RESOLUTION */
AnnaBridge 145:64910690c574 118
AnnaBridge 145:64910690c574 119 uint32_t DataAlign; /*!< Specify ADC data alignment in conversion data register (right or left).
AnnaBridge 145:64910690c574 120 Refer to reference manual for alignments formats versus resolutions.
AnnaBridge 161:aa5281ff4a02 121 This parameter can be a value of @ref ADC_HAL_EC_DATA_ALIGN */
AnnaBridge 145:64910690c574 122
AnnaBridge 145:64910690c574 123 uint32_t ScanConvMode; /*!< Configure the sequencer of ADC groups regular and injected.
AnnaBridge 145:64910690c574 124 This parameter can be associated to parameter 'DiscontinuousConvMode' to have main sequence subdivided in successive parts.
AnnaBridge 145:64910690c574 125 If disabled: Conversion is performed in single mode (one channel converted, the one defined in rank 1).
AnnaBridge 145:64910690c574 126 Parameters 'NbrOfConversion' and 'InjectedNbrOfConversion' are discarded (equivalent to set to 1).
AnnaBridge 145:64910690c574 127 If enabled: Conversions are performed in sequence mode (multiple ranks defined by 'NbrOfConversion' or 'InjectedNbrOfConversion' and rank of each channel in sequencer).
AnnaBridge 145:64910690c574 128 Scan direction is upward: from rank 1 to rank 'n'.
AnnaBridge 145:64910690c574 129 This parameter can be a value of @ref ADC_Scan_mode */
AnnaBridge 145:64910690c574 130
AnnaBridge 145:64910690c574 131 uint32_t EOCSelection; /*!< Specify which EOC (End Of Conversion) flag is used for conversion by polling and interruption: end of unitary conversion or end of sequence conversions.
AnnaBridge 145:64910690c574 132 This parameter can be a value of @ref ADC_EOCSelection. */
AnnaBridge 145:64910690c574 133
AnnaBridge 145:64910690c574 134 uint32_t LowPowerAutoWait; /*!< Select the dynamic low power Auto Delay: new conversion start only when the previous
AnnaBridge 145:64910690c574 135 conversion (for ADC group regular) or previous sequence (for ADC group injected) has been retrieved by user software,
AnnaBridge 145:64910690c574 136 using function HAL_ADC_GetValue() or HAL_ADCEx_InjectedGetValue().
AnnaBridge 145:64910690c574 137 This feature automatically adapts the frequency of ADC conversions triggers to the speed of the system that reads the data. Moreover, this avoids risk of overrun
AnnaBridge 145:64910690c574 138 for low frequency applications.
AnnaBridge 145:64910690c574 139 This parameter can be set to ENABLE or DISABLE.
AnnaBridge 145:64910690c574 140 Note: Do not use with interruption or DMA (HAL_ADC_Start_IT(), HAL_ADC_Start_DMA()) since they clear immediately the EOC flag
AnnaBridge 145:64910690c574 141 to free the IRQ vector sequencer.
AnnaBridge 145:64910690c574 142 Do use with polling: 1. Start conversion with HAL_ADC_Start(), 2. Later on, when ADC conversion data is needed:
AnnaBridge 145:64910690c574 143 use HAL_ADC_PollForConversion() to ensure that conversion is completed and HAL_ADC_GetValue() to retrieve conversion result and trig another conversion start.
AnnaBridge 145:64910690c574 144 (in case of usage of ADC group injected, use the equivalent functions HAL_ADCExInjected_Start(), HAL_ADCEx_InjectedGetValue(), ...). */
AnnaBridge 145:64910690c574 145
AnnaBridge 145:64910690c574 146 uint32_t ContinuousConvMode; /*!< Specify whether the conversion is performed in single mode (one conversion) or continuous mode for ADC group regular,
AnnaBridge 145:64910690c574 147 after the first ADC conversion start trigger occurred (software start or external trigger).
AnnaBridge 145:64910690c574 148 This parameter can be set to ENABLE or DISABLE. */
AnnaBridge 145:64910690c574 149
AnnaBridge 145:64910690c574 150 uint32_t NbrOfConversion; /*!< Specify the number of ranks that will be converted within the regular group sequencer.
AnnaBridge 145:64910690c574 151 To use the regular group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
AnnaBridge 145:64910690c574 152 This parameter must be a number between Min_Data = 1 and Max_Data = 16.
AnnaBridge 145:64910690c574 153 Note: This parameter must be modified when no conversion is on going on regular group (ADC disabled, or ADC enabled without
AnnaBridge 145:64910690c574 154 continuous mode or external trigger that could launch a conversion). */
AnnaBridge 145:64910690c574 155
AnnaBridge 145:64910690c574 156 uint32_t DiscontinuousConvMode; /*!< Specify whether the conversions sequence of ADC group regular is performed in Complete-sequence/Discontinuous-sequence
AnnaBridge 145:64910690c574 157 (main sequence subdivided in successive parts).
AnnaBridge 145:64910690c574 158 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
AnnaBridge 145:64910690c574 159 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
AnnaBridge 145:64910690c574 160 This parameter can be set to ENABLE or DISABLE. */
AnnaBridge 145:64910690c574 161
AnnaBridge 145:64910690c574 162 uint32_t NbrOfDiscConversion; /*!< Specifies the number of discontinuous conversions in which the main sequence of ADC group regular (parameter NbrOfConversion) will be subdivided.
AnnaBridge 145:64910690c574 163 If parameter 'DiscontinuousConvMode' is disabled, this parameter is discarded.
AnnaBridge 145:64910690c574 164 This parameter must be a number between Min_Data = 1 and Max_Data = 8. */
AnnaBridge 145:64910690c574 165
AnnaBridge 145:64910690c574 166 uint32_t ExternalTrigConv; /*!< Select the external event source used to trigger ADC group regular conversion start.
AnnaBridge 145:64910690c574 167 If set to ADC_SOFTWARE_START, external triggers are disabled and software trigger is used instead.
AnnaBridge 145:64910690c574 168 This parameter can be a value of @ref ADC_regular_external_trigger_source.
AnnaBridge 145:64910690c574 169 Caution: external trigger source is common to all ADC instances. */
AnnaBridge 145:64910690c574 170
AnnaBridge 145:64910690c574 171 uint32_t ExternalTrigConvEdge; /*!< Select the external event edge used to trigger ADC group regular conversion start.
AnnaBridge 145:64910690c574 172 If trigger source is set to ADC_SOFTWARE_START, this parameter is discarded.
AnnaBridge 145:64910690c574 173 This parameter can be a value of @ref ADC_regular_external_trigger_edge */
AnnaBridge 145:64910690c574 174
AnnaBridge 145:64910690c574 175 uint32_t DMAContinuousRequests; /*!< Specify whether the DMA requests are performed in one shot mode (DMA transfer stops when number of conversions is reached)
AnnaBridge 145:64910690c574 176 or in continuous mode (DMA transfer unlimited, whatever number of conversions).
AnnaBridge 145:64910690c574 177 This parameter can be set to ENABLE or DISABLE.
AnnaBridge 145:64910690c574 178 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 145:64910690c574 179
AnnaBridge 145:64910690c574 180 uint32_t Overrun; /*!< Select the behavior in case of overrun: data overwritten or preserved (default).
AnnaBridge 145:64910690c574 181 This parameter applies to ADC group regular only.
AnnaBridge 161:aa5281ff4a02 182 This parameter can be a value of @ref ADC_HAL_EC_REG_OVR_DATA_BEHAVIOR.
AnnaBridge 145:64910690c574 183 Note: In case of overrun set to data preserved and usage with programming model with interruption (HAL_Start_IT()): ADC IRQ handler has to clear
AnnaBridge 145:64910690c574 184 end of conversion flags, this induces the release of the preserved data. If needed, this data can be saved in function
AnnaBridge 145:64910690c574 185 HAL_ADC_ConvCpltCallback(), placed in user program code (called before end of conversion flags clear).
AnnaBridge 145:64910690c574 186 Note: Error reporting with respect to the conversion mode:
AnnaBridge 145:64910690c574 187 - Usage with ADC conversion by polling for event or interruption: Error is reported only if overrun is set to data preserved. If overrun is set to data
AnnaBridge 145:64910690c574 188 overwritten, user can willingly not read all the converted data, this is not considered as an erroneous case.
AnnaBridge 145:64910690c574 189 - Usage with ADC conversion by DMA: Error is reported whatever overrun setting (DMA is expected to process all data from data register). */
AnnaBridge 145:64910690c574 190
AnnaBridge 145:64910690c574 191 uint32_t OversamplingMode; /*!< Specify whether the oversampling feature is enabled or disabled.
AnnaBridge 145:64910690c574 192 This parameter can be set to ENABLE or DISABLE.
AnnaBridge 145:64910690c574 193 Note: This parameter can be modified only if there is no conversion is ongoing on ADC groups regular and injected */
AnnaBridge 145:64910690c574 194
AnnaBridge 145:64910690c574 195 ADC_OversamplingTypeDef Oversampling; /*!< Specify the Oversampling parameters.
AnnaBridge 145:64910690c574 196 Caution: this setting overwrites the previous oversampling configuration if oversampling is already enabled. */
AnnaBridge 145:64910690c574 197
AnnaBridge 161:aa5281ff4a02 198 #if defined(ADC_CFGR_DFSDMCFG) &&defined(DFSDM1_Channel0)
AnnaBridge 145:64910690c574 199 uint32_t DFSDMConfig; /*!< Specify whether ADC conversion data is sent directly to DFSDM.
AnnaBridge 161:aa5281ff4a02 200 This parameter can be a value of @ref ADC_HAL_EC_REG_DFSDM_TRANSFER.
AnnaBridge 161:aa5281ff4a02 201 Note: This parameter can be modified only if there is no conversion is ongoing (both ADSTART and JADSTART cleared). */
AnnaBridge 161:aa5281ff4a02 202
AnnaBridge 161:aa5281ff4a02 203 #endif
AnnaBridge 145:64910690c574 204 }ADC_InitTypeDef;
AnnaBridge 145:64910690c574 205
AnnaBridge 145:64910690c574 206 /**
AnnaBridge 145:64910690c574 207 * @brief Structure definition of ADC channel for regular group
AnnaBridge 145:64910690c574 208 * @note The setting of these parameters by function HAL_ADC_ConfigChannel() is conditioned to ADC state.
AnnaBridge 145:64910690c574 209 * ADC state can be either:
AnnaBridge 145:64910690c574 210 * - For all parameters: ADC disabled (this is the only possible ADC state to modify parameter 'SingleDiff')
AnnaBridge 145:64910690c574 211 * - For all except parameters 'SamplingTime', 'Offset', 'OffsetNumber': ADC enabled without conversion on going on regular group.
AnnaBridge 145:64910690c574 212 * - For parameters 'SamplingTime', 'Offset', 'OffsetNumber': ADC enabled without conversion on going on regular and injected groups.
AnnaBridge 145:64910690c574 213 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
AnnaBridge 161:aa5281ff4a02 214 * without error reporting (as it can be the expected behavior in case of intended action to update another parameter (which fulfills the ADC state condition)
AnnaBridge 161:aa5281ff4a02 215 * on the fly).
AnnaBridge 145:64910690c574 216 */
AnnaBridge 145:64910690c574 217 typedef struct
AnnaBridge 145:64910690c574 218 {
AnnaBridge 145:64910690c574 219 uint32_t Channel; /*!< Specify the channel to configure into ADC regular group.
AnnaBridge 161:aa5281ff4a02 220 This parameter can be a value of @ref ADC_HAL_EC_CHANNEL
AnnaBridge 145:64910690c574 221 Note: Depending on devices and ADC instances, some channels may not be available on device package pins. Refer to device datasheet for channels availability. */
AnnaBridge 145:64910690c574 222
AnnaBridge 145:64910690c574 223 uint32_t Rank; /*!< Specify the rank in the regular group sequencer.
AnnaBridge 161:aa5281ff4a02 224 This parameter can be a value of @ref ADC_HAL_EC_REG_SEQ_RANKS
AnnaBridge 145:64910690c574 225 Note: to disable a channel or change order of conversion sequencer, rank containing a previous channel setting can be overwritten by
AnnaBridge 145:64910690c574 226 the new channel setting (or parameter number of conversions adjusted) */
AnnaBridge 145:64910690c574 227
AnnaBridge 145:64910690c574 228 uint32_t SamplingTime; /*!< Sampling time value to be set for the selected channel.
AnnaBridge 145:64910690c574 229 Unit: ADC clock cycles
AnnaBridge 145:64910690c574 230 Conversion time is the addition of sampling time and processing time
AnnaBridge 145:64910690c574 231 (12.5 ADC clock cycles at ADC resolution 12 bits, 10.5 cycles at 10 bits, 8.5 cycles at 8 bits, 6.5 cycles at 6 bits).
AnnaBridge 161:aa5281ff4a02 232 This parameter can be a value of @ref ADC_HAL_EC_CHANNEL_SAMPLINGTIME
AnnaBridge 145:64910690c574 233 Caution: This parameter applies to a channel that can be used into regular and/or injected group.
AnnaBridge 145:64910690c574 234 It overwrites the last setting.
AnnaBridge 145:64910690c574 235 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
AnnaBridge 145:64910690c574 236 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
AnnaBridge 145:64910690c574 237 Refer to device datasheet for timings values. */
AnnaBridge 145:64910690c574 238
AnnaBridge 145:64910690c574 239 uint32_t SingleDiff; /*!< Select single-ended or differential input.
AnnaBridge 145:64910690c574 240 In differential mode: Differential measurement is carried out between the selected channel 'i' (positive input) and channel 'i+1' (negative input).
AnnaBridge 145:64910690c574 241 Only channel 'i' has to be configured, channel 'i+1' is configured automatically.
AnnaBridge 161:aa5281ff4a02 242 This parameter must be a value of @ref ADC_HAL_EC_CHANNEL_SINGLE_DIFF_ENDING
AnnaBridge 145:64910690c574 243 Caution: This parameter applies to a channel that can be used in a regular and/or injected group.
AnnaBridge 145:64910690c574 244 It overwrites the last setting.
AnnaBridge 145:64910690c574 245 Note: Refer to Reference Manual to ensure the selected channel is available in differential mode.
AnnaBridge 145:64910690c574 246 Note: When configuring a channel 'i' in differential mode, the channel 'i+1' is not usable separately.
AnnaBridge 145:64910690c574 247 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
AnnaBridge 145:64910690c574 248 If ADC is enabled, this parameter setting is bypassed without error reporting (as it can be the expected behavior in case
AnnaBridge 145:64910690c574 249 of another parameter update on the fly) */
AnnaBridge 145:64910690c574 250
AnnaBridge 145:64910690c574 251 uint32_t OffsetNumber; /*!< Select the offset number
AnnaBridge 161:aa5281ff4a02 252 This parameter can be a value of @ref ADC_HAL_EC_OFFSET_NB
AnnaBridge 145:64910690c574 253 Caution: Only one offset is allowed per channel. This parameter overwrites the last setting. */
AnnaBridge 145:64910690c574 254
AnnaBridge 145:64910690c574 255 uint32_t Offset; /*!< Define the offset to be subtracted from the raw converted data.
AnnaBridge 145:64910690c574 256 Offset value must be a positive number.
AnnaBridge 145:64910690c574 257 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF,
AnnaBridge 145:64910690c574 258 0x3FF, 0xFF or 0x3F respectively.
AnnaBridge 145:64910690c574 259 Note: This parameter must be modified when no conversion is on going on both regular and injected groups (ADC disabled, or ADC enabled
AnnaBridge 145:64910690c574 260 without continuous mode or external trigger that could launch a conversion). */
AnnaBridge 161:aa5281ff4a02 261
AnnaBridge 145:64910690c574 262 }ADC_ChannelConfTypeDef;
AnnaBridge 145:64910690c574 263
AnnaBridge 145:64910690c574 264 /**
AnnaBridge 145:64910690c574 265 * @brief Structure definition of ADC analog watchdog
AnnaBridge 145:64910690c574 266 * @note The setting of these parameters by function HAL_ADC_AnalogWDGConfig() is conditioned to ADC state.
AnnaBridge 145:64910690c574 267 * ADC state can be either:
AnnaBridge 161:aa5281ff4a02 268 * - For all parameters: ADC disabled or ADC enabled without conversion on going on ADC groups regular and injected.
AnnaBridge 145:64910690c574 269 */
AnnaBridge 145:64910690c574 270 typedef struct
AnnaBridge 145:64910690c574 271 {
AnnaBridge 145:64910690c574 272 uint32_t WatchdogNumber; /*!< Select which ADC analog watchdog is monitoring the selected channel.
AnnaBridge 145:64910690c574 273 For Analog Watchdog 1: Only 1 channel can be monitored (or overall group of channels by setting parameter 'WatchdogMode')
AnnaBridge 145:64910690c574 274 For Analog Watchdog 2 and 3: Several channels can be monitored (by successive calls of 'HAL_ADC_AnalogWDGConfig()' for each channel)
AnnaBridge 161:aa5281ff4a02 275 This parameter can be a value of @ref ADC_HAL_EC_AWD_NUMBER. */
AnnaBridge 145:64910690c574 276
AnnaBridge 145:64910690c574 277 uint32_t WatchdogMode; /*!< Configure the ADC analog watchdog mode: single/all/none channels.
AnnaBridge 161:aa5281ff4a02 278 For Analog Watchdog 1: Configure the ADC analog watchdog mode: single channel or all channels, ADC groups regular and-or injected.
AnnaBridge 161:aa5281ff4a02 279 For Analog Watchdog 2 and 3: Several channels can be monitored by applying successively the AWD init structure. Channels on ADC group regular and injected are not differentiated: Set value 'ADC_ANALOGWATCHDOG_SINGLE_xxx' to monitor 1 channel, value 'ADC_ANALOGWATCHDOG_ALL_xxx' to monitor all channels, 'ADC_ANALOGWATCHDOG_NONE' to monitor no channel.
AnnaBridge 161:aa5281ff4a02 280 This parameter can be a value of @ref ADC_analog_watchdog_mode. */
AnnaBridge 145:64910690c574 281
AnnaBridge 145:64910690c574 282 uint32_t Channel; /*!< Select which ADC channel to monitor by analog watchdog.
AnnaBridge 145:64910690c574 283 For Analog Watchdog 1: this parameter has an effect only if parameter 'WatchdogMode' is configured on single channel (only 1 channel can be monitored).
AnnaBridge 145:64910690c574 284 For Analog Watchdog 2 and 3: Several channels can be monitored. To use this feature, call successively the function HAL_ADC_AnalogWDGConfig() for each channel to be added (or removed with value 'ADC_ANALOGWATCHDOG_NONE').
AnnaBridge 161:aa5281ff4a02 285 This parameter can be a value of @ref ADC_HAL_EC_CHANNEL. */
AnnaBridge 145:64910690c574 286
AnnaBridge 145:64910690c574 287 uint32_t ITMode; /*!< Specify whether the analog watchdog is configured in interrupt or polling mode.
AnnaBridge 145:64910690c574 288 This parameter can be set to ENABLE or DISABLE */
AnnaBridge 145:64910690c574 289
AnnaBridge 145:64910690c574 290 uint32_t HighThreshold; /*!< Configure the ADC analog watchdog High threshold value.
AnnaBridge 145:64910690c574 291 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number
AnnaBridge 145:64910690c574 292 between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively.
AnnaBridge 145:64910690c574 293 Note: Analog watchdog 2 and 3 are limited to a resolution of 8 bits: if ADC resolution is 12 bits
AnnaBridge 145:64910690c574 294 the 4 LSB are ignored, if ADC resolution is 10 bits the 2 LSB are ignored. */
AnnaBridge 145:64910690c574 295
AnnaBridge 145:64910690c574 296 uint32_t LowThreshold; /*!< Configures the ADC analog watchdog Low threshold value.
AnnaBridge 145:64910690c574 297 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number
AnnaBridge 145:64910690c574 298 between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively.
AnnaBridge 145:64910690c574 299 Note: Analog watchdog 2 and 3 are limited to a resolution of 8 bits: if ADC resolution is 12 bits
AnnaBridge 145:64910690c574 300 the 4 LSB are ignored, if ADC resolution is 10 bits the 2 LSB are ignored. */
AnnaBridge 145:64910690c574 301 }ADC_AnalogWDGConfTypeDef;
AnnaBridge 145:64910690c574 302
AnnaBridge 161:aa5281ff4a02 303 /**
AnnaBridge 161:aa5281ff4a02 304 * @brief ADC group injected contexts queue configuration
AnnaBridge 161:aa5281ff4a02 305 * @note Structure intended to be used only through structure "ADC_HandleTypeDef"
AnnaBridge 161:aa5281ff4a02 306 */
AnnaBridge 161:aa5281ff4a02 307 typedef struct
AnnaBridge 161:aa5281ff4a02 308 {
AnnaBridge 161:aa5281ff4a02 309 uint32_t ContextQueue; /*!< Injected channel configuration context: build-up over each
AnnaBridge 161:aa5281ff4a02 310 HAL_ADCEx_InjectedConfigChannel() call to finally initialize
AnnaBridge 161:aa5281ff4a02 311 JSQR register at HAL_ADCEx_InjectedConfigChannel() last call */
AnnaBridge 161:aa5281ff4a02 312
AnnaBridge 161:aa5281ff4a02 313 uint32_t ChannelCount; /*!< Number of channels in the injected sequence */
AnnaBridge 161:aa5281ff4a02 314 }ADC_InjectionConfigTypeDef;
AnnaBridge 161:aa5281ff4a02 315
AnnaBridge 145:64910690c574 316 /** @defgroup ADC_States ADC States
AnnaBridge 145:64910690c574 317 * @{
AnnaBridge 145:64910690c574 318 */
AnnaBridge 145:64910690c574 319
AnnaBridge 161:aa5281ff4a02 320 /**
AnnaBridge 145:64910690c574 321 * @brief HAL ADC state machine: ADC states definition (bitfields)
AnnaBridge 145:64910690c574 322 * @note ADC state machine is managed by bitfields, state must be compared
AnnaBridge 145:64910690c574 323 * with bit by bit.
AnnaBridge 145:64910690c574 324 * For example:
AnnaBridge 145:64910690c574 325 * " if (HAL_IS_BIT_SET(HAL_ADC_GetState(hadc1), HAL_ADC_STATE_REG_BUSY)) "
AnnaBridge 145:64910690c574 326 * " if (HAL_IS_BIT_SET(HAL_ADC_GetState(hadc1), HAL_ADC_STATE_AWD1) ) "
AnnaBridge 145:64910690c574 327 */
AnnaBridge 145:64910690c574 328 /* States of ADC global scope */
AnnaBridge 161:aa5281ff4a02 329 #define HAL_ADC_STATE_RESET (0x00000000U) /*!< ADC not yet initialized or disabled */
AnnaBridge 161:aa5281ff4a02 330 #define HAL_ADC_STATE_READY (0x00000001U) /*!< ADC peripheral ready for use */
AnnaBridge 161:aa5281ff4a02 331 #define HAL_ADC_STATE_BUSY_INTERNAL (0x00000002U) /*!< ADC is busy due to an internal process (initialization, calibration) */
AnnaBridge 161:aa5281ff4a02 332 #define HAL_ADC_STATE_TIMEOUT (0x00000004U) /*!< TimeOut occurrence */
AnnaBridge 145:64910690c574 333
AnnaBridge 145:64910690c574 334 /* States of ADC errors */
AnnaBridge 161:aa5281ff4a02 335 #define HAL_ADC_STATE_ERROR_INTERNAL (0x00000010U) /*!< Internal error occurrence */
AnnaBridge 161:aa5281ff4a02 336 #define HAL_ADC_STATE_ERROR_CONFIG (0x00000020U) /*!< Configuration error occurrence */
AnnaBridge 161:aa5281ff4a02 337 #define HAL_ADC_STATE_ERROR_DMA (0x00000040U) /*!< DMA error occurrence */
AnnaBridge 145:64910690c574 338
AnnaBridge 145:64910690c574 339 /* States of ADC group regular */
AnnaBridge 161:aa5281ff4a02 340 #define HAL_ADC_STATE_REG_BUSY (0x00000100U) /*!< A conversion on ADC group regular is ongoing or can occur (either by continuous mode,
AnnaBridge 161:aa5281ff4a02 341 external trigger, low power auto power-on (if feature available), multimode ADC master control (if feature available)) */
AnnaBridge 161:aa5281ff4a02 342 #define HAL_ADC_STATE_REG_EOC (0x00000200U) /*!< Conversion data available on group regular */
AnnaBridge 161:aa5281ff4a02 343 #define HAL_ADC_STATE_REG_OVR (0x00000400U) /*!< Overrun occurrence */
AnnaBridge 161:aa5281ff4a02 344 #define HAL_ADC_STATE_REG_EOSMP (0x00000800U) /*!< Not available on this STM32 serie: End Of Sampling flag raised */
AnnaBridge 145:64910690c574 345
AnnaBridge 145:64910690c574 346 /* States of ADC group injected */
AnnaBridge 161:aa5281ff4a02 347 #define HAL_ADC_STATE_INJ_BUSY (0x00001000U) /*!< A conversion on ADC group injected is ongoing or can occur (either by auto-injection mode,
AnnaBridge 161:aa5281ff4a02 348 external trigger, low power auto power-on (if feature available), multimode ADC master control (if feature available)) */
AnnaBridge 161:aa5281ff4a02 349 #define HAL_ADC_STATE_INJ_EOC (0x00002000U) /*!< Conversion data available on group injected */
AnnaBridge 161:aa5281ff4a02 350 #define HAL_ADC_STATE_INJ_JQOVF (0x00004000U) /*!< Injected queue overflow occurrence */
AnnaBridge 145:64910690c574 351
AnnaBridge 145:64910690c574 352 /* States of ADC analog watchdogs */
AnnaBridge 161:aa5281ff4a02 353 #define HAL_ADC_STATE_AWD1 (0x00010000U) /*!< Out-of-window occurrence of ADC analog watchdog 1 */
AnnaBridge 161:aa5281ff4a02 354 #define HAL_ADC_STATE_AWD2 (0x00020000U) /*!< Out-of-window occurrence of ADC analog watchdog 2 */
AnnaBridge 161:aa5281ff4a02 355 #define HAL_ADC_STATE_AWD3 (0x00040000U) /*!< Out-of-window occurrence of ADC analog watchdog 3 */
AnnaBridge 145:64910690c574 356
AnnaBridge 145:64910690c574 357 /* States of ADC multi-mode */
AnnaBridge 161:aa5281ff4a02 358 #define HAL_ADC_STATE_MULTIMODE_SLAVE (0x00100000U) /*!< ADC in multimode slave state, controlled by another ADC master (when feature available) */
AnnaBridge 145:64910690c574 359
AnnaBridge 145:64910690c574 360 /**
AnnaBridge 145:64910690c574 361 * @}
AnnaBridge 145:64910690c574 362 */
AnnaBridge 145:64910690c574 363
AnnaBridge 161:aa5281ff4a02 364 /**
AnnaBridge 161:aa5281ff4a02 365 * @brief ADC handle Structure definition
AnnaBridge 161:aa5281ff4a02 366 */
AnnaBridge 161:aa5281ff4a02 367 typedef struct
AnnaBridge 161:aa5281ff4a02 368 {
AnnaBridge 161:aa5281ff4a02 369 ADC_TypeDef *Instance; /*!< Register base address */
AnnaBridge 161:aa5281ff4a02 370
AnnaBridge 161:aa5281ff4a02 371 ADC_InitTypeDef Init; /*!< ADC initialization parameters and regular conversions setting */
AnnaBridge 161:aa5281ff4a02 372
AnnaBridge 161:aa5281ff4a02 373 DMA_HandleTypeDef *DMA_Handle; /*!< Pointer DMA Handler */
AnnaBridge 161:aa5281ff4a02 374
AnnaBridge 161:aa5281ff4a02 375 HAL_LockTypeDef Lock; /*!< ADC locking object */
AnnaBridge 161:aa5281ff4a02 376
AnnaBridge 161:aa5281ff4a02 377 __IO uint32_t State; /*!< ADC communication state (bitmap of ADC states) */
AnnaBridge 161:aa5281ff4a02 378
AnnaBridge 161:aa5281ff4a02 379 __IO uint32_t ErrorCode; /*!< ADC Error code */
AnnaBridge 161:aa5281ff4a02 380
AnnaBridge 161:aa5281ff4a02 381 ADC_InjectionConfigTypeDef InjectionConfig ; /*!< ADC injected channel configuration build-up structure */
AnnaBridge 161:aa5281ff4a02 382 }ADC_HandleTypeDef;
AnnaBridge 145:64910690c574 383
AnnaBridge 145:64910690c574 384 /**
AnnaBridge 145:64910690c574 385 * @}
AnnaBridge 145:64910690c574 386 */
AnnaBridge 145:64910690c574 387
AnnaBridge 145:64910690c574 388
AnnaBridge 145:64910690c574 389 /* Exported constants --------------------------------------------------------*/
AnnaBridge 145:64910690c574 390
AnnaBridge 145:64910690c574 391 /** @defgroup ADC_Exported_Constants ADC Exported Constants
AnnaBridge 145:64910690c574 392 * @{
AnnaBridge 145:64910690c574 393 */
AnnaBridge 145:64910690c574 394
AnnaBridge 145:64910690c574 395 /** @defgroup ADC_Error_Code ADC Error Code
AnnaBridge 145:64910690c574 396 * @{
AnnaBridge 145:64910690c574 397 */
AnnaBridge 161:aa5281ff4a02 398 #define HAL_ADC_ERROR_NONE (0x00U) /*!< No error */
AnnaBridge 161:aa5281ff4a02 399 #define HAL_ADC_ERROR_INTERNAL (0x01U) /*!< ADC IP internal error (problem of clocking,
AnnaBridge 161:aa5281ff4a02 400 enable/disable, erroneous state, ...) */
AnnaBridge 161:aa5281ff4a02 401 #define HAL_ADC_ERROR_OVR (0x02U) /*!< Overrun error */
AnnaBridge 161:aa5281ff4a02 402 #define HAL_ADC_ERROR_DMA (0x04U) /*!< DMA transfer error */
AnnaBridge 161:aa5281ff4a02 403 #define HAL_ADC_ERROR_JQOVF (0x08U) /*!< Injected context queue overflow error */
AnnaBridge 145:64910690c574 404 /**
AnnaBridge 145:64910690c574 405 * @}
AnnaBridge 145:64910690c574 406 */
AnnaBridge 145:64910690c574 407
AnnaBridge 161:aa5281ff4a02 408 /** @defgroup ADC_HAL_EC_COMMON_CLOCK_SOURCE ADC common - Clock source
AnnaBridge 145:64910690c574 409 * @{
AnnaBridge 145:64910690c574 410 */
AnnaBridge 161:aa5281ff4a02 411 #define ADC_CLOCK_SYNC_PCLK_DIV1 (LL_ADC_CLOCK_SYNC_PCLK_DIV1) /*!< ADC synchronous clock derived from AHB clock without prescaler */
AnnaBridge 161:aa5281ff4a02 412 #define ADC_CLOCK_SYNC_PCLK_DIV2 (LL_ADC_CLOCK_SYNC_PCLK_DIV2) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 2 */
AnnaBridge 161:aa5281ff4a02 413 #define ADC_CLOCK_SYNC_PCLK_DIV4 (LL_ADC_CLOCK_SYNC_PCLK_DIV4) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 4 */
AnnaBridge 145:64910690c574 414
AnnaBridge 161:aa5281ff4a02 415 #define ADC_CLOCK_ASYNC_DIV1 (LL_ADC_CLOCK_ASYNC_DIV1) /*!< ADC asynchronous clock without prescaler */
AnnaBridge 161:aa5281ff4a02 416 #define ADC_CLOCK_ASYNC_DIV2 (LL_ADC_CLOCK_ASYNC_DIV2) /*!< ADC asynchronous clock with prescaler division by 2 */
AnnaBridge 161:aa5281ff4a02 417 #define ADC_CLOCK_ASYNC_DIV4 (LL_ADC_CLOCK_ASYNC_DIV4) /*!< ADC asynchronous clock with prescaler division by 4 */
AnnaBridge 161:aa5281ff4a02 418 #define ADC_CLOCK_ASYNC_DIV6 (LL_ADC_CLOCK_ASYNC_DIV6) /*!< ADC asynchronous clock with prescaler division by 6 */
AnnaBridge 161:aa5281ff4a02 419 #define ADC_CLOCK_ASYNC_DIV8 (LL_ADC_CLOCK_ASYNC_DIV8) /*!< ADC asynchronous clock with prescaler division by 8 */
AnnaBridge 161:aa5281ff4a02 420 #define ADC_CLOCK_ASYNC_DIV10 (LL_ADC_CLOCK_ASYNC_DIV10) /*!< ADC asynchronous clock with prescaler division by 10 */
AnnaBridge 161:aa5281ff4a02 421 #define ADC_CLOCK_ASYNC_DIV12 (LL_ADC_CLOCK_ASYNC_DIV12) /*!< ADC asynchronous clock with prescaler division by 12 */
AnnaBridge 161:aa5281ff4a02 422 #define ADC_CLOCK_ASYNC_DIV16 (LL_ADC_CLOCK_ASYNC_DIV16) /*!< ADC asynchronous clock with prescaler division by 16 */
AnnaBridge 161:aa5281ff4a02 423 #define ADC_CLOCK_ASYNC_DIV32 (LL_ADC_CLOCK_ASYNC_DIV32) /*!< ADC asynchronous clock with prescaler division by 32 */
AnnaBridge 161:aa5281ff4a02 424 #define ADC_CLOCK_ASYNC_DIV64 (LL_ADC_CLOCK_ASYNC_DIV64) /*!< ADC asynchronous clock with prescaler division by 64 */
AnnaBridge 161:aa5281ff4a02 425 #define ADC_CLOCK_ASYNC_DIV128 (LL_ADC_CLOCK_ASYNC_DIV128) /*!< ADC asynchronous clock with prescaler division by 128 */
AnnaBridge 161:aa5281ff4a02 426 #define ADC_CLOCK_ASYNC_DIV256 (LL_ADC_CLOCK_ASYNC_DIV256) /*!< ADC asynchronous clock with prescaler division by 256 */
AnnaBridge 161:aa5281ff4a02 427
AnnaBridge 161:aa5281ff4a02 428 #define ADC_CLOCKPRESCALER_PCLK_DIV1 ADC_CLOCK_SYNC_PCLK_DIV1 /*!< Obsolete naming, kept for compatibility with some other devices */
AnnaBridge 161:aa5281ff4a02 429 #define ADC_CLOCKPRESCALER_PCLK_DIV2 ADC_CLOCK_SYNC_PCLK_DIV2 /*!< Obsolete naming, kept for compatibility with some other devices */
AnnaBridge 161:aa5281ff4a02 430 #define ADC_CLOCKPRESCALER_PCLK_DIV4 ADC_CLOCK_SYNC_PCLK_DIV4 /*!< Obsolete naming, kept for compatibility with some other devices */
AnnaBridge 145:64910690c574 431 /**
AnnaBridge 145:64910690c574 432 * @}
AnnaBridge 145:64910690c574 433 */
AnnaBridge 145:64910690c574 434
AnnaBridge 161:aa5281ff4a02 435 /** @defgroup ADC_HAL_EC_RESOLUTION ADC instance - Resolution
AnnaBridge 145:64910690c574 436 * @{
AnnaBridge 145:64910690c574 437 */
AnnaBridge 161:aa5281ff4a02 438 #define ADC_RESOLUTION_12B (LL_ADC_RESOLUTION_12B) /*!< ADC resolution 12 bits */
AnnaBridge 161:aa5281ff4a02 439 #define ADC_RESOLUTION_10B (LL_ADC_RESOLUTION_10B) /*!< ADC resolution 10 bits */
AnnaBridge 161:aa5281ff4a02 440 #define ADC_RESOLUTION_8B (LL_ADC_RESOLUTION_8B) /*!< ADC resolution 8 bits */
AnnaBridge 161:aa5281ff4a02 441 #define ADC_RESOLUTION_6B (LL_ADC_RESOLUTION_6B) /*!< ADC resolution 6 bits */
AnnaBridge 145:64910690c574 442 /**
AnnaBridge 145:64910690c574 443 * @}
AnnaBridge 145:64910690c574 444 */
AnnaBridge 145:64910690c574 445
AnnaBridge 161:aa5281ff4a02 446 /** @defgroup ADC_HAL_EC_DATA_ALIGN ADC conversion data alignment
AnnaBridge 145:64910690c574 447 * @{
AnnaBridge 145:64910690c574 448 */
AnnaBridge 161:aa5281ff4a02 449 #define ADC_DATAALIGN_RIGHT (LL_ADC_DATA_ALIGN_RIGHT)/*!< ADC conversion data alignment: right aligned (alignment on data register LSB bit 0)*/
AnnaBridge 161:aa5281ff4a02 450 #define ADC_DATAALIGN_LEFT (LL_ADC_DATA_ALIGN_LEFT) /*!< ADC conversion data alignment: left aligned (aligment on data register MSB bit 15)*/
AnnaBridge 145:64910690c574 451 /**
AnnaBridge 145:64910690c574 452 * @}
AnnaBridge 145:64910690c574 453 */
AnnaBridge 145:64910690c574 454
AnnaBridge 145:64910690c574 455 /** @defgroup ADC_Scan_mode ADC sequencer scan mode
AnnaBridge 145:64910690c574 456 * @{
AnnaBridge 145:64910690c574 457 */
AnnaBridge 161:aa5281ff4a02 458 #define ADC_SCAN_DISABLE (0x00000000U) /*!< Scan mode disabled */
AnnaBridge 161:aa5281ff4a02 459 #define ADC_SCAN_ENABLE (0x00000001U) /*!< Scan mode enabled */
AnnaBridge 145:64910690c574 460 /**
AnnaBridge 145:64910690c574 461 * @}
AnnaBridge 145:64910690c574 462 */
AnnaBridge 145:64910690c574 463
AnnaBridge 145:64910690c574 464 /** @defgroup ADC_regular_external_trigger_source ADC group regular trigger source
AnnaBridge 145:64910690c574 465 * @{
AnnaBridge 145:64910690c574 466 */
AnnaBridge 145:64910690c574 467 /* ADC group regular trigger sources for all ADC instances */
AnnaBridge 161:aa5281ff4a02 468 #define ADC_SOFTWARE_START (LL_ADC_REG_TRIG_SOFTWARE) /*!< ADC group regular conversion trigger internal: SW start. */
AnnaBridge 161:aa5281ff4a02 469 #define ADC_EXTERNALTRIG_T1_TRGO (LL_ADC_REG_TRIG_EXT_TIM1_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 470 #define ADC_EXTERNALTRIG_T1_TRGO2 (LL_ADC_REG_TRIG_EXT_TIM1_TRGO2) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 471 #define ADC_EXTERNALTRIG_T1_CC1 (LL_ADC_REG_TRIG_EXT_TIM1_CH1) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 472 #define ADC_EXTERNALTRIG_T1_CC2 (LL_ADC_REG_TRIG_EXT_TIM1_CH2) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 473 #define ADC_EXTERNALTRIG_T1_CC3 (LL_ADC_REG_TRIG_EXT_TIM1_CH3) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 474 #define ADC_EXTERNALTRIG_T2_TRGO (LL_ADC_REG_TRIG_EXT_TIM2_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 475 #define ADC_EXTERNALTRIG_T2_CC2 (LL_ADC_REG_TRIG_EXT_TIM2_CH2) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 476 #define ADC_EXTERNALTRIG_T3_TRGO (LL_ADC_REG_TRIG_EXT_TIM3_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 477 #define ADC_EXTERNALTRIG_T3_CC4 (LL_ADC_REG_TRIG_EXT_TIM3_CH4) /*!< ADC group regular conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 478 #define ADC_EXTERNALTRIG_T4_TRGO (LL_ADC_REG_TRIG_EXT_TIM4_CH4) /*!< ADC group regular conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 479 #define ADC_EXTERNALTRIG_T4_CC4 (LL_ADC_REG_TRIG_EXT_TIM4_CH4) /*!< ADC group regular conversion trigger from external IP: TIM4 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 480 #define ADC_EXTERNALTRIG_T6_TRGO (LL_ADC_REG_TRIG_EXT_TIM6_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 481 #define ADC_EXTERNALTRIG_T8_TRGO (LL_ADC_REG_TRIG_EXT_TIM8_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 482 #define ADC_EXTERNALTRIG_T8_TRGO2 (LL_ADC_REG_TRIG_EXT_TIM8_TRGO2) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 483 #define ADC_EXTERNALTRIG_T15_TRGO (LL_ADC_REG_TRIG_EXT_TIM15_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM15 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 161:aa5281ff4a02 484 #define ADC_EXTERNALTRIG_EXT_IT11 (LL_ADC_REG_TRIG_EXT_EXTI_LINE11) /*!< ADC group regular conversion trigger from external IP: external interrupt line 11. Trigger edge set to rising edge (default setting). */
AnnaBridge 145:64910690c574 485 /**
AnnaBridge 145:64910690c574 486 * @}
AnnaBridge 145:64910690c574 487 */
AnnaBridge 145:64910690c574 488
AnnaBridge 145:64910690c574 489 /** @defgroup ADC_regular_external_trigger_edge ADC group regular trigger edge (when external trigger is selected)
AnnaBridge 145:64910690c574 490 * @{
AnnaBridge 145:64910690c574 491 */
AnnaBridge 161:aa5281ff4a02 492 #define ADC_EXTERNALTRIGCONVEDGE_NONE (0x00000000) /*!< Regular conversions hardware trigger detection disabled */
AnnaBridge 161:aa5281ff4a02 493 #define ADC_EXTERNALTRIGCONVEDGE_RISING (ADC_CFGR_EXTEN_0) /*!< Regular conversions hardware trigger detection on the rising edge */
AnnaBridge 161:aa5281ff4a02 494 #define ADC_EXTERNALTRIGCONVEDGE_FALLING (ADC_CFGR_EXTEN_1) /*!< Regular conversions hardware trigger detection on the falling edge */
AnnaBridge 161:aa5281ff4a02 495 #define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING (ADC_CFGR_EXTEN) /*!< Regular conversions hardware trigger detection on both the rising and falling edges */
AnnaBridge 145:64910690c574 496 /**
AnnaBridge 145:64910690c574 497 * @}
AnnaBridge 145:64910690c574 498 */
AnnaBridge 145:64910690c574 499
AnnaBridge 145:64910690c574 500 /** @defgroup ADC_EOCSelection ADC sequencer end of unitary conversion or sequence conversions
AnnaBridge 145:64910690c574 501 * @{
AnnaBridge 145:64910690c574 502 */
AnnaBridge 161:aa5281ff4a02 503 #define ADC_EOC_SINGLE_CONV (ADC_ISR_EOC) /*!< End of unitary conversion flag */
AnnaBridge 161:aa5281ff4a02 504 #define ADC_EOC_SEQ_CONV (ADC_ISR_EOS) /*!< End of sequence conversions flag */
AnnaBridge 145:64910690c574 505 /**
AnnaBridge 145:64910690c574 506 * @}
AnnaBridge 145:64910690c574 507 */
AnnaBridge 145:64910690c574 508
AnnaBridge 161:aa5281ff4a02 509 /** @defgroup ADC_HAL_EC_REG_OVR_DATA_BEHAVIOR ADC group regular - Overrun behavior on conversion data
AnnaBridge 145:64910690c574 510 * @{
AnnaBridge 145:64910690c574 511 */
AnnaBridge 161:aa5281ff4a02 512 #define ADC_OVR_DATA_PRESERVED (LL_ADC_REG_OVR_DATA_PRESERVED) /*!< ADC group regular behavior in case of overrun: data preserved */
AnnaBridge 161:aa5281ff4a02 513 #define ADC_OVR_DATA_OVERWRITTEN (LL_ADC_REG_OVR_DATA_OVERWRITTEN) /*!< ADC group regular behavior in case of overrun: data overwritten */
AnnaBridge 145:64910690c574 514 /**
AnnaBridge 145:64910690c574 515 * @}
AnnaBridge 145:64910690c574 516 */
AnnaBridge 145:64910690c574 517
AnnaBridge 161:aa5281ff4a02 518 /** @defgroup ADC_HAL_EC_REG_SEQ_RANKS ADC group regular - Sequencer ranks
AnnaBridge 145:64910690c574 519 * @{
AnnaBridge 145:64910690c574 520 */
AnnaBridge 161:aa5281ff4a02 521 #define ADC_REGULAR_RANK_1 (LL_ADC_REG_RANK_1) /*!< ADC group regular sequencer rank 1 */
AnnaBridge 161:aa5281ff4a02 522 #define ADC_REGULAR_RANK_2 (LL_ADC_REG_RANK_2) /*!< ADC group regular sequencer rank 2 */
AnnaBridge 161:aa5281ff4a02 523 #define ADC_REGULAR_RANK_3 (LL_ADC_REG_RANK_3) /*!< ADC group regular sequencer rank 3 */
AnnaBridge 161:aa5281ff4a02 524 #define ADC_REGULAR_RANK_4 (LL_ADC_REG_RANK_4) /*!< ADC group regular sequencer rank 4 */
AnnaBridge 161:aa5281ff4a02 525 #define ADC_REGULAR_RANK_5 (LL_ADC_REG_RANK_5) /*!< ADC group regular sequencer rank 5 */
AnnaBridge 161:aa5281ff4a02 526 #define ADC_REGULAR_RANK_6 (LL_ADC_REG_RANK_6) /*!< ADC group regular sequencer rank 6 */
AnnaBridge 161:aa5281ff4a02 527 #define ADC_REGULAR_RANK_7 (LL_ADC_REG_RANK_7) /*!< ADC group regular sequencer rank 7 */
AnnaBridge 161:aa5281ff4a02 528 #define ADC_REGULAR_RANK_8 (LL_ADC_REG_RANK_8) /*!< ADC group regular sequencer rank 8 */
AnnaBridge 161:aa5281ff4a02 529 #define ADC_REGULAR_RANK_9 (LL_ADC_REG_RANK_9) /*!< ADC group regular sequencer rank 9 */
AnnaBridge 161:aa5281ff4a02 530 #define ADC_REGULAR_RANK_10 (LL_ADC_REG_RANK_10) /*!< ADC group regular sequencer rank 10 */
AnnaBridge 161:aa5281ff4a02 531 #define ADC_REGULAR_RANK_11 (LL_ADC_REG_RANK_11) /*!< ADC group regular sequencer rank 11 */
AnnaBridge 161:aa5281ff4a02 532 #define ADC_REGULAR_RANK_12 (LL_ADC_REG_RANK_12) /*!< ADC group regular sequencer rank 12 */
AnnaBridge 161:aa5281ff4a02 533 #define ADC_REGULAR_RANK_13 (LL_ADC_REG_RANK_13) /*!< ADC group regular sequencer rank 13 */
AnnaBridge 161:aa5281ff4a02 534 #define ADC_REGULAR_RANK_14 (LL_ADC_REG_RANK_14) /*!< ADC group regular sequencer rank 14 */
AnnaBridge 161:aa5281ff4a02 535 #define ADC_REGULAR_RANK_15 (LL_ADC_REG_RANK_15) /*!< ADC group regular sequencer rank 15 */
AnnaBridge 161:aa5281ff4a02 536 #define ADC_REGULAR_RANK_16 (LL_ADC_REG_RANK_16) /*!< ADC group regular sequencer rank 16 */
AnnaBridge 145:64910690c574 537 /**
AnnaBridge 145:64910690c574 538 * @}
AnnaBridge 145:64910690c574 539 */
AnnaBridge 145:64910690c574 540
AnnaBridge 161:aa5281ff4a02 541 /** @defgroup ADC_HAL_EC_CHANNEL_SAMPLINGTIME Channel - Sampling time
AnnaBridge 161:aa5281ff4a02 542 * @{
AnnaBridge 161:aa5281ff4a02 543 */
AnnaBridge 161:aa5281ff4a02 544 #define ADC_SAMPLETIME_2CYCLES_5 (LL_ADC_SAMPLINGTIME_2CYCLES_5) /*!< Sampling time 2.5 ADC clock cycles */
AnnaBridge 161:aa5281ff4a02 545 #define ADC_SAMPLETIME_6CYCLES_5 (LL_ADC_SAMPLINGTIME_6CYCLES_5) /*!< Sampling time 6.5 ADC clock cycles */
AnnaBridge 161:aa5281ff4a02 546 #define ADC_SAMPLETIME_12CYCLES_5 (LL_ADC_SAMPLINGTIME_12CYCLES_5) /*!< Sampling time 12.5 ADC clock cycles */
AnnaBridge 161:aa5281ff4a02 547 #define ADC_SAMPLETIME_24CYCLES_5 (LL_ADC_SAMPLINGTIME_24CYCLES_5) /*!< Sampling time 24.5 ADC clock cycles */
AnnaBridge 161:aa5281ff4a02 548 #define ADC_SAMPLETIME_47CYCLES_5 (LL_ADC_SAMPLINGTIME_47CYCLES_5) /*!< Sampling time 47.5 ADC clock cycles */
AnnaBridge 161:aa5281ff4a02 549 #define ADC_SAMPLETIME_92CYCLES_5 (LL_ADC_SAMPLINGTIME_92CYCLES_5) /*!< Sampling time 92.5 ADC clock cycles */
AnnaBridge 161:aa5281ff4a02 550 #define ADC_SAMPLETIME_247CYCLES_5 (LL_ADC_SAMPLINGTIME_247CYCLES_5) /*!< Sampling time 247.5 ADC clock cycles */
AnnaBridge 161:aa5281ff4a02 551 #define ADC_SAMPLETIME_640CYCLES_5 (LL_ADC_SAMPLINGTIME_640CYCLES_5) /*!< Sampling time 640.5 ADC clock cycles */
AnnaBridge 161:aa5281ff4a02 552 #if defined(ADC_SMPR1_SMPPLUS)
AnnaBridge 161:aa5281ff4a02 553 #define ADC_SAMPLETIME_3CYCLES_5 (ADC_SMPR1_SMPPLUS | LL_ADC_SAMPLINGTIME_2CYCLES_5) /*!< Sampling time 3.5 ADC clock cycles. If selected, this sampling time replaces all sampling time 2.5 ADC clock cycles. These 2 sampling times cannot be used simultaneously. */
AnnaBridge 161:aa5281ff4a02 554 #endif
AnnaBridge 161:aa5281ff4a02 555 /**
AnnaBridge 161:aa5281ff4a02 556 * @}
AnnaBridge 161:aa5281ff4a02 557 */
AnnaBridge 161:aa5281ff4a02 558
AnnaBridge 161:aa5281ff4a02 559 /** @defgroup ADC_HAL_EC_CHANNEL ADC instance - Channel number
AnnaBridge 145:64910690c574 560 * @{
AnnaBridge 145:64910690c574 561 */
AnnaBridge 161:aa5281ff4a02 562 /* Note: VrefInt, TempSensor and Vbat internal channels are not available on */
AnnaBridge 161:aa5281ff4a02 563 /* all ADC instances (refer to Reference Manual). */
AnnaBridge 161:aa5281ff4a02 564 #define ADC_CHANNEL_0 (LL_ADC_CHANNEL_0) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN0 */
AnnaBridge 161:aa5281ff4a02 565 #define ADC_CHANNEL_1 (LL_ADC_CHANNEL_1) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN1 */
AnnaBridge 161:aa5281ff4a02 566 #define ADC_CHANNEL_2 (LL_ADC_CHANNEL_2) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN2 */
AnnaBridge 161:aa5281ff4a02 567 #define ADC_CHANNEL_3 (LL_ADC_CHANNEL_3) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN3 */
AnnaBridge 161:aa5281ff4a02 568 #define ADC_CHANNEL_4 (LL_ADC_CHANNEL_4) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN4 */
AnnaBridge 161:aa5281ff4a02 569 #define ADC_CHANNEL_5 (LL_ADC_CHANNEL_5) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN5 */
AnnaBridge 161:aa5281ff4a02 570 #define ADC_CHANNEL_6 (LL_ADC_CHANNEL_6) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN6 */
AnnaBridge 161:aa5281ff4a02 571 #define ADC_CHANNEL_7 (LL_ADC_CHANNEL_7) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN7 */
AnnaBridge 161:aa5281ff4a02 572 #define ADC_CHANNEL_8 (LL_ADC_CHANNEL_8) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN8 */
AnnaBridge 161:aa5281ff4a02 573 #define ADC_CHANNEL_9 (LL_ADC_CHANNEL_9) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN9 */
AnnaBridge 161:aa5281ff4a02 574 #define ADC_CHANNEL_10 (LL_ADC_CHANNEL_10) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN10 */
AnnaBridge 161:aa5281ff4a02 575 #define ADC_CHANNEL_11 (LL_ADC_CHANNEL_11) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN11 */
AnnaBridge 161:aa5281ff4a02 576 #define ADC_CHANNEL_12 (LL_ADC_CHANNEL_12) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN12 */
AnnaBridge 161:aa5281ff4a02 577 #define ADC_CHANNEL_13 (LL_ADC_CHANNEL_13) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN13 */
AnnaBridge 161:aa5281ff4a02 578 #define ADC_CHANNEL_14 (LL_ADC_CHANNEL_14) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN14 */
AnnaBridge 161:aa5281ff4a02 579 #define ADC_CHANNEL_15 (LL_ADC_CHANNEL_15) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN15 */
AnnaBridge 161:aa5281ff4a02 580 #define ADC_CHANNEL_16 (LL_ADC_CHANNEL_16) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN16 */
AnnaBridge 161:aa5281ff4a02 581 #define ADC_CHANNEL_17 (LL_ADC_CHANNEL_17) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN17 */
AnnaBridge 161:aa5281ff4a02 582 #define ADC_CHANNEL_18 (LL_ADC_CHANNEL_18) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN18 */
AnnaBridge 161:aa5281ff4a02 583 #define ADC_CHANNEL_VREFINT (LL_ADC_CHANNEL_VREFINT) /*!< ADC internal channel connected to VrefInt: Internal voltage reference. */
AnnaBridge 161:aa5281ff4a02 584 #define ADC_CHANNEL_TEMPSENSOR (LL_ADC_CHANNEL_TEMPSENSOR) /*!< ADC internal channel connected to Temperature sensor. */
AnnaBridge 161:aa5281ff4a02 585 #define ADC_CHANNEL_VBAT (LL_ADC_CHANNEL_VBAT) /*!< ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda. */
AnnaBridge 145:64910690c574 586 #if defined(ADC1) && !defined(ADC2)
AnnaBridge 161:aa5281ff4a02 587 #define ADC_CHANNEL_DAC1CH1 (LL_ADC_CHANNEL_DAC1CH1) /*!< ADC internal channel connected to DAC1 channel 1, channel specific to ADC1. This channel is shared with ADC internal channel connected to temperature sensor, selection is done using function @ref LL_ADC_SetCommonPathInternalCh(). */
AnnaBridge 161:aa5281ff4a02 588 #define ADC_CHANNEL_DAC1CH2 (LL_ADC_CHANNEL_DAC1CH2) /*!< ADC internal channel connected to DAC1 channel 2, channel specific to ADC1. This channel is shared with ADC internal channel connected to Vbat, selection is done using function @ref LL_ADC_SetCommonPathInternalCh(). */
AnnaBridge 145:64910690c574 589 #elif defined(ADC2)
AnnaBridge 161:aa5281ff4a02 590 #define ADC_CHANNEL_DAC1CH1_ADC2 (LL_ADC_CHANNEL_DAC1CH1_ADC2) /*!< ADC internal channel connected to DAC1 channel 1, channel specific to ADC2 */
AnnaBridge 161:aa5281ff4a02 591 #define ADC_CHANNEL_DAC1CH2_ADC2 (LL_ADC_CHANNEL_DAC1CH2_ADC2) /*!< ADC internal channel connected to DAC1 channel 2, channel specific to ADC2 */
AnnaBridge 145:64910690c574 592 #if defined(ADC3)
AnnaBridge 161:aa5281ff4a02 593 #define ADC_CHANNEL_DAC1CH1_ADC3 (LL_ADC_CHANNEL_DAC1CH1_ADC3) /*!< ADC internal channel connected to DAC1 channel 1, channel specific to ADC3 */
AnnaBridge 161:aa5281ff4a02 594 #define ADC_CHANNEL_DAC1CH2_ADC3 (LL_ADC_CHANNEL_DAC1CH2_ADC3) /*!< ADC internal channel connected to DAC1 channel 2, channel specific to ADC3 */
AnnaBridge 145:64910690c574 595 #endif
AnnaBridge 145:64910690c574 596 #endif
AnnaBridge 145:64910690c574 597 /**
AnnaBridge 145:64910690c574 598 * @}
AnnaBridge 145:64910690c574 599 */
AnnaBridge 145:64910690c574 600
AnnaBridge 161:aa5281ff4a02 601 /** @defgroup ADC_HAL_EC_AWD_NUMBER Analog watchdog - Analog watchdog number
AnnaBridge 161:aa5281ff4a02 602 * @{
AnnaBridge 161:aa5281ff4a02 603 */
AnnaBridge 161:aa5281ff4a02 604 #define ADC_ANALOGWATCHDOG_1 (LL_ADC_AWD1) /*!< ADC analog watchdog number 1 */
AnnaBridge 161:aa5281ff4a02 605 #define ADC_ANALOGWATCHDOG_2 (LL_ADC_AWD2) /*!< ADC analog watchdog number 2 */
AnnaBridge 161:aa5281ff4a02 606 #define ADC_ANALOGWATCHDOG_3 (LL_ADC_AWD3) /*!< ADC analog watchdog number 3 */
AnnaBridge 161:aa5281ff4a02 607 /**
AnnaBridge 161:aa5281ff4a02 608 * @}
AnnaBridge 161:aa5281ff4a02 609 */
AnnaBridge 161:aa5281ff4a02 610
AnnaBridge 161:aa5281ff4a02 611 /** @defgroup ADC_analog_watchdog_mode ADC Analog Watchdog Mode
AnnaBridge 161:aa5281ff4a02 612 * @{
AnnaBridge 161:aa5281ff4a02 613 */
AnnaBridge 161:aa5281ff4a02 614 #define ADC_ANALOGWATCHDOG_NONE (0x00000000U) /*!< No analog watchdog selected */
AnnaBridge 161:aa5281ff4a02 615 #define ADC_ANALOGWATCHDOG_SINGLE_REG (ADC_CFGR_AWD1SGL | ADC_CFGR_AWD1EN) /*!< Analog watchdog applied to a regular group single channel */
AnnaBridge 161:aa5281ff4a02 616 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC (ADC_CFGR_AWD1SGL | ADC_CFGR_JAWD1EN) /*!< Analog watchdog applied to an injected group single channel */
AnnaBridge 161:aa5281ff4a02 617 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC (ADC_CFGR_AWD1SGL | ADC_CFGR_AWD1EN | ADC_CFGR_JAWD1EN) /*!< Analog watchdog applied to a regular and injected groups single channel */
AnnaBridge 161:aa5281ff4a02 618 #define ADC_ANALOGWATCHDOG_ALL_REG (ADC_CFGR_AWD1EN) /*!< Analog watchdog applied to regular group all channels */
AnnaBridge 161:aa5281ff4a02 619 #define ADC_ANALOGWATCHDOG_ALL_INJEC (ADC_CFGR_JAWD1EN) /*!< Analog watchdog applied to injected group all channels */
AnnaBridge 161:aa5281ff4a02 620 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC (ADC_CFGR_AWD1EN | ADC_CFGR_JAWD1EN) /*!< Analog watchdog applied to regular and injected groups all channels */
AnnaBridge 161:aa5281ff4a02 621 /**
AnnaBridge 161:aa5281ff4a02 622 * @}
AnnaBridge 161:aa5281ff4a02 623 */
AnnaBridge 161:aa5281ff4a02 624
AnnaBridge 161:aa5281ff4a02 625 /** @defgroup ADC_HAL_EC_OVS_RATIO Oversampling - Ratio
AnnaBridge 161:aa5281ff4a02 626 * @{
AnnaBridge 161:aa5281ff4a02 627 */
AnnaBridge 161:aa5281ff4a02 628 #define ADC_OVERSAMPLING_RATIO_2 (LL_ADC_OVS_RATIO_2) /*!< ADC oversampling ratio of 2 (2 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 161:aa5281ff4a02 629 #define ADC_OVERSAMPLING_RATIO_4 (LL_ADC_OVS_RATIO_4) /*!< ADC oversampling ratio of 4 (4 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 161:aa5281ff4a02 630 #define ADC_OVERSAMPLING_RATIO_8 (LL_ADC_OVS_RATIO_8) /*!< ADC oversampling ratio of 8 (8 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 161:aa5281ff4a02 631 #define ADC_OVERSAMPLING_RATIO_16 (LL_ADC_OVS_RATIO_16) /*!< ADC oversampling ratio of 16 (16 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 161:aa5281ff4a02 632 #define ADC_OVERSAMPLING_RATIO_32 (LL_ADC_OVS_RATIO_32) /*!< ADC oversampling ratio of 32 (32 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 161:aa5281ff4a02 633 #define ADC_OVERSAMPLING_RATIO_64 (LL_ADC_OVS_RATIO_64) /*!< ADC oversampling ratio of 64 (64 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 161:aa5281ff4a02 634 #define ADC_OVERSAMPLING_RATIO_128 (LL_ADC_OVS_RATIO_128) /*!< ADC oversampling ratio of 128 (128 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 161:aa5281ff4a02 635 #define ADC_OVERSAMPLING_RATIO_256 (LL_ADC_OVS_RATIO_256) /*!< ADC oversampling ratio of 256 (256 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 161:aa5281ff4a02 636 /**
AnnaBridge 161:aa5281ff4a02 637 * @}
AnnaBridge 161:aa5281ff4a02 638 */
AnnaBridge 161:aa5281ff4a02 639
AnnaBridge 161:aa5281ff4a02 640 /** @defgroup ADC_HAL_EC_OVS_SHIFT Oversampling - Data shift
AnnaBridge 161:aa5281ff4a02 641 * @{
AnnaBridge 161:aa5281ff4a02 642 */
AnnaBridge 161:aa5281ff4a02 643 #define ADC_RIGHTBITSHIFT_NONE (LL_ADC_OVS_SHIFT_NONE) /*!< ADC oversampling no shift (sum of the ADC conversions data is not divided to result as the ADC oversampling conversion data) */
AnnaBridge 161:aa5281ff4a02 644 #define ADC_RIGHTBITSHIFT_1 (LL_ADC_OVS_SHIFT_RIGHT_1) /*!< ADC oversampling shift of 1 (sum of the ADC conversions data is divided by 2 to result as the ADC oversampling conversion data) */
AnnaBridge 161:aa5281ff4a02 645 #define ADC_RIGHTBITSHIFT_2 (LL_ADC_OVS_SHIFT_RIGHT_2) /*!< ADC oversampling shift of 2 (sum of the ADC conversions data is divided by 4 to result as the ADC oversampling conversion data) */
AnnaBridge 161:aa5281ff4a02 646 #define ADC_RIGHTBITSHIFT_3 (LL_ADC_OVS_SHIFT_RIGHT_3) /*!< ADC oversampling shift of 3 (sum of the ADC conversions data is divided by 8 to result as the ADC oversampling conversion data) */
AnnaBridge 161:aa5281ff4a02 647 #define ADC_RIGHTBITSHIFT_4 (LL_ADC_OVS_SHIFT_RIGHT_4) /*!< ADC oversampling shift of 4 (sum of the ADC conversions data is divided by 16 to result as the ADC oversampling conversion data) */
AnnaBridge 161:aa5281ff4a02 648 #define ADC_RIGHTBITSHIFT_5 (LL_ADC_OVS_SHIFT_RIGHT_5) /*!< ADC oversampling shift of 5 (sum of the ADC conversions data is divided by 32 to result as the ADC oversampling conversion data) */
AnnaBridge 161:aa5281ff4a02 649 #define ADC_RIGHTBITSHIFT_6 (LL_ADC_OVS_SHIFT_RIGHT_6) /*!< ADC oversampling shift of 6 (sum of the ADC conversions data is divided by 64 to result as the ADC oversampling conversion data) */
AnnaBridge 161:aa5281ff4a02 650 #define ADC_RIGHTBITSHIFT_7 (LL_ADC_OVS_SHIFT_RIGHT_7) /*!< ADC oversampling shift of 7 (sum of the ADC conversions data is divided by 128 to result as the ADC oversampling conversion data) */
AnnaBridge 161:aa5281ff4a02 651 #define ADC_RIGHTBITSHIFT_8 (LL_ADC_OVS_SHIFT_RIGHT_8) /*!< ADC oversampling shift of 8 (sum of the ADC conversions data is divided by 256 to result as the ADC oversampling conversion data) */
AnnaBridge 161:aa5281ff4a02 652 /**
AnnaBridge 161:aa5281ff4a02 653 * @}
AnnaBridge 161:aa5281ff4a02 654 */
AnnaBridge 161:aa5281ff4a02 655
AnnaBridge 161:aa5281ff4a02 656 /** @defgroup ADC_HAL_EC_OVS_DISCONT_MODE Oversampling - Discontinuous mode
AnnaBridge 161:aa5281ff4a02 657 * @{
AnnaBridge 161:aa5281ff4a02 658 */
AnnaBridge 161:aa5281ff4a02 659 #define ADC_TRIGGEREDMODE_SINGLE_TRIGGER (LL_ADC_OVS_REG_CONT) /*!< ADC oversampling discontinuous mode: continuous mode (all conversions of oversampling ratio are done from 1 trigger) */
AnnaBridge 161:aa5281ff4a02 660 #define ADC_TRIGGEREDMODE_MULTI_TRIGGER (LL_ADC_OVS_REG_DISCONT) /*!< ADC oversampling discontinuous mode: discontinuous mode (each conversion of oversampling ratio needs a trigger) */
AnnaBridge 161:aa5281ff4a02 661 /**
AnnaBridge 161:aa5281ff4a02 662 * @}
AnnaBridge 161:aa5281ff4a02 663 */
AnnaBridge 161:aa5281ff4a02 664
AnnaBridge 161:aa5281ff4a02 665 /** @defgroup ADC_HAL_EC_OVS_SCOPE_REG Oversampling - Oversampling scope for ADC group regular
AnnaBridge 161:aa5281ff4a02 666 * @{
AnnaBridge 161:aa5281ff4a02 667 */
AnnaBridge 161:aa5281ff4a02 668 #define ADC_REGOVERSAMPLING_CONTINUED_MODE (LL_ADC_OVS_GRP_REGULAR_CONTINUED) /*!< Oversampling buffer maintained during injection sequence */
AnnaBridge 161:aa5281ff4a02 669 #define ADC_REGOVERSAMPLING_RESUMED_MODE (LL_ADC_OVS_GRP_REGULAR_RESUMED) /*!< Oversampling buffer zeroed during injection sequence */
AnnaBridge 161:aa5281ff4a02 670 /**
AnnaBridge 161:aa5281ff4a02 671 * @}
AnnaBridge 161:aa5281ff4a02 672 */
AnnaBridge 161:aa5281ff4a02 673
AnnaBridge 161:aa5281ff4a02 674
AnnaBridge 161:aa5281ff4a02 675 /** @defgroup ADC_Event_type ADC Event type
AnnaBridge 161:aa5281ff4a02 676 * @{
AnnaBridge 161:aa5281ff4a02 677 */
AnnaBridge 161:aa5281ff4a02 678 #define ADC_EOSMP_EVENT (ADC_FLAG_EOSMP) /*!< ADC End of Sampling event */
AnnaBridge 161:aa5281ff4a02 679 #define ADC_AWD1_EVENT (ADC_FLAG_AWD1) /*!< ADC Analog watchdog 1 event (main analog watchdog, present on all STM32 series) */
AnnaBridge 161:aa5281ff4a02 680 #define ADC_AWD2_EVENT (ADC_FLAG_AWD2) /*!< ADC Analog watchdog 2 event (additional analog watchdog, not present on all STM32 series) */
AnnaBridge 161:aa5281ff4a02 681 #define ADC_AWD3_EVENT (ADC_FLAG_AWD3) /*!< ADC Analog watchdog 3 event (additional analog watchdog, not present on all STM32 series) */
AnnaBridge 161:aa5281ff4a02 682 #define ADC_OVR_EVENT (ADC_FLAG_OVR) /*!< ADC overrun event */
AnnaBridge 161:aa5281ff4a02 683 #define ADC_JQOVF_EVENT (ADC_FLAG_JQOVF) /*!< ADC Injected Context Queue Overflow event */
AnnaBridge 161:aa5281ff4a02 684 /**
AnnaBridge 161:aa5281ff4a02 685 * @}
AnnaBridge 161:aa5281ff4a02 686 */
AnnaBridge 161:aa5281ff4a02 687 #define ADC_AWD_EVENT ADC_AWD1_EVENT /*!< ADC Analog watchdog 1 event: Naming for compatibility with other STM32 devices having only one analog watchdog */
AnnaBridge 161:aa5281ff4a02 688
AnnaBridge 161:aa5281ff4a02 689 /** @defgroup ADC_interrupts_definition ADC interrupts definition
AnnaBridge 161:aa5281ff4a02 690 * @{
AnnaBridge 161:aa5281ff4a02 691 */
AnnaBridge 161:aa5281ff4a02 692 #define ADC_IT_RDY ADC_IER_ADRDY /*!< ADC Ready interrupt source */
AnnaBridge 161:aa5281ff4a02 693 #define ADC_IT_EOSMP ADC_IER_EOSMP /*!< ADC End of sampling interrupt source */
AnnaBridge 161:aa5281ff4a02 694 #define ADC_IT_EOC ADC_IER_EOC /*!< ADC End of regular conversion interrupt source */
AnnaBridge 161:aa5281ff4a02 695 #define ADC_IT_EOS ADC_IER_EOS /*!< ADC End of regular sequence of conversions interrupt source */
AnnaBridge 161:aa5281ff4a02 696 #define ADC_IT_OVR ADC_IER_OVR /*!< ADC overrun interrupt source */
AnnaBridge 161:aa5281ff4a02 697 #define ADC_IT_JEOC ADC_IER_JEOC /*!< ADC End of injected conversion interrupt source */
AnnaBridge 161:aa5281ff4a02 698 #define ADC_IT_JEOS ADC_IER_JEOS /*!< ADC End of injected sequence of conversions interrupt source */
AnnaBridge 161:aa5281ff4a02 699 #define ADC_IT_AWD1 ADC_IER_AWD1 /*!< ADC Analog watchdog 1 interrupt source (main analog watchdog) */
AnnaBridge 161:aa5281ff4a02 700 #define ADC_IT_AWD2 ADC_IER_AWD2 /*!< ADC Analog watchdog 2 interrupt source (additional analog watchdog) */
AnnaBridge 161:aa5281ff4a02 701 #define ADC_IT_AWD3 ADC_IER_AWD3 /*!< ADC Analog watchdog 3 interrupt source (additional analog watchdog) */
AnnaBridge 161:aa5281ff4a02 702 #define ADC_IT_JQOVF ADC_IER_JQOVF /*!< ADC Injected Context Queue Overflow interrupt source */
AnnaBridge 161:aa5281ff4a02 703
AnnaBridge 161:aa5281ff4a02 704 #define ADC_IT_AWD ADC_IT_AWD1 /*!< ADC Analog watchdog 1 interrupt source: naming for compatibility with other STM32 devices having only one analog watchdog */
AnnaBridge 145:64910690c574 705
AnnaBridge 145:64910690c574 706 /**
AnnaBridge 145:64910690c574 707 * @}
AnnaBridge 145:64910690c574 708 */
AnnaBridge 145:64910690c574 709
AnnaBridge 161:aa5281ff4a02 710 /** @defgroup ADC_flags_definition ADC flags definition
AnnaBridge 145:64910690c574 711 * @{
AnnaBridge 145:64910690c574 712 */
AnnaBridge 161:aa5281ff4a02 713 #define ADC_FLAG_RDY ADC_ISR_ADRDY /*!< ADC Ready flag */
AnnaBridge 161:aa5281ff4a02 714 #define ADC_FLAG_EOSMP ADC_ISR_EOSMP /*!< ADC End of Sampling flag */
AnnaBridge 161:aa5281ff4a02 715 #define ADC_FLAG_EOC ADC_ISR_EOC /*!< ADC End of Regular Conversion flag */
AnnaBridge 161:aa5281ff4a02 716 #define ADC_FLAG_EOS ADC_ISR_EOS /*!< ADC End of Regular sequence of Conversions flag */
AnnaBridge 161:aa5281ff4a02 717 #define ADC_FLAG_OVR ADC_ISR_OVR /*!< ADC overrun flag */
AnnaBridge 161:aa5281ff4a02 718 #define ADC_FLAG_JEOC ADC_ISR_JEOC /*!< ADC End of Injected Conversion flag */
AnnaBridge 161:aa5281ff4a02 719 #define ADC_FLAG_JEOS ADC_ISR_JEOS /*!< ADC End of Injected sequence of Conversions flag */
AnnaBridge 161:aa5281ff4a02 720 #define ADC_FLAG_AWD1 ADC_ISR_AWD1 /*!< ADC Analog watchdog 1 flag (main analog watchdog) */
AnnaBridge 161:aa5281ff4a02 721 #define ADC_FLAG_AWD2 ADC_ISR_AWD2 /*!< ADC Analog watchdog 2 flag (additional analog watchdog) */
AnnaBridge 161:aa5281ff4a02 722 #define ADC_FLAG_AWD3 ADC_ISR_AWD3 /*!< ADC Analog watchdog 3 flag (additional analog watchdog) */
AnnaBridge 161:aa5281ff4a02 723 #define ADC_FLAG_JQOVF ADC_ISR_JQOVF /*!< ADC Injected Context Queue Overflow flag */
AnnaBridge 161:aa5281ff4a02 724
AnnaBridge 161:aa5281ff4a02 725 #define ADC_FLAG_AWD ADC_FLAG_AWD1 /*!< ADC Analog watchdog 1 flag: Naming for compatibility with other STM32 devices having only one analog watchdog */
AnnaBridge 161:aa5281ff4a02 726
AnnaBridge 161:aa5281ff4a02 727 #define ADC_FLAG_ALL (ADC_FLAG_RDY | ADC_FLAG_EOSMP | ADC_FLAG_EOC | ADC_FLAG_EOS | \
AnnaBridge 161:aa5281ff4a02 728 ADC_FLAG_JEOC | ADC_FLAG_JEOS | ADC_FLAG_OVR | ADC_FLAG_AWD1 | \
AnnaBridge 161:aa5281ff4a02 729 ADC_FLAG_AWD2 | ADC_FLAG_AWD3 | ADC_FLAG_JQOVF) /*!< ADC all flags */
AnnaBridge 161:aa5281ff4a02 730
AnnaBridge 161:aa5281ff4a02 731 /* Combination of all post-conversion flags bits: EOC/EOS, JEOC/JEOS, OVR, AWDx, JQOVF */
AnnaBridge 161:aa5281ff4a02 732 #define ADC_FLAG_POSTCONV_ALL (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_JEOC | ADC_FLAG_JEOS | \
AnnaBridge 161:aa5281ff4a02 733 ADC_FLAG_OVR | ADC_FLAG_AWD1 | ADC_FLAG_AWD2 | ADC_FLAG_AWD3 | \
AnnaBridge 161:aa5281ff4a02 734 ADC_FLAG_JQOVF) /*!< ADC post-conversion all flags */
AnnaBridge 161:aa5281ff4a02 735
AnnaBridge 161:aa5281ff4a02 736 /**
AnnaBridge 161:aa5281ff4a02 737 * @}
AnnaBridge 161:aa5281ff4a02 738 */
AnnaBridge 161:aa5281ff4a02 739
AnnaBridge 161:aa5281ff4a02 740 /**
AnnaBridge 161:aa5281ff4a02 741 * @}
AnnaBridge 161:aa5281ff4a02 742 */
AnnaBridge 161:aa5281ff4a02 743
AnnaBridge 161:aa5281ff4a02 744 /* Private macro -------------------------------------------------------------*/
AnnaBridge 161:aa5281ff4a02 745
AnnaBridge 161:aa5281ff4a02 746 /** @defgroup ADC_Private_Macros ADC Private Macros
AnnaBridge 161:aa5281ff4a02 747 * @{
AnnaBridge 161:aa5281ff4a02 748 */
AnnaBridge 161:aa5281ff4a02 749 /* Macro reserved for internal HAL driver usage, not intended to be used in */
AnnaBridge 161:aa5281ff4a02 750 /* code of final user. */
AnnaBridge 145:64910690c574 751
AnnaBridge 145:64910690c574 752 /**
AnnaBridge 145:64910690c574 753 * @brief Test if conversion trigger of regular group is software start
AnnaBridge 145:64910690c574 754 * or external trigger.
AnnaBridge 161:aa5281ff4a02 755 * @param __HANDLE__ ADC handle
AnnaBridge 145:64910690c574 756 * @retval SET (software start) or RESET (external trigger)
AnnaBridge 145:64910690c574 757 */
AnnaBridge 161:aa5281ff4a02 758 #define ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \
AnnaBridge 161:aa5281ff4a02 759 (((__HANDLE__)->Instance->CFGR & ADC_CFGR_EXTEN) == RESET)
AnnaBridge 145:64910690c574 760
AnnaBridge 145:64910690c574 761 /**
AnnaBridge 145:64910690c574 762 * @brief Return resolution bits in CFGR register RES[1:0] field.
AnnaBridge 161:aa5281ff4a02 763 * @param __HANDLE__ ADC handle
AnnaBridge 161:aa5281ff4a02 764 * @retval Value of bitfield RES in CFGR register.
AnnaBridge 145:64910690c574 765 */
AnnaBridge 161:aa5281ff4a02 766 #define ADC_GET_RESOLUTION(__HANDLE__) \
AnnaBridge 161:aa5281ff4a02 767 (LL_ADC_GetResolution((__HANDLE__)->Instance))
AnnaBridge 145:64910690c574 768
AnnaBridge 145:64910690c574 769 /**
AnnaBridge 145:64910690c574 770 * @brief Clear ADC error code (set it to no error code "HAL_ADC_ERROR_NONE").
AnnaBridge 161:aa5281ff4a02 771 * @param __HANDLE__ ADC handle
AnnaBridge 145:64910690c574 772 * @retval None
AnnaBridge 145:64910690c574 773 */
AnnaBridge 145:64910690c574 774 #define ADC_CLEAR_ERRORCODE(__HANDLE__) ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)
AnnaBridge 145:64910690c574 775
AnnaBridge 145:64910690c574 776 /**
AnnaBridge 145:64910690c574 777 * @brief Verification of ADC state: enabled or disabled.
AnnaBridge 161:aa5281ff4a02 778 * @param __HANDLE__ ADC handle
AnnaBridge 145:64910690c574 779 * @retval SET (ADC enabled) or RESET (ADC disabled)
AnnaBridge 145:64910690c574 780 */
AnnaBridge 145:64910690c574 781 #define ADC_IS_ENABLE(__HANDLE__) \
AnnaBridge 145:64910690c574 782 (( ((((__HANDLE__)->Instance->CR) & (ADC_CR_ADEN | ADC_CR_ADDIS)) == ADC_CR_ADEN) && \
AnnaBridge 145:64910690c574 783 ((((__HANDLE__)->Instance->ISR) & ADC_FLAG_RDY) == ADC_FLAG_RDY) \
AnnaBridge 145:64910690c574 784 ) ? SET : RESET)
AnnaBridge 145:64910690c574 785
AnnaBridge 145:64910690c574 786 /**
AnnaBridge 145:64910690c574 787 * @brief Check if conversion is on going on regular group.
AnnaBridge 161:aa5281ff4a02 788 * @param __HANDLE__ ADC handle
AnnaBridge 145:64910690c574 789 * @retval SET (conversion is on going) or RESET (no conversion is on going)
AnnaBridge 145:64910690c574 790 */
AnnaBridge 161:aa5281ff4a02 791 #define ADC_IS_CONVERSION_ONGOING_REGULAR(__HANDLE__) \
AnnaBridge 161:aa5281ff4a02 792 (LL_ADC_REG_IsConversionOngoing((__HANDLE__)->Instance))
AnnaBridge 145:64910690c574 793
AnnaBridge 145:64910690c574 794 /**
AnnaBridge 145:64910690c574 795 * @brief Simultaneously clear and set specific bits of the handle State.
AnnaBridge 145:64910690c574 796 * @note ADC_STATE_CLR_SET() macro is merely aliased to generic macro MODIFY_REG(),
AnnaBridge 145:64910690c574 797 * the first parameter is the ADC handle State, the second parameter is the
AnnaBridge 161:aa5281ff4a02 798 * bit field to clear, the third and last parameter is the bit field to set.
AnnaBridge 145:64910690c574 799 * @retval None
AnnaBridge 145:64910690c574 800 */
AnnaBridge 145:64910690c574 801 #define ADC_STATE_CLR_SET MODIFY_REG
AnnaBridge 145:64910690c574 802
AnnaBridge 145:64910690c574 803 /**
AnnaBridge 145:64910690c574 804 * @brief Verify that a given value is aligned with the ADC resolution range.
AnnaBridge 161:aa5281ff4a02 805 * @param __RESOLUTION__ ADC resolution (12, 10, 8 or 6 bits).
AnnaBridge 161:aa5281ff4a02 806 * @param __ADC_VALUE__ value checked against the resolution.
AnnaBridge 145:64910690c574 807 * @retval SET (__ADC_VALUE__ in line with __RESOLUTION__) or RESET (__ADC_VALUE__ not in line with __RESOLUTION__)
AnnaBridge 145:64910690c574 808 */
AnnaBridge 145:64910690c574 809 #define IS_ADC_RANGE(__RESOLUTION__, __ADC_VALUE__) \
AnnaBridge 161:aa5281ff4a02 810 ((((__RESOLUTION__) == ADC_RESOLUTION_12B) && ((__ADC_VALUE__) <= (0x0FFF))) || \
AnnaBridge 161:aa5281ff4a02 811 (((__RESOLUTION__) == ADC_RESOLUTION_10B) && ((__ADC_VALUE__) <= (0x03FF))) || \
AnnaBridge 161:aa5281ff4a02 812 (((__RESOLUTION__) == ADC_RESOLUTION_8B) && ((__ADC_VALUE__) <= (0x00FF))) || \
AnnaBridge 161:aa5281ff4a02 813 (((__RESOLUTION__) == ADC_RESOLUTION_6B) && ((__ADC_VALUE__) <= (0x003F))) )
AnnaBridge 145:64910690c574 814
AnnaBridge 145:64910690c574 815 /**
AnnaBridge 145:64910690c574 816 * @brief Verify the length of the scheduled regular conversions group.
AnnaBridge 161:aa5281ff4a02 817 * @param __LENGTH__ number of programmed conversions.
AnnaBridge 145:64910690c574 818 * @retval SET (__LENGTH__ is within the maximum number of possible programmable regular conversions) or RESET (__LENGTH__ is null or too large)
AnnaBridge 145:64910690c574 819 */
AnnaBridge 161:aa5281ff4a02 820 #define IS_ADC_REGULAR_NB_CONV(__LENGTH__) (((__LENGTH__) >= (1U)) && ((__LENGTH__) <= (16U)))
AnnaBridge 145:64910690c574 821
AnnaBridge 145:64910690c574 822
AnnaBridge 145:64910690c574 823 /**
AnnaBridge 145:64910690c574 824 * @brief Verify the number of scheduled regular conversions in discontinuous mode.
AnnaBridge 161:aa5281ff4a02 825 * @param NUMBER number of scheduled regular conversions in discontinuous mode.
AnnaBridge 145:64910690c574 826 * @retval SET (NUMBER is within the maximum number of regular conversions in discontinous mode) or RESET (NUMBER is null or too large)
AnnaBridge 145:64910690c574 827 */
AnnaBridge 161:aa5281ff4a02 828 #define IS_ADC_REGULAR_DISCONT_NUMBER(NUMBER) (((NUMBER) >= (1U)) && ((NUMBER) <= (8U)))
AnnaBridge 145:64910690c574 829
AnnaBridge 145:64910690c574 830
AnnaBridge 145:64910690c574 831 /**
AnnaBridge 145:64910690c574 832 * @brief Verify the ADC clock setting.
AnnaBridge 161:aa5281ff4a02 833 * @param __ADC_CLOCK__ programmed ADC clock.
AnnaBridge 145:64910690c574 834 * @retval SET (__ADC_CLOCK__ is a valid value) or RESET (__ADC_CLOCK__ is invalid)
AnnaBridge 145:64910690c574 835 */
AnnaBridge 145:64910690c574 836 #define IS_ADC_CLOCKPRESCALER(__ADC_CLOCK__) (((__ADC_CLOCK__) == ADC_CLOCK_SYNC_PCLK_DIV1) || \
AnnaBridge 145:64910690c574 837 ((__ADC_CLOCK__) == ADC_CLOCK_SYNC_PCLK_DIV2) || \
AnnaBridge 145:64910690c574 838 ((__ADC_CLOCK__) == ADC_CLOCK_SYNC_PCLK_DIV4) || \
AnnaBridge 145:64910690c574 839 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV1) || \
AnnaBridge 145:64910690c574 840 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV2) || \
AnnaBridge 145:64910690c574 841 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV4) || \
AnnaBridge 145:64910690c574 842 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV6) || \
AnnaBridge 145:64910690c574 843 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV8) || \
AnnaBridge 145:64910690c574 844 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV10) || \
AnnaBridge 145:64910690c574 845 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV12) || \
AnnaBridge 145:64910690c574 846 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV16) || \
AnnaBridge 145:64910690c574 847 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV32) || \
AnnaBridge 145:64910690c574 848 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV64) || \
AnnaBridge 145:64910690c574 849 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV128) || \
AnnaBridge 145:64910690c574 850 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV256) )
AnnaBridge 145:64910690c574 851
AnnaBridge 145:64910690c574 852 /**
AnnaBridge 145:64910690c574 853 * @brief Verify the ADC resolution setting.
AnnaBridge 161:aa5281ff4a02 854 * @param __RESOLUTION__ programmed ADC resolution.
AnnaBridge 145:64910690c574 855 * @retval SET (__RESOLUTION__ is a valid value) or RESET (__RESOLUTION__ is invalid)
AnnaBridge 145:64910690c574 856 */
AnnaBridge 145:64910690c574 857 #define IS_ADC_RESOLUTION(__RESOLUTION__) (((__RESOLUTION__) == ADC_RESOLUTION_12B) || \
AnnaBridge 145:64910690c574 858 ((__RESOLUTION__) == ADC_RESOLUTION_10B) || \
AnnaBridge 145:64910690c574 859 ((__RESOLUTION__) == ADC_RESOLUTION_8B) || \
AnnaBridge 145:64910690c574 860 ((__RESOLUTION__) == ADC_RESOLUTION_6B) )
AnnaBridge 145:64910690c574 861
AnnaBridge 145:64910690c574 862 /**
AnnaBridge 145:64910690c574 863 * @brief Verify the ADC resolution setting when limited to 6 or 8 bits.
AnnaBridge 161:aa5281ff4a02 864 * @param __RESOLUTION__ programmed ADC resolution when limited to 6 or 8 bits.
AnnaBridge 145:64910690c574 865 * @retval SET (__RESOLUTION__ is a valid value) or RESET (__RESOLUTION__ is invalid)
AnnaBridge 145:64910690c574 866 */
AnnaBridge 145:64910690c574 867 #define IS_ADC_RESOLUTION_8_6_BITS(__RESOLUTION__) (((__RESOLUTION__) == ADC_RESOLUTION_8B) || \
AnnaBridge 145:64910690c574 868 ((__RESOLUTION__) == ADC_RESOLUTION_6B) )
AnnaBridge 145:64910690c574 869
AnnaBridge 145:64910690c574 870 /**
AnnaBridge 145:64910690c574 871 * @brief Verify the ADC converted data alignment.
AnnaBridge 161:aa5281ff4a02 872 * @param __ALIGN__ programmed ADC converted data alignment.
AnnaBridge 145:64910690c574 873 * @retval SET (__ALIGN__ is a valid value) or RESET (__ALIGN__ is invalid)
AnnaBridge 161:aa5281ff4a02 874 */
AnnaBridge 145:64910690c574 875 #define IS_ADC_DATA_ALIGN(__ALIGN__) (((__ALIGN__) == ADC_DATAALIGN_RIGHT) || \
AnnaBridge 145:64910690c574 876 ((__ALIGN__) == ADC_DATAALIGN_LEFT) )
AnnaBridge 145:64910690c574 877
AnnaBridge 145:64910690c574 878 /**
AnnaBridge 145:64910690c574 879 * @brief Verify the ADC scan mode.
AnnaBridge 161:aa5281ff4a02 880 * @param __SCAN_MODE__ programmed ADC scan mode.
AnnaBridge 145:64910690c574 881 * @retval SET (__SCAN_MODE__ is valid) or RESET (__SCAN_MODE__ is invalid)
AnnaBridge 161:aa5281ff4a02 882 */
AnnaBridge 145:64910690c574 883 #define IS_ADC_SCAN_MODE(__SCAN_MODE__) (((__SCAN_MODE__) == ADC_SCAN_DISABLE) || \
AnnaBridge 161:aa5281ff4a02 884 ((__SCAN_MODE__) == ADC_SCAN_ENABLE) )
AnnaBridge 161:aa5281ff4a02 885
AnnaBridge 145:64910690c574 886 /**
AnnaBridge 145:64910690c574 887 * @brief Verify the ADC edge trigger setting for regular group.
AnnaBridge 161:aa5281ff4a02 888 * @param __EDGE__ programmed ADC edge trigger setting.
AnnaBridge 145:64910690c574 889 * @retval SET (__EDGE__ is a valid value) or RESET (__EDGE__ is invalid)
AnnaBridge 161:aa5281ff4a02 890 */
AnnaBridge 145:64910690c574 891 #define IS_ADC_EXTTRIG_EDGE(__EDGE__) (((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \
AnnaBridge 145:64910690c574 892 ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_RISING) || \
AnnaBridge 145:64910690c574 893 ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \
AnnaBridge 145:64910690c574 894 ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING) )
AnnaBridge 145:64910690c574 895
AnnaBridge 145:64910690c574 896 /**
AnnaBridge 145:64910690c574 897 * @brief Verify the ADC regular conversions external trigger.
AnnaBridge 161:aa5281ff4a02 898 * @param __HANDLE__ ADC handle
AnnaBridge 161:aa5281ff4a02 899 * @param __REGTRIG__ programmed ADC regular conversions external trigger.
AnnaBridge 145:64910690c574 900 * @retval SET (__REGTRIG__ is a valid value) or RESET (__REGTRIG__ is invalid)
AnnaBridge 161:aa5281ff4a02 901 */
AnnaBridge 161:aa5281ff4a02 902 #define IS_ADC_EXTTRIG(__HANDLE__, __REGTRIG__) (((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC1) || \
AnnaBridge 161:aa5281ff4a02 903 ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC2) || \
AnnaBridge 161:aa5281ff4a02 904 ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC3) || \
AnnaBridge 161:aa5281ff4a02 905 ((__REGTRIG__) == ADC_EXTERNALTRIG_T2_CC2) || \
AnnaBridge 161:aa5281ff4a02 906 ((__REGTRIG__) == ADC_EXTERNALTRIG_T3_TRGO) || \
AnnaBridge 161:aa5281ff4a02 907 ((__REGTRIG__) == ADC_EXTERNALTRIG_T4_CC4) || \
AnnaBridge 161:aa5281ff4a02 908 ((__REGTRIG__) == ADC_EXTERNALTRIG_EXT_IT11) || \
AnnaBridge 161:aa5281ff4a02 909 ((__REGTRIG__) == ADC_EXTERNALTRIG_T8_TRGO) || \
AnnaBridge 161:aa5281ff4a02 910 ((__REGTRIG__) == ADC_EXTERNALTRIG_T8_TRGO2) || \
AnnaBridge 161:aa5281ff4a02 911 ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_TRGO) || \
AnnaBridge 161:aa5281ff4a02 912 ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_TRGO2) || \
AnnaBridge 161:aa5281ff4a02 913 ((__REGTRIG__) == ADC_EXTERNALTRIG_T2_TRGO) || \
AnnaBridge 161:aa5281ff4a02 914 ((__REGTRIG__) == ADC_EXTERNALTRIG_T4_TRGO) || \
AnnaBridge 161:aa5281ff4a02 915 ((__REGTRIG__) == ADC_EXTERNALTRIG_T6_TRGO) || \
AnnaBridge 161:aa5281ff4a02 916 ((__REGTRIG__) == ADC_EXTERNALTRIG_T15_TRGO) || \
AnnaBridge 161:aa5281ff4a02 917 ((__REGTRIG__) == ADC_EXTERNALTRIG_T3_CC4) || \
AnnaBridge 161:aa5281ff4a02 918 ((__REGTRIG__) == ADC_SOFTWARE_START) )
AnnaBridge 145:64910690c574 919
AnnaBridge 145:64910690c574 920 /**
AnnaBridge 145:64910690c574 921 * @brief Verify the ADC regular conversions check for converted data availability.
AnnaBridge 161:aa5281ff4a02 922 * @param __EOC_SELECTION__ converted data availability check.
AnnaBridge 145:64910690c574 923 * @retval SET (__EOC_SELECTION__ is a valid value) or RESET (__EOC_SELECTION__ is invalid)
AnnaBridge 161:aa5281ff4a02 924 */
AnnaBridge 145:64910690c574 925 #define IS_ADC_EOC_SELECTION(__EOC_SELECTION__) (((__EOC_SELECTION__) == ADC_EOC_SINGLE_CONV) || \
AnnaBridge 161:aa5281ff4a02 926 ((__EOC_SELECTION__) == ADC_EOC_SEQ_CONV) )
AnnaBridge 161:aa5281ff4a02 927
AnnaBridge 145:64910690c574 928 /**
AnnaBridge 145:64910690c574 929 * @brief Verify the ADC regular conversions overrun handling.
AnnaBridge 161:aa5281ff4a02 930 * @param __OVR__ ADC regular conversions overrun handling.
AnnaBridge 145:64910690c574 931 * @retval SET (__OVR__ is a valid value) or RESET (__OVR__ is invalid)
AnnaBridge 161:aa5281ff4a02 932 */
AnnaBridge 145:64910690c574 933 #define IS_ADC_OVERRUN(__OVR__) (((__OVR__) == ADC_OVR_DATA_PRESERVED) || \
AnnaBridge 161:aa5281ff4a02 934 ((__OVR__) == ADC_OVR_DATA_OVERWRITTEN) )
AnnaBridge 161:aa5281ff4a02 935
AnnaBridge 145:64910690c574 936 /**
AnnaBridge 145:64910690c574 937 * @brief Verify the ADC conversions sampling time.
AnnaBridge 161:aa5281ff4a02 938 * @param __TIME__ ADC conversions sampling time.
AnnaBridge 145:64910690c574 939 * @retval SET (__TIME__ is a valid value) or RESET (__TIME__ is invalid)
AnnaBridge 145:64910690c574 940 */
AnnaBridge 161:aa5281ff4a02 941 #if defined(ADC_SMPR1_SMPPLUS)
AnnaBridge 145:64910690c574 942 #define IS_ADC_SAMPLE_TIME(__TIME__) (((__TIME__) == ADC_SAMPLETIME_2CYCLES_5) || \
AnnaBridge 145:64910690c574 943 ((__TIME__) == ADC_SAMPLETIME_3CYCLES_5) || \
AnnaBridge 145:64910690c574 944 ((__TIME__) == ADC_SAMPLETIME_6CYCLES_5) || \
AnnaBridge 145:64910690c574 945 ((__TIME__) == ADC_SAMPLETIME_12CYCLES_5) || \
AnnaBridge 145:64910690c574 946 ((__TIME__) == ADC_SAMPLETIME_24CYCLES_5) || \
AnnaBridge 145:64910690c574 947 ((__TIME__) == ADC_SAMPLETIME_47CYCLES_5) || \
AnnaBridge 145:64910690c574 948 ((__TIME__) == ADC_SAMPLETIME_92CYCLES_5) || \
AnnaBridge 145:64910690c574 949 ((__TIME__) == ADC_SAMPLETIME_247CYCLES_5) || \
AnnaBridge 145:64910690c574 950 ((__TIME__) == ADC_SAMPLETIME_640CYCLES_5) )
AnnaBridge 145:64910690c574 951 #else
AnnaBridge 145:64910690c574 952 #define IS_ADC_SAMPLE_TIME(__TIME__) (((__TIME__) == ADC_SAMPLETIME_2CYCLES_5) || \
AnnaBridge 145:64910690c574 953 ((__TIME__) == ADC_SAMPLETIME_6CYCLES_5) || \
AnnaBridge 145:64910690c574 954 ((__TIME__) == ADC_SAMPLETIME_12CYCLES_5) || \
AnnaBridge 145:64910690c574 955 ((__TIME__) == ADC_SAMPLETIME_24CYCLES_5) || \
AnnaBridge 145:64910690c574 956 ((__TIME__) == ADC_SAMPLETIME_47CYCLES_5) || \
AnnaBridge 145:64910690c574 957 ((__TIME__) == ADC_SAMPLETIME_92CYCLES_5) || \
AnnaBridge 145:64910690c574 958 ((__TIME__) == ADC_SAMPLETIME_247CYCLES_5) || \
AnnaBridge 145:64910690c574 959 ((__TIME__) == ADC_SAMPLETIME_640CYCLES_5) )
AnnaBridge 145:64910690c574 960 #endif
AnnaBridge 145:64910690c574 961
AnnaBridge 145:64910690c574 962 /**
AnnaBridge 145:64910690c574 963 * @brief Verify the ADC regular channel setting.
AnnaBridge 161:aa5281ff4a02 964 * @param __CHANNEL__ programmed ADC regular channel.
AnnaBridge 145:64910690c574 965 * @retval SET (__CHANNEL__ is valid) or RESET (__CHANNEL__ is invalid)
AnnaBridge 145:64910690c574 966 */
AnnaBridge 145:64910690c574 967 #define IS_ADC_REGULAR_RANK(__CHANNEL__) (((__CHANNEL__) == ADC_REGULAR_RANK_1 ) || \
AnnaBridge 145:64910690c574 968 ((__CHANNEL__) == ADC_REGULAR_RANK_2 ) || \
AnnaBridge 145:64910690c574 969 ((__CHANNEL__) == ADC_REGULAR_RANK_3 ) || \
AnnaBridge 145:64910690c574 970 ((__CHANNEL__) == ADC_REGULAR_RANK_4 ) || \
AnnaBridge 145:64910690c574 971 ((__CHANNEL__) == ADC_REGULAR_RANK_5 ) || \
AnnaBridge 145:64910690c574 972 ((__CHANNEL__) == ADC_REGULAR_RANK_6 ) || \
AnnaBridge 145:64910690c574 973 ((__CHANNEL__) == ADC_REGULAR_RANK_7 ) || \
AnnaBridge 145:64910690c574 974 ((__CHANNEL__) == ADC_REGULAR_RANK_8 ) || \
AnnaBridge 145:64910690c574 975 ((__CHANNEL__) == ADC_REGULAR_RANK_9 ) || \
AnnaBridge 145:64910690c574 976 ((__CHANNEL__) == ADC_REGULAR_RANK_10) || \
AnnaBridge 145:64910690c574 977 ((__CHANNEL__) == ADC_REGULAR_RANK_11) || \
AnnaBridge 145:64910690c574 978 ((__CHANNEL__) == ADC_REGULAR_RANK_12) || \
AnnaBridge 145:64910690c574 979 ((__CHANNEL__) == ADC_REGULAR_RANK_13) || \
AnnaBridge 145:64910690c574 980 ((__CHANNEL__) == ADC_REGULAR_RANK_14) || \
AnnaBridge 145:64910690c574 981 ((__CHANNEL__) == ADC_REGULAR_RANK_15) || \
AnnaBridge 145:64910690c574 982 ((__CHANNEL__) == ADC_REGULAR_RANK_16) )
AnnaBridge 145:64910690c574 983
AnnaBridge 145:64910690c574 984 /**
AnnaBridge 145:64910690c574 985 * @}
AnnaBridge 145:64910690c574 986 */
AnnaBridge 161:aa5281ff4a02 987
AnnaBridge 145:64910690c574 988
AnnaBridge 145:64910690c574 989 /* Private constants ---------------------------------------------------------*/
AnnaBridge 145:64910690c574 990
AnnaBridge 145:64910690c574 991 /** @defgroup ADC_Private_Constants ADC Private Constants
AnnaBridge 145:64910690c574 992 * @{
AnnaBridge 145:64910690c574 993 */
AnnaBridge 145:64910690c574 994
AnnaBridge 145:64910690c574 995 /* Fixed timeout values for ADC conversion (including sampling time) */
AnnaBridge 145:64910690c574 996 /* Maximum sampling time is 640.5 ADC clock cycle (SMPx[2:0] = 0b111 */
AnnaBridge 145:64910690c574 997 /* Maximum conversion time is 12.5 + Maximum sampling time */
AnnaBridge 145:64910690c574 998 /* or 12.5 + 640.5 = 653 ADC clock cycles */
AnnaBridge 145:64910690c574 999 /* Minimum ADC Clock frequency is 0.14 MHz */
AnnaBridge 145:64910690c574 1000 /* Maximum conversion time is */
AnnaBridge 145:64910690c574 1001 /* 653 / 0.14 MHz = 4.66 ms */
AnnaBridge 161:aa5281ff4a02 1002 #define ADC_STOP_CONVERSION_TIMEOUT ( 5U) /*!< ADC stop time-out value */
AnnaBridge 145:64910690c574 1003
AnnaBridge 145:64910690c574 1004 /* Delay for temperature sensor stabilization time. */
AnnaBridge 145:64910690c574 1005 /* Maximum delay is 120us (refer device datasheet, parameter tSTART). */
AnnaBridge 145:64910690c574 1006 /* Unit: us */
AnnaBridge 161:aa5281ff4a02 1007 #define ADC_TEMPSENSOR_DELAY_US (LL_ADC_DELAY_TEMPSENSOR_STAB_US)
AnnaBridge 161:aa5281ff4a02 1008
AnnaBridge 161:aa5281ff4a02 1009 /**
AnnaBridge 161:aa5281ff4a02 1010 * @}
AnnaBridge 161:aa5281ff4a02 1011 */
AnnaBridge 161:aa5281ff4a02 1012
AnnaBridge 161:aa5281ff4a02 1013 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 161:aa5281ff4a02 1014
AnnaBridge 161:aa5281ff4a02 1015 /** @defgroup ADC_Exported_Macros ADC Exported Macros
AnnaBridge 161:aa5281ff4a02 1016 * @{
AnnaBridge 161:aa5281ff4a02 1017 */
AnnaBridge 161:aa5281ff4a02 1018 /* Macro for internal HAL driver usage, and possibly can be used into code of */
AnnaBridge 161:aa5281ff4a02 1019 /* final user. */
AnnaBridge 161:aa5281ff4a02 1020
AnnaBridge 161:aa5281ff4a02 1021 /** @defgroup ADC_HAL_EM_HANDLE_IT_FLAG HAL ADC macro to manage HAL ADC handle, IT and flags.
AnnaBridge 161:aa5281ff4a02 1022 * @{
AnnaBridge 161:aa5281ff4a02 1023 */
AnnaBridge 161:aa5281ff4a02 1024
AnnaBridge 161:aa5281ff4a02 1025 /** @brief Reset ADC handle state.
AnnaBridge 161:aa5281ff4a02 1026 * @param __HANDLE__ ADC handle
AnnaBridge 161:aa5281ff4a02 1027 * @retval None
AnnaBridge 161:aa5281ff4a02 1028 */
AnnaBridge 161:aa5281ff4a02 1029 #define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) \
AnnaBridge 161:aa5281ff4a02 1030 ((__HANDLE__)->State = HAL_ADC_STATE_RESET)
AnnaBridge 161:aa5281ff4a02 1031
AnnaBridge 161:aa5281ff4a02 1032 /**
AnnaBridge 161:aa5281ff4a02 1033 * @brief Enable ADC interrupt.
AnnaBridge 161:aa5281ff4a02 1034 * @param __HANDLE__ ADC handle
AnnaBridge 161:aa5281ff4a02 1035 * @param __INTERRUPT__ ADC Interrupt
AnnaBridge 161:aa5281ff4a02 1036 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1037 * @arg @ref ADC_IT_RDY ADC Ready interrupt source
AnnaBridge 161:aa5281ff4a02 1038 * @arg @ref ADC_IT_EOSMP ADC End of Sampling interrupt source
AnnaBridge 161:aa5281ff4a02 1039 * @arg @ref ADC_IT_EOC ADC End of Regular Conversion interrupt source
AnnaBridge 161:aa5281ff4a02 1040 * @arg @ref ADC_IT_EOS ADC End of Regular sequence of Conversions interrupt source
AnnaBridge 161:aa5281ff4a02 1041 * @arg @ref ADC_IT_OVR ADC overrun interrupt source
AnnaBridge 161:aa5281ff4a02 1042 * @arg @ref ADC_IT_JEOC ADC End of Injected Conversion interrupt source
AnnaBridge 161:aa5281ff4a02 1043 * @arg @ref ADC_IT_JEOS ADC End of Injected sequence of Conversions interrupt source
AnnaBridge 161:aa5281ff4a02 1044 * @arg @ref ADC_IT_AWD1 ADC Analog watchdog 1 interrupt source (main analog watchdog)
AnnaBridge 161:aa5281ff4a02 1045 * @arg @ref ADC_IT_AWD2 ADC Analog watchdog 2 interrupt source (additional analog watchdog)
AnnaBridge 161:aa5281ff4a02 1046 * @arg @ref ADC_IT_AWD3 ADC Analog watchdog 3 interrupt source (additional analog watchdog)
AnnaBridge 161:aa5281ff4a02 1047 * @arg @ref ADC_IT_JQOVF ADC Injected Context Queue Overflow interrupt source.
AnnaBridge 161:aa5281ff4a02 1048 * @retval None
AnnaBridge 161:aa5281ff4a02 1049 */
AnnaBridge 161:aa5281ff4a02 1050 #define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) \
AnnaBridge 161:aa5281ff4a02 1051 (((__HANDLE__)->Instance->IER) |= (__INTERRUPT__))
AnnaBridge 161:aa5281ff4a02 1052
AnnaBridge 161:aa5281ff4a02 1053 /**
AnnaBridge 161:aa5281ff4a02 1054 * @brief Disable ADC interrupt.
AnnaBridge 161:aa5281ff4a02 1055 * @param __HANDLE__ ADC handle
AnnaBridge 161:aa5281ff4a02 1056 * @param __INTERRUPT__ ADC Interrupt
AnnaBridge 161:aa5281ff4a02 1057 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1058 * @arg @ref ADC_IT_RDY ADC Ready interrupt source
AnnaBridge 161:aa5281ff4a02 1059 * @arg @ref ADC_IT_EOSMP ADC End of Sampling interrupt source
AnnaBridge 161:aa5281ff4a02 1060 * @arg @ref ADC_IT_EOC ADC End of Regular Conversion interrupt source
AnnaBridge 161:aa5281ff4a02 1061 * @arg @ref ADC_IT_EOS ADC End of Regular sequence of Conversions interrupt source
AnnaBridge 161:aa5281ff4a02 1062 * @arg @ref ADC_IT_OVR ADC overrun interrupt source
AnnaBridge 161:aa5281ff4a02 1063 * @arg @ref ADC_IT_JEOC ADC End of Injected Conversion interrupt source
AnnaBridge 161:aa5281ff4a02 1064 * @arg @ref ADC_IT_JEOS ADC End of Injected sequence of Conversions interrupt source
AnnaBridge 161:aa5281ff4a02 1065 * @arg @ref ADC_IT_AWD1 ADC Analog watchdog 1 interrupt source (main analog watchdog)
AnnaBridge 161:aa5281ff4a02 1066 * @arg @ref ADC_IT_AWD2 ADC Analog watchdog 2 interrupt source (additional analog watchdog)
AnnaBridge 161:aa5281ff4a02 1067 * @arg @ref ADC_IT_AWD3 ADC Analog watchdog 3 interrupt source (additional analog watchdog)
AnnaBridge 161:aa5281ff4a02 1068 * @arg @ref ADC_IT_JQOVF ADC Injected Context Queue Overflow interrupt source.
AnnaBridge 161:aa5281ff4a02 1069 * @retval None
AnnaBridge 161:aa5281ff4a02 1070 */
AnnaBridge 161:aa5281ff4a02 1071 #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) \
AnnaBridge 161:aa5281ff4a02 1072 (((__HANDLE__)->Instance->IER) &= ~(__INTERRUPT__))
AnnaBridge 161:aa5281ff4a02 1073
AnnaBridge 161:aa5281ff4a02 1074 /** @brief Checks if the specified ADC interrupt source is enabled or disabled.
AnnaBridge 161:aa5281ff4a02 1075 * @param __HANDLE__ ADC handle
AnnaBridge 161:aa5281ff4a02 1076 * @param __INTERRUPT__ ADC interrupt source to check
AnnaBridge 161:aa5281ff4a02 1077 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1078 * @arg @ref ADC_IT_RDY ADC Ready interrupt source
AnnaBridge 161:aa5281ff4a02 1079 * @arg @ref ADC_IT_EOSMP ADC End of Sampling interrupt source
AnnaBridge 161:aa5281ff4a02 1080 * @arg @ref ADC_IT_EOC ADC End of Regular Conversion interrupt source
AnnaBridge 161:aa5281ff4a02 1081 * @arg @ref ADC_IT_EOS ADC End of Regular sequence of Conversions interrupt source
AnnaBridge 161:aa5281ff4a02 1082 * @arg @ref ADC_IT_OVR ADC overrun interrupt source
AnnaBridge 161:aa5281ff4a02 1083 * @arg @ref ADC_IT_JEOC ADC End of Injected Conversion interrupt source
AnnaBridge 161:aa5281ff4a02 1084 * @arg @ref ADC_IT_JEOS ADC End of Injected sequence of Conversions interrupt source
AnnaBridge 161:aa5281ff4a02 1085 * @arg @ref ADC_IT_AWD1 ADC Analog watchdog 1 interrupt source (main analog watchdog)
AnnaBridge 161:aa5281ff4a02 1086 * @arg @ref ADC_IT_AWD2 ADC Analog watchdog 2 interrupt source (additional analog watchdog)
AnnaBridge 161:aa5281ff4a02 1087 * @arg @ref ADC_IT_AWD3 ADC Analog watchdog 3 interrupt source (additional analog watchdog)
AnnaBridge 161:aa5281ff4a02 1088 * @arg @ref ADC_IT_JQOVF ADC Injected Context Queue Overflow interrupt source.
AnnaBridge 161:aa5281ff4a02 1089 * @retval State of interruption (SET or RESET)
AnnaBridge 161:aa5281ff4a02 1090 */
AnnaBridge 161:aa5281ff4a02 1091 #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \
AnnaBridge 161:aa5281ff4a02 1092 (((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__))
AnnaBridge 161:aa5281ff4a02 1093
AnnaBridge 161:aa5281ff4a02 1094 /**
AnnaBridge 161:aa5281ff4a02 1095 * @brief Check whether the specified ADC flag is set or not.
AnnaBridge 161:aa5281ff4a02 1096 * @param __HANDLE__ ADC handle
AnnaBridge 161:aa5281ff4a02 1097 * @param __FLAG__ ADC flag
AnnaBridge 161:aa5281ff4a02 1098 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1099 * @arg @ref ADC_FLAG_RDY ADC Ready flag
AnnaBridge 161:aa5281ff4a02 1100 * @arg @ref ADC_FLAG_EOSMP ADC End of Sampling flag
AnnaBridge 161:aa5281ff4a02 1101 * @arg @ref ADC_FLAG_EOC ADC End of Regular Conversion flag
AnnaBridge 161:aa5281ff4a02 1102 * @arg @ref ADC_FLAG_EOS ADC End of Regular sequence of Conversions flag
AnnaBridge 161:aa5281ff4a02 1103 * @arg @ref ADC_FLAG_OVR ADC overrun flag
AnnaBridge 161:aa5281ff4a02 1104 * @arg @ref ADC_FLAG_JEOC ADC End of Injected Conversion flag
AnnaBridge 161:aa5281ff4a02 1105 * @arg @ref ADC_FLAG_JEOS ADC End of Injected sequence of Conversions flag
AnnaBridge 161:aa5281ff4a02 1106 * @arg @ref ADC_FLAG_AWD1 ADC Analog watchdog 1 flag (main analog watchdog)
AnnaBridge 161:aa5281ff4a02 1107 * @arg @ref ADC_FLAG_AWD2 ADC Analog watchdog 2 flag (additional analog watchdog)
AnnaBridge 161:aa5281ff4a02 1108 * @arg @ref ADC_FLAG_AWD3 ADC Analog watchdog 3 flag (additional analog watchdog)
AnnaBridge 161:aa5281ff4a02 1109 * @arg @ref ADC_FLAG_JQOVF ADC Injected Context Queue Overflow flag.
AnnaBridge 161:aa5281ff4a02 1110 * @retval State of flag (TRUE or FALSE).
AnnaBridge 161:aa5281ff4a02 1111 */
AnnaBridge 161:aa5281ff4a02 1112 #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) \
AnnaBridge 161:aa5281ff4a02 1113 ((((__HANDLE__)->Instance->ISR) & (__FLAG__)) == (__FLAG__))
AnnaBridge 161:aa5281ff4a02 1114
AnnaBridge 161:aa5281ff4a02 1115 /**
AnnaBridge 161:aa5281ff4a02 1116 * @brief Clear the specified ADC flag.
AnnaBridge 161:aa5281ff4a02 1117 * @param __HANDLE__ ADC handle
AnnaBridge 161:aa5281ff4a02 1118 * @param __FLAG__ ADC flag
AnnaBridge 161:aa5281ff4a02 1119 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1120 * @arg @ref ADC_FLAG_RDY ADC Ready flag
AnnaBridge 161:aa5281ff4a02 1121 * @arg @ref ADC_FLAG_EOSMP ADC End of Sampling flag
AnnaBridge 161:aa5281ff4a02 1122 * @arg @ref ADC_FLAG_EOC ADC End of Regular Conversion flag
AnnaBridge 161:aa5281ff4a02 1123 * @arg @ref ADC_FLAG_EOS ADC End of Regular sequence of Conversions flag
AnnaBridge 161:aa5281ff4a02 1124 * @arg @ref ADC_FLAG_OVR ADC overrun flag
AnnaBridge 161:aa5281ff4a02 1125 * @arg @ref ADC_FLAG_JEOC ADC End of Injected Conversion flag
AnnaBridge 161:aa5281ff4a02 1126 * @arg @ref ADC_FLAG_JEOS ADC End of Injected sequence of Conversions flag
AnnaBridge 161:aa5281ff4a02 1127 * @arg @ref ADC_FLAG_AWD1 ADC Analog watchdog 1 flag (main analog watchdog)
AnnaBridge 161:aa5281ff4a02 1128 * @arg @ref ADC_FLAG_AWD2 ADC Analog watchdog 2 flag (additional analog watchdog)
AnnaBridge 161:aa5281ff4a02 1129 * @arg @ref ADC_FLAG_AWD3 ADC Analog watchdog 3 flag (additional analog watchdog)
AnnaBridge 161:aa5281ff4a02 1130 * @arg @ref ADC_FLAG_JQOVF ADC Injected Context Queue Overflow flag.
AnnaBridge 161:aa5281ff4a02 1131 * @retval None
AnnaBridge 161:aa5281ff4a02 1132 */
AnnaBridge 161:aa5281ff4a02 1133 /* Note: bit cleared bit by writing 1 (writing 0 has no effect on any bit of register ISR) */
AnnaBridge 161:aa5281ff4a02 1134 #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) \
AnnaBridge 161:aa5281ff4a02 1135 (((__HANDLE__)->Instance->ISR) = (__FLAG__))
AnnaBridge 145:64910690c574 1136
AnnaBridge 145:64910690c574 1137 /**
AnnaBridge 145:64910690c574 1138 * @}
AnnaBridge 145:64910690c574 1139 */
AnnaBridge 145:64910690c574 1140
AnnaBridge 161:aa5281ff4a02 1141 /** @defgroup ADC_HAL_EM_HELPER_MACRO HAL ADC helper macro
AnnaBridge 145:64910690c574 1142 * @{
AnnaBridge 145:64910690c574 1143 */
AnnaBridge 145:64910690c574 1144
AnnaBridge 161:aa5281ff4a02 1145 /**
AnnaBridge 161:aa5281ff4a02 1146 * @brief Helper macro to get ADC channel number in decimal format
AnnaBridge 161:aa5281ff4a02 1147 * from literals ADC_CHANNEL_x.
AnnaBridge 161:aa5281ff4a02 1148 * @note Example:
AnnaBridge 161:aa5281ff4a02 1149 * __HAL_ADC_CHANNEL_TO_DECIMAL_NB(ADC_CHANNEL_4)
AnnaBridge 161:aa5281ff4a02 1150 * will return decimal number "4".
AnnaBridge 161:aa5281ff4a02 1151 * @note The input can be a value from functions where a channel
AnnaBridge 161:aa5281ff4a02 1152 * number is returned, either defined with number
AnnaBridge 161:aa5281ff4a02 1153 * or with bitfield (only one bit must be set).
AnnaBridge 161:aa5281ff4a02 1154 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1155 * @arg @ref ADC_CHANNEL_0
AnnaBridge 161:aa5281ff4a02 1156 * @arg @ref ADC_CHANNEL_1 (7)
AnnaBridge 161:aa5281ff4a02 1157 * @arg @ref ADC_CHANNEL_2 (7)
AnnaBridge 161:aa5281ff4a02 1158 * @arg @ref ADC_CHANNEL_3 (7)
AnnaBridge 161:aa5281ff4a02 1159 * @arg @ref ADC_CHANNEL_4 (7)
AnnaBridge 161:aa5281ff4a02 1160 * @arg @ref ADC_CHANNEL_5 (7)
AnnaBridge 161:aa5281ff4a02 1161 * @arg @ref ADC_CHANNEL_6
AnnaBridge 161:aa5281ff4a02 1162 * @arg @ref ADC_CHANNEL_7
AnnaBridge 161:aa5281ff4a02 1163 * @arg @ref ADC_CHANNEL_8
AnnaBridge 161:aa5281ff4a02 1164 * @arg @ref ADC_CHANNEL_9
AnnaBridge 161:aa5281ff4a02 1165 * @arg @ref ADC_CHANNEL_10
AnnaBridge 161:aa5281ff4a02 1166 * @arg @ref ADC_CHANNEL_11
AnnaBridge 161:aa5281ff4a02 1167 * @arg @ref ADC_CHANNEL_12
AnnaBridge 161:aa5281ff4a02 1168 * @arg @ref ADC_CHANNEL_13
AnnaBridge 161:aa5281ff4a02 1169 * @arg @ref ADC_CHANNEL_14
AnnaBridge 161:aa5281ff4a02 1170 * @arg @ref ADC_CHANNEL_15
AnnaBridge 161:aa5281ff4a02 1171 * @arg @ref ADC_CHANNEL_16
AnnaBridge 161:aa5281ff4a02 1172 * @arg @ref ADC_CHANNEL_17
AnnaBridge 161:aa5281ff4a02 1173 * @arg @ref ADC_CHANNEL_18
AnnaBridge 161:aa5281ff4a02 1174 * @arg @ref ADC_CHANNEL_VREFINT (1)
AnnaBridge 161:aa5281ff4a02 1175 * @arg @ref ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 161:aa5281ff4a02 1176 * @arg @ref ADC_CHANNEL_VBAT (4)
AnnaBridge 161:aa5281ff4a02 1177 * @arg @ref ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 161:aa5281ff4a02 1178 * @arg @ref ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 161:aa5281ff4a02 1179 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 161:aa5281ff4a02 1180 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 161:aa5281ff4a02 1181 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 161:aa5281ff4a02 1182 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 161:aa5281ff4a02 1183 *
AnnaBridge 161:aa5281ff4a02 1184 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 161:aa5281ff4a02 1185 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 161:aa5281ff4a02 1186 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 161:aa5281ff4a02 1187 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 161:aa5281ff4a02 1188 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 161:aa5281ff4a02 1189 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 161:aa5281ff4a02 1190 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 161:aa5281ff4a02 1191 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 161:aa5281ff4a02 1192 * @retval Value between Min_Data=0 and Max_Data=18
AnnaBridge 145:64910690c574 1193 */
AnnaBridge 161:aa5281ff4a02 1194 #define __HAL_ADC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \
AnnaBridge 161:aa5281ff4a02 1195 __LL_ADC_CHANNEL_TO_DECIMAL_NB((__CHANNEL__))
AnnaBridge 161:aa5281ff4a02 1196
AnnaBridge 161:aa5281ff4a02 1197 /**
AnnaBridge 161:aa5281ff4a02 1198 * @brief Helper macro to get ADC channel in literal format ADC_CHANNEL_x
AnnaBridge 161:aa5281ff4a02 1199 * from number in decimal format.
AnnaBridge 161:aa5281ff4a02 1200 * @note Example:
AnnaBridge 161:aa5281ff4a02 1201 * __HAL_ADC_DECIMAL_NB_TO_CHANNEL(4)
AnnaBridge 161:aa5281ff4a02 1202 * will return a data equivalent to "ADC_CHANNEL_4".
AnnaBridge 161:aa5281ff4a02 1203 * @param __DECIMAL_NB__ Value between Min_Data=0 and Max_Data=18
AnnaBridge 161:aa5281ff4a02 1204 * @retval Returned value can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1205 * @arg @ref ADC_CHANNEL_0
AnnaBridge 161:aa5281ff4a02 1206 * @arg @ref ADC_CHANNEL_1 (7)
AnnaBridge 161:aa5281ff4a02 1207 * @arg @ref ADC_CHANNEL_2 (7)
AnnaBridge 161:aa5281ff4a02 1208 * @arg @ref ADC_CHANNEL_3 (7)
AnnaBridge 161:aa5281ff4a02 1209 * @arg @ref ADC_CHANNEL_4 (7)
AnnaBridge 161:aa5281ff4a02 1210 * @arg @ref ADC_CHANNEL_5 (7)
AnnaBridge 161:aa5281ff4a02 1211 * @arg @ref ADC_CHANNEL_6
AnnaBridge 161:aa5281ff4a02 1212 * @arg @ref ADC_CHANNEL_7
AnnaBridge 161:aa5281ff4a02 1213 * @arg @ref ADC_CHANNEL_8
AnnaBridge 161:aa5281ff4a02 1214 * @arg @ref ADC_CHANNEL_9
AnnaBridge 161:aa5281ff4a02 1215 * @arg @ref ADC_CHANNEL_10
AnnaBridge 161:aa5281ff4a02 1216 * @arg @ref ADC_CHANNEL_11
AnnaBridge 161:aa5281ff4a02 1217 * @arg @ref ADC_CHANNEL_12
AnnaBridge 161:aa5281ff4a02 1218 * @arg @ref ADC_CHANNEL_13
AnnaBridge 161:aa5281ff4a02 1219 * @arg @ref ADC_CHANNEL_14
AnnaBridge 161:aa5281ff4a02 1220 * @arg @ref ADC_CHANNEL_15
AnnaBridge 161:aa5281ff4a02 1221 * @arg @ref ADC_CHANNEL_16
AnnaBridge 161:aa5281ff4a02 1222 * @arg @ref ADC_CHANNEL_17
AnnaBridge 161:aa5281ff4a02 1223 * @arg @ref ADC_CHANNEL_18
AnnaBridge 161:aa5281ff4a02 1224 * @arg @ref ADC_CHANNEL_VREFINT (1)
AnnaBridge 161:aa5281ff4a02 1225 * @arg @ref ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 161:aa5281ff4a02 1226 * @arg @ref ADC_CHANNEL_VBAT (4)
AnnaBridge 161:aa5281ff4a02 1227 * @arg @ref ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 161:aa5281ff4a02 1228 * @arg @ref ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 161:aa5281ff4a02 1229 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 161:aa5281ff4a02 1230 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 161:aa5281ff4a02 1231 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 161:aa5281ff4a02 1232 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 161:aa5281ff4a02 1233 *
AnnaBridge 161:aa5281ff4a02 1234 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 161:aa5281ff4a02 1235 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 161:aa5281ff4a02 1236 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 161:aa5281ff4a02 1237 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 161:aa5281ff4a02 1238 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 161:aa5281ff4a02 1239 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 161:aa5281ff4a02 1240 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 161:aa5281ff4a02 1241 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).\n
AnnaBridge 161:aa5281ff4a02 1242 * (1, 2, 3, 4) For ADC channel read back from ADC register,
AnnaBridge 161:aa5281ff4a02 1243 * comparison with internal channel parameter to be done
AnnaBridge 161:aa5281ff4a02 1244 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 145:64910690c574 1245 */
AnnaBridge 161:aa5281ff4a02 1246 #define __HAL_ADC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
AnnaBridge 161:aa5281ff4a02 1247 __LL_ADC_DECIMAL_NB_TO_CHANNEL((__DECIMAL_NB__))
AnnaBridge 145:64910690c574 1248
AnnaBridge 145:64910690c574 1249 /**
AnnaBridge 161:aa5281ff4a02 1250 * @brief Helper macro to determine whether the selected channel
AnnaBridge 161:aa5281ff4a02 1251 * corresponds to literal definitions of driver.
AnnaBridge 161:aa5281ff4a02 1252 * @note The different literal definitions of ADC channels are:
AnnaBridge 161:aa5281ff4a02 1253 * - ADC internal channel:
AnnaBridge 161:aa5281ff4a02 1254 * ADC_CHANNEL_VREFINT, ADC_CHANNEL_TEMPSENSOR, ...
AnnaBridge 161:aa5281ff4a02 1255 * - ADC external channel (channel connected to a GPIO pin):
AnnaBridge 161:aa5281ff4a02 1256 * ADC_CHANNEL_1, ADC_CHANNEL_2, ...
AnnaBridge 161:aa5281ff4a02 1257 * @note The channel parameter must be a value defined from literal
AnnaBridge 161:aa5281ff4a02 1258 * definition of a ADC internal channel (ADC_CHANNEL_VREFINT,
AnnaBridge 161:aa5281ff4a02 1259 * ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 161:aa5281ff4a02 1260 * ADC external channel (ADC_CHANNEL_1, ADC_CHANNEL_2, ...),
AnnaBridge 161:aa5281ff4a02 1261 * must not be a value from functions where a channel number is
AnnaBridge 161:aa5281ff4a02 1262 * returned from ADC registers,
AnnaBridge 161:aa5281ff4a02 1263 * because internal and external channels share the same channel
AnnaBridge 161:aa5281ff4a02 1264 * number in ADC registers. The differentiation is made only with
AnnaBridge 161:aa5281ff4a02 1265 * parameters definitions of driver.
AnnaBridge 161:aa5281ff4a02 1266 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1267 * @arg @ref ADC_CHANNEL_0
AnnaBridge 161:aa5281ff4a02 1268 * @arg @ref ADC_CHANNEL_1 (7)
AnnaBridge 161:aa5281ff4a02 1269 * @arg @ref ADC_CHANNEL_2 (7)
AnnaBridge 161:aa5281ff4a02 1270 * @arg @ref ADC_CHANNEL_3 (7)
AnnaBridge 161:aa5281ff4a02 1271 * @arg @ref ADC_CHANNEL_4 (7)
AnnaBridge 161:aa5281ff4a02 1272 * @arg @ref ADC_CHANNEL_5 (7)
AnnaBridge 161:aa5281ff4a02 1273 * @arg @ref ADC_CHANNEL_6
AnnaBridge 161:aa5281ff4a02 1274 * @arg @ref ADC_CHANNEL_7
AnnaBridge 161:aa5281ff4a02 1275 * @arg @ref ADC_CHANNEL_8
AnnaBridge 161:aa5281ff4a02 1276 * @arg @ref ADC_CHANNEL_9
AnnaBridge 161:aa5281ff4a02 1277 * @arg @ref ADC_CHANNEL_10
AnnaBridge 161:aa5281ff4a02 1278 * @arg @ref ADC_CHANNEL_11
AnnaBridge 161:aa5281ff4a02 1279 * @arg @ref ADC_CHANNEL_12
AnnaBridge 161:aa5281ff4a02 1280 * @arg @ref ADC_CHANNEL_13
AnnaBridge 161:aa5281ff4a02 1281 * @arg @ref ADC_CHANNEL_14
AnnaBridge 161:aa5281ff4a02 1282 * @arg @ref ADC_CHANNEL_15
AnnaBridge 161:aa5281ff4a02 1283 * @arg @ref ADC_CHANNEL_16
AnnaBridge 161:aa5281ff4a02 1284 * @arg @ref ADC_CHANNEL_17
AnnaBridge 161:aa5281ff4a02 1285 * @arg @ref ADC_CHANNEL_18
AnnaBridge 161:aa5281ff4a02 1286 * @arg @ref ADC_CHANNEL_VREFINT (1)
AnnaBridge 161:aa5281ff4a02 1287 * @arg @ref ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 161:aa5281ff4a02 1288 * @arg @ref ADC_CHANNEL_VBAT (4)
AnnaBridge 161:aa5281ff4a02 1289 * @arg @ref ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 161:aa5281ff4a02 1290 * @arg @ref ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 161:aa5281ff4a02 1291 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 161:aa5281ff4a02 1292 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 161:aa5281ff4a02 1293 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 161:aa5281ff4a02 1294 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 161:aa5281ff4a02 1295 *
AnnaBridge 161:aa5281ff4a02 1296 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 161:aa5281ff4a02 1297 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 161:aa5281ff4a02 1298 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 161:aa5281ff4a02 1299 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 161:aa5281ff4a02 1300 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 161:aa5281ff4a02 1301 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 161:aa5281ff4a02 1302 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 161:aa5281ff4a02 1303 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 161:aa5281ff4a02 1304 * @retval Value "0" if the channel corresponds to a parameter definition of a ADC external channel (channel connected to a GPIO pin).
AnnaBridge 161:aa5281ff4a02 1305 * Value "1" if the channel corresponds to a parameter definition of a ADC internal channel.
AnnaBridge 145:64910690c574 1306 */
AnnaBridge 161:aa5281ff4a02 1307 #define __HAL_ADC_IS_CHANNEL_INTERNAL(__CHANNEL__) \
AnnaBridge 161:aa5281ff4a02 1308 __LL_ADC_IS_CHANNEL_INTERNAL((__CHANNEL__))
AnnaBridge 161:aa5281ff4a02 1309
AnnaBridge 161:aa5281ff4a02 1310 /**
AnnaBridge 161:aa5281ff4a02 1311 * @brief Helper macro to convert a channel defined from parameter
AnnaBridge 161:aa5281ff4a02 1312 * definition of a ADC internal channel (ADC_CHANNEL_VREFINT,
AnnaBridge 161:aa5281ff4a02 1313 * ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 161:aa5281ff4a02 1314 * to its equivalent parameter definition of a ADC external channel
AnnaBridge 161:aa5281ff4a02 1315 * (ADC_CHANNEL_1, ADC_CHANNEL_2, ...).
AnnaBridge 161:aa5281ff4a02 1316 * @note The channel parameter can be, additionally to a value
AnnaBridge 161:aa5281ff4a02 1317 * defined from parameter definition of a ADC internal channel
AnnaBridge 161:aa5281ff4a02 1318 * (ADC_CHANNEL_VREFINT, ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 161:aa5281ff4a02 1319 * a value defined from parameter definition of
AnnaBridge 161:aa5281ff4a02 1320 * ADC external channel (ADC_CHANNEL_1, ADC_CHANNEL_2, ...)
AnnaBridge 161:aa5281ff4a02 1321 * or a value from functions where a channel number is returned
AnnaBridge 161:aa5281ff4a02 1322 * from ADC registers.
AnnaBridge 161:aa5281ff4a02 1323 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1324 * @arg @ref ADC_CHANNEL_0
AnnaBridge 161:aa5281ff4a02 1325 * @arg @ref ADC_CHANNEL_1 (7)
AnnaBridge 161:aa5281ff4a02 1326 * @arg @ref ADC_CHANNEL_2 (7)
AnnaBridge 161:aa5281ff4a02 1327 * @arg @ref ADC_CHANNEL_3 (7)
AnnaBridge 161:aa5281ff4a02 1328 * @arg @ref ADC_CHANNEL_4 (7)
AnnaBridge 161:aa5281ff4a02 1329 * @arg @ref ADC_CHANNEL_5 (7)
AnnaBridge 161:aa5281ff4a02 1330 * @arg @ref ADC_CHANNEL_6
AnnaBridge 161:aa5281ff4a02 1331 * @arg @ref ADC_CHANNEL_7
AnnaBridge 161:aa5281ff4a02 1332 * @arg @ref ADC_CHANNEL_8
AnnaBridge 161:aa5281ff4a02 1333 * @arg @ref ADC_CHANNEL_9
AnnaBridge 161:aa5281ff4a02 1334 * @arg @ref ADC_CHANNEL_10
AnnaBridge 161:aa5281ff4a02 1335 * @arg @ref ADC_CHANNEL_11
AnnaBridge 161:aa5281ff4a02 1336 * @arg @ref ADC_CHANNEL_12
AnnaBridge 161:aa5281ff4a02 1337 * @arg @ref ADC_CHANNEL_13
AnnaBridge 161:aa5281ff4a02 1338 * @arg @ref ADC_CHANNEL_14
AnnaBridge 161:aa5281ff4a02 1339 * @arg @ref ADC_CHANNEL_15
AnnaBridge 161:aa5281ff4a02 1340 * @arg @ref ADC_CHANNEL_16
AnnaBridge 161:aa5281ff4a02 1341 * @arg @ref ADC_CHANNEL_17
AnnaBridge 161:aa5281ff4a02 1342 * @arg @ref ADC_CHANNEL_18
AnnaBridge 161:aa5281ff4a02 1343 * @arg @ref ADC_CHANNEL_VREFINT (1)
AnnaBridge 161:aa5281ff4a02 1344 * @arg @ref ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 161:aa5281ff4a02 1345 * @arg @ref ADC_CHANNEL_VBAT (4)
AnnaBridge 161:aa5281ff4a02 1346 * @arg @ref ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 161:aa5281ff4a02 1347 * @arg @ref ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 161:aa5281ff4a02 1348 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 161:aa5281ff4a02 1349 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 161:aa5281ff4a02 1350 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 161:aa5281ff4a02 1351 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 161:aa5281ff4a02 1352 *
AnnaBridge 161:aa5281ff4a02 1353 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 161:aa5281ff4a02 1354 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 161:aa5281ff4a02 1355 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 161:aa5281ff4a02 1356 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 161:aa5281ff4a02 1357 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 161:aa5281ff4a02 1358 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 161:aa5281ff4a02 1359 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 161:aa5281ff4a02 1360 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 161:aa5281ff4a02 1361 * @retval Returned value can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1362 * @arg @ref ADC_CHANNEL_0
AnnaBridge 161:aa5281ff4a02 1363 * @arg @ref ADC_CHANNEL_1
AnnaBridge 161:aa5281ff4a02 1364 * @arg @ref ADC_CHANNEL_2
AnnaBridge 161:aa5281ff4a02 1365 * @arg @ref ADC_CHANNEL_3
AnnaBridge 161:aa5281ff4a02 1366 * @arg @ref ADC_CHANNEL_4
AnnaBridge 161:aa5281ff4a02 1367 * @arg @ref ADC_CHANNEL_5
AnnaBridge 161:aa5281ff4a02 1368 * @arg @ref ADC_CHANNEL_6
AnnaBridge 161:aa5281ff4a02 1369 * @arg @ref ADC_CHANNEL_7
AnnaBridge 161:aa5281ff4a02 1370 * @arg @ref ADC_CHANNEL_8
AnnaBridge 161:aa5281ff4a02 1371 * @arg @ref ADC_CHANNEL_9
AnnaBridge 161:aa5281ff4a02 1372 * @arg @ref ADC_CHANNEL_10
AnnaBridge 161:aa5281ff4a02 1373 * @arg @ref ADC_CHANNEL_11
AnnaBridge 161:aa5281ff4a02 1374 * @arg @ref ADC_CHANNEL_12
AnnaBridge 161:aa5281ff4a02 1375 * @arg @ref ADC_CHANNEL_13
AnnaBridge 161:aa5281ff4a02 1376 * @arg @ref ADC_CHANNEL_14
AnnaBridge 161:aa5281ff4a02 1377 * @arg @ref ADC_CHANNEL_15
AnnaBridge 161:aa5281ff4a02 1378 * @arg @ref ADC_CHANNEL_16
AnnaBridge 161:aa5281ff4a02 1379 * @arg @ref ADC_CHANNEL_17
AnnaBridge 161:aa5281ff4a02 1380 * @arg @ref ADC_CHANNEL_18
AnnaBridge 161:aa5281ff4a02 1381 */
AnnaBridge 161:aa5281ff4a02 1382 #define __HAL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(__CHANNEL__) \
AnnaBridge 161:aa5281ff4a02 1383 __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL((__CHANNEL__))
AnnaBridge 145:64910690c574 1384
AnnaBridge 145:64910690c574 1385 /**
AnnaBridge 161:aa5281ff4a02 1386 * @brief Helper macro to determine whether the internal channel
AnnaBridge 161:aa5281ff4a02 1387 * selected is available on the ADC instance selected.
AnnaBridge 161:aa5281ff4a02 1388 * @note The channel parameter must be a value defined from parameter
AnnaBridge 161:aa5281ff4a02 1389 * definition of a ADC internal channel (ADC_CHANNEL_VREFINT,
AnnaBridge 161:aa5281ff4a02 1390 * ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 161:aa5281ff4a02 1391 * must not be a value defined from parameter definition of
AnnaBridge 161:aa5281ff4a02 1392 * ADC external channel (ADC_CHANNEL_1, ADC_CHANNEL_2, ...)
AnnaBridge 161:aa5281ff4a02 1393 * or a value from functions where a channel number is
AnnaBridge 161:aa5281ff4a02 1394 * returned from ADC registers,
AnnaBridge 161:aa5281ff4a02 1395 * because internal and external channels share the same channel
AnnaBridge 161:aa5281ff4a02 1396 * number in ADC registers. The differentiation is made only with
AnnaBridge 161:aa5281ff4a02 1397 * parameters definitions of driver.
AnnaBridge 161:aa5281ff4a02 1398 * @param __ADC_INSTANCE__ ADC instance
AnnaBridge 161:aa5281ff4a02 1399 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1400 * @arg @ref ADC_CHANNEL_VREFINT (1)
AnnaBridge 161:aa5281ff4a02 1401 * @arg @ref ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 161:aa5281ff4a02 1402 * @arg @ref ADC_CHANNEL_VBAT (4)
AnnaBridge 161:aa5281ff4a02 1403 * @arg @ref ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 161:aa5281ff4a02 1404 * @arg @ref ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 161:aa5281ff4a02 1405 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 161:aa5281ff4a02 1406 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 161:aa5281ff4a02 1407 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 161:aa5281ff4a02 1408 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 161:aa5281ff4a02 1409 *
AnnaBridge 161:aa5281ff4a02 1410 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 161:aa5281ff4a02 1411 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 161:aa5281ff4a02 1412 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 161:aa5281ff4a02 1413 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 161:aa5281ff4a02 1414 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 161:aa5281ff4a02 1415 * (6) On STM32L4, parameter available on devices with several ADC instances.
AnnaBridge 161:aa5281ff4a02 1416 * @retval Value "0" if the internal channel selected is not available on the ADC instance selected.
AnnaBridge 161:aa5281ff4a02 1417 * Value "1" if the internal channel selected is available on the ADC instance selected.
AnnaBridge 161:aa5281ff4a02 1418 */
AnnaBridge 161:aa5281ff4a02 1419 #define __HAL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 161:aa5281ff4a02 1420 __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE((__ADC_INSTANCE__), (__CHANNEL__))
AnnaBridge 161:aa5281ff4a02 1421
AnnaBridge 161:aa5281ff4a02 1422 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 161:aa5281ff4a02 1423 /**
AnnaBridge 161:aa5281ff4a02 1424 * @brief Helper macro to get the ADC multimode conversion data of ADC master
AnnaBridge 161:aa5281ff4a02 1425 * or ADC slave from raw value with both ADC conversion data concatenated.
AnnaBridge 161:aa5281ff4a02 1426 * @note This macro is intended to be used when multimode transfer by DMA
AnnaBridge 161:aa5281ff4a02 1427 * is enabled: refer to function @ref LL_ADC_SetMultiDMATransfer().
AnnaBridge 161:aa5281ff4a02 1428 * In this case the transferred data need to processed with this macro
AnnaBridge 161:aa5281ff4a02 1429 * to separate the conversion data of ADC master and ADC slave.
AnnaBridge 161:aa5281ff4a02 1430 * @param __ADC_MULTI_MASTER_SLAVE__ This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1431 * @arg @ref LL_ADC_MULTI_MASTER
AnnaBridge 161:aa5281ff4a02 1432 * @arg @ref LL_ADC_MULTI_SLAVE
AnnaBridge 161:aa5281ff4a02 1433 * @param __ADC_MULTI_CONV_DATA__ Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 161:aa5281ff4a02 1434 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 161:aa5281ff4a02 1435 */
AnnaBridge 161:aa5281ff4a02 1436 #define __HAL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(__ADC_MULTI_MASTER_SLAVE__, __ADC_MULTI_CONV_DATA__) \
AnnaBridge 161:aa5281ff4a02 1437 __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE((__ADC_MULTI_MASTER_SLAVE__), (__ADC_MULTI_CONV_DATA__))
AnnaBridge 161:aa5281ff4a02 1438 #endif
AnnaBridge 161:aa5281ff4a02 1439
AnnaBridge 161:aa5281ff4a02 1440 /**
AnnaBridge 161:aa5281ff4a02 1441 * @brief Helper macro to select the ADC common instance
AnnaBridge 161:aa5281ff4a02 1442 * to which is belonging the selected ADC instance.
AnnaBridge 161:aa5281ff4a02 1443 * @note ADC common register instance can be used for:
AnnaBridge 161:aa5281ff4a02 1444 * - Set parameters common to several ADC instances
AnnaBridge 161:aa5281ff4a02 1445 * - Multimode (for devices with several ADC instances)
AnnaBridge 161:aa5281ff4a02 1446 * Refer to functions having argument "ADCxy_COMMON" as parameter.
AnnaBridge 161:aa5281ff4a02 1447 * @param __ADCx__ ADC instance
AnnaBridge 161:aa5281ff4a02 1448 * @retval ADC common register instance
AnnaBridge 145:64910690c574 1449 */
AnnaBridge 161:aa5281ff4a02 1450 #define __HAL_ADC_COMMON_INSTANCE(__ADCx__) \
AnnaBridge 161:aa5281ff4a02 1451 __LL_ADC_COMMON_INSTANCE((__ADCx__))
AnnaBridge 161:aa5281ff4a02 1452
AnnaBridge 161:aa5281ff4a02 1453 /**
AnnaBridge 161:aa5281ff4a02 1454 * @brief Helper macro to check if all ADC instances sharing the same
AnnaBridge 161:aa5281ff4a02 1455 * ADC common instance are disabled.
AnnaBridge 161:aa5281ff4a02 1456 * @note This check is required by functions with setting conditioned to
AnnaBridge 161:aa5281ff4a02 1457 * ADC state:
AnnaBridge 161:aa5281ff4a02 1458 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 161:aa5281ff4a02 1459 * Refer to functions having argument "ADCxy_COMMON" as parameter.
AnnaBridge 161:aa5281ff4a02 1460 * @note On devices with only 1 ADC common instance, parameter of this macro
AnnaBridge 161:aa5281ff4a02 1461 * is useless and can be ignored (parameter kept for compatibility
AnnaBridge 161:aa5281ff4a02 1462 * with devices featuring several ADC common instances).
AnnaBridge 161:aa5281ff4a02 1463 * @param __ADCXY_COMMON__ ADC common instance
AnnaBridge 161:aa5281ff4a02 1464 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 161:aa5281ff4a02 1465 * @retval Value "0" if all ADC instances sharing the same ADC common instance
AnnaBridge 161:aa5281ff4a02 1466 * are disabled.
AnnaBridge 161:aa5281ff4a02 1467 * Value "1" if at least one ADC instance sharing the same ADC common instance
AnnaBridge 161:aa5281ff4a02 1468 * is enabled.
AnnaBridge 161:aa5281ff4a02 1469 */
AnnaBridge 161:aa5281ff4a02 1470 #define __HAL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
AnnaBridge 161:aa5281ff4a02 1471 __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE((__ADCXY_COMMON__))
AnnaBridge 161:aa5281ff4a02 1472
AnnaBridge 161:aa5281ff4a02 1473 /**
AnnaBridge 161:aa5281ff4a02 1474 * @brief Helper macro to define the ADC conversion data full-scale digital
AnnaBridge 161:aa5281ff4a02 1475 * value corresponding to the selected ADC resolution.
AnnaBridge 161:aa5281ff4a02 1476 * @note ADC conversion data full-scale corresponds to voltage range
AnnaBridge 161:aa5281ff4a02 1477 * determined by analog voltage references Vref+ and Vref-
AnnaBridge 161:aa5281ff4a02 1478 * (refer to reference manual).
AnnaBridge 161:aa5281ff4a02 1479 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1480 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 161:aa5281ff4a02 1481 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 161:aa5281ff4a02 1482 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 161:aa5281ff4a02 1483 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 161:aa5281ff4a02 1484 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
AnnaBridge 161:aa5281ff4a02 1485 */
AnnaBridge 161:aa5281ff4a02 1486 #define __HAL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \
AnnaBridge 161:aa5281ff4a02 1487 __LL_ADC_DIGITAL_SCALE((__ADC_RESOLUTION__))
AnnaBridge 161:aa5281ff4a02 1488
AnnaBridge 161:aa5281ff4a02 1489 /**
AnnaBridge 161:aa5281ff4a02 1490 * @brief Helper macro to convert the ADC conversion data from
AnnaBridge 161:aa5281ff4a02 1491 * a resolution to another resolution.
AnnaBridge 161:aa5281ff4a02 1492 * @param __DATA__ ADC conversion data to be converted
AnnaBridge 161:aa5281ff4a02 1493 * @param __ADC_RESOLUTION_CURRENT__ Resolution of to the data to be converted
AnnaBridge 161:aa5281ff4a02 1494 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1495 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 161:aa5281ff4a02 1496 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 161:aa5281ff4a02 1497 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 161:aa5281ff4a02 1498 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 161:aa5281ff4a02 1499 * @param __ADC_RESOLUTION_TARGET__ Resolution of the data after conversion
AnnaBridge 161:aa5281ff4a02 1500 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1501 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 161:aa5281ff4a02 1502 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 161:aa5281ff4a02 1503 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 161:aa5281ff4a02 1504 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 161:aa5281ff4a02 1505 * @retval ADC conversion data to the requested resolution
AnnaBridge 161:aa5281ff4a02 1506 */
AnnaBridge 161:aa5281ff4a02 1507 #define __HAL_ADC_CONVERT_DATA_RESOLUTION(__DATA__,\
AnnaBridge 161:aa5281ff4a02 1508 __ADC_RESOLUTION_CURRENT__,\
AnnaBridge 161:aa5281ff4a02 1509 __ADC_RESOLUTION_TARGET__) \
AnnaBridge 161:aa5281ff4a02 1510 __LL_ADC_CONVERT_DATA_RESOLUTION((__DATA__),\
AnnaBridge 161:aa5281ff4a02 1511 (__ADC_RESOLUTION_CURRENT__),\
AnnaBridge 161:aa5281ff4a02 1512 (__ADC_RESOLUTION_TARGET__))
AnnaBridge 145:64910690c574 1513
AnnaBridge 145:64910690c574 1514 /**
AnnaBridge 161:aa5281ff4a02 1515 * @brief Helper macro to calculate the voltage (unit: mVolt)
AnnaBridge 161:aa5281ff4a02 1516 * corresponding to a ADC conversion data (unit: digital value).
AnnaBridge 161:aa5281ff4a02 1517 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 161:aa5281ff4a02 1518 * user board environment or can be calculated using ADC measurement
AnnaBridge 161:aa5281ff4a02 1519 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 161:aa5281ff4a02 1520 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
AnnaBridge 161:aa5281ff4a02 1521 * @param __ADC_DATA__ ADC conversion data (resolution 12 bits)
AnnaBridge 161:aa5281ff4a02 1522 * (unit: digital value).
AnnaBridge 161:aa5281ff4a02 1523 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1524 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 161:aa5281ff4a02 1525 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 161:aa5281ff4a02 1526 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 161:aa5281ff4a02 1527 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 161:aa5281ff4a02 1528 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
AnnaBridge 145:64910690c574 1529 */
AnnaBridge 161:aa5281ff4a02 1530 #define __HAL_ADC_CALC_DATA_TO_VOLTAGE(__VREFANALOG_VOLTAGE__,\
AnnaBridge 161:aa5281ff4a02 1531 __ADC_DATA__,\
AnnaBridge 161:aa5281ff4a02 1532 __ADC_RESOLUTION__) \
AnnaBridge 161:aa5281ff4a02 1533 __LL_ADC_CALC_DATA_TO_VOLTAGE((__VREFANALOG_VOLTAGE__),\
AnnaBridge 161:aa5281ff4a02 1534 (__ADC_DATA__),\
AnnaBridge 161:aa5281ff4a02 1535 (__ADC_RESOLUTION__))
AnnaBridge 161:aa5281ff4a02 1536
AnnaBridge 161:aa5281ff4a02 1537 /**
AnnaBridge 161:aa5281ff4a02 1538 * @brief Helper macro to calculate analog reference voltage (Vref+)
AnnaBridge 161:aa5281ff4a02 1539 * (unit: mVolt) from ADC conversion data of internal voltage
AnnaBridge 161:aa5281ff4a02 1540 * reference VrefInt.
AnnaBridge 161:aa5281ff4a02 1541 * @note Computation is using VrefInt calibration value
AnnaBridge 161:aa5281ff4a02 1542 * stored in system memory for each device during production.
AnnaBridge 161:aa5281ff4a02 1543 * @note This voltage depends on user board environment: voltage level
AnnaBridge 161:aa5281ff4a02 1544 * connected to pin Vref+.
AnnaBridge 161:aa5281ff4a02 1545 * On devices with small package, the pin Vref+ is not present
AnnaBridge 161:aa5281ff4a02 1546 * and internally bonded to pin Vdda.
AnnaBridge 161:aa5281ff4a02 1547 * @note On this STM32 serie, calibration data of internal voltage reference
AnnaBridge 161:aa5281ff4a02 1548 * VrefInt corresponds to a resolution of 12 bits,
AnnaBridge 161:aa5281ff4a02 1549 * this is the recommended ADC resolution to convert voltage of
AnnaBridge 161:aa5281ff4a02 1550 * internal voltage reference VrefInt.
AnnaBridge 161:aa5281ff4a02 1551 * Otherwise, this macro performs the processing to scale
AnnaBridge 161:aa5281ff4a02 1552 * ADC conversion data to 12 bits.
AnnaBridge 161:aa5281ff4a02 1553 * @param __VREFINT_ADC_DATA__ ADC conversion data (resolution 12 bits)
AnnaBridge 161:aa5281ff4a02 1554 * of internal voltage reference VrefInt (unit: digital value).
AnnaBridge 161:aa5281ff4a02 1555 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1556 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 161:aa5281ff4a02 1557 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 161:aa5281ff4a02 1558 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 161:aa5281ff4a02 1559 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 161:aa5281ff4a02 1560 * @retval Analog reference voltage (unit: mV)
AnnaBridge 161:aa5281ff4a02 1561 */
AnnaBridge 161:aa5281ff4a02 1562 #define __HAL_ADC_CALC_VREFANALOG_VOLTAGE(__VREFINT_ADC_DATA__,\
AnnaBridge 161:aa5281ff4a02 1563 __ADC_RESOLUTION__) \
AnnaBridge 161:aa5281ff4a02 1564 __LL_ADC_CALC_VREFANALOG_VOLTAGE((__VREFINT_ADC_DATA__),\
AnnaBridge 161:aa5281ff4a02 1565 (__ADC_RESOLUTION__))
AnnaBridge 145:64910690c574 1566
AnnaBridge 145:64910690c574 1567 /**
AnnaBridge 161:aa5281ff4a02 1568 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
AnnaBridge 161:aa5281ff4a02 1569 * from ADC conversion data of internal temperature sensor.
AnnaBridge 161:aa5281ff4a02 1570 * @note Computation is using temperature sensor calibration values
AnnaBridge 161:aa5281ff4a02 1571 * stored in system memory for each device during production.
AnnaBridge 161:aa5281ff4a02 1572 * @note Calculation formula:
AnnaBridge 161:aa5281ff4a02 1573 * Temperature = ((TS_ADC_DATA - TS_CAL1)
AnnaBridge 161:aa5281ff4a02 1574 * * (TS_CAL2_TEMP - TS_CAL1_TEMP))
AnnaBridge 161:aa5281ff4a02 1575 * / (TS_CAL2 - TS_CAL1) + TS_CAL1_TEMP
AnnaBridge 161:aa5281ff4a02 1576 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
AnnaBridge 161:aa5281ff4a02 1577 * Avg_Slope = (TS_CAL2 - TS_CAL1)
AnnaBridge 161:aa5281ff4a02 1578 * / (TS_CAL2_TEMP - TS_CAL1_TEMP)
AnnaBridge 161:aa5281ff4a02 1579 * TS_CAL1 = equivalent TS_ADC_DATA at temperature
AnnaBridge 161:aa5281ff4a02 1580 * TEMP_DEGC_CAL1 (calibrated in factory)
AnnaBridge 161:aa5281ff4a02 1581 * TS_CAL2 = equivalent TS_ADC_DATA at temperature
AnnaBridge 161:aa5281ff4a02 1582 * TEMP_DEGC_CAL2 (calibrated in factory)
AnnaBridge 161:aa5281ff4a02 1583 * Caution: Calculation relevancy under reserve that calibration
AnnaBridge 161:aa5281ff4a02 1584 * parameters are correct (address and data).
AnnaBridge 161:aa5281ff4a02 1585 * To calculate temperature using temperature sensor
AnnaBridge 161:aa5281ff4a02 1586 * datasheet typical values (generic values less, therefore
AnnaBridge 161:aa5281ff4a02 1587 * less accurate than calibrated values),
AnnaBridge 161:aa5281ff4a02 1588 * use helper macro @ref __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS().
AnnaBridge 161:aa5281ff4a02 1589 * @note As calculation input, the analog reference voltage (Vref+) must be
AnnaBridge 161:aa5281ff4a02 1590 * defined as it impacts the ADC LSB equivalent voltage.
AnnaBridge 161:aa5281ff4a02 1591 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 161:aa5281ff4a02 1592 * user board environment or can be calculated using ADC measurement
AnnaBridge 161:aa5281ff4a02 1593 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 161:aa5281ff4a02 1594 * @note On this STM32 serie, calibration data of temperature sensor
AnnaBridge 161:aa5281ff4a02 1595 * corresponds to a resolution of 12 bits,
AnnaBridge 161:aa5281ff4a02 1596 * this is the recommended ADC resolution to convert voltage of
AnnaBridge 161:aa5281ff4a02 1597 * temperature sensor.
AnnaBridge 161:aa5281ff4a02 1598 * Otherwise, this macro performs the processing to scale
AnnaBridge 161:aa5281ff4a02 1599 * ADC conversion data to 12 bits.
AnnaBridge 161:aa5281ff4a02 1600 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
AnnaBridge 161:aa5281ff4a02 1601 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal
AnnaBridge 161:aa5281ff4a02 1602 * temperature sensor (unit: digital value).
AnnaBridge 161:aa5281ff4a02 1603 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature
AnnaBridge 161:aa5281ff4a02 1604 * sensor voltage has been measured.
AnnaBridge 161:aa5281ff4a02 1605 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1606 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 161:aa5281ff4a02 1607 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 161:aa5281ff4a02 1608 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 161:aa5281ff4a02 1609 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 161:aa5281ff4a02 1610 * @retval Temperature (unit: degree Celsius)
AnnaBridge 145:64910690c574 1611 */
AnnaBridge 161:aa5281ff4a02 1612 #define __HAL_ADC_CALC_TEMPERATURE(__VREFANALOG_VOLTAGE__,\
AnnaBridge 161:aa5281ff4a02 1613 __TEMPSENSOR_ADC_DATA__,\
AnnaBridge 161:aa5281ff4a02 1614 __ADC_RESOLUTION__) \
AnnaBridge 161:aa5281ff4a02 1615 __LL_ADC_CALC_TEMPERATURE((__VREFANALOG_VOLTAGE__),\
AnnaBridge 161:aa5281ff4a02 1616 (__TEMPSENSOR_ADC_DATA__),\
AnnaBridge 161:aa5281ff4a02 1617 (__ADC_RESOLUTION__))
AnnaBridge 161:aa5281ff4a02 1618
AnnaBridge 161:aa5281ff4a02 1619 /**
AnnaBridge 161:aa5281ff4a02 1620 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
AnnaBridge 161:aa5281ff4a02 1621 * from ADC conversion data of internal temperature sensor.
AnnaBridge 161:aa5281ff4a02 1622 * @note Computation is using temperature sensor typical values
AnnaBridge 161:aa5281ff4a02 1623 * (refer to device datasheet).
AnnaBridge 161:aa5281ff4a02 1624 * @note Calculation formula:
AnnaBridge 161:aa5281ff4a02 1625 * Temperature = (TS_TYP_CALx_VOLT(uV) - TS_ADC_DATA * Conversion_uV)
AnnaBridge 161:aa5281ff4a02 1626 * / Avg_Slope + CALx_TEMP
AnnaBridge 161:aa5281ff4a02 1627 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
AnnaBridge 161:aa5281ff4a02 1628 * (unit: digital value)
AnnaBridge 161:aa5281ff4a02 1629 * Avg_Slope = temperature sensor slope
AnnaBridge 161:aa5281ff4a02 1630 * (unit: uV/Degree Celsius)
AnnaBridge 161:aa5281ff4a02 1631 * TS_TYP_CALx_VOLT = temperature sensor digital value at
AnnaBridge 161:aa5281ff4a02 1632 * temperature CALx_TEMP (unit: mV)
AnnaBridge 161:aa5281ff4a02 1633 * Caution: Calculation relevancy under reserve the temperature sensor
AnnaBridge 161:aa5281ff4a02 1634 * of the current device has characteristics in line with
AnnaBridge 161:aa5281ff4a02 1635 * datasheet typical values.
AnnaBridge 161:aa5281ff4a02 1636 * If temperature sensor calibration values are available on
AnnaBridge 161:aa5281ff4a02 1637 * on this device (presence of macro __LL_ADC_CALC_TEMPERATURE()),
AnnaBridge 161:aa5281ff4a02 1638 * temperature calculation will be more accurate using
AnnaBridge 161:aa5281ff4a02 1639 * helper macro @ref __LL_ADC_CALC_TEMPERATURE().
AnnaBridge 161:aa5281ff4a02 1640 * @note As calculation input, the analog reference voltage (Vref+) must be
AnnaBridge 161:aa5281ff4a02 1641 * defined as it impacts the ADC LSB equivalent voltage.
AnnaBridge 161:aa5281ff4a02 1642 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 161:aa5281ff4a02 1643 * user board environment or can be calculated using ADC measurement
AnnaBridge 161:aa5281ff4a02 1644 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 161:aa5281ff4a02 1645 * @note ADC measurement data must correspond to a resolution of 12bits
AnnaBridge 161:aa5281ff4a02 1646 * (full scale digital value 4095). If not the case, the data must be
AnnaBridge 161:aa5281ff4a02 1647 * preliminarily rescaled to an equivalent resolution of 12 bits.
AnnaBridge 161:aa5281ff4a02 1648 * @param __TEMPSENSOR_TYP_AVGSLOPE__ Device datasheet data: Temperature sensor slope typical value (unit: uV/DegCelsius).
AnnaBridge 161:aa5281ff4a02 1649 * On STM32L4, refer to device datasheet parameter "Avg_Slope".
AnnaBridge 161:aa5281ff4a02 1650 * @param __TEMPSENSOR_TYP_CALX_V__ Device datasheet data: Temperature sensor voltage typical value (at temperature and Vref+ defined in parameters below) (unit: mV).
AnnaBridge 161:aa5281ff4a02 1651 * On STM32L4, refer to device datasheet parameter "V30" (corresponding to TS_CAL1).
AnnaBridge 161:aa5281ff4a02 1652 * @param __TEMPSENSOR_CALX_TEMP__ Device datasheet data: Temperature at which temperature sensor voltage (see parameter above) is corresponding (unit: mV)
AnnaBridge 161:aa5281ff4a02 1653 * @param __VREFANALOG_VOLTAGE__ Analog voltage reference (Vref+) voltage (unit: mV)
AnnaBridge 161:aa5281ff4a02 1654 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal temperature sensor (unit: digital value).
AnnaBridge 161:aa5281ff4a02 1655 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature sensor voltage has been measured.
AnnaBridge 161:aa5281ff4a02 1656 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 1657 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 161:aa5281ff4a02 1658 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 161:aa5281ff4a02 1659 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 161:aa5281ff4a02 1660 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 161:aa5281ff4a02 1661 * @retval Temperature (unit: degree Celsius)
AnnaBridge 161:aa5281ff4a02 1662 */
AnnaBridge 161:aa5281ff4a02 1663 #define __HAL_ADC_CALC_TEMPERATURE_TYP_PARAMS(__TEMPSENSOR_TYP_AVGSLOPE__,\
AnnaBridge 161:aa5281ff4a02 1664 __TEMPSENSOR_TYP_CALX_V__,\
AnnaBridge 161:aa5281ff4a02 1665 __TEMPSENSOR_CALX_TEMP__,\
AnnaBridge 161:aa5281ff4a02 1666 __VREFANALOG_VOLTAGE__,\
AnnaBridge 161:aa5281ff4a02 1667 __TEMPSENSOR_ADC_DATA__,\
AnnaBridge 161:aa5281ff4a02 1668 __ADC_RESOLUTION__) \
AnnaBridge 161:aa5281ff4a02 1669 __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS((__TEMPSENSOR_TYP_AVGSLOPE__),\
AnnaBridge 161:aa5281ff4a02 1670 (__TEMPSENSOR_TYP_CALX_V__),\
AnnaBridge 161:aa5281ff4a02 1671 (__TEMPSENSOR_CALX_TEMP__),\
AnnaBridge 161:aa5281ff4a02 1672 (__VREFANALOG_VOLTAGE__),\
AnnaBridge 161:aa5281ff4a02 1673 (__TEMPSENSOR_ADC_DATA__),\
AnnaBridge 161:aa5281ff4a02 1674 (__ADC_RESOLUTION__))
AnnaBridge 161:aa5281ff4a02 1675
AnnaBridge 161:aa5281ff4a02 1676 /**
AnnaBridge 161:aa5281ff4a02 1677 * @}
AnnaBridge 161:aa5281ff4a02 1678 */
AnnaBridge 145:64910690c574 1679
AnnaBridge 145:64910690c574 1680 /**
AnnaBridge 145:64910690c574 1681 * @}
AnnaBridge 145:64910690c574 1682 */
AnnaBridge 145:64910690c574 1683
AnnaBridge 145:64910690c574 1684 /* Include ADC HAL Extended module */
AnnaBridge 145:64910690c574 1685 #include "stm32l4xx_hal_adc_ex.h"
AnnaBridge 145:64910690c574 1686
AnnaBridge 145:64910690c574 1687 /* Exported functions --------------------------------------------------------*/
AnnaBridge 145:64910690c574 1688 /** @addtogroup ADC_Exported_Functions
AnnaBridge 145:64910690c574 1689 * @{
AnnaBridge 145:64910690c574 1690 */
AnnaBridge 145:64910690c574 1691
AnnaBridge 145:64910690c574 1692 /** @addtogroup ADC_Exported_Functions_Group1
AnnaBridge 145:64910690c574 1693 * @brief Initialization and Configuration functions
AnnaBridge 145:64910690c574 1694 * @{
AnnaBridge 145:64910690c574 1695 */
AnnaBridge 145:64910690c574 1696 /* Initialization and de-initialization functions ****************************/
AnnaBridge 145:64910690c574 1697 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1698 HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc);
AnnaBridge 145:64910690c574 1699 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1700 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1701 /**
AnnaBridge 145:64910690c574 1702 * @}
AnnaBridge 145:64910690c574 1703 */
AnnaBridge 145:64910690c574 1704
AnnaBridge 145:64910690c574 1705 /** @addtogroup ADC_Exported_Functions_Group2
AnnaBridge 161:aa5281ff4a02 1706 * @brief IO operation functions
AnnaBridge 145:64910690c574 1707 * @{
AnnaBridge 145:64910690c574 1708 */
AnnaBridge 145:64910690c574 1709 /* IO operation functions *****************************************************/
AnnaBridge 145:64910690c574 1710
AnnaBridge 145:64910690c574 1711 /* Blocking mode: Polling */
AnnaBridge 145:64910690c574 1712 HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1713 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1714 HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
AnnaBridge 145:64910690c574 1715 HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout);
AnnaBridge 145:64910690c574 1716
AnnaBridge 145:64910690c574 1717 /* Non-blocking mode: Interruption */
AnnaBridge 145:64910690c574 1718 HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1719 HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1720
AnnaBridge 145:64910690c574 1721 /* Non-blocking mode: DMA */
AnnaBridge 145:64910690c574 1722 HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);
AnnaBridge 145:64910690c574 1723 HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1724
AnnaBridge 145:64910690c574 1725 /* ADC retrieve conversion value intended to be used with polling or interruption */
AnnaBridge 145:64910690c574 1726 uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1727
AnnaBridge 145:64910690c574 1728 /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption and DMA) */
AnnaBridge 145:64910690c574 1729 void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1730 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1731 void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1732 void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1733 void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc);
AnnaBridge 145:64910690c574 1734 /**
AnnaBridge 145:64910690c574 1735 * @}
AnnaBridge 145:64910690c574 1736 */
AnnaBridge 145:64910690c574 1737
AnnaBridge 145:64910690c574 1738 /** @addtogroup ADC_Exported_Functions_Group3 Peripheral Control functions
AnnaBridge 145:64910690c574 1739 * @brief Peripheral Control functions
AnnaBridge 145:64910690c574 1740 * @{
AnnaBridge 145:64910690c574 1741 */
AnnaBridge 145:64910690c574 1742 /* Peripheral Control functions ***********************************************/
AnnaBridge 145:64910690c574 1743 HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig);
AnnaBridge 145:64910690c574 1744 HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig);
AnnaBridge 145:64910690c574 1745
AnnaBridge 145:64910690c574 1746 /**
AnnaBridge 145:64910690c574 1747 * @}
AnnaBridge 145:64910690c574 1748 */
AnnaBridge 145:64910690c574 1749
AnnaBridge 145:64910690c574 1750 /* Peripheral State functions *************************************************/
AnnaBridge 145:64910690c574 1751 /** @addtogroup ADC_Exported_Functions_Group4
AnnaBridge 145:64910690c574 1752 * @{
AnnaBridge 145:64910690c574 1753 */
AnnaBridge 145:64910690c574 1754 uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1755 uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc);
AnnaBridge 145:64910690c574 1756
AnnaBridge 145:64910690c574 1757 /**
AnnaBridge 145:64910690c574 1758 * @}
AnnaBridge 145:64910690c574 1759 */
AnnaBridge 145:64910690c574 1760
AnnaBridge 145:64910690c574 1761 /**
AnnaBridge 145:64910690c574 1762 * @}
AnnaBridge 145:64910690c574 1763 */
AnnaBridge 145:64910690c574 1764
AnnaBridge 145:64910690c574 1765 /* Private functions -----------------------------------------------------------*/
AnnaBridge 145:64910690c574 1766 /** @addtogroup ADC_Private_Functions ADC Private Functions
AnnaBridge 145:64910690c574 1767 * @{
AnnaBridge 145:64910690c574 1768 */
AnnaBridge 145:64910690c574 1769 HAL_StatusTypeDef ADC_ConversionStop(ADC_HandleTypeDef* hadc, uint32_t ConversionGroup);
AnnaBridge 145:64910690c574 1770 HAL_StatusTypeDef ADC_Enable(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1771 HAL_StatusTypeDef ADC_Disable(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1772 void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma);
AnnaBridge 145:64910690c574 1773 void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma);
AnnaBridge 145:64910690c574 1774 void ADC_DMAError(DMA_HandleTypeDef *hdma);
AnnaBridge 145:64910690c574 1775
AnnaBridge 145:64910690c574 1776 /**
AnnaBridge 145:64910690c574 1777 * @}
AnnaBridge 145:64910690c574 1778 */
AnnaBridge 145:64910690c574 1779
AnnaBridge 145:64910690c574 1780 /**
AnnaBridge 145:64910690c574 1781 * @}
AnnaBridge 145:64910690c574 1782 */
AnnaBridge 145:64910690c574 1783
AnnaBridge 145:64910690c574 1784 /**
AnnaBridge 145:64910690c574 1785 * @}
AnnaBridge 145:64910690c574 1786 */
AnnaBridge 145:64910690c574 1787
AnnaBridge 145:64910690c574 1788 #ifdef __cplusplus
AnnaBridge 145:64910690c574 1789 }
AnnaBridge 145:64910690c574 1790 #endif
AnnaBridge 145:64910690c574 1791
AnnaBridge 145:64910690c574 1792
AnnaBridge 145:64910690c574 1793 #endif /* __STM32L4xx_HAL_ADC_H */
AnnaBridge 145:64910690c574 1794
AnnaBridge 145:64910690c574 1795 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/