mbed library sources. Supersedes mbed-src.

Fork of mbed-dev by mbed official

Committer:
Anna Bridge
Date:
Wed Jan 17 15:23:54 2018 +0000
Revision:
181:96ed750bd169
Parent:
167:e84263d55307
mbed-dev libray. Release version 158

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /**
<> 144:ef7eb2e8f9f7 2 ******************************************************************************
<> 144:ef7eb2e8f9f7 3 * @file stm32l4xx_hal_adc_ex.h
<> 144:ef7eb2e8f9f7 4 * @author MCD Application Team
AnnaBridge 167:e84263d55307 5 * @version V1.7.1
AnnaBridge 167:e84263d55307 6 * @date 21-April-2017
<> 144:ef7eb2e8f9f7 7 * @brief Header file of ADC HAL extended module.
<> 144:ef7eb2e8f9f7 8 ******************************************************************************
<> 144:ef7eb2e8f9f7 9 * @attention
<> 144:ef7eb2e8f9f7 10 *
AnnaBridge 167:e84263d55307 11 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
<> 144:ef7eb2e8f9f7 12 *
<> 144:ef7eb2e8f9f7 13 * Redistribution and use in source and binary forms, with or without modification,
<> 144:ef7eb2e8f9f7 14 * are permitted provided that the following conditions are met:
<> 144:ef7eb2e8f9f7 15 * 1. Redistributions of source code must retain the above copyright notice,
<> 144:ef7eb2e8f9f7 16 * this list of conditions and the following disclaimer.
<> 144:ef7eb2e8f9f7 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
<> 144:ef7eb2e8f9f7 18 * this list of conditions and the following disclaimer in the documentation
<> 144:ef7eb2e8f9f7 19 * and/or other materials provided with the distribution.
<> 144:ef7eb2e8f9f7 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
<> 144:ef7eb2e8f9f7 21 * may be used to endorse or promote products derived from this software
<> 144:ef7eb2e8f9f7 22 * without specific prior written permission.
<> 144:ef7eb2e8f9f7 23 *
<> 144:ef7eb2e8f9f7 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
<> 144:ef7eb2e8f9f7 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
<> 144:ef7eb2e8f9f7 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
<> 144:ef7eb2e8f9f7 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
<> 144:ef7eb2e8f9f7 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
<> 144:ef7eb2e8f9f7 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
<> 144:ef7eb2e8f9f7 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
<> 144:ef7eb2e8f9f7 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
<> 144:ef7eb2e8f9f7 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
<> 144:ef7eb2e8f9f7 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<> 144:ef7eb2e8f9f7 34 *
<> 144:ef7eb2e8f9f7 35 ******************************************************************************
<> 144:ef7eb2e8f9f7 36 */
<> 144:ef7eb2e8f9f7 37
<> 144:ef7eb2e8f9f7 38 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 167:e84263d55307 39 #ifndef __STM32L4xx_HAL_ADC_EX_H
AnnaBridge 167:e84263d55307 40 #define __STM32L4xx_HAL_ADC_EX_H
<> 144:ef7eb2e8f9f7 41
<> 144:ef7eb2e8f9f7 42 #ifdef __cplusplus
<> 144:ef7eb2e8f9f7 43 extern "C" {
<> 144:ef7eb2e8f9f7 44 #endif
<> 144:ef7eb2e8f9f7 45
<> 144:ef7eb2e8f9f7 46 /* Includes ------------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 47 #include "stm32l4xx_hal_def.h"
<> 144:ef7eb2e8f9f7 48
<> 144:ef7eb2e8f9f7 49 /** @addtogroup STM32L4xx_HAL_Driver
<> 144:ef7eb2e8f9f7 50 * @{
<> 144:ef7eb2e8f9f7 51 */
<> 144:ef7eb2e8f9f7 52
AnnaBridge 167:e84263d55307 53 /** @addtogroup ADCEx
<> 144:ef7eb2e8f9f7 54 * @{
<> 144:ef7eb2e8f9f7 55 */
<> 144:ef7eb2e8f9f7 56
<> 144:ef7eb2e8f9f7 57 /* Exported types ------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 58 /** @defgroup ADCEx_Exported_Types ADC Extended Exported Types
<> 144:ef7eb2e8f9f7 59 * @{
<> 144:ef7eb2e8f9f7 60 */
<> 144:ef7eb2e8f9f7 61
<> 144:ef7eb2e8f9f7 62 /**
AnnaBridge 167:e84263d55307 63 * @brief ADC group injected contexts queue configuration
<> 144:ef7eb2e8f9f7 64 */
<> 144:ef7eb2e8f9f7 65 typedef struct
<> 144:ef7eb2e8f9f7 66 {
AnnaBridge 167:e84263d55307 67 uint32_t ContextQueue; /*!< Injected channel configuration context: build-up over each
AnnaBridge 167:e84263d55307 68 HAL_ADCEx_InjectedConfigChannel() call to finally initialize
AnnaBridge 167:e84263d55307 69 JSQR register at HAL_ADCEx_InjectedConfigChannel() last call */
<> 144:ef7eb2e8f9f7 70
AnnaBridge 167:e84263d55307 71 uint32_t ChannelCount; /*!< Number of channels in the injected sequence */
AnnaBridge 167:e84263d55307 72 }ADC_InjectionConfigTypeDef;
<> 144:ef7eb2e8f9f7 73
<> 144:ef7eb2e8f9f7 74 /**
<> 144:ef7eb2e8f9f7 75 * @brief ADC handle Structure definition
<> 144:ef7eb2e8f9f7 76 */
<> 144:ef7eb2e8f9f7 77 typedef struct
<> 144:ef7eb2e8f9f7 78 {
<> 144:ef7eb2e8f9f7 79 ADC_TypeDef *Instance; /*!< Register base address */
<> 144:ef7eb2e8f9f7 80
<> 144:ef7eb2e8f9f7 81 ADC_InitTypeDef Init; /*!< ADC initialization parameters and regular conversions setting */
<> 144:ef7eb2e8f9f7 82
<> 144:ef7eb2e8f9f7 83 DMA_HandleTypeDef *DMA_Handle; /*!< Pointer DMA Handler */
<> 144:ef7eb2e8f9f7 84
<> 144:ef7eb2e8f9f7 85 HAL_LockTypeDef Lock; /*!< ADC locking object */
<> 144:ef7eb2e8f9f7 86
<> 144:ef7eb2e8f9f7 87 __IO uint32_t State; /*!< ADC communication state (bit-map of ADC states) */
<> 144:ef7eb2e8f9f7 88
<> 144:ef7eb2e8f9f7 89 __IO uint32_t ErrorCode; /*!< ADC Error code */
<> 144:ef7eb2e8f9f7 90
<> 144:ef7eb2e8f9f7 91 ADC_InjectionConfigTypeDef InjectionConfig ; /*!< ADC injected channel configuration build-up structure */
<> 144:ef7eb2e8f9f7 92 }ADC_HandleTypeDef;
<> 144:ef7eb2e8f9f7 93
<> 144:ef7eb2e8f9f7 94 /**
<> 144:ef7eb2e8f9f7 95 * @brief ADC Injected Conversion Oversampling structure definition
<> 144:ef7eb2e8f9f7 96 */
<> 144:ef7eb2e8f9f7 97 typedef struct
<> 144:ef7eb2e8f9f7 98 {
<> 144:ef7eb2e8f9f7 99 uint32_t Ratio; /*!< Configures the oversampling ratio.
<> 144:ef7eb2e8f9f7 100 This parameter can be a value of @ref ADCEx_Oversampling_Ratio */
<> 144:ef7eb2e8f9f7 101
<> 144:ef7eb2e8f9f7 102 uint32_t RightBitShift; /*!< Configures the division coefficient for the Oversampler.
<> 144:ef7eb2e8f9f7 103 This parameter can be a value of @ref ADCEx_Right_Bit_Shift */
<> 144:ef7eb2e8f9f7 104 }ADC_InjOversamplingTypeDef;
<> 144:ef7eb2e8f9f7 105
<> 144:ef7eb2e8f9f7 106 /**
AnnaBridge 167:e84263d55307 107 * @brief Structure definition of ADC group injected and ADC channel affected to ADC group injected
<> 144:ef7eb2e8f9f7 108 * @note Parameters of this structure are shared within 2 scopes:
<> 144:ef7eb2e8f9f7 109 * - Scope channel: InjectedChannel, InjectedRank, InjectedSamplingTime , InjectedSingleDiff, InjectedOffsetNumber, InjectedOffset
AnnaBridge 167:e84263d55307 110 * - Scope ADC group injected (affects all channels of injected group): InjectedNbrOfConversion, InjectedDiscontinuousConvMode,
AnnaBridge 167:e84263d55307 111 * AutoInjectedConv, QueueInjectedContext, ExternalTrigInjecConv, ExternalTrigInjecConvEdge, InjecOversamplingMode, InjecOversampling.
AnnaBridge 167:e84263d55307 112 * @note The setting of these parameters by function HAL_ADCEx_InjectedConfigChannel() is conditioned to ADC state.
<> 144:ef7eb2e8f9f7 113 * ADC state can be either:
<> 144:ef7eb2e8f9f7 114 * - For all parameters: ADC disabled (this is the only possible ADC state to modify parameter 'InjectedSingleDiff')
<> 144:ef7eb2e8f9f7 115 * - For parameters 'InjectedDiscontinuousConvMode', 'QueueInjectedContext', 'InjecOversampling': ADC enabled without conversion on going on injected group.
<> 144:ef7eb2e8f9f7 116 * - For parameters 'InjectedSamplingTime', 'InjectedOffset', 'InjectedOffsetNumber', 'AutoInjectedConv': ADC enabled without conversion on going on regular and injected groups.
<> 144:ef7eb2e8f9f7 117 * - For parameters 'InjectedChannel', 'InjectedRank', 'InjectedNbrOfConversion', 'ExternalTrigInjecConv', 'ExternalTrigInjecConvEdge': ADC enabled and while conversion on going
AnnaBridge 167:e84263d55307 118 * on ADC groups regular and injected.
<> 144:ef7eb2e8f9f7 119 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
AnnaBridge 167:e84263d55307 120 * 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) on the fly).
<> 144:ef7eb2e8f9f7 121 */
<> 144:ef7eb2e8f9f7 122 typedef struct
<> 144:ef7eb2e8f9f7 123 {
AnnaBridge 167:e84263d55307 124 uint32_t InjectedChannel; /*!< Specifies the channel to configure into ADC group injected.
<> 144:ef7eb2e8f9f7 125 This parameter can be a value of @ref ADC_channels
AnnaBridge 167:e84263d55307 126 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 167:e84263d55307 127
AnnaBridge 167:e84263d55307 128 uint32_t InjectedRank; /*!< Specifies the rank in the ADC group injected sequencer.
<> 144:ef7eb2e8f9f7 129 This parameter must be a value of @ref ADCEx_injected_rank.
<> 144:ef7eb2e8f9f7 130 Note: to disable a channel or change order of conversion sequencer, rank containing a previous channel setting can be overwritten by
AnnaBridge 167:e84263d55307 131 the new channel setting (or parameter number of conversions adjusted) */
AnnaBridge 167:e84263d55307 132
<> 144:ef7eb2e8f9f7 133 uint32_t InjectedSamplingTime; /*!< Sampling time value to be set for the selected channel.
<> 144:ef7eb2e8f9f7 134 Unit: ADC clock cycles.
AnnaBridge 167:e84263d55307 135 Conversion time is the addition of sampling time and processing time
AnnaBridge 167:e84263d55307 136 (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).
<> 144:ef7eb2e8f9f7 137 This parameter can be a value of @ref ADC_sampling_times.
<> 144:ef7eb2e8f9f7 138 Caution: This parameter applies to a channel that can be used in a regular and/or injected group.
<> 144:ef7eb2e8f9f7 139 It overwrites the last setting.
<> 144:ef7eb2e8f9f7 140 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
AnnaBridge 167:e84263d55307 141 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
AnnaBridge 167:e84263d55307 142 Refer to device datasheet for timings values. */
AnnaBridge 167:e84263d55307 143
<> 144:ef7eb2e8f9f7 144 uint32_t InjectedSingleDiff; /*!< Selection of single-ended or differential input.
<> 144:ef7eb2e8f9f7 145 In differential mode: Differential measurement is between the selected channel 'i' (positive input) and channel 'i+1' (negative input).
<> 144:ef7eb2e8f9f7 146 Only channel 'i' has to be configured, channel 'i+1' is configured automatically.
<> 144:ef7eb2e8f9f7 147 This parameter must be a value of @ref ADCEx_SingleDifferential.
<> 144:ef7eb2e8f9f7 148 Caution: This parameter applies to a channel that can be used in a regular and/or injected group.
<> 144:ef7eb2e8f9f7 149 It overwrites the last setting.
<> 144:ef7eb2e8f9f7 150 Note: Refer to Reference Manual to ensure the selected channel is available in differential mode.
<> 144:ef7eb2e8f9f7 151 Note: When configuring a channel 'i' in differential mode, the channel 'i+1' is not usable separately.
<> 144:ef7eb2e8f9f7 152 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
AnnaBridge 167:e84263d55307 153 If ADC is enabled, this parameter setting is bypassed without error reporting (as it can be the expected behavior in case
<> 144:ef7eb2e8f9f7 154 of another parameter update on the fly) */
AnnaBridge 167:e84263d55307 155
<> 144:ef7eb2e8f9f7 156 uint32_t InjectedOffsetNumber; /*!< Selects the offset number.
<> 144:ef7eb2e8f9f7 157 This parameter can be a value of @ref ADCEx_OffsetNumber.
<> 144:ef7eb2e8f9f7 158 Caution: Only one offset is allowed per channel. This parameter overwrites the last setting. */
AnnaBridge 167:e84263d55307 159
<> 144:ef7eb2e8f9f7 160 uint32_t InjectedOffset; /*!< Defines the offset to be subtracted from the raw converted data.
<> 144:ef7eb2e8f9f7 161 Offset value must be a positive number.
AnnaBridge 167:e84263d55307 162 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number
AnnaBridge 167:e84263d55307 163 between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively.
<> 144:ef7eb2e8f9f7 164 Note: This parameter must be modified when no conversion is on going on both regular and injected groups (ADC disabled, or ADC enabled
<> 144:ef7eb2e8f9f7 165 without continuous mode or external trigger that could launch a conversion). */
AnnaBridge 167:e84263d55307 166
AnnaBridge 167:e84263d55307 167 uint32_t InjectedNbrOfConversion; /*!< Specifies the number of ranks that will be converted within the ADC group injected sequencer.
<> 144:ef7eb2e8f9f7 168 To use the injected group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
<> 144:ef7eb2e8f9f7 169 This parameter must be a number between Min_Data = 1 and Max_Data = 4.
<> 144:ef7eb2e8f9f7 170 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
<> 144:ef7eb2e8f9f7 171 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 167:e84263d55307 172
AnnaBridge 167:e84263d55307 173 uint32_t InjectedDiscontinuousConvMode; /*!< Specifies whether the conversions sequence of ADC group injected is performed in Complete-sequence/Discontinuous-sequence
AnnaBridge 167:e84263d55307 174 (main sequence subdivided in successive parts).
<> 144:ef7eb2e8f9f7 175 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
<> 144:ef7eb2e8f9f7 176 Discontinuous mode can be enabled only if continuous mode is disabled.
<> 144:ef7eb2e8f9f7 177 This parameter can be set to ENABLE or DISABLE.
<> 144:ef7eb2e8f9f7 178 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
AnnaBridge 167:e84263d55307 179 Note: For injected group, discontinuous mode converts the sequence channel by channel (discontinuous length fixed to 1 rank).
<> 144:ef7eb2e8f9f7 180 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
<> 144:ef7eb2e8f9f7 181 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 167:e84263d55307 182
AnnaBridge 167:e84263d55307 183 uint32_t AutoInjectedConv; /*!< Enables or disables the selected ADC group injected automatic conversion after regular one
<> 144:ef7eb2e8f9f7 184 This parameter can be set to ENABLE or DISABLE.
<> 144:ef7eb2e8f9f7 185 Note: To use Automatic injected conversion, discontinuous mode must be disabled ('DiscontinuousConvMode' and 'InjectedDiscontinuousConvMode' set to DISABLE)
AnnaBridge 167:e84263d55307 186 Note: To use Automatic injected conversion, injected group external triggers must be disabled ('ExternalTrigInjecConv' set to ADC_INJECTED_SOFTWARE_START)
<> 144:ef7eb2e8f9f7 187 Note: In case of DMA used with regular group: if DMA configured in normal mode (single shot) JAUTO will be stopped upon DMA transfer complete.
<> 144:ef7eb2e8f9f7 188 To maintain JAUTO always enabled, DMA must be configured in circular mode.
<> 144:ef7eb2e8f9f7 189 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
<> 144:ef7eb2e8f9f7 190 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 167:e84263d55307 191
<> 144:ef7eb2e8f9f7 192 uint32_t QueueInjectedContext; /*!< Specifies whether the context queue feature is enabled.
<> 144:ef7eb2e8f9f7 193 This parameter can be set to ENABLE or DISABLE.
<> 144:ef7eb2e8f9f7 194 If context queue is enabled, injected sequencer&channels configurations are queued on up to 2 contexts. If a
<> 144:ef7eb2e8f9f7 195 new injected context is set when queue is full, error is triggered by interruption and through function
<> 144:ef7eb2e8f9f7 196 'HAL_ADCEx_InjectedQueueOverflowCallback'.
<> 144:ef7eb2e8f9f7 197 Caution: This feature request that the sequence is fully configured before injected conversion start.
<> 144:ef7eb2e8f9f7 198 Therefore, configure channels with as many calls to HAL_ADCEx_InjectedConfigChannel() as the 'InjectedNbrOfConversion' parameter.
<> 144:ef7eb2e8f9f7 199 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
<> 144:ef7eb2e8f9f7 200 configure a channel on injected group can impact the configuration of other channels previously set.
<> 144:ef7eb2e8f9f7 201 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion). */
AnnaBridge 167:e84263d55307 202
<> 144:ef7eb2e8f9f7 203 uint32_t ExternalTrigInjecConv; /*!< Selects the external event used to trigger the conversion start of injected group.
<> 144:ef7eb2e8f9f7 204 If set to ADC_INJECTED_SOFTWARE_START, external triggers are disabled and software trigger is used instead.
AnnaBridge 167:e84263d55307 205 This parameter can be a value of @ref ADC_injected_external_trigger_source.
<> 144:ef7eb2e8f9f7 206 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
<> 144:ef7eb2e8f9f7 207 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 167:e84263d55307 208
<> 144:ef7eb2e8f9f7 209 uint32_t ExternalTrigInjecConvEdge; /*!< Selects the external trigger edge of injected group.
AnnaBridge 167:e84263d55307 210 This parameter can be a value of @ref ADC_injected_external_trigger_edge.
AnnaBridge 167:e84263d55307 211 If trigger source is set to ADC_INJECTED_SOFTWARE_START, this parameter is discarded.
<> 144:ef7eb2e8f9f7 212 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
<> 144:ef7eb2e8f9f7 213 configure a channel on injected group can impact the configuration of other channels previously set. */
<> 144:ef7eb2e8f9f7 214
<> 144:ef7eb2e8f9f7 215 uint32_t InjecOversamplingMode; /*!< Specifies whether the oversampling feature is enabled or disabled.
<> 144:ef7eb2e8f9f7 216 This parameter can be set to ENABLE or DISABLE.
<> 144:ef7eb2e8f9f7 217 Note: This parameter can be modified only if there is no conversion is ongoing (both ADSTART and JADSTART cleared). */
<> 144:ef7eb2e8f9f7 218
<> 144:ef7eb2e8f9f7 219 ADC_InjOversamplingTypeDef InjecOversampling; /*!< Specifies the Oversampling parameters.
<> 144:ef7eb2e8f9f7 220 Caution: this setting overwrites the previous oversampling configuration if oversampling already enabled.
<> 144:ef7eb2e8f9f7 221 Note: This parameter can be modified only if there is no conversion is ongoing (both ADSTART and JADSTART cleared). */
<> 144:ef7eb2e8f9f7 222 }ADC_InjectionConfTypeDef;
<> 144:ef7eb2e8f9f7 223
<> 144:ef7eb2e8f9f7 224
AnnaBridge 167:e84263d55307 225 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 226 /**
<> 144:ef7eb2e8f9f7 227 * @brief Structure definition of ADC multimode
<> 144:ef7eb2e8f9f7 228 * @note The setting of these parameters by function HAL_ADCEx_MultiModeConfigChannel() is conditioned by ADCs state (both Master and Slave ADCs).
<> 144:ef7eb2e8f9f7 229 * Both Master and Slave ADCs must be disabled.
<> 144:ef7eb2e8f9f7 230 */
<> 144:ef7eb2e8f9f7 231 typedef struct
<> 144:ef7eb2e8f9f7 232 {
<> 144:ef7eb2e8f9f7 233 uint32_t Mode; /*!< Configures the ADC to operate in independent or multimode.
<> 144:ef7eb2e8f9f7 234 This parameter can be a value of @ref ADCEx_Common_mode. */
AnnaBridge 167:e84263d55307 235
<> 144:ef7eb2e8f9f7 236 uint32_t DMAAccessMode; /*!< Configures the DMA mode for multimode ADC:
<> 144:ef7eb2e8f9f7 237 selection whether 2 DMA channels (each ADC uses its own DMA channel) or 1 DMA channel (one DMA channel for both ADC, DMA of ADC master)
<> 144:ef7eb2e8f9f7 238 This parameter can be a value of @ref ADCEx_Direct_memory_access_mode_for_multimode. */
AnnaBridge 167:e84263d55307 239
<> 144:ef7eb2e8f9f7 240 uint32_t TwoSamplingDelay; /*!< Configures the Delay between 2 sampling phases.
<> 144:ef7eb2e8f9f7 241 This parameter can be a value of @ref ADCEx_delay_between_2_sampling_phases.
<> 144:ef7eb2e8f9f7 242 Delay range depends on selected resolution:
<> 144:ef7eb2e8f9f7 243 from 1 to 12 clock cycles for 12 bits, from 1 to 10 clock cycles for 10 bits,
<> 144:ef7eb2e8f9f7 244 from 1 to 8 clock cycles for 8 bits, from 1 to 6 clock cycles for 6 bits. */
<> 144:ef7eb2e8f9f7 245 }ADC_MultiModeTypeDef;
AnnaBridge 167:e84263d55307 246 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
<> 144:ef7eb2e8f9f7 247
<> 144:ef7eb2e8f9f7 248 /**
<> 144:ef7eb2e8f9f7 249 * @}
<> 144:ef7eb2e8f9f7 250 */
<> 144:ef7eb2e8f9f7 251
<> 144:ef7eb2e8f9f7 252 /* Exported constants --------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 253
<> 144:ef7eb2e8f9f7 254 /** @defgroup ADCEx_Exported_Constants ADC Extended Exported Constants
<> 144:ef7eb2e8f9f7 255 * @{
<> 144:ef7eb2e8f9f7 256 */
<> 144:ef7eb2e8f9f7 257
AnnaBridge 167:e84263d55307 258 /** @defgroup ADC_injected_external_trigger_source ADC group injected trigger source
AnnaBridge 167:e84263d55307 259 * @{
AnnaBridge 167:e84263d55307 260 */
AnnaBridge 167:e84263d55307 261 /* ADC group regular trigger sources for all ADC instances */
AnnaBridge 167:e84263d55307 262 #define ADC_EXTERNALTRIGINJEC_T1_TRGO ((uint32_t)0x00000000) /*!< Event 0 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 263 #define ADC_EXTERNALTRIGINJEC_T1_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_0) /*!< Event 1 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 264 #define ADC_EXTERNALTRIGINJEC_T2_TRGO ((uint32_t)ADC_JSQR_JEXTSEL_1) /*!< Event 2 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 265 #define ADC_EXTERNALTRIGINJEC_T2_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0)) /*!< Event 3 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 266 #define ADC_EXTERNALTRIGINJEC_T3_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_2) /*!< Event 4 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 267 #define ADC_EXTERNALTRIGINJEC_T4_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0)) /*!< Event 5 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 268 #define ADC_EXTERNALTRIGINJEC_EXT_IT15 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1)) /*!< Event 6 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 269 #define ADC_EXTERNALTRIGINJEC_T8_CC4 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0)) /*!< Event 7 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 270 #define ADC_EXTERNALTRIGINJEC_T1_TRGO2 ((uint32_t)ADC_JSQR_JEXTSEL_3) /*!< Event 8 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 271 #define ADC_EXTERNALTRIGINJEC_T8_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0)) /*!< Event 9 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 272 #define ADC_EXTERNALTRIGINJEC_T8_TRGO2 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1)) /*!< Event 10 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 273 #define ADC_EXTERNALTRIGINJEC_T3_CC3 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0)) /*!< Event 11 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 274 #define ADC_EXTERNALTRIGINJEC_T3_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2)) /*!< Event 12 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 275 #define ADC_EXTERNALTRIGINJEC_T3_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0)) /*!< Event 13 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 276 #define ADC_EXTERNALTRIGINJEC_T6_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1)) /*!< Event 14 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 277 #define ADC_EXTERNALTRIGINJEC_T15_TRGO ((uint32_t)ADC_JSQR_JEXTSEL) /*!< Event 15 triggers injected group conversion start */
AnnaBridge 167:e84263d55307 278 #define ADC_INJECTED_SOFTWARE_START ((uint32_t)0x00000001) /*!< Software triggers injected group conversion start */
AnnaBridge 167:e84263d55307 279 /**
AnnaBridge 167:e84263d55307 280 * @}
AnnaBridge 167:e84263d55307 281 */
AnnaBridge 167:e84263d55307 282
AnnaBridge 167:e84263d55307 283 /** @defgroup ADC_injected_external_trigger_edge ADC group injected trigger edge (when external trigger is selected)
AnnaBridge 167:e84263d55307 284 * @{
AnnaBridge 167:e84263d55307 285 */
AnnaBridge 167:e84263d55307 286 #define ADC_EXTERNALTRIGINJECCONV_EDGE_NONE ((uint32_t)0x00000000) /*!< Injected conversions hardware trigger detection disabled */
AnnaBridge 167:e84263d55307 287 #define ADC_EXTERNALTRIGINJECCONV_EDGE_RISING ((uint32_t)ADC_JSQR_JEXTEN_0) /*!< Injected conversions hardware trigger detection on the rising edge */
AnnaBridge 167:e84263d55307 288 #define ADC_EXTERNALTRIGINJECCONV_EDGE_FALLING ((uint32_t)ADC_JSQR_JEXTEN_1) /*!< Injected conversions hardware trigger detection on the falling edge */
AnnaBridge 167:e84263d55307 289 #define ADC_EXTERNALTRIGINJECCONV_EDGE_RISINGFALLING ((uint32_t)ADC_JSQR_JEXTEN) /*!< Injected conversions hardware trigger detection on both the rising and falling edges */
AnnaBridge 167:e84263d55307 290 /**
AnnaBridge 167:e84263d55307 291 * @}
AnnaBridge 167:e84263d55307 292 */
AnnaBridge 167:e84263d55307 293
<> 144:ef7eb2e8f9f7 294 /** @defgroup ADCEx_SingleDifferential ADC Extended Single-ended/Differential input mode
<> 144:ef7eb2e8f9f7 295 * @{
<> 144:ef7eb2e8f9f7 296 */
<> 144:ef7eb2e8f9f7 297 #define ADC_SINGLE_ENDED ((uint32_t)0x00000000) /*!< ADC channel set in single-ended input mode */
<> 144:ef7eb2e8f9f7 298 #define ADC_DIFFERENTIAL_ENDED ((uint32_t)ADC_CR_ADCALDIF) /*!< ADC channel set in differential mode */
<> 144:ef7eb2e8f9f7 299 /**
<> 144:ef7eb2e8f9f7 300 * @}
<> 144:ef7eb2e8f9f7 301 */
<> 144:ef7eb2e8f9f7 302
<> 144:ef7eb2e8f9f7 303 /** @defgroup ADCEx_OffsetNumber ADC Extended Offset Number
<> 144:ef7eb2e8f9f7 304 * @{
<> 144:ef7eb2e8f9f7 305 */
<> 144:ef7eb2e8f9f7 306 #define ADC_OFFSET_NONE ((uint32_t)0x00) /*!< No offset correction */
<> 144:ef7eb2e8f9f7 307 #define ADC_OFFSET_1 ((uint32_t)0x01) /*!< Offset correction to apply to a first channel */
<> 144:ef7eb2e8f9f7 308 #define ADC_OFFSET_2 ((uint32_t)0x02) /*!< Offset correction to apply to a second channel */
<> 144:ef7eb2e8f9f7 309 #define ADC_OFFSET_3 ((uint32_t)0x03) /*!< Offset correction to apply to a third channel */
<> 144:ef7eb2e8f9f7 310 #define ADC_OFFSET_4 ((uint32_t)0x04) /*!< Offset correction to apply to a fourth channel */
<> 144:ef7eb2e8f9f7 311 /**
<> 144:ef7eb2e8f9f7 312 * @}
<> 144:ef7eb2e8f9f7 313 */
<> 144:ef7eb2e8f9f7 314
<> 144:ef7eb2e8f9f7 315 /** @defgroup ADCEx_injected_rank ADC Extended Injected Channel Rank
<> 144:ef7eb2e8f9f7 316 * @{
<> 144:ef7eb2e8f9f7 317 */
<> 144:ef7eb2e8f9f7 318 #define ADC_INJECTED_RANK_1 ((uint32_t)0x00000001) /*!< ADC injected conversion rank 1 */
<> 144:ef7eb2e8f9f7 319 #define ADC_INJECTED_RANK_2 ((uint32_t)0x00000002) /*!< ADC injected conversion rank 2 */
<> 144:ef7eb2e8f9f7 320 #define ADC_INJECTED_RANK_3 ((uint32_t)0x00000003) /*!< ADC injected conversion rank 3 */
<> 144:ef7eb2e8f9f7 321 #define ADC_INJECTED_RANK_4 ((uint32_t)0x00000004) /*!< ADC injected conversion rank 4 */
<> 144:ef7eb2e8f9f7 322 /**
<> 144:ef7eb2e8f9f7 323 * @}
<> 144:ef7eb2e8f9f7 324 */
<> 144:ef7eb2e8f9f7 325
AnnaBridge 167:e84263d55307 326 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 327 /** @defgroup ADCEx_Common_mode ADC Extended multimode dual mode
<> 144:ef7eb2e8f9f7 328 * @{
<> 144:ef7eb2e8f9f7 329 */
<> 144:ef7eb2e8f9f7 330 #define ADC_MODE_INDEPENDENT ((uint32_t)(0x00000000)) /*!< Independent ADC conversions mode */
<> 144:ef7eb2e8f9f7 331 #define ADC_DUALMODE_REGSIMULT_INJECSIMULT ((uint32_t)(ADC_CCR_DUAL_0)) /*!< Combined regular simultaneous + injected simultaneous mode */
<> 144:ef7eb2e8f9f7 332 #define ADC_DUALMODE_REGSIMULT_ALTERTRIG ((uint32_t)(ADC_CCR_DUAL_1)) /*!< Combined regular simultaneous + alternate trigger mode */
<> 144:ef7eb2e8f9f7 333 #define ADC_DUALMODE_REGINTERL_INJECSIMULT ((uint32_t)(ADC_CCR_DUAL_1 | ADC_CCR_DUAL_0)) /*!< Combined Interleaved mode + injected simultaneous mode */
<> 144:ef7eb2e8f9f7 334 #define ADC_DUALMODE_INJECSIMULT ((uint32_t)(ADC_CCR_DUAL_2 | ADC_CCR_DUAL_0)) /*!< Injected simultaneous mode only */
<> 144:ef7eb2e8f9f7 335 #define ADC_DUALMODE_REGSIMULT ((uint32_t)(ADC_CCR_DUAL_2 | ADC_CCR_DUAL_1)) /*!< Regular simultaneous mode only */
<> 144:ef7eb2e8f9f7 336 #define ADC_DUALMODE_INTERL ((uint32_t)(ADC_CCR_DUAL_2 | ADC_CCR_DUAL_1 | ADC_CCR_DUAL_0)) /*!< Interleaved mode only */
<> 144:ef7eb2e8f9f7 337 #define ADC_DUALMODE_ALTERTRIG ((uint32_t)(ADC_CCR_DUAL_3 | ADC_CCR_DUAL_0)) /*!< Alternate trigger mode only */
<> 144:ef7eb2e8f9f7 338 /**
<> 144:ef7eb2e8f9f7 339 * @}
<> 144:ef7eb2e8f9f7 340 */
<> 144:ef7eb2e8f9f7 341
AnnaBridge 167:e84263d55307 342 /** @defgroup ADCEx_Direct_memory_access_mode_for_multimode ADC Extended DMA mode for multimode
<> 144:ef7eb2e8f9f7 343 * @{
<> 144:ef7eb2e8f9f7 344 */
<> 144:ef7eb2e8f9f7 345 #define ADC_DMAACCESSMODE_DISABLED ((uint32_t)0x00000000) /*!< DMA multimode disabled: each ADC uses its own DMA channel */
<> 144:ef7eb2e8f9f7 346 #define ADC_DMAACCESSMODE_12_10_BITS ((uint32_t)ADC_CCR_MDMA_1) /*!< DMA multimode enabled (one DMA channel for both ADC, DMA of ADC master) for 12 and 10 bits resolution */
<> 144:ef7eb2e8f9f7 347 #define ADC_DMAACCESSMODE_8_6_BITS ((uint32_t)ADC_CCR_MDMA) /*!< DMA multimode enabled (one DMA channel for both ADC, DMA of ADC master) for 8 and 6 bits resolution */
<> 144:ef7eb2e8f9f7 348 /**
<> 144:ef7eb2e8f9f7 349 * @}
<> 144:ef7eb2e8f9f7 350 */
<> 144:ef7eb2e8f9f7 351
AnnaBridge 167:e84263d55307 352 /** @defgroup ADCEx_delay_between_2_sampling_phases ADC Extended delay between 2 sampling phases
<> 144:ef7eb2e8f9f7 353 * @{
<> 144:ef7eb2e8f9f7 354 */
<> 144:ef7eb2e8f9f7 355 #define ADC_TWOSAMPLINGDELAY_1CYCLE ((uint32_t)(0x00000000)) /*!< 1 ADC clock cycle delay */
<> 144:ef7eb2e8f9f7 356 #define ADC_TWOSAMPLINGDELAY_2CYCLES ((uint32_t)(ADC_CCR_DELAY_0)) /*!< 2 ADC clock cycles delay */
<> 144:ef7eb2e8f9f7 357 #define ADC_TWOSAMPLINGDELAY_3CYCLES ((uint32_t)(ADC_CCR_DELAY_1)) /*!< 3 ADC clock cycles delay */
<> 144:ef7eb2e8f9f7 358 #define ADC_TWOSAMPLINGDELAY_4CYCLES ((uint32_t)(ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0)) /*!< 4 ADC clock cycles delay */
<> 144:ef7eb2e8f9f7 359 #define ADC_TWOSAMPLINGDELAY_5CYCLES ((uint32_t)(ADC_CCR_DELAY_2)) /*!< 5 ADC clock cycles delay */
<> 144:ef7eb2e8f9f7 360 #define ADC_TWOSAMPLINGDELAY_6CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0)) /*!< 6 ADC clock cycles delay */
<> 144:ef7eb2e8f9f7 361 #define ADC_TWOSAMPLINGDELAY_7CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1)) /*!< 7 ADC clock cycles delay (lower for non 12-bit resolution) */
<> 144:ef7eb2e8f9f7 362 #define ADC_TWOSAMPLINGDELAY_8CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0)) /*!< 8 ADC clock cycles delay (lower for non 12-bit resolution) */
<> 144:ef7eb2e8f9f7 363 #define ADC_TWOSAMPLINGDELAY_9CYCLES ((uint32_t)(ADC_CCR_DELAY_3)) /*!< 9 ADC clock cycles delay (lower for non 12-bit resolution) */
<> 144:ef7eb2e8f9f7 364 #define ADC_TWOSAMPLINGDELAY_10CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0)) /*!< 10 ADC clock cycles delay (lower for non 12-bit resolution) */
<> 144:ef7eb2e8f9f7 365 #define ADC_TWOSAMPLINGDELAY_11CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1)) /*!< 11 ADC clock cycles delay (lower for non 12-bit resolution) */
<> 144:ef7eb2e8f9f7 366 #define ADC_TWOSAMPLINGDELAY_12CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0)) /*!< 12 ADC clock cycles delay (lower for non 12-bit resolution) */
<> 144:ef7eb2e8f9f7 367 /**
<> 144:ef7eb2e8f9f7 368 * @}
<> 144:ef7eb2e8f9f7 369 */
AnnaBridge 167:e84263d55307 370 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 371 /** @defgroup ADCEx_Common_mode ADC Extended Independent ADC Mode
<> 144:ef7eb2e8f9f7 372 * @{
<> 144:ef7eb2e8f9f7 373 */
<> 144:ef7eb2e8f9f7 374 #define ADC_MODE_INDEPENDENT ((uint32_t)(0x00000000)) /*!< Independent ADC conversions mode */
<> 144:ef7eb2e8f9f7 375 /**
<> 144:ef7eb2e8f9f7 376 * @}
<> 144:ef7eb2e8f9f7 377 */
<> 144:ef7eb2e8f9f7 378
AnnaBridge 167:e84263d55307 379 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
<> 144:ef7eb2e8f9f7 380
<> 144:ef7eb2e8f9f7 381 /** @defgroup ADCEx_analog_watchdog_number ADC Extended Analog Watchdog Selection
<> 144:ef7eb2e8f9f7 382 * @{
<> 144:ef7eb2e8f9f7 383 */
<> 144:ef7eb2e8f9f7 384 #define ADC_ANALOGWATCHDOG_1 ((uint32_t)0x00000001) /*!< Analog watchdog 1 selection */
<> 144:ef7eb2e8f9f7 385 #define ADC_ANALOGWATCHDOG_2 ((uint32_t)0x00000002) /*!< Analog watchdog 2 selection */
<> 144:ef7eb2e8f9f7 386 #define ADC_ANALOGWATCHDOG_3 ((uint32_t)0x00000003) /*!< Analog watchdog 3 selection */
<> 144:ef7eb2e8f9f7 387 /**
<> 144:ef7eb2e8f9f7 388 * @}
<> 144:ef7eb2e8f9f7 389 */
<> 144:ef7eb2e8f9f7 390
<> 144:ef7eb2e8f9f7 391 /** @defgroup ADCEx_analog_watchdog_mode ADC Extended Analog Watchdog Mode
<> 144:ef7eb2e8f9f7 392 * @{
<> 144:ef7eb2e8f9f7 393 */
<> 144:ef7eb2e8f9f7 394 #define ADC_ANALOGWATCHDOG_NONE ((uint32_t) 0x00000000) /*!< No analog watchdog selected */
<> 144:ef7eb2e8f9f7 395 #define ADC_ANALOGWATCHDOG_SINGLE_REG ((uint32_t)(ADC_CFGR_AWD1SGL | ADC_CFGR_AWD1EN)) /*!< Analog watchdog applied to a regular group single channel */
<> 144:ef7eb2e8f9f7 396 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC ((uint32_t)(ADC_CFGR_AWD1SGL | ADC_CFGR_JAWD1EN)) /*!< Analog watchdog applied to an injected group single channel */
<> 144:ef7eb2e8f9f7 397 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC ((uint32_t)(ADC_CFGR_AWD1SGL | ADC_CFGR_AWD1EN | ADC_CFGR_JAWD1EN)) /*!< Analog watchdog applied to a regular and injected groups single channel */
<> 144:ef7eb2e8f9f7 398 #define ADC_ANALOGWATCHDOG_ALL_REG ((uint32_t) ADC_CFGR_AWD1EN) /*!< Analog watchdog applied to regular group all channels */
<> 144:ef7eb2e8f9f7 399 #define ADC_ANALOGWATCHDOG_ALL_INJEC ((uint32_t) ADC_CFGR_JAWD1EN) /*!< Analog watchdog applied to injected group all channels */
<> 144:ef7eb2e8f9f7 400 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC ((uint32_t)(ADC_CFGR_AWD1EN | ADC_CFGR_JAWD1EN)) /*!< Analog watchdog applied to regular and injected groups all channels */
<> 144:ef7eb2e8f9f7 401 /**
<> 144:ef7eb2e8f9f7 402 * @}
<> 144:ef7eb2e8f9f7 403 */
<> 144:ef7eb2e8f9f7 404
<> 144:ef7eb2e8f9f7 405 /** @defgroup ADCEx_conversion_group ADC Extended Conversion Group
<> 144:ef7eb2e8f9f7 406 * @{
<> 144:ef7eb2e8f9f7 407 */
<> 144:ef7eb2e8f9f7 408 #define ADC_REGULAR_GROUP ((uint32_t)(ADC_FLAG_EOC | ADC_FLAG_EOS)) /*!< ADC regular group selection */
<> 144:ef7eb2e8f9f7 409 #define ADC_INJECTED_GROUP ((uint32_t)(ADC_FLAG_JEOC | ADC_FLAG_JEOS)) /*!< ADC injected group selection */
<> 144:ef7eb2e8f9f7 410 #define ADC_REGULAR_INJECTED_GROUP ((uint32_t)(ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_JEOC | ADC_FLAG_JEOS)) /*!< ADC regular and injected groups selection */
<> 144:ef7eb2e8f9f7 411 /**
<> 144:ef7eb2e8f9f7 412 * @}
<> 144:ef7eb2e8f9f7 413 */
<> 144:ef7eb2e8f9f7 414
<> 144:ef7eb2e8f9f7 415 /** @defgroup ADCEx_Event_type ADC Extended Event Type
<> 144:ef7eb2e8f9f7 416 * @{
<> 144:ef7eb2e8f9f7 417 */
<> 144:ef7eb2e8f9f7 418 #define ADC_EOSMP_EVENT ((uint32_t)ADC_FLAG_EOSMP) /*!< ADC End of Sampling event */
AnnaBridge 167:e84263d55307 419 #define ADC_AWD1_EVENT ((uint32_t)ADC_FLAG_AWD1) /*!< ADC Analog watchdog 1 event (main analog watchdog, present on all STM32 series) */
AnnaBridge 167:e84263d55307 420 #define ADC_AWD2_EVENT ((uint32_t)ADC_FLAG_AWD2) /*!< ADC Analog watchdog 2 event (additional analog watchdog, not present on all STM32 series) */
AnnaBridge 167:e84263d55307 421 #define ADC_AWD3_EVENT ((uint32_t)ADC_FLAG_AWD3) /*!< ADC Analog watchdog 3 event (additional analog watchdog, not present on all STM32 series) */
<> 144:ef7eb2e8f9f7 422 #define ADC_OVR_EVENT ((uint32_t)ADC_FLAG_OVR) /*!< ADC overrun event */
<> 144:ef7eb2e8f9f7 423 #define ADC_JQOVF_EVENT ((uint32_t)ADC_FLAG_JQOVF) /*!< ADC Injected Context Queue Overflow event */
<> 144:ef7eb2e8f9f7 424 /**
<> 144:ef7eb2e8f9f7 425 * @}
<> 144:ef7eb2e8f9f7 426 */
AnnaBridge 167:e84263d55307 427 #define ADC_AWD_EVENT ADC_AWD1_EVENT /*!< ADC Analog watchdog 1 event: Naming for compatibility with other STM32 devices having only one analog watchdog */
<> 144:ef7eb2e8f9f7 428
<> 144:ef7eb2e8f9f7 429 /** @defgroup ADCEx_interrupts_definition ADC Extended Interrupts Definition
<> 144:ef7eb2e8f9f7 430 * @{
<> 144:ef7eb2e8f9f7 431 */
<> 144:ef7eb2e8f9f7 432 #define ADC_IT_RDY ADC_IER_ADRDY /*!< ADC Ready (ADRDY) interrupt source */
<> 144:ef7eb2e8f9f7 433 #define ADC_IT_EOSMP ADC_IER_EOSMP /*!< ADC End of sampling interrupt source */
<> 144:ef7eb2e8f9f7 434 #define ADC_IT_EOC ADC_IER_EOC /*!< ADC End of regular conversion interrupt source */
<> 144:ef7eb2e8f9f7 435 #define ADC_IT_EOS ADC_IER_EOS /*!< ADC End of regular sequence of conversions interrupt source */
<> 144:ef7eb2e8f9f7 436 #define ADC_IT_OVR ADC_IER_OVR /*!< ADC overrun interrupt source */
<> 144:ef7eb2e8f9f7 437 #define ADC_IT_JEOC ADC_IER_JEOC /*!< ADC End of injected conversion interrupt source */
<> 144:ef7eb2e8f9f7 438 #define ADC_IT_JEOS ADC_IER_JEOS /*!< ADC End of injected sequence of conversions interrupt source */
<> 144:ef7eb2e8f9f7 439 #define ADC_IT_AWD1 ADC_IER_AWD1 /*!< ADC Analog watchdog 1 interrupt source (main analog watchdog) */
<> 144:ef7eb2e8f9f7 440 #define ADC_IT_AWD2 ADC_IER_AWD2 /*!< ADC Analog watchdog 2 interrupt source (additional analog watchdog) */
<> 144:ef7eb2e8f9f7 441 #define ADC_IT_AWD3 ADC_IER_AWD3 /*!< ADC Analog watchdog 3 interrupt source (additional analog watchdog) */
<> 144:ef7eb2e8f9f7 442 #define ADC_IT_JQOVF ADC_IER_JQOVF /*!< ADC Injected Context Queue Overflow interrupt source */
<> 144:ef7eb2e8f9f7 443
<> 144:ef7eb2e8f9f7 444 #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 */
<> 144:ef7eb2e8f9f7 445
<> 144:ef7eb2e8f9f7 446 /**
<> 144:ef7eb2e8f9f7 447 * @}
<> 144:ef7eb2e8f9f7 448 */
<> 144:ef7eb2e8f9f7 449
<> 144:ef7eb2e8f9f7 450 /** @defgroup ADCEx_flags_definition ADC Extended Flags Definition
<> 144:ef7eb2e8f9f7 451 * @{
<> 144:ef7eb2e8f9f7 452 */
<> 144:ef7eb2e8f9f7 453 #define ADC_FLAG_RDY ADC_ISR_ADRDY /*!< ADC Ready (ADRDY) flag */
<> 144:ef7eb2e8f9f7 454 #define ADC_FLAG_EOSMP ADC_ISR_EOSMP /*!< ADC End of Sampling flag */
<> 144:ef7eb2e8f9f7 455 #define ADC_FLAG_EOC ADC_ISR_EOC /*!< ADC End of Regular Conversion flag */
<> 144:ef7eb2e8f9f7 456 #define ADC_FLAG_EOS ADC_ISR_EOS /*!< ADC End of Regular sequence of Conversions flag */
<> 144:ef7eb2e8f9f7 457 #define ADC_FLAG_OVR ADC_ISR_OVR /*!< ADC overrun flag */
<> 144:ef7eb2e8f9f7 458 #define ADC_FLAG_JEOC ADC_ISR_JEOC /*!< ADC End of Injected Conversion flag */
<> 144:ef7eb2e8f9f7 459 #define ADC_FLAG_JEOS ADC_ISR_JEOS /*!< ADC End of Injected sequence of Conversions flag */
<> 144:ef7eb2e8f9f7 460 #define ADC_FLAG_AWD1 ADC_ISR_AWD1 /*!< ADC Analog watchdog 1 flag (main analog watchdog) */
<> 144:ef7eb2e8f9f7 461 #define ADC_FLAG_AWD2 ADC_ISR_AWD2 /*!< ADC Analog watchdog 2 flag (additional analog watchdog) */
<> 144:ef7eb2e8f9f7 462 #define ADC_FLAG_AWD3 ADC_ISR_AWD3 /*!< ADC Analog watchdog 3 flag (additional analog watchdog) */
<> 144:ef7eb2e8f9f7 463 #define ADC_FLAG_JQOVF ADC_ISR_JQOVF /*!< ADC Injected Context Queue Overflow flag */
<> 144:ef7eb2e8f9f7 464
<> 144:ef7eb2e8f9f7 465 #define ADC_FLAG_AWD ADC_FLAG_AWD1 /*!< ADC Analog watchdog 1 flag: Naming for compatibility with other STM32 devices having only one analog watchdog */
<> 144:ef7eb2e8f9f7 466
<> 144:ef7eb2e8f9f7 467 #define ADC_FLAG_ALL (ADC_FLAG_RDY | ADC_FLAG_EOSMP | ADC_FLAG_EOC | ADC_FLAG_EOS | \
<> 144:ef7eb2e8f9f7 468 ADC_FLAG_JEOC | ADC_FLAG_JEOS | ADC_FLAG_OVR | ADC_FLAG_AWD1 | \
<> 144:ef7eb2e8f9f7 469 ADC_FLAG_AWD2 | ADC_FLAG_AWD3 | ADC_FLAG_JQOVF) /*!< ADC all flags */
<> 144:ef7eb2e8f9f7 470
<> 144:ef7eb2e8f9f7 471 /* Combination of all post-conversion flags bits: EOC/EOS, JEOC/JEOS, OVR, AWDx, JQOVF */
<> 144:ef7eb2e8f9f7 472 #define ADC_FLAG_POSTCONV_ALL (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_JEOC | ADC_FLAG_JEOS | \
<> 144:ef7eb2e8f9f7 473 ADC_FLAG_OVR | ADC_FLAG_AWD1 | ADC_FLAG_AWD2 | ADC_FLAG_AWD3 | \
<> 144:ef7eb2e8f9f7 474 ADC_FLAG_JQOVF) /*!< ADC post-conversion all flags */
<> 144:ef7eb2e8f9f7 475
<> 144:ef7eb2e8f9f7 476 /**
<> 144:ef7eb2e8f9f7 477 * @}
<> 144:ef7eb2e8f9f7 478 */
<> 144:ef7eb2e8f9f7 479
<> 144:ef7eb2e8f9f7 480
<> 144:ef7eb2e8f9f7 481 /** @defgroup ADCEx_injected_rank ADC Extended Injected Channel Rank
<> 144:ef7eb2e8f9f7 482 * @{
<> 144:ef7eb2e8f9f7 483 */
<> 144:ef7eb2e8f9f7 484 #define ADC_INJECTED_RANK_1 ((uint32_t)0x00000001) /*!< ADC injected conversion rank 1 */
<> 144:ef7eb2e8f9f7 485 #define ADC_INJECTED_RANK_2 ((uint32_t)0x00000002) /*!< ADC injected conversion rank 2 */
<> 144:ef7eb2e8f9f7 486 #define ADC_INJECTED_RANK_3 ((uint32_t)0x00000003) /*!< ADC injected conversion rank 3 */
<> 144:ef7eb2e8f9f7 487 #define ADC_INJECTED_RANK_4 ((uint32_t)0x00000004) /*!< ADC injected conversion rank 4 */
<> 144:ef7eb2e8f9f7 488 /**
<> 144:ef7eb2e8f9f7 489 * @}
<> 144:ef7eb2e8f9f7 490 */
<> 144:ef7eb2e8f9f7 491
<> 144:ef7eb2e8f9f7 492
<> 144:ef7eb2e8f9f7 493
<> 144:ef7eb2e8f9f7 494 /** @defgroup ADCEx_Oversampling_Ratio ADC Extended Oversampling Ratio
<> 144:ef7eb2e8f9f7 495 * @{
<> 144:ef7eb2e8f9f7 496 */
<> 144:ef7eb2e8f9f7 497
<> 144:ef7eb2e8f9f7 498 #define ADC_OVERSAMPLING_RATIO_2 ((uint32_t)0x00000000) /*!< ADC Oversampling ratio 2x */
<> 144:ef7eb2e8f9f7 499 #define ADC_OVERSAMPLING_RATIO_4 ((uint32_t)ADC_CFGR2_OVSR_0) /*!< ADC Oversampling ratio 4x */
<> 144:ef7eb2e8f9f7 500 #define ADC_OVERSAMPLING_RATIO_8 ((uint32_t)ADC_CFGR2_OVSR_1) /*!< ADC Oversampling ratio 8x */
<> 144:ef7eb2e8f9f7 501 #define ADC_OVERSAMPLING_RATIO_16 ((uint32_t)(ADC_CFGR2_OVSR_1 | ADC_CFGR2_OVSR_0)) /*!< ADC Oversampling ratio 16x */
<> 144:ef7eb2e8f9f7 502 #define ADC_OVERSAMPLING_RATIO_32 ((uint32_t)ADC_CFGR2_OVSR_2) /*!< ADC Oversampling ratio 32x */
<> 144:ef7eb2e8f9f7 503 #define ADC_OVERSAMPLING_RATIO_64 ((uint32_t)(ADC_CFGR2_OVSR_2 | ADC_CFGR2_OVSR_0)) /*!< ADC Oversampling ratio 64x */
<> 144:ef7eb2e8f9f7 504 #define ADC_OVERSAMPLING_RATIO_128 ((uint32_t)(ADC_CFGR2_OVSR_2 | ADC_CFGR2_OVSR_1)) /*!< ADC Oversampling ratio 128x */
<> 144:ef7eb2e8f9f7 505 #define ADC_OVERSAMPLING_RATIO_256 ((uint32_t)(ADC_CFGR2_OVSR)) /*!< ADC Oversampling ratio 256x */
<> 144:ef7eb2e8f9f7 506 /**
<> 144:ef7eb2e8f9f7 507 * @}
<> 144:ef7eb2e8f9f7 508 */
<> 144:ef7eb2e8f9f7 509
<> 144:ef7eb2e8f9f7 510 /** @defgroup ADCEx_Right_Bit_Shift ADC Extended Oversampling Right Shift
<> 144:ef7eb2e8f9f7 511 * @{
<> 144:ef7eb2e8f9f7 512 */
<> 144:ef7eb2e8f9f7 513 #define ADC_RIGHTBITSHIFT_NONE ((uint32_t)0x00000000) /*!< ADC No bit shift for oversampling */
<> 144:ef7eb2e8f9f7 514 #define ADC_RIGHTBITSHIFT_1 ((uint32_t)ADC_CFGR2_OVSS_0) /*!< ADC 1 bit shift for oversampling */
<> 144:ef7eb2e8f9f7 515 #define ADC_RIGHTBITSHIFT_2 ((uint32_t)ADC_CFGR2_OVSS_1) /*!< ADC 2 bits shift for oversampling */
<> 144:ef7eb2e8f9f7 516 #define ADC_RIGHTBITSHIFT_3 ((uint32_t)(ADC_CFGR2_OVSS_1 | ADC_CFGR2_OVSS_0)) /*!< ADC 3 bits shift for oversampling */
<> 144:ef7eb2e8f9f7 517 #define ADC_RIGHTBITSHIFT_4 ((uint32_t)ADC_CFGR2_OVSS_2) /*!< ADC 4 bits shift for oversampling */
<> 144:ef7eb2e8f9f7 518 #define ADC_RIGHTBITSHIFT_5 ((uint32_t)(ADC_CFGR2_OVSS_2 | ADC_CFGR2_OVSS_0)) /*!< ADC 5 bits shift for oversampling */
<> 144:ef7eb2e8f9f7 519 #define ADC_RIGHTBITSHIFT_6 ((uint32_t)(ADC_CFGR2_OVSS_2 | ADC_CFGR2_OVSS_1)) /*!< ADC 6 bits shift for oversampling */
<> 144:ef7eb2e8f9f7 520 #define ADC_RIGHTBITSHIFT_7 ((uint32_t)(ADC_CFGR2_OVSS_2 | ADC_CFGR2_OVSS_1 | ADC_CFGR2_OVSS_0)) /*!< ADC 7 bits shift for oversampling */
<> 144:ef7eb2e8f9f7 521 #define ADC_RIGHTBITSHIFT_8 ((uint32_t)ADC_CFGR2_OVSS_3) /*!< ADC 8 bits shift for oversampling */
<> 144:ef7eb2e8f9f7 522 /**
<> 144:ef7eb2e8f9f7 523 * @}
<> 144:ef7eb2e8f9f7 524 */
<> 144:ef7eb2e8f9f7 525
<> 144:ef7eb2e8f9f7 526 /** @defgroup ADCEx_Triggered_Oversampling_Mode ADC Extended Triggered Regular Oversampling
<> 144:ef7eb2e8f9f7 527 * @{
<> 144:ef7eb2e8f9f7 528 */
<> 144:ef7eb2e8f9f7 529 #define ADC_TRIGGEREDMODE_SINGLE_TRIGGER ((uint32_t)0x00000000) /*!< A single trigger for all channel oversampled conversions */
<> 144:ef7eb2e8f9f7 530 #define ADC_TRIGGEREDMODE_MULTI_TRIGGER ((uint32_t)ADC_CFGR2_TROVS) /*!< A trigger for each oversampled conversion */
<> 144:ef7eb2e8f9f7 531 /**
<> 144:ef7eb2e8f9f7 532 * @}
<> 144:ef7eb2e8f9f7 533 */
<> 144:ef7eb2e8f9f7 534
<> 144:ef7eb2e8f9f7 535 /** @defgroup ADCEx_Regular_Oversampling_Mode ADC Extended Regular Oversampling Continued or Resumed Mode
<> 144:ef7eb2e8f9f7 536 * @{
<> 144:ef7eb2e8f9f7 537 */
<> 144:ef7eb2e8f9f7 538 #define ADC_REGOVERSAMPLING_CONTINUED_MODE ((uint32_t)0x00000000) /*!< Oversampling buffer maintained during injection sequence */
<> 144:ef7eb2e8f9f7 539 #define ADC_REGOVERSAMPLING_RESUMED_MODE ((uint32_t)ADC_CFGR2_ROVSM) /*!< Oversampling buffer zeroed during injection sequence */
<> 144:ef7eb2e8f9f7 540 /**
<> 144:ef7eb2e8f9f7 541 * @}
<> 144:ef7eb2e8f9f7 542 */
<> 144:ef7eb2e8f9f7 543
<> 144:ef7eb2e8f9f7 544 /** @defgroup ADC_sampling_times ADC Sampling Times
<> 144:ef7eb2e8f9f7 545 * @{
<> 144:ef7eb2e8f9f7 546 */
<> 144:ef7eb2e8f9f7 547 #define ADC_SAMPLETIME_2CYCLES_5 ((uint32_t)0x00000000) /*!< Sampling time 2.5 ADC clock cycle */
AnnaBridge 167:e84263d55307 548 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 549 #define ADC_SAMPLETIME_3CYCLES_5 ((uint32_t)ADC_SMPR1_SMPPLUS) /*!< Sampling time 3.5 ADC clock cycles. If selected, this sampling time
AnnaBridge 167:e84263d55307 550 replaces all sampling time 2.5 ADC clock cycles. These 2 sampling
AnnaBridge 167:e84263d55307 551 times cannot be used simultaneously. */
AnnaBridge 167:e84263d55307 552 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
<> 144:ef7eb2e8f9f7 553 #define ADC_SAMPLETIME_6CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10_0) /*!< Sampling time 6.5 ADC clock cycles */
<> 144:ef7eb2e8f9f7 554 #define ADC_SAMPLETIME_12CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10_1) /*!< Sampling time 12.5 ADC clock cycles */
<> 144:ef7eb2e8f9f7 555 #define ADC_SAMPLETIME_24CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP10_1 | ADC_SMPR2_SMP10_0)) /*!< Sampling time 24.5 ADC clock cycles */
<> 144:ef7eb2e8f9f7 556 #define ADC_SAMPLETIME_47CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10_2) /*!< Sampling time 47.5 ADC clock cycles */
<> 144:ef7eb2e8f9f7 557 #define ADC_SAMPLETIME_92CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_0)) /*!< Sampling time 92.5 ADC clock cycles */
<> 144:ef7eb2e8f9f7 558 #define ADC_SAMPLETIME_247CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_1)) /*!< Sampling time 247.5 ADC clock cycles */
<> 144:ef7eb2e8f9f7 559 #define ADC_SAMPLETIME_640CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10) /*!< Sampling time 640.5 ADC clock cycles */
<> 144:ef7eb2e8f9f7 560 /**
<> 144:ef7eb2e8f9f7 561 * @}
<> 144:ef7eb2e8f9f7 562 */
<> 144:ef7eb2e8f9f7 563
<> 144:ef7eb2e8f9f7 564 /** @defgroup ADC_CFGR_fields ADCx CFGR fields
<> 144:ef7eb2e8f9f7 565 * @{
<> 144:ef7eb2e8f9f7 566 */
AnnaBridge 167:e84263d55307 567 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 568 #define ADC_CFGR_FIELDS (ADC_CFGR_AWD1CH | ADC_CFGR_JAUTO | ADC_CFGR_JAWD1EN |\
AnnaBridge 167:e84263d55307 569 ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL | ADC_CFGR_JQM |\
AnnaBridge 167:e84263d55307 570 ADC_CFGR_JDISCEN | ADC_CFGR_DISCNUM | ADC_CFGR_DISCEN |\
AnnaBridge 167:e84263d55307 571 ADC_CFGR_AUTDLY | ADC_CFGR_CONT | ADC_CFGR_OVRMOD |\
AnnaBridge 167:e84263d55307 572 ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL | ADC_CFGR_ALIGN |\
AnnaBridge 167:e84263d55307 573 ADC_CFGR_RES | ADC_CFGR_DFSDMCFG | ADC_CFGR_DMACFG | ADC_CFGR_DMAEN)
AnnaBridge 167:e84263d55307 574 #else
<> 144:ef7eb2e8f9f7 575 #define ADC_CFGR_FIELDS (ADC_CFGR_AWD1CH | ADC_CFGR_JAUTO | ADC_CFGR_JAWD1EN |\
<> 144:ef7eb2e8f9f7 576 ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL | ADC_CFGR_JQM |\
<> 144:ef7eb2e8f9f7 577 ADC_CFGR_JDISCEN | ADC_CFGR_DISCNUM | ADC_CFGR_DISCEN |\
<> 144:ef7eb2e8f9f7 578 ADC_CFGR_AUTDLY | ADC_CFGR_CONT | ADC_CFGR_OVRMOD |\
<> 144:ef7eb2e8f9f7 579 ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL | ADC_CFGR_ALIGN |\
<> 144:ef7eb2e8f9f7 580 ADC_CFGR_RES | ADC_CFGR_DMACFG | ADC_CFGR_DMAEN )
AnnaBridge 167:e84263d55307 581 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
<> 144:ef7eb2e8f9f7 582 /**
<> 144:ef7eb2e8f9f7 583 * @}
<> 144:ef7eb2e8f9f7 584 */
<> 144:ef7eb2e8f9f7 585
<> 144:ef7eb2e8f9f7 586 /** @defgroup ADC_SMPR1_fields ADCx SMPR1 fields
<> 144:ef7eb2e8f9f7 587 * @{
<> 144:ef7eb2e8f9f7 588 */
AnnaBridge 167:e84263d55307 589 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 590 #define ADC_SMPR1_FIELDS (ADC_SMPR1_SMP9 | ADC_SMPR1_SMP8 | ADC_SMPR1_SMP7 |\
AnnaBridge 167:e84263d55307 591 ADC_SMPR1_SMP6 | ADC_SMPR1_SMP5 | ADC_SMPR1_SMP4 |\
AnnaBridge 167:e84263d55307 592 ADC_SMPR1_SMP3 | ADC_SMPR1_SMP2 | ADC_SMPR1_SMP1 |\
AnnaBridge 167:e84263d55307 593 ADC_SMPR1_SMP0 | ADC_SMPR1_SMPPLUS)
AnnaBridge 167:e84263d55307 594 #else
<> 144:ef7eb2e8f9f7 595 #define ADC_SMPR1_FIELDS (ADC_SMPR1_SMP9 | ADC_SMPR1_SMP8 | ADC_SMPR1_SMP7 |\
<> 144:ef7eb2e8f9f7 596 ADC_SMPR1_SMP6 | ADC_SMPR1_SMP5 | ADC_SMPR1_SMP4 |\
<> 144:ef7eb2e8f9f7 597 ADC_SMPR1_SMP3 | ADC_SMPR1_SMP2 | ADC_SMPR1_SMP1 |\
<> 144:ef7eb2e8f9f7 598 ADC_SMPR1_SMP0)
AnnaBridge 167:e84263d55307 599 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
<> 144:ef7eb2e8f9f7 600 /**
<> 144:ef7eb2e8f9f7 601 * @}
<> 144:ef7eb2e8f9f7 602 */
<> 144:ef7eb2e8f9f7 603
<> 144:ef7eb2e8f9f7 604 /** @defgroup ADC_CFGR_fields_2 ADCx CFGR sub fields
<> 144:ef7eb2e8f9f7 605 * @{
<> 144:ef7eb2e8f9f7 606 */
<> 144:ef7eb2e8f9f7 607 /* ADC_CFGR fields of parameters that can be updated when no conversion
<> 144:ef7eb2e8f9f7 608 (neither regular nor injected) is on-going */
AnnaBridge 167:e84263d55307 609 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 610 #define ADC_CFGR_FIELDS_2 ((uint32_t)(ADC_CFGR_DMACFG | ADC_CFGR_AUTDLY | ADC_CFGR_DFSDMCFG))
AnnaBridge 167:e84263d55307 611 #else
<> 144:ef7eb2e8f9f7 612 #define ADC_CFGR_FIELDS_2 ((uint32_t)(ADC_CFGR_DMACFG | ADC_CFGR_AUTDLY))
AnnaBridge 167:e84263d55307 613 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
<> 144:ef7eb2e8f9f7 614 /**
<> 144:ef7eb2e8f9f7 615 * @}
<> 144:ef7eb2e8f9f7 616 */
<> 144:ef7eb2e8f9f7 617
AnnaBridge 167:e84263d55307 618 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 619 /** @defgroup ADCEx_DFSDM_Mode_Configuration ADC Extended DFSDM mode configuration
AnnaBridge 167:e84263d55307 620 * @{
AnnaBridge 167:e84263d55307 621 */
AnnaBridge 167:e84263d55307 622 #define ADC_DFSDM_MODE_DISABLE ((uint32_t)0x00000000) /*!< DFSDM mode configuration disabled */
AnnaBridge 167:e84263d55307 623 #define ADC_DFSDM_MODE_ENABLE ((uint32_t)ADC_CFGR_DFSDMCFG) /*!< DFSDM mode configuration enabled */
AnnaBridge 167:e84263d55307 624 /**
AnnaBridge 167:e84263d55307 625 * @}
AnnaBridge 167:e84263d55307 626 */
AnnaBridge 167:e84263d55307 627 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
AnnaBridge 167:e84263d55307 628
<> 144:ef7eb2e8f9f7 629 /**
<> 144:ef7eb2e8f9f7 630 * @}
<> 144:ef7eb2e8f9f7 631 */
<> 144:ef7eb2e8f9f7 632
AnnaBridge 167:e84263d55307 633 /* Exported macros -----------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 634
AnnaBridge 167:e84263d55307 635 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 636 /** @defgroup ADCEx_Exported_Macro ADC Extended Exported Macros
AnnaBridge 167:e84263d55307 637 * @{
AnnaBridge 167:e84263d55307 638 */
AnnaBridge 167:e84263d55307 639
AnnaBridge 167:e84263d55307 640 /** @brief Force ADC instance in multimode mode independant (multimode disable).
AnnaBridge 167:e84263d55307 641 * @note This macro must be used only in case of transition from multimode
AnnaBridge 167:e84263d55307 642 * to mode independent and in case of unknown previous state,
AnnaBridge 167:e84263d55307 643 * to ensure ADC configuration is in mode independent.
AnnaBridge 167:e84263d55307 644 * @note Standard way of multimode configuration change is done from
AnnaBridge 167:e84263d55307 645 * HAL ADC handle of ADC master using function
AnnaBridge 167:e84263d55307 646 * "HAL_ADCEx_MultiModeConfigChannel(..., ADC_MODE_INDEPENDENT)" )".
AnnaBridge 167:e84263d55307 647 * Usage of this macro is not the Standard way of multimode
AnnaBridge 167:e84263d55307 648 * configuration and can lead to have HAL ADC handles status
AnnaBridge 167:e84263d55307 649 * misaligned. Usage of this macro must be limited to cases
AnnaBridge 167:e84263d55307 650 * mentionned above.
AnnaBridge 167:e84263d55307 651 * @param __HANDLE__: ADC handle.
AnnaBridge 167:e84263d55307 652 * @retval None
AnnaBridge 167:e84263d55307 653 */
AnnaBridge 167:e84263d55307 654 #define ADC_FORCE_MODE_INDEPENDENT(__HANDLE__) \
AnnaBridge 167:e84263d55307 655 CLEAR_BIT(ADC_COMMON_REGISTER(__HANDLE__)->CCR, ADC_CCR_DUAL)
AnnaBridge 167:e84263d55307 656
AnnaBridge 167:e84263d55307 657 /**
AnnaBridge 167:e84263d55307 658 * @}
AnnaBridge 167:e84263d55307 659 */
AnnaBridge 167:e84263d55307 660 #endif
<> 144:ef7eb2e8f9f7 661
<> 144:ef7eb2e8f9f7 662 /* Private macros -----------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 663
<> 144:ef7eb2e8f9f7 664 /** @defgroup ADCEx_Private_Macro_internal_HAL_driver ADC Extended Private Macros
<> 144:ef7eb2e8f9f7 665 * @{
<> 144:ef7eb2e8f9f7 666 */
<> 144:ef7eb2e8f9f7 667
<> 144:ef7eb2e8f9f7 668 /**
<> 144:ef7eb2e8f9f7 669 * @brief Test if conversion trigger of injected group is software start
<> 144:ef7eb2e8f9f7 670 * or external trigger.
<> 144:ef7eb2e8f9f7 671 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 672 * @retval SET (software start) or RESET (external trigger).
<> 144:ef7eb2e8f9f7 673 */
<> 144:ef7eb2e8f9f7 674 #define ADC_IS_SOFTWARE_START_INJECTED(__HANDLE__) \
<> 144:ef7eb2e8f9f7 675 (((__HANDLE__)->Instance->JSQR & ADC_JSQR_JEXTEN) == RESET)
<> 144:ef7eb2e8f9f7 676
<> 144:ef7eb2e8f9f7 677 /**
<> 144:ef7eb2e8f9f7 678 * @brief Check if conversion is on going on regular or injected groups.
<> 144:ef7eb2e8f9f7 679 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 680 * @retval SET (conversion is on going) or RESET (no conversion is on going).
<> 144:ef7eb2e8f9f7 681 */
<> 144:ef7eb2e8f9f7 682 #define ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED(__HANDLE__) \
<> 144:ef7eb2e8f9f7 683 (( (((__HANDLE__)->Instance->CR) & (ADC_CR_ADSTART | ADC_CR_JADSTART)) == RESET \
<> 144:ef7eb2e8f9f7 684 ) ? RESET : SET)
<> 144:ef7eb2e8f9f7 685
<> 144:ef7eb2e8f9f7 686 /**
<> 144:ef7eb2e8f9f7 687 * @brief Check if conversion is on going on injected group.
<> 144:ef7eb2e8f9f7 688 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 689 * @retval SET (conversion is on going) or RESET (no conversion is on going).
<> 144:ef7eb2e8f9f7 690 */
<> 144:ef7eb2e8f9f7 691 #define ADC_IS_CONVERSION_ONGOING_INJECTED(__HANDLE__) \
<> 144:ef7eb2e8f9f7 692 (( (((__HANDLE__)->Instance->CR) & ADC_CR_JADSTART) == RESET \
<> 144:ef7eb2e8f9f7 693 ) ? RESET : SET)
<> 144:ef7eb2e8f9f7 694
<> 144:ef7eb2e8f9f7 695 /**
<> 144:ef7eb2e8f9f7 696 * @brief Check whether or not ADC is independent.
<> 144:ef7eb2e8f9f7 697 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 698 * @note When multimode feature is not available, the macro always returns SET.
<> 144:ef7eb2e8f9f7 699 * @retval SET (ADC is independent) or RESET (ADC is not).
<> 144:ef7eb2e8f9f7 700 */
AnnaBridge 167:e84263d55307 701 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 702 #define ADC_IS_INDEPENDENT(__HANDLE__) \
<> 144:ef7eb2e8f9f7 703 ( ( ( ((__HANDLE__)->Instance) == ADC3) \
<> 144:ef7eb2e8f9f7 704 )? \
<> 144:ef7eb2e8f9f7 705 SET \
<> 144:ef7eb2e8f9f7 706 : \
<> 144:ef7eb2e8f9f7 707 RESET \
<> 144:ef7eb2e8f9f7 708 )
AnnaBridge 167:e84263d55307 709 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 710 #define ADC_IS_INDEPENDENT(__HANDLE__) (SET)
<> 144:ef7eb2e8f9f7 711 #endif
<> 144:ef7eb2e8f9f7 712
<> 144:ef7eb2e8f9f7 713 /**
<> 144:ef7eb2e8f9f7 714 * @brief Set the sample time for Channels numbers between 0 and 9.
<> 144:ef7eb2e8f9f7 715 * @param __SAMPLETIME__: Sample time parameter.
<> 144:ef7eb2e8f9f7 716 * @param __CHANNELNB__: Channel number.
<> 144:ef7eb2e8f9f7 717 * @retval None
<> 144:ef7eb2e8f9f7 718 */
<> 144:ef7eb2e8f9f7 719 #define ADC_SMPR1(__SAMPLETIME__, __CHANNELNB__) ((__SAMPLETIME__) << (POSITION_VAL(ADC_SMPR1_SMP1) * (__CHANNELNB__)))
<> 144:ef7eb2e8f9f7 720
<> 144:ef7eb2e8f9f7 721 /**
<> 144:ef7eb2e8f9f7 722 * @brief Set the sample time for Channels numbers between 10 and 18.
<> 144:ef7eb2e8f9f7 723 * @param __SAMPLETIME__: Sample time parameter.
<> 144:ef7eb2e8f9f7 724 * @param __CHANNELNB__: Channel number.
<> 144:ef7eb2e8f9f7 725 * @retval None
<> 144:ef7eb2e8f9f7 726 */
<> 144:ef7eb2e8f9f7 727 #define ADC_SMPR2(__SAMPLETIME__, __CHANNELNB__) ((__SAMPLETIME__) << ((POSITION_VAL(ADC_SMPR2_SMP11) * ((__CHANNELNB__) - 10))))
<> 144:ef7eb2e8f9f7 728
<> 144:ef7eb2e8f9f7 729 /**
<> 144:ef7eb2e8f9f7 730 * @brief Write SMPR1 register.
<> 144:ef7eb2e8f9f7 731 * @param __HANDLE__ : ADC handle.
<> 144:ef7eb2e8f9f7 732 * @param __SAMPLETIME__: Sample time parameter.
<> 144:ef7eb2e8f9f7 733 * @param __CHANNELNB__ : Channel number.
<> 144:ef7eb2e8f9f7 734 * @retval None
<> 144:ef7eb2e8f9f7 735 */
AnnaBridge 167:e84263d55307 736 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 737 #define ADC_SMPR1_SETTING(__HANDLE__, __SAMPLETIME__, __CHANNELNB__) \
AnnaBridge 167:e84263d55307 738 do { \
AnnaBridge 167:e84263d55307 739 if((__SAMPLETIME__) == ADC_SAMPLETIME_3CYCLES_5) \
AnnaBridge 167:e84263d55307 740 { \
AnnaBridge 167:e84263d55307 741 SET_BIT((__HANDLE__)->Instance->SMPR1, ADC_SMPR1_SMPPLUS); \
AnnaBridge 167:e84263d55307 742 } \
AnnaBridge 167:e84263d55307 743 else if ((__SAMPLETIME__) == ADC_SAMPLETIME_2CYCLES_5) \
AnnaBridge 167:e84263d55307 744 { \
AnnaBridge 167:e84263d55307 745 CLEAR_BIT((__HANDLE__)->Instance->SMPR1, ADC_SMPR1_SMPPLUS); \
AnnaBridge 167:e84263d55307 746 } \
AnnaBridge 167:e84263d55307 747 MODIFY_REG((__HANDLE__)->Instance->SMPR1, \
AnnaBridge 167:e84263d55307 748 ADC_SMPR1(ADC_SMPR1_SMP0, (__CHANNELNB__)), \
AnnaBridge 167:e84263d55307 749 ADC_SMPR1((__SAMPLETIME__) & 0x7FFFFFFF, (__CHANNELNB__))); \
AnnaBridge 167:e84263d55307 750 } while(0)
AnnaBridge 167:e84263d55307 751 #else
<> 144:ef7eb2e8f9f7 752 #define ADC_SMPR1_SETTING(__HANDLE__, __SAMPLETIME__, __CHANNELNB__) \
<> 144:ef7eb2e8f9f7 753 MODIFY_REG((__HANDLE__)->Instance->SMPR1, \
<> 144:ef7eb2e8f9f7 754 ADC_SMPR1(ADC_SMPR1_SMP0, (__CHANNELNB__)), \
<> 144:ef7eb2e8f9f7 755 ADC_SMPR1((__SAMPLETIME__), (__CHANNELNB__)))
AnnaBridge 167:e84263d55307 756 #endif
<> 144:ef7eb2e8f9f7 757
<> 144:ef7eb2e8f9f7 758 /**
<> 144:ef7eb2e8f9f7 759 * @brief Write SMPR2 register.
<> 144:ef7eb2e8f9f7 760 * @param __HANDLE__ : ADC handle.
<> 144:ef7eb2e8f9f7 761 * @param __SAMPLETIME__: Sample time parameter.
<> 144:ef7eb2e8f9f7 762 * @param __CHANNELNB__ : Channel number.
<> 144:ef7eb2e8f9f7 763 * @retval None
<> 144:ef7eb2e8f9f7 764 */
AnnaBridge 167:e84263d55307 765 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 766 #define ADC_SMPR2_SETTING(__HANDLE__, __SAMPLETIME__, __CHANNELNB__) \
AnnaBridge 167:e84263d55307 767 do { \
AnnaBridge 167:e84263d55307 768 if((__SAMPLETIME__) == ADC_SAMPLETIME_3CYCLES_5) \
AnnaBridge 167:e84263d55307 769 { \
AnnaBridge 167:e84263d55307 770 SET_BIT((__HANDLE__)->Instance->SMPR1, ADC_SMPR1_SMPPLUS); \
AnnaBridge 167:e84263d55307 771 } \
AnnaBridge 167:e84263d55307 772 else if ((__SAMPLETIME__) == ADC_SAMPLETIME_2CYCLES_5) \
AnnaBridge 167:e84263d55307 773 { \
AnnaBridge 167:e84263d55307 774 CLEAR_BIT((__HANDLE__)->Instance->SMPR1, ADC_SMPR1_SMPPLUS); \
AnnaBridge 167:e84263d55307 775 } \
AnnaBridge 167:e84263d55307 776 MODIFY_REG((__HANDLE__)->Instance->SMPR2, \
AnnaBridge 167:e84263d55307 777 ADC_SMPR2(ADC_SMPR2_SMP10, (__CHANNELNB__)), \
AnnaBridge 167:e84263d55307 778 ADC_SMPR2((__SAMPLETIME__) & 0x7FFFFFFF, (__CHANNELNB__))); \
AnnaBridge 167:e84263d55307 779 } while(0)
AnnaBridge 167:e84263d55307 780 #else
<> 144:ef7eb2e8f9f7 781 #define ADC_SMPR2_SETTING(__HANDLE__, __SAMPLETIME__, __CHANNELNB__) \
<> 144:ef7eb2e8f9f7 782 MODIFY_REG((__HANDLE__)->Instance->SMPR2, \
<> 144:ef7eb2e8f9f7 783 ADC_SMPR2(ADC_SMPR2_SMP10, (__CHANNELNB__)), \
<> 144:ef7eb2e8f9f7 784 ADC_SMPR2((__SAMPLETIME__), (__CHANNELNB__)))
AnnaBridge 167:e84263d55307 785 #endif
<> 144:ef7eb2e8f9f7 786
<> 144:ef7eb2e8f9f7 787
<> 144:ef7eb2e8f9f7 788 /**
<> 144:ef7eb2e8f9f7 789 * @brief Set the selected regular Channel rank for rank between 1 and 4.
<> 144:ef7eb2e8f9f7 790 * @param __CHANNELNB__: Channel number.
<> 144:ef7eb2e8f9f7 791 * @param __RANKNB__: Rank number.
<> 144:ef7eb2e8f9f7 792 * @retval None
<> 144:ef7eb2e8f9f7 793 */
<> 144:ef7eb2e8f9f7 794 #define ADC_SQR1_RK(__CHANNELNB__, __RANKNB__) ((__CHANNELNB__) << (POSITION_VAL(ADC_SQR1_SQ1) * (__RANKNB__)))
<> 144:ef7eb2e8f9f7 795
<> 144:ef7eb2e8f9f7 796 /**
<> 144:ef7eb2e8f9f7 797 * @brief Set the selected regular Channel rank for rank between 5 and 9.
<> 144:ef7eb2e8f9f7 798 * @param __CHANNELNB__: Channel number.
<> 144:ef7eb2e8f9f7 799 * @param __RANKNB__: Rank number.
<> 144:ef7eb2e8f9f7 800 * @retval None
<> 144:ef7eb2e8f9f7 801 */
<> 144:ef7eb2e8f9f7 802 #define ADC_SQR2_RK(__CHANNELNB__, __RANKNB__) ((__CHANNELNB__) << (POSITION_VAL(ADC_SQR2_SQ6) * ((__RANKNB__) - 5)))
<> 144:ef7eb2e8f9f7 803
<> 144:ef7eb2e8f9f7 804 /**
<> 144:ef7eb2e8f9f7 805 * @brief Set the selected regular Channel rank for rank between 10 and 14.
<> 144:ef7eb2e8f9f7 806 * @param __CHANNELNB__: Channel number.
<> 144:ef7eb2e8f9f7 807 * @param __RANKNB__: Rank number.
<> 144:ef7eb2e8f9f7 808 * @retval None
<> 144:ef7eb2e8f9f7 809 */
<> 144:ef7eb2e8f9f7 810 #define ADC_SQR3_RK(__CHANNELNB__, __RANKNB__) ((__CHANNELNB__) << (POSITION_VAL(ADC_SQR3_SQ11) * ((__RANKNB__) - 10)))
<> 144:ef7eb2e8f9f7 811
<> 144:ef7eb2e8f9f7 812 /**
<> 144:ef7eb2e8f9f7 813 * @brief Set the selected regular Channel rank for rank between 15 and 16.
<> 144:ef7eb2e8f9f7 814 * @param __CHANNELNB__: Channel number.
<> 144:ef7eb2e8f9f7 815 * @param __RANKNB__: Rank number.
<> 144:ef7eb2e8f9f7 816 * @retval None
<> 144:ef7eb2e8f9f7 817 */
<> 144:ef7eb2e8f9f7 818 #define ADC_SQR4_RK(__CHANNELNB__, __RANKNB__) ((__CHANNELNB__) << (POSITION_VAL(ADC_SQR4_SQ16) * ((__RANKNB__) - 15)))
<> 144:ef7eb2e8f9f7 819
<> 144:ef7eb2e8f9f7 820 /**
<> 144:ef7eb2e8f9f7 821 * @brief Set the selected injected Channel rank.
<> 144:ef7eb2e8f9f7 822 * @param __CHANNELNB__: Channel number.
<> 144:ef7eb2e8f9f7 823 * @param __RANKNB__: Rank number.
<> 144:ef7eb2e8f9f7 824 * @retval None
<> 144:ef7eb2e8f9f7 825 */
<> 144:ef7eb2e8f9f7 826 #define ADC_JSQR_RK(__CHANNELNB__, __RANKNB__) ((__CHANNELNB__) << ((POSITION_VAL(ADC_JSQR_JSQ1)-2) * (__RANKNB__) +2))
<> 144:ef7eb2e8f9f7 827
<> 144:ef7eb2e8f9f7 828
<> 144:ef7eb2e8f9f7 829 /**
<> 144:ef7eb2e8f9f7 830 * @brief Set the Analog Watchdog 1 channel.
<> 144:ef7eb2e8f9f7 831 * @param __CHANNEL__: channel to be monitored by Analog Watchdog 1.
<> 144:ef7eb2e8f9f7 832 * @retval None
<> 144:ef7eb2e8f9f7 833 */
<> 144:ef7eb2e8f9f7 834 #define ADC_CFGR_SET_AWD1CH(__CHANNEL__) ((__CHANNEL__) << POSITION_VAL(ADC_CFGR_AWD1CH))
<> 144:ef7eb2e8f9f7 835
<> 144:ef7eb2e8f9f7 836 /**
<> 144:ef7eb2e8f9f7 837 * @brief Configure the channel number in Analog Watchdog 2 or 3.
<> 144:ef7eb2e8f9f7 838 * @param __CHANNEL__: ADC Channel
<> 144:ef7eb2e8f9f7 839 * @retval None
<> 144:ef7eb2e8f9f7 840 */
<> 144:ef7eb2e8f9f7 841 #define ADC_CFGR_SET_AWD23CR(__CHANNEL__) (1U << (__CHANNEL__))
<> 144:ef7eb2e8f9f7 842
<> 144:ef7eb2e8f9f7 843 /**
<> 144:ef7eb2e8f9f7 844 * @brief Configure ADC injected context queue
<> 144:ef7eb2e8f9f7 845 * @param __INJECT_CONTEXT_QUEUE_MODE__: Injected context queue mode.
<> 144:ef7eb2e8f9f7 846 * @retval None
<> 144:ef7eb2e8f9f7 847 */
<> 144:ef7eb2e8f9f7 848 #define ADC_CFGR_INJECT_CONTEXT_QUEUE(__INJECT_CONTEXT_QUEUE_MODE__) ((__INJECT_CONTEXT_QUEUE_MODE__) << POSITION_VAL(ADC_CFGR_JQM))
<> 144:ef7eb2e8f9f7 849
<> 144:ef7eb2e8f9f7 850 /**
<> 144:ef7eb2e8f9f7 851 * @brief Configure ADC discontinuous conversion mode for injected group
<> 144:ef7eb2e8f9f7 852 * @param __INJECT_DISCONTINUOUS_MODE__: Injected discontinuous mode.
<> 144:ef7eb2e8f9f7 853 * @retval None
<> 144:ef7eb2e8f9f7 854 */
<> 144:ef7eb2e8f9f7 855 #define ADC_CFGR_INJECT_DISCCONTINUOUS(__INJECT_DISCONTINUOUS_MODE__) ((__INJECT_DISCONTINUOUS_MODE__) << POSITION_VAL(ADC_CFGR_JDISCEN))
<> 144:ef7eb2e8f9f7 856
<> 144:ef7eb2e8f9f7 857 /**
<> 144:ef7eb2e8f9f7 858 * @brief Configure ADC discontinuous conversion mode for regular group
<> 144:ef7eb2e8f9f7 859 * @param __REG_DISCONTINUOUS_MODE__: Regular discontinuous mode.
<> 144:ef7eb2e8f9f7 860 * @retval None
<> 144:ef7eb2e8f9f7 861 */
<> 144:ef7eb2e8f9f7 862 #define ADC_CFGR_REG_DISCONTINUOUS(__REG_DISCONTINUOUS_MODE__) ((__REG_DISCONTINUOUS_MODE__) << POSITION_VAL(ADC_CFGR_DISCEN))
<> 144:ef7eb2e8f9f7 863 /**
<> 144:ef7eb2e8f9f7 864 * @brief Configure the number of discontinuous conversions for regular group.
<> 144:ef7eb2e8f9f7 865 * @param __NBR_DISCONTINUOUS_CONV__: Number of discontinuous conversions.
<> 144:ef7eb2e8f9f7 866 * @retval None
<> 144:ef7eb2e8f9f7 867 */
<> 144:ef7eb2e8f9f7 868 #define ADC_CFGR_DISCONTINUOUS_NUM(__NBR_DISCONTINUOUS_CONV__) (((__NBR_DISCONTINUOUS_CONV__) - 1) << POSITION_VAL(ADC_CFGR_DISCNUM))
<> 144:ef7eb2e8f9f7 869
<> 144:ef7eb2e8f9f7 870 /**
<> 144:ef7eb2e8f9f7 871 * @brief Configure the ADC auto delay mode.
<> 144:ef7eb2e8f9f7 872 * @param __AUTOWAIT__: Auto delay bit enable or disable.
<> 144:ef7eb2e8f9f7 873 * @retval None
<> 144:ef7eb2e8f9f7 874 */
<> 144:ef7eb2e8f9f7 875 #define ADC_CFGR_AUTOWAIT(__AUTOWAIT__) ((__AUTOWAIT__) << POSITION_VAL(ADC_CFGR_AUTDLY))
<> 144:ef7eb2e8f9f7 876
<> 144:ef7eb2e8f9f7 877 /**
<> 144:ef7eb2e8f9f7 878 * @brief Configure ADC continuous conversion mode.
<> 144:ef7eb2e8f9f7 879 * @param __CONTINUOUS_MODE__: Continuous mode.
<> 144:ef7eb2e8f9f7 880 * @retval None
<> 144:ef7eb2e8f9f7 881 */
<> 144:ef7eb2e8f9f7 882 #define ADC_CFGR_CONTINUOUS(__CONTINUOUS_MODE__) ((__CONTINUOUS_MODE__) << POSITION_VAL(ADC_CFGR_CONT))
<> 144:ef7eb2e8f9f7 883
<> 144:ef7eb2e8f9f7 884 /**
<> 144:ef7eb2e8f9f7 885 * @brief Configure the ADC DMA continuous request.
<> 144:ef7eb2e8f9f7 886 * @param __DMACONTREQ_MODE__: DMA continuous request mode.
<> 144:ef7eb2e8f9f7 887 * @retval None
<> 144:ef7eb2e8f9f7 888 */
<> 144:ef7eb2e8f9f7 889 #define ADC_CFGR_DMACONTREQ(__DMACONTREQ_MODE__) ((__DMACONTREQ_MODE__) << POSITION_VAL(ADC_CFGR_DMACFG))
<> 144:ef7eb2e8f9f7 890
<> 144:ef7eb2e8f9f7 891
<> 144:ef7eb2e8f9f7 892 /**
<> 144:ef7eb2e8f9f7 893 * @brief Configure the channel number into offset OFRx register.
<> 144:ef7eb2e8f9f7 894 * @param __CHANNEL__: ADC Channel.
<> 144:ef7eb2e8f9f7 895 * @retval None
<> 144:ef7eb2e8f9f7 896 */
<> 144:ef7eb2e8f9f7 897 #define ADC_OFR_CHANNEL(__CHANNEL__) ((__CHANNEL__) << POSITION_VAL(ADC_OFR1_OFFSET1_CH))
<> 144:ef7eb2e8f9f7 898
<> 144:ef7eb2e8f9f7 899 /**
<> 144:ef7eb2e8f9f7 900 * @brief Configure the channel number into differential mode selection register.
<> 144:ef7eb2e8f9f7 901 * @param __CHANNEL__: ADC Channel.
<> 144:ef7eb2e8f9f7 902 * @retval None
<> 144:ef7eb2e8f9f7 903 */
<> 144:ef7eb2e8f9f7 904 #define ADC_DIFSEL_CHANNEL(__CHANNEL__) (1U << (__CHANNEL__))
<> 144:ef7eb2e8f9f7 905
<> 144:ef7eb2e8f9f7 906 /**
<> 144:ef7eb2e8f9f7 907 * @brief Configure calibration factor in differential mode to be set into calibration register.
<> 144:ef7eb2e8f9f7 908 * @param __CALIBRATION_FACTOR__: Calibration factor value.
<> 144:ef7eb2e8f9f7 909 * @retval None
<> 144:ef7eb2e8f9f7 910 */
<> 144:ef7eb2e8f9f7 911 #define ADC_CALFACT_DIFF_SET(__CALIBRATION_FACTOR__) (((__CALIBRATION_FACTOR__) & (ADC_CALFACT_CALFACT_D >> POSITION_VAL(ADC_CALFACT_CALFACT_D)) ) << POSITION_VAL(ADC_CALFACT_CALFACT_D))
<> 144:ef7eb2e8f9f7 912 /**
<> 144:ef7eb2e8f9f7 913 * @brief Calibration factor in differential mode to be retrieved from calibration register.
<> 144:ef7eb2e8f9f7 914 * @param __CALIBRATION_FACTOR__: Calibration factor value.
<> 144:ef7eb2e8f9f7 915 * @retval None
<> 144:ef7eb2e8f9f7 916 */
<> 144:ef7eb2e8f9f7 917 #define ADC_CALFACT_DIFF_GET(__CALIBRATION_FACTOR__) ((__CALIBRATION_FACTOR__) >> POSITION_VAL(ADC_CALFACT_CALFACT_D))
<> 144:ef7eb2e8f9f7 918
<> 144:ef7eb2e8f9f7 919 /**
<> 144:ef7eb2e8f9f7 920 * @brief Configure the analog watchdog high threshold into registers TR1, TR2 or TR3.
<> 144:ef7eb2e8f9f7 921 * @param __THRESHOLD__: Threshold value.
<> 144:ef7eb2e8f9f7 922 * @retval None
<> 144:ef7eb2e8f9f7 923 */
<> 144:ef7eb2e8f9f7 924 #define ADC_TRX_HIGHTHRESHOLD(__THRESHOLD__) ((__THRESHOLD__) << 16)
<> 144:ef7eb2e8f9f7 925
AnnaBridge 167:e84263d55307 926 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 927 /**
<> 144:ef7eb2e8f9f7 928 * @brief Configure the ADC DMA continuous request for ADC multimode.
<> 144:ef7eb2e8f9f7 929 * @param __DMACONTREQ_MODE__: DMA continuous request mode.
<> 144:ef7eb2e8f9f7 930 * @retval None
<> 144:ef7eb2e8f9f7 931 */
<> 144:ef7eb2e8f9f7 932 #define ADC_CCR_MULTI_DMACONTREQ(__DMACONTREQ_MODE__) ((__DMACONTREQ_MODE__) << POSITION_VAL(ADC_CCR_DMACFG))
AnnaBridge 167:e84263d55307 933 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
<> 144:ef7eb2e8f9f7 934
<> 144:ef7eb2e8f9f7 935 /**
<> 144:ef7eb2e8f9f7 936 * @brief Enable the ADC peripheral.
<> 144:ef7eb2e8f9f7 937 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 938 * @retval None
<> 144:ef7eb2e8f9f7 939 */
<> 144:ef7eb2e8f9f7 940 #define ADC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= ADC_CR_ADEN)
<> 144:ef7eb2e8f9f7 941
<> 144:ef7eb2e8f9f7 942 /**
<> 144:ef7eb2e8f9f7 943 * @brief Verification of hardware constraints before ADC can be enabled.
<> 144:ef7eb2e8f9f7 944 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 945 * @retval SET (ADC can be enabled) or RESET (ADC cannot be enabled)
<> 144:ef7eb2e8f9f7 946 */
<> 144:ef7eb2e8f9f7 947 #define ADC_ENABLING_CONDITIONS(__HANDLE__) \
<> 144:ef7eb2e8f9f7 948 (( ( ((__HANDLE__)->Instance->CR) & \
<> 144:ef7eb2e8f9f7 949 (ADC_CR_ADCAL | ADC_CR_JADSTP | ADC_CR_ADSTP | ADC_CR_JADSTART | \
<> 144:ef7eb2e8f9f7 950 ADC_CR_ADSTART | ADC_CR_ADDIS | ADC_CR_ADEN ) \
<> 144:ef7eb2e8f9f7 951 ) == RESET \
<> 144:ef7eb2e8f9f7 952 ) ? SET : RESET)
<> 144:ef7eb2e8f9f7 953
<> 144:ef7eb2e8f9f7 954 /**
<> 144:ef7eb2e8f9f7 955 * @brief Disable the ADC peripheral.
<> 144:ef7eb2e8f9f7 956 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 957 * @retval None
<> 144:ef7eb2e8f9f7 958 */
<> 144:ef7eb2e8f9f7 959 #define ADC_DISABLE(__HANDLE__) \
<> 144:ef7eb2e8f9f7 960 do{ \
<> 144:ef7eb2e8f9f7 961 (__HANDLE__)->Instance->CR |= ADC_CR_ADDIS; \
<> 144:ef7eb2e8f9f7 962 __HAL_ADC_CLEAR_FLAG((__HANDLE__), (ADC_FLAG_EOSMP | ADC_FLAG_RDY)); \
<> 144:ef7eb2e8f9f7 963 } while(0)
<> 144:ef7eb2e8f9f7 964
<> 144:ef7eb2e8f9f7 965 /**
<> 144:ef7eb2e8f9f7 966 * @brief Verification of hardware constraints before ADC can be disabled.
<> 144:ef7eb2e8f9f7 967 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 968 * @retval SET (ADC can be disabled) or RESET (ADC cannot be disabled)
<> 144:ef7eb2e8f9f7 969 */
<> 144:ef7eb2e8f9f7 970 #define ADC_DISABLING_CONDITIONS(__HANDLE__) \
<> 144:ef7eb2e8f9f7 971 (( ( ((__HANDLE__)->Instance->CR) & \
<> 144:ef7eb2e8f9f7 972 (ADC_CR_JADSTART | ADC_CR_ADSTART | ADC_CR_ADEN)) == ADC_CR_ADEN \
<> 144:ef7eb2e8f9f7 973 ) ? SET : RESET)
<> 144:ef7eb2e8f9f7 974
<> 144:ef7eb2e8f9f7 975 /**
<> 144:ef7eb2e8f9f7 976 * @brief Shift the offset with respect to the selected ADC resolution.
<> 144:ef7eb2e8f9f7 977 * @note Offset has to be left-aligned on bit 11, the LSB (right bits) are set to 0.
<> 144:ef7eb2e8f9f7 978 * If resolution 12 bits, no shift.
<> 144:ef7eb2e8f9f7 979 * If resolution 10 bits, shift of 2 ranks on the left.
<> 144:ef7eb2e8f9f7 980 * If resolution 8 bits, shift of 4 ranks on the left.
<> 144:ef7eb2e8f9f7 981 * If resolution 6 bits, shift of 6 ranks on the left.
<> 144:ef7eb2e8f9f7 982 * Therefore, shift = (12 - resolution) = 12 - (12- (((RES[1:0]) >> 3)*2)).
<> 144:ef7eb2e8f9f7 983 * @param __HANDLE__: ADC handle
<> 144:ef7eb2e8f9f7 984 * @param __OFFSET__: Value to be shifted
<> 144:ef7eb2e8f9f7 985 * @retval None
<> 144:ef7eb2e8f9f7 986 */
<> 144:ef7eb2e8f9f7 987 #define ADC_OFFSET_SHIFT_RESOLUTION(__HANDLE__, __OFFSET__) \
<> 144:ef7eb2e8f9f7 988 ((__OFFSET__) << ((((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) >> 3)*2))
<> 144:ef7eb2e8f9f7 989
<> 144:ef7eb2e8f9f7 990
<> 144:ef7eb2e8f9f7 991 /**
<> 144:ef7eb2e8f9f7 992 * @brief Shift the AWD1 threshold with respect to the selected ADC resolution.
<> 144:ef7eb2e8f9f7 993 * @note Thresholds have to be left-aligned on bit 11, the LSB (right bits) are set to 0.
<> 144:ef7eb2e8f9f7 994 * If resolution 12 bits, no shift.
<> 144:ef7eb2e8f9f7 995 * If resolution 10 bits, shift of 2 ranks on the left.
<> 144:ef7eb2e8f9f7 996 * If resolution 8 bits, shift of 4 ranks on the left.
<> 144:ef7eb2e8f9f7 997 * If resolution 6 bits, shift of 6 ranks on the left.
<> 144:ef7eb2e8f9f7 998 * Therefore, shift = (12 - resolution) = 12 - (12- (((RES[1:0]) >> 3)*2)).
<> 144:ef7eb2e8f9f7 999 * @param __HANDLE__: ADC handle
<> 144:ef7eb2e8f9f7 1000 * @param __THRESHOLD__: Value to be shifted
<> 144:ef7eb2e8f9f7 1001 * @retval None
<> 144:ef7eb2e8f9f7 1002 */
<> 144:ef7eb2e8f9f7 1003 #define ADC_AWD1THRESHOLD_SHIFT_RESOLUTION(__HANDLE__, __THRESHOLD__) \
<> 144:ef7eb2e8f9f7 1004 ((__THRESHOLD__) << ((((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) >> 3)*2))
<> 144:ef7eb2e8f9f7 1005
<> 144:ef7eb2e8f9f7 1006 /**
<> 144:ef7eb2e8f9f7 1007 * @brief Shift the AWD2 and AWD3 threshold with respect to the selected ADC resolution.
<> 144:ef7eb2e8f9f7 1008 * @note Thresholds have to be left-aligned on bit 7.
<> 144:ef7eb2e8f9f7 1009 * If resolution 12 bits, shift of 4 ranks on the right (the 4 LSB are discarded).
<> 144:ef7eb2e8f9f7 1010 * If resolution 10 bits, shift of 2 ranks on the right (the 2 LSB are discarded).
<> 144:ef7eb2e8f9f7 1011 * If resolution 8 bits, no shift.
<> 144:ef7eb2e8f9f7 1012 * If resolution 6 bits, shift of 2 ranks on the left (the 2 LSB are set to 0).
<> 144:ef7eb2e8f9f7 1013 * @param __HANDLE__: ADC handle
<> 144:ef7eb2e8f9f7 1014 * @param __THRESHOLD__: Value to be shifted
<> 144:ef7eb2e8f9f7 1015 * @retval None
<> 144:ef7eb2e8f9f7 1016 */
<> 144:ef7eb2e8f9f7 1017 #define ADC_AWD23THRESHOLD_SHIFT_RESOLUTION(__HANDLE__, __THRESHOLD__) \
<> 144:ef7eb2e8f9f7 1018 ( ((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) != (ADC_CFGR_RES_1 | ADC_CFGR_RES_0) ? \
<> 144:ef7eb2e8f9f7 1019 ((__THRESHOLD__) >> (4- ((((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) >> 3)*2))) : \
<> 144:ef7eb2e8f9f7 1020 (__THRESHOLD__) << 2 )
<> 144:ef7eb2e8f9f7 1021
<> 144:ef7eb2e8f9f7 1022 /**
<> 144:ef7eb2e8f9f7 1023 * @brief Report ADC common register.
<> 144:ef7eb2e8f9f7 1024 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1025 * @retval Common control register
<> 144:ef7eb2e8f9f7 1026 */
AnnaBridge 167:e84263d55307 1027 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1028 #define ADC_COMMON_REGISTER(__HANDLE__) (ADC123_COMMON)
AnnaBridge 167:e84263d55307 1029 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1030 #define ADC_COMMON_REGISTER(__HANDLE__) (ADC1_COMMON)
<> 144:ef7eb2e8f9f7 1031 #endif
<> 144:ef7eb2e8f9f7 1032
<> 144:ef7eb2e8f9f7 1033 /**
<> 144:ef7eb2e8f9f7 1034 * @brief Report Master Instance.
<> 144:ef7eb2e8f9f7 1035 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1036 * @note Return same instance if ADC of input handle is independent ADC or if
<> 144:ef7eb2e8f9f7 1037 * multimode feature is not available.
<> 144:ef7eb2e8f9f7 1038 * @retval Master Instance
<> 144:ef7eb2e8f9f7 1039 */
AnnaBridge 167:e84263d55307 1040 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1041 #define ADC_MASTER_REGISTER(__HANDLE__) \
<> 144:ef7eb2e8f9f7 1042 ( ( ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC3)) \
<> 144:ef7eb2e8f9f7 1043 )? \
<> 144:ef7eb2e8f9f7 1044 ((__HANDLE__)->Instance) \
<> 144:ef7eb2e8f9f7 1045 : \
<> 144:ef7eb2e8f9f7 1046 (ADC1) \
<> 144:ef7eb2e8f9f7 1047 )
AnnaBridge 167:e84263d55307 1048 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1049 #define ADC_MASTER_REGISTER(__HANDLE__) ((__HANDLE__)->Instance)
<> 144:ef7eb2e8f9f7 1050 #endif
<> 144:ef7eb2e8f9f7 1051
<> 144:ef7eb2e8f9f7 1052 /**
<> 144:ef7eb2e8f9f7 1053 * @brief Clear Common Control Register.
<> 144:ef7eb2e8f9f7 1054 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1055 * @retval None
<> 144:ef7eb2e8f9f7 1056 */
AnnaBridge 167:e84263d55307 1057 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1058 #define ADC_CLEAR_COMMON_CONTROL_REGISTER(__HANDLE__) CLEAR_BIT(ADC_COMMON_REGISTER(__HANDLE__)->CCR, ADC_CCR_CKMODE | \
<> 144:ef7eb2e8f9f7 1059 ADC_CCR_PRESC | \
<> 144:ef7eb2e8f9f7 1060 ADC_CCR_VBATEN | \
<> 144:ef7eb2e8f9f7 1061 ADC_CCR_TSEN | \
<> 144:ef7eb2e8f9f7 1062 ADC_CCR_VREFEN | \
<> 144:ef7eb2e8f9f7 1063 ADC_CCR_MDMA | \
<> 144:ef7eb2e8f9f7 1064 ADC_CCR_DMACFG | \
<> 144:ef7eb2e8f9f7 1065 ADC_CCR_DELAY | \
<> 144:ef7eb2e8f9f7 1066 ADC_CCR_DUAL )
AnnaBridge 167:e84263d55307 1067 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1068 #define ADC_CLEAR_COMMON_CONTROL_REGISTER(__HANDLE__) CLEAR_BIT(ADC_COMMON_REGISTER(__HANDLE__)->CCR, ADC_CCR_CKMODE | \
<> 144:ef7eb2e8f9f7 1069 ADC_CCR_PRESC | \
<> 144:ef7eb2e8f9f7 1070 ADC_CCR_VBATEN | \
<> 144:ef7eb2e8f9f7 1071 ADC_CCR_TSEN | \
<> 144:ef7eb2e8f9f7 1072 ADC_CCR_VREFEN )
<> 144:ef7eb2e8f9f7 1073 #endif
<> 144:ef7eb2e8f9f7 1074
<> 144:ef7eb2e8f9f7 1075
<> 144:ef7eb2e8f9f7 1076 /**
<> 144:ef7eb2e8f9f7 1077 * @brief Check whether or not dual conversions are enabled.
<> 144:ef7eb2e8f9f7 1078 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1079 * @note Return RESET if ADC of input handle is independent ADC or if multimode feature is not available.
<> 144:ef7eb2e8f9f7 1080 * @retval SET (dual regular conversions are enabled) or RESET (ADC is independent or no dual regular conversions are enabled)
<> 144:ef7eb2e8f9f7 1081 */
AnnaBridge 167:e84263d55307 1082 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1083 #define ADC_IS_DUAL_CONVERSION_ENABLE(__HANDLE__) \
<> 144:ef7eb2e8f9f7 1084 ( ( ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC2)) \
<> 144:ef7eb2e8f9f7 1085 )? \
<> 144:ef7eb2e8f9f7 1086 ( ((ADC123_COMMON->CCR & ADC_CCR_DUAL) != ADC_MODE_INDEPENDENT) ) \
<> 144:ef7eb2e8f9f7 1087 : \
<> 144:ef7eb2e8f9f7 1088 RESET \
<> 144:ef7eb2e8f9f7 1089 )
AnnaBridge 167:e84263d55307 1090 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1091 #define ADC_IS_DUAL_CONVERSION_ENABLE(__HANDLE__) (RESET)
<> 144:ef7eb2e8f9f7 1092 #endif
<> 144:ef7eb2e8f9f7 1093
<> 144:ef7eb2e8f9f7 1094 /**
<> 144:ef7eb2e8f9f7 1095 * @brief Check whether or not dual regular conversions are enabled.
<> 144:ef7eb2e8f9f7 1096 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1097 * @note Return RESET if ADC of input handle is independent ADC or if multimode feature is not available.
<> 144:ef7eb2e8f9f7 1098 * @retval SET (dual regular conversions are enabled) or RESET (ADC is independent or no dual regular conversions are enabled)
<> 144:ef7eb2e8f9f7 1099 */
AnnaBridge 167:e84263d55307 1100 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1101 #define ADC_IS_DUAL_REGULAR_CONVERSION_ENABLE(__HANDLE__) \
<> 144:ef7eb2e8f9f7 1102 ( ( ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC2)) \
<> 144:ef7eb2e8f9f7 1103 )? \
<> 144:ef7eb2e8f9f7 1104 ( (((ADC_COMMON_REGISTER(__HANDLE__))->CCR & ADC_CCR_DUAL) != ADC_MODE_INDEPENDENT) && \
<> 144:ef7eb2e8f9f7 1105 (((ADC_COMMON_REGISTER(__HANDLE__))->CCR & ADC_CCR_DUAL) != ADC_DUALMODE_INJECSIMULT) && \
<> 144:ef7eb2e8f9f7 1106 (((ADC_COMMON_REGISTER(__HANDLE__))->CCR & ADC_CCR_DUAL) != ADC_DUALMODE_ALTERTRIG) ) \
<> 144:ef7eb2e8f9f7 1107 : \
<> 144:ef7eb2e8f9f7 1108 RESET \
<> 144:ef7eb2e8f9f7 1109 )
AnnaBridge 167:e84263d55307 1110 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1111 #define ADC_IS_DUAL_REGULAR_CONVERSION_ENABLE(__HANDLE__) (RESET)
<> 144:ef7eb2e8f9f7 1112 #endif
<> 144:ef7eb2e8f9f7 1113
<> 144:ef7eb2e8f9f7 1114
<> 144:ef7eb2e8f9f7 1115 /**
<> 144:ef7eb2e8f9f7 1116 * @brief Verification of condition for ADC start conversion: ADC must be in non-multimode or multimode with handle of ADC master.
<> 144:ef7eb2e8f9f7 1117 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1118 * @note Return SET if multimode feature is not available.
<> 144:ef7eb2e8f9f7 1119 * @retval SET (non-multimode or Master handle) or RESET (handle of Slave ADC in multimode)
<> 144:ef7eb2e8f9f7 1120 */
AnnaBridge 167:e84263d55307 1121 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1122 #define ADC_NONMULTIMODE_OR_MULTIMODEMASTER(__HANDLE__) \
<> 144:ef7eb2e8f9f7 1123 ( ( ((__HANDLE__)->Instance == ADC1) || ((__HANDLE__)->Instance == ADC3) \
<> 144:ef7eb2e8f9f7 1124 )? \
<> 144:ef7eb2e8f9f7 1125 SET \
<> 144:ef7eb2e8f9f7 1126 : \
<> 144:ef7eb2e8f9f7 1127 ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == RESET) \
<> 144:ef7eb2e8f9f7 1128 )
AnnaBridge 167:e84263d55307 1129 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1130 #define ADC_NONMULTIMODE_OR_MULTIMODEMASTER(__HANDLE__) (SET)
<> 144:ef7eb2e8f9f7 1131 #endif
<> 144:ef7eb2e8f9f7 1132
<> 144:ef7eb2e8f9f7 1133 /**
<> 144:ef7eb2e8f9f7 1134 * @brief Ensure ADC Instance is Independent or Master, or is not Slave ADC with dual regular conversions enabled.
<> 144:ef7eb2e8f9f7 1135 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1136 * @note Return SET if multimode feature is not available.
<> 144:ef7eb2e8f9f7 1137 * @retval SET (Independent or Master, or Slave without dual regular conversions enabled) or RESET (Slave ADC with dual regular conversions enabled)
<> 144:ef7eb2e8f9f7 1138 */
AnnaBridge 167:e84263d55307 1139 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1140 #define ADC_INDEPENDENT_OR_NONMULTIMODEREGULAR_SLAVE(__HANDLE__) \
<> 144:ef7eb2e8f9f7 1141 ( ( ((__HANDLE__)->Instance == ADC1) || ((__HANDLE__)->Instance == ADC3) \
<> 144:ef7eb2e8f9f7 1142 )? \
<> 144:ef7eb2e8f9f7 1143 SET \
<> 144:ef7eb2e8f9f7 1144 : \
<> 144:ef7eb2e8f9f7 1145 ( ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_MODE_INDEPENDENT) || \
<> 144:ef7eb2e8f9f7 1146 ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_DUALMODE_INJECSIMULT) || \
<> 144:ef7eb2e8f9f7 1147 ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_DUALMODE_ALTERTRIG) ))
AnnaBridge 167:e84263d55307 1148 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1149 #define ADC_INDEPENDENT_OR_NONMULTIMODEREGULAR_SLAVE(__HANDLE__) (SET)
<> 144:ef7eb2e8f9f7 1150 #endif
<> 144:ef7eb2e8f9f7 1151
<> 144:ef7eb2e8f9f7 1152 /**
<> 144:ef7eb2e8f9f7 1153 * @brief Ensure ADC Instance is Independent or Master, or is not Slave ADC with dual injected conversions enabled.
<> 144:ef7eb2e8f9f7 1154 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1155 * @note Return SET if multimode feature is not available.
<> 144:ef7eb2e8f9f7 1156 * @retval SET (non-multimode or Master, or Slave without dual injected conversions enabled) or RESET (Slave ADC with dual injected conversions enabled)
<> 144:ef7eb2e8f9f7 1157 */
AnnaBridge 167:e84263d55307 1158 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1159 #define ADC_INDEPENDENT_OR_NONMULTIMODEINJECTED_SLAVE(__HANDLE__) \
<> 144:ef7eb2e8f9f7 1160 ( ( ((__HANDLE__)->Instance == ADC1) || ((__HANDLE__)->Instance == ADC3) \
<> 144:ef7eb2e8f9f7 1161 )? \
<> 144:ef7eb2e8f9f7 1162 SET \
<> 144:ef7eb2e8f9f7 1163 : \
<> 144:ef7eb2e8f9f7 1164 ( ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_MODE_INDEPENDENT) || \
<> 144:ef7eb2e8f9f7 1165 ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_DUALMODE_REGSIMULT) || \
<> 144:ef7eb2e8f9f7 1166 ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_DUALMODE_INTERL) ))
AnnaBridge 167:e84263d55307 1167 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1168 #define ADC_INDEPENDENT_OR_NONMULTIMODEINJECTED_SLAVE(__HANDLE__) (SET)
<> 144:ef7eb2e8f9f7 1169 #endif
<> 144:ef7eb2e8f9f7 1170
<> 144:ef7eb2e8f9f7 1171 /**
<> 144:ef7eb2e8f9f7 1172 * @brief Verification of ADC state: enabled or disabled, directly checked on instance as input parameter.
<> 144:ef7eb2e8f9f7 1173 * @param __INSTANCE__: ADC instance.
<> 144:ef7eb2e8f9f7 1174 * @retval SET (ADC enabled) or RESET (ADC disabled)
<> 144:ef7eb2e8f9f7 1175 */
<> 144:ef7eb2e8f9f7 1176 #define ADC_INSTANCE_IS_ENABLED(__INSTANCE__) \
<> 144:ef7eb2e8f9f7 1177 (( ((((__INSTANCE__)->CR) & (ADC_CR_ADEN | ADC_CR_ADDIS)) == ADC_CR_ADEN) && \
<> 144:ef7eb2e8f9f7 1178 ((((__INSTANCE__)->ISR) & ADC_FLAG_RDY) == ADC_FLAG_RDY) \
<> 144:ef7eb2e8f9f7 1179 ) ? SET : RESET)
<> 144:ef7eb2e8f9f7 1180
<> 144:ef7eb2e8f9f7 1181 /**
<> 144:ef7eb2e8f9f7 1182 * @brief Verification of enabled/disabled status of ADCs other than that associated to the input parameter handle.
<> 144:ef7eb2e8f9f7 1183 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1184 * @retval SET (at least one other ADC is enabled) or RESET (no other ADC is enabled, all other ADCs are disabled)
<> 144:ef7eb2e8f9f7 1185 */
AnnaBridge 167:e84263d55307 1186 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1187 #define ADC_ANY_OTHER_ENABLED(__HANDLE__) \
<> 144:ef7eb2e8f9f7 1188 ( ( ((__HANDLE__)->Instance == ADC1) \
<> 144:ef7eb2e8f9f7 1189 )? \
<> 144:ef7eb2e8f9f7 1190 (ADC_INSTANCE_IS_ENABLED(ADC2)) || (ADC_INSTANCE_IS_ENABLED(ADC3)) \
<> 144:ef7eb2e8f9f7 1191 : \
<> 144:ef7eb2e8f9f7 1192 ( ( ((__HANDLE__)->Instance == ADC2) \
<> 144:ef7eb2e8f9f7 1193 )? \
<> 144:ef7eb2e8f9f7 1194 (ADC_INSTANCE_IS_ENABLED(ADC1)) || (ADC_INSTANCE_IS_ENABLED(ADC3)) \
<> 144:ef7eb2e8f9f7 1195 : \
<> 144:ef7eb2e8f9f7 1196 ADC_INSTANCE_IS_ENABLED(ADC1)) || (ADC_INSTANCE_IS_ENABLED(ADC2)) \
<> 144:ef7eb2e8f9f7 1197 )
AnnaBridge 167:e84263d55307 1198 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1199 #define ADC_ANY_OTHER_ENABLED(__HANDLE__) (RESET)
<> 144:ef7eb2e8f9f7 1200 #endif
<> 144:ef7eb2e8f9f7 1201
<> 144:ef7eb2e8f9f7 1202
AnnaBridge 167:e84263d55307 1203 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1204 /**
<> 144:ef7eb2e8f9f7 1205 * @brief Set handle instance of the ADC slave associated to the ADC master.
<> 144:ef7eb2e8f9f7 1206 * @param __HANDLE_MASTER__: ADC master handle.
<> 144:ef7eb2e8f9f7 1207 * @param __HANDLE_SLAVE__: ADC slave handle.
<> 144:ef7eb2e8f9f7 1208 * @note if __HANDLE_MASTER__ is the handle of a slave ADC (ADC2) or an independent ADC (ADC3), __HANDLE_SLAVE__ instance is set to NULL.
<> 144:ef7eb2e8f9f7 1209 * @retval None
<> 144:ef7eb2e8f9f7 1210 */
<> 144:ef7eb2e8f9f7 1211 #define ADC_MULTI_SLAVE(__HANDLE_MASTER__, __HANDLE_SLAVE__) \
<> 144:ef7eb2e8f9f7 1212 ( (((__HANDLE_MASTER__)->Instance == ADC1)) ? ((__HANDLE_SLAVE__)->Instance = ADC2) : ((__HANDLE_SLAVE__)->Instance = NULL) )
<> 144:ef7eb2e8f9f7 1213 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) */
<> 144:ef7eb2e8f9f7 1214
<> 144:ef7eb2e8f9f7 1215
<> 144:ef7eb2e8f9f7 1216 /**
<> 144:ef7eb2e8f9f7 1217 * @brief Check whether or not multimode is configured in DMA mode.
<> 144:ef7eb2e8f9f7 1218 * @note Return RESET if multimode feature is not available.
<> 144:ef7eb2e8f9f7 1219 * @retval SET (multimode is configured in DMA mode) or RESET (DMA multimode is disabled)
<> 144:ef7eb2e8f9f7 1220 */
AnnaBridge 167:e84263d55307 1221 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1222 #define ADC_MULTIMODE_DMA_ENABLED() \
<> 144:ef7eb2e8f9f7 1223 ((READ_BIT(ADC123_COMMON->CCR, ADC_CCR_MDMA) == ADC_DMAACCESSMODE_12_10_BITS) \
<> 144:ef7eb2e8f9f7 1224 || (READ_BIT(ADC123_COMMON->CCR, ADC_CCR_MDMA) == ADC_DMAACCESSMODE_8_6_BITS))
AnnaBridge 167:e84263d55307 1225 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1226 #define ADC_MULTIMODE_DMA_ENABLED() (RESET)
<> 144:ef7eb2e8f9f7 1227 #endif
<> 144:ef7eb2e8f9f7 1228
<> 144:ef7eb2e8f9f7 1229
<> 144:ef7eb2e8f9f7 1230 /**
<> 144:ef7eb2e8f9f7 1231 * @brief Verify the ADC instance connected to the temperature sensor.
<> 144:ef7eb2e8f9f7 1232 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1233 * @retval SET (ADC instance is valid) or RESET (ADC instance is invalid)
<> 144:ef7eb2e8f9f7 1234 */
AnnaBridge 167:e84263d55307 1235 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1236 /* The temperature sensor measurement path (channel 17) is available on ADC1 */
<> 144:ef7eb2e8f9f7 1237 #define ADC_TEMPERATURE_SENSOR_INSTANCE(__HANDLE__) (((__HANDLE__)->Instance) == ADC1)
AnnaBridge 167:e84263d55307 1238 #elif defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1239 /* The temperature sensor measurement path (channel 17) is available on ADC1 and ADC3 */
<> 144:ef7eb2e8f9f7 1240 #define ADC_TEMPERATURE_SENSOR_INSTANCE(__HANDLE__) ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC3))
<> 144:ef7eb2e8f9f7 1241 #endif
<> 144:ef7eb2e8f9f7 1242
<> 144:ef7eb2e8f9f7 1243 /**
<> 144:ef7eb2e8f9f7 1244 * @brief Verify the ADC instance connected to the battery voltage VBAT.
<> 144:ef7eb2e8f9f7 1245 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1246 * @retval SET (ADC instance is valid) or RESET (ADC instance is invalid)
<> 144:ef7eb2e8f9f7 1247 */
AnnaBridge 167:e84263d55307 1248 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1249 /* The battery voltage measurement path (channel 18) is available on ADC1 */
<> 144:ef7eb2e8f9f7 1250 #define ADC_BATTERY_VOLTAGE_INSTANCE(__HANDLE__) (((__HANDLE__)->Instance) == ADC1)
AnnaBridge 167:e84263d55307 1251 #elif defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1252 /* The battery voltage measurement path (channel 18) is available on ADC1 and ADC3 */
<> 144:ef7eb2e8f9f7 1253 #define ADC_BATTERY_VOLTAGE_INSTANCE(__HANDLE__) ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC3))
<> 144:ef7eb2e8f9f7 1254 #endif
<> 144:ef7eb2e8f9f7 1255
<> 144:ef7eb2e8f9f7 1256 /**
<> 144:ef7eb2e8f9f7 1257 * @brief Verify the ADC instance connected to the internal voltage reference VREFINT.
<> 144:ef7eb2e8f9f7 1258 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1259 * @retval SET (ADC instance is valid) or RESET (ADC instance is invalid)
<> 144:ef7eb2e8f9f7 1260 */
<> 144:ef7eb2e8f9f7 1261 /* The internal voltage reference VREFINT measurement path (channel 0) is available on ADC1 */
<> 144:ef7eb2e8f9f7 1262 #define ADC_VREFINT_INSTANCE(__HANDLE__) (((__HANDLE__)->Instance) == ADC1)
<> 144:ef7eb2e8f9f7 1263
<> 144:ef7eb2e8f9f7 1264
<> 144:ef7eb2e8f9f7 1265 /**
<> 144:ef7eb2e8f9f7 1266 * @brief Verify the length of scheduled injected conversions group.
<> 144:ef7eb2e8f9f7 1267 * @param __LENGTH__: number of programmed conversions.
<> 144:ef7eb2e8f9f7 1268 * @retval SET (__LENGTH__ is within the maximum number of possible programmable injected conversions) or RESET (__LENGTH__ is null or too large)
<> 144:ef7eb2e8f9f7 1269 */
<> 144:ef7eb2e8f9f7 1270 #define IS_ADC_INJECTED_NB_CONV(__LENGTH__) (((__LENGTH__) >= ((uint32_t)1)) && ((__LENGTH__) <= ((uint32_t)4)))
<> 144:ef7eb2e8f9f7 1271
<> 144:ef7eb2e8f9f7 1272
<> 144:ef7eb2e8f9f7 1273 /**
<> 144:ef7eb2e8f9f7 1274 * @brief Calibration factor size verification (7 bits maximum).
<> 144:ef7eb2e8f9f7 1275 * @param __CALIBRATION_FACTOR__: Calibration factor value.
<> 144:ef7eb2e8f9f7 1276 * @retval SET (__CALIBRATION_FACTOR__ is within the authorized size) or RESET (__CALIBRATION_FACTOR__ is too large)
<> 144:ef7eb2e8f9f7 1277 */
<> 144:ef7eb2e8f9f7 1278 #define IS_ADC_CALFACT(__CALIBRATION_FACTOR__) ((__CALIBRATION_FACTOR__) <= ((uint32_t)0x7F))
<> 144:ef7eb2e8f9f7 1279
<> 144:ef7eb2e8f9f7 1280
<> 144:ef7eb2e8f9f7 1281 /**
<> 144:ef7eb2e8f9f7 1282 * @brief Verify the ADC channel setting.
<> 144:ef7eb2e8f9f7 1283 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1284 * @param __CHANNEL__: programmed ADC channel.
<> 144:ef7eb2e8f9f7 1285 * @retval SET (__CHANNEL__ is valid) or RESET (__CHANNEL__ is invalid)
<> 144:ef7eb2e8f9f7 1286 */
AnnaBridge 167:e84263d55307 1287 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1288 #define IS_ADC_CHANNEL(__HANDLE__, __CHANNEL__) ((((__HANDLE__)->Instance) == ADC1) && \
<> 144:ef7eb2e8f9f7 1289 (((__CHANNEL__) == ADC_CHANNEL_VREFINT) || \
<> 144:ef7eb2e8f9f7 1290 ((__CHANNEL__) == ADC_CHANNEL_1) || \
<> 144:ef7eb2e8f9f7 1291 ((__CHANNEL__) == ADC_CHANNEL_2) || \
<> 144:ef7eb2e8f9f7 1292 ((__CHANNEL__) == ADC_CHANNEL_3) || \
<> 144:ef7eb2e8f9f7 1293 ((__CHANNEL__) == ADC_CHANNEL_4) || \
<> 144:ef7eb2e8f9f7 1294 ((__CHANNEL__) == ADC_CHANNEL_5) || \
<> 144:ef7eb2e8f9f7 1295 ((__CHANNEL__) == ADC_CHANNEL_6) || \
<> 144:ef7eb2e8f9f7 1296 ((__CHANNEL__) == ADC_CHANNEL_7) || \
<> 144:ef7eb2e8f9f7 1297 ((__CHANNEL__) == ADC_CHANNEL_8) || \
<> 144:ef7eb2e8f9f7 1298 ((__CHANNEL__) == ADC_CHANNEL_9) || \
<> 144:ef7eb2e8f9f7 1299 ((__CHANNEL__) == ADC_CHANNEL_10) || \
<> 144:ef7eb2e8f9f7 1300 ((__CHANNEL__) == ADC_CHANNEL_11) || \
<> 144:ef7eb2e8f9f7 1301 ((__CHANNEL__) == ADC_CHANNEL_12) || \
<> 144:ef7eb2e8f9f7 1302 ((__CHANNEL__) == ADC_CHANNEL_13) || \
<> 144:ef7eb2e8f9f7 1303 ((__CHANNEL__) == ADC_CHANNEL_14) || \
<> 144:ef7eb2e8f9f7 1304 ((__CHANNEL__) == ADC_CHANNEL_15) || \
<> 144:ef7eb2e8f9f7 1305 ((__CHANNEL__) == ADC_CHANNEL_16) || \
<> 144:ef7eb2e8f9f7 1306 ((__CHANNEL__) == ADC_CHANNEL_17) || \
<> 144:ef7eb2e8f9f7 1307 ((__CHANNEL__) == ADC_CHANNEL_18) || \
<> 144:ef7eb2e8f9f7 1308 ((__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR) || \
<> 144:ef7eb2e8f9f7 1309 ((__CHANNEL__) == ADC_CHANNEL_VBAT)))
AnnaBridge 167:e84263d55307 1310 #elif defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1311 #define IS_ADC_CHANNEL(__HANDLE__, __CHANNEL__) (((((__HANDLE__)->Instance) == ADC1) && \
<> 144:ef7eb2e8f9f7 1312 (((__CHANNEL__) == ADC_CHANNEL_VREFINT) || \
<> 144:ef7eb2e8f9f7 1313 ((__CHANNEL__) == ADC_CHANNEL_1) || \
<> 144:ef7eb2e8f9f7 1314 ((__CHANNEL__) == ADC_CHANNEL_2) || \
<> 144:ef7eb2e8f9f7 1315 ((__CHANNEL__) == ADC_CHANNEL_3) || \
<> 144:ef7eb2e8f9f7 1316 ((__CHANNEL__) == ADC_CHANNEL_4) || \
<> 144:ef7eb2e8f9f7 1317 ((__CHANNEL__) == ADC_CHANNEL_5) || \
<> 144:ef7eb2e8f9f7 1318 ((__CHANNEL__) == ADC_CHANNEL_6) || \
<> 144:ef7eb2e8f9f7 1319 ((__CHANNEL__) == ADC_CHANNEL_7) || \
<> 144:ef7eb2e8f9f7 1320 ((__CHANNEL__) == ADC_CHANNEL_8) || \
<> 144:ef7eb2e8f9f7 1321 ((__CHANNEL__) == ADC_CHANNEL_9) || \
<> 144:ef7eb2e8f9f7 1322 ((__CHANNEL__) == ADC_CHANNEL_10) || \
<> 144:ef7eb2e8f9f7 1323 ((__CHANNEL__) == ADC_CHANNEL_11) || \
<> 144:ef7eb2e8f9f7 1324 ((__CHANNEL__) == ADC_CHANNEL_12) || \
<> 144:ef7eb2e8f9f7 1325 ((__CHANNEL__) == ADC_CHANNEL_13) || \
<> 144:ef7eb2e8f9f7 1326 ((__CHANNEL__) == ADC_CHANNEL_14) || \
<> 144:ef7eb2e8f9f7 1327 ((__CHANNEL__) == ADC_CHANNEL_15) || \
<> 144:ef7eb2e8f9f7 1328 ((__CHANNEL__) == ADC_CHANNEL_16) || \
<> 144:ef7eb2e8f9f7 1329 ((__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR) || \
<> 144:ef7eb2e8f9f7 1330 ((__CHANNEL__) == ADC_CHANNEL_VBAT))) || \
<> 144:ef7eb2e8f9f7 1331 ((((__HANDLE__)->Instance) == ADC2) && \
<> 144:ef7eb2e8f9f7 1332 (((__CHANNEL__) == ADC_CHANNEL_1) || \
<> 144:ef7eb2e8f9f7 1333 ((__CHANNEL__) == ADC_CHANNEL_2) || \
<> 144:ef7eb2e8f9f7 1334 ((__CHANNEL__) == ADC_CHANNEL_3) || \
<> 144:ef7eb2e8f9f7 1335 ((__CHANNEL__) == ADC_CHANNEL_4) || \
<> 144:ef7eb2e8f9f7 1336 ((__CHANNEL__) == ADC_CHANNEL_5) || \
<> 144:ef7eb2e8f9f7 1337 ((__CHANNEL__) == ADC_CHANNEL_6) || \
<> 144:ef7eb2e8f9f7 1338 ((__CHANNEL__) == ADC_CHANNEL_7) || \
<> 144:ef7eb2e8f9f7 1339 ((__CHANNEL__) == ADC_CHANNEL_8) || \
<> 144:ef7eb2e8f9f7 1340 ((__CHANNEL__) == ADC_CHANNEL_9) || \
<> 144:ef7eb2e8f9f7 1341 ((__CHANNEL__) == ADC_CHANNEL_10) || \
<> 144:ef7eb2e8f9f7 1342 ((__CHANNEL__) == ADC_CHANNEL_11) || \
<> 144:ef7eb2e8f9f7 1343 ((__CHANNEL__) == ADC_CHANNEL_12) || \
<> 144:ef7eb2e8f9f7 1344 ((__CHANNEL__) == ADC_CHANNEL_13) || \
<> 144:ef7eb2e8f9f7 1345 ((__CHANNEL__) == ADC_CHANNEL_14) || \
<> 144:ef7eb2e8f9f7 1346 ((__CHANNEL__) == ADC_CHANNEL_15) || \
<> 144:ef7eb2e8f9f7 1347 ((__CHANNEL__) == ADC_CHANNEL_16) || \
<> 144:ef7eb2e8f9f7 1348 ((__CHANNEL__) == ADC_CHANNEL_17) || \
<> 144:ef7eb2e8f9f7 1349 ((__CHANNEL__) == ADC_CHANNEL_18))) || \
<> 144:ef7eb2e8f9f7 1350 ((((__HANDLE__)->Instance) == ADC3) && \
<> 144:ef7eb2e8f9f7 1351 (((__CHANNEL__) == ADC_CHANNEL_1) || \
<> 144:ef7eb2e8f9f7 1352 ((__CHANNEL__) == ADC_CHANNEL_2) || \
<> 144:ef7eb2e8f9f7 1353 ((__CHANNEL__) == ADC_CHANNEL_3) || \
<> 144:ef7eb2e8f9f7 1354 ((__CHANNEL__) == ADC_CHANNEL_4) || \
<> 144:ef7eb2e8f9f7 1355 ((__CHANNEL__) == ADC_CHANNEL_6) || \
<> 144:ef7eb2e8f9f7 1356 ((__CHANNEL__) == ADC_CHANNEL_7) || \
<> 144:ef7eb2e8f9f7 1357 ((__CHANNEL__) == ADC_CHANNEL_8) || \
<> 144:ef7eb2e8f9f7 1358 ((__CHANNEL__) == ADC_CHANNEL_9) || \
<> 144:ef7eb2e8f9f7 1359 ((__CHANNEL__) == ADC_CHANNEL_10) || \
<> 144:ef7eb2e8f9f7 1360 ((__CHANNEL__) == ADC_CHANNEL_11) || \
<> 144:ef7eb2e8f9f7 1361 ((__CHANNEL__) == ADC_CHANNEL_12) || \
<> 144:ef7eb2e8f9f7 1362 ((__CHANNEL__) == ADC_CHANNEL_13) || \
<> 144:ef7eb2e8f9f7 1363 ((__CHANNEL__) == ADC_CHANNEL_14) || \
<> 144:ef7eb2e8f9f7 1364 ((__CHANNEL__) == ADC_CHANNEL_15) || \
<> 144:ef7eb2e8f9f7 1365 ((__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR) || \
<> 144:ef7eb2e8f9f7 1366 ((__CHANNEL__) == ADC_CHANNEL_VBAT) )))
<> 144:ef7eb2e8f9f7 1367 #endif
<> 144:ef7eb2e8f9f7 1368
<> 144:ef7eb2e8f9f7 1369 /**
<> 144:ef7eb2e8f9f7 1370 * @brief Verify the ADC channel setting in differential mode.
<> 144:ef7eb2e8f9f7 1371 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1372 * @param __CHANNEL__: programmed ADC channel.
<> 144:ef7eb2e8f9f7 1373 * @retval SET (__CHANNEL__ is valid) or RESET (__CHANNEL__ is invalid)
<> 144:ef7eb2e8f9f7 1374 */
AnnaBridge 167:e84263d55307 1375 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
<> 144:ef7eb2e8f9f7 1376 #define IS_ADC_DIFF_CHANNEL(__HANDLE__, __CHANNEL__) (((__CHANNEL__) == ADC_CHANNEL_1) || \
<> 144:ef7eb2e8f9f7 1377 ((__CHANNEL__) == ADC_CHANNEL_2) || \
<> 144:ef7eb2e8f9f7 1378 ((__CHANNEL__) == ADC_CHANNEL_3) || \
<> 144:ef7eb2e8f9f7 1379 ((__CHANNEL__) == ADC_CHANNEL_4) || \
<> 144:ef7eb2e8f9f7 1380 ((__CHANNEL__) == ADC_CHANNEL_5) || \
<> 144:ef7eb2e8f9f7 1381 ((__CHANNEL__) == ADC_CHANNEL_6) || \
<> 144:ef7eb2e8f9f7 1382 ((__CHANNEL__) == ADC_CHANNEL_7) || \
<> 144:ef7eb2e8f9f7 1383 ((__CHANNEL__) == ADC_CHANNEL_8) || \
<> 144:ef7eb2e8f9f7 1384 ((__CHANNEL__) == ADC_CHANNEL_9) || \
<> 144:ef7eb2e8f9f7 1385 ((__CHANNEL__) == ADC_CHANNEL_10) || \
<> 144:ef7eb2e8f9f7 1386 ((__CHANNEL__) == ADC_CHANNEL_11) || \
<> 144:ef7eb2e8f9f7 1387 ((__CHANNEL__) == ADC_CHANNEL_12) || \
<> 144:ef7eb2e8f9f7 1388 ((__CHANNEL__) == ADC_CHANNEL_13) || \
<> 144:ef7eb2e8f9f7 1389 ((__CHANNEL__) == ADC_CHANNEL_14) || \
<> 144:ef7eb2e8f9f7 1390 ((__CHANNEL__) == ADC_CHANNEL_15) )
AnnaBridge 167:e84263d55307 1391 #elif defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1392 /* For ADC1 and ADC2, channels 1 to 15 are available in differential mode,
<> 144:ef7eb2e8f9f7 1393 channels 0, 16 to 18 can be only used in single-ended mode.
<> 144:ef7eb2e8f9f7 1394 For ADC3, channels 1 to 3 and 6 to 12 are available in differential mode,
<> 144:ef7eb2e8f9f7 1395 channels 4, 5 and 13 to 18 can only be used in single-ended mode. */
<> 144:ef7eb2e8f9f7 1396 #define IS_ADC_DIFF_CHANNEL(__HANDLE__, __CHANNEL__) ((((((__HANDLE__)->Instance) == ADC1) || \
<> 144:ef7eb2e8f9f7 1397 (((__HANDLE__)->Instance) == ADC2)) && \
<> 144:ef7eb2e8f9f7 1398 (((__CHANNEL__) == ADC_CHANNEL_1) || \
<> 144:ef7eb2e8f9f7 1399 ((__CHANNEL__) == ADC_CHANNEL_2) || \
<> 144:ef7eb2e8f9f7 1400 ((__CHANNEL__) == ADC_CHANNEL_3) || \
<> 144:ef7eb2e8f9f7 1401 ((__CHANNEL__) == ADC_CHANNEL_4) || \
<> 144:ef7eb2e8f9f7 1402 ((__CHANNEL__) == ADC_CHANNEL_5) || \
<> 144:ef7eb2e8f9f7 1403 ((__CHANNEL__) == ADC_CHANNEL_6) || \
<> 144:ef7eb2e8f9f7 1404 ((__CHANNEL__) == ADC_CHANNEL_7) || \
<> 144:ef7eb2e8f9f7 1405 ((__CHANNEL__) == ADC_CHANNEL_8) || \
<> 144:ef7eb2e8f9f7 1406 ((__CHANNEL__) == ADC_CHANNEL_9) || \
<> 144:ef7eb2e8f9f7 1407 ((__CHANNEL__) == ADC_CHANNEL_10) || \
<> 144:ef7eb2e8f9f7 1408 ((__CHANNEL__) == ADC_CHANNEL_11) || \
<> 144:ef7eb2e8f9f7 1409 ((__CHANNEL__) == ADC_CHANNEL_12) || \
<> 144:ef7eb2e8f9f7 1410 ((__CHANNEL__) == ADC_CHANNEL_13) || \
<> 144:ef7eb2e8f9f7 1411 ((__CHANNEL__) == ADC_CHANNEL_14) || \
<> 144:ef7eb2e8f9f7 1412 ((__CHANNEL__) == ADC_CHANNEL_15))) || \
<> 144:ef7eb2e8f9f7 1413 ((((__HANDLE__)->Instance) == ADC3) && \
<> 144:ef7eb2e8f9f7 1414 (((__CHANNEL__) == ADC_CHANNEL_1) || \
<> 144:ef7eb2e8f9f7 1415 ((__CHANNEL__) == ADC_CHANNEL_2) || \
<> 144:ef7eb2e8f9f7 1416 ((__CHANNEL__) == ADC_CHANNEL_3) || \
<> 144:ef7eb2e8f9f7 1417 ((__CHANNEL__) == ADC_CHANNEL_6) || \
<> 144:ef7eb2e8f9f7 1418 ((__CHANNEL__) == ADC_CHANNEL_7) || \
<> 144:ef7eb2e8f9f7 1419 ((__CHANNEL__) == ADC_CHANNEL_8) || \
<> 144:ef7eb2e8f9f7 1420 ((__CHANNEL__) == ADC_CHANNEL_9) || \
<> 144:ef7eb2e8f9f7 1421 ((__CHANNEL__) == ADC_CHANNEL_10) || \
<> 144:ef7eb2e8f9f7 1422 ((__CHANNEL__) == ADC_CHANNEL_11) || \
<> 144:ef7eb2e8f9f7 1423 ((__CHANNEL__) == ADC_CHANNEL_12) )))
<> 144:ef7eb2e8f9f7 1424 #endif
<> 144:ef7eb2e8f9f7 1425
<> 144:ef7eb2e8f9f7 1426 /**
<> 144:ef7eb2e8f9f7 1427 * @brief Verify the ADC single-ended input or differential mode setting.
<> 144:ef7eb2e8f9f7 1428 * @param __SING_DIFF__: programmed channel setting.
<> 144:ef7eb2e8f9f7 1429 * @retval SET (__SING_DIFF__ is valid) or RESET (__SING_DIFF__ is invalid)
<> 144:ef7eb2e8f9f7 1430 */
<> 144:ef7eb2e8f9f7 1431 #define IS_ADC_SINGLE_DIFFERENTIAL(__SING_DIFF__) (((__SING_DIFF__) == ADC_SINGLE_ENDED) || \
<> 144:ef7eb2e8f9f7 1432 ((__SING_DIFF__) == ADC_DIFFERENTIAL_ENDED) )
<> 144:ef7eb2e8f9f7 1433
<> 144:ef7eb2e8f9f7 1434 /**
<> 144:ef7eb2e8f9f7 1435 * @brief Verify the ADC offset management setting.
<> 144:ef7eb2e8f9f7 1436 * @param __OFFSET_NUMBER__: ADC offset management.
<> 144:ef7eb2e8f9f7 1437 * @retval SET (__OFFSET_NUMBER__ is valid) or RESET (__OFFSET_NUMBER__ is invalid)
<> 144:ef7eb2e8f9f7 1438 */
<> 144:ef7eb2e8f9f7 1439 #define IS_ADC_OFFSET_NUMBER(__OFFSET_NUMBER__) (((__OFFSET_NUMBER__) == ADC_OFFSET_NONE) || \
<> 144:ef7eb2e8f9f7 1440 ((__OFFSET_NUMBER__) == ADC_OFFSET_1) || \
<> 144:ef7eb2e8f9f7 1441 ((__OFFSET_NUMBER__) == ADC_OFFSET_2) || \
<> 144:ef7eb2e8f9f7 1442 ((__OFFSET_NUMBER__) == ADC_OFFSET_3) || \
<> 144:ef7eb2e8f9f7 1443 ((__OFFSET_NUMBER__) == ADC_OFFSET_4) )
<> 144:ef7eb2e8f9f7 1444
<> 144:ef7eb2e8f9f7 1445 /**
<> 144:ef7eb2e8f9f7 1446 * @brief Verify the ADC injected channel setting.
<> 144:ef7eb2e8f9f7 1447 * @param __CHANNEL__: programmed ADC injected channel.
<> 144:ef7eb2e8f9f7 1448 * @retval SET (__CHANNEL__ is valid) or RESET (__CHANNEL__ is invalid)
<> 144:ef7eb2e8f9f7 1449 */
<> 144:ef7eb2e8f9f7 1450 #define IS_ADC_INJECTED_RANK(__CHANNEL__) (((__CHANNEL__) == ADC_INJECTED_RANK_1) || \
<> 144:ef7eb2e8f9f7 1451 ((__CHANNEL__) == ADC_INJECTED_RANK_2) || \
<> 144:ef7eb2e8f9f7 1452 ((__CHANNEL__) == ADC_INJECTED_RANK_3) || \
<> 144:ef7eb2e8f9f7 1453 ((__CHANNEL__) == ADC_INJECTED_RANK_4) )
<> 144:ef7eb2e8f9f7 1454
<> 144:ef7eb2e8f9f7 1455 /**
<> 144:ef7eb2e8f9f7 1456 * @brief Verify the ADC injected conversions external trigger.
<> 144:ef7eb2e8f9f7 1457 * @param __INJTRIG__: programmed ADC injected conversions external trigger.
<> 144:ef7eb2e8f9f7 1458 * @retval SET (__INJTRIG__ is a valid value) or RESET (__INJTRIG__ is invalid)
<> 144:ef7eb2e8f9f7 1459 */
<> 144:ef7eb2e8f9f7 1460 #define IS_ADC_EXTTRIGINJEC(__INJTRIG__) (((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T1_TRGO) || \
<> 144:ef7eb2e8f9f7 1461 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T1_CC4) || \
<> 144:ef7eb2e8f9f7 1462 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T2_TRGO) || \
<> 144:ef7eb2e8f9f7 1463 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T2_CC1) || \
<> 144:ef7eb2e8f9f7 1464 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T3_CC4) || \
<> 144:ef7eb2e8f9f7 1465 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T4_TRGO) || \
<> 144:ef7eb2e8f9f7 1466 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_EXT_IT15) || \
<> 144:ef7eb2e8f9f7 1467 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T8_CC4) || \
<> 144:ef7eb2e8f9f7 1468 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T1_TRGO2) || \
<> 144:ef7eb2e8f9f7 1469 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T8_TRGO) || \
<> 144:ef7eb2e8f9f7 1470 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T8_TRGO2) || \
<> 144:ef7eb2e8f9f7 1471 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T3_CC3) || \
<> 144:ef7eb2e8f9f7 1472 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T3_TRGO) || \
<> 144:ef7eb2e8f9f7 1473 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T3_CC1) || \
<> 144:ef7eb2e8f9f7 1474 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T6_TRGO) || \
<> 144:ef7eb2e8f9f7 1475 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T15_TRGO) || \
<> 144:ef7eb2e8f9f7 1476 \
<> 144:ef7eb2e8f9f7 1477 ((__INJTRIG__) == ADC_SOFTWARE_START) )
<> 144:ef7eb2e8f9f7 1478
AnnaBridge 167:e84263d55307 1479 /**
AnnaBridge 167:e84263d55307 1480 * @brief Verify the ADC edge trigger setting for injected group.
AnnaBridge 167:e84263d55307 1481 * @param __EDGE__: programmed ADC edge trigger setting.
AnnaBridge 167:e84263d55307 1482 * @retval SET (__EDGE__ is a valid value) or RESET (__EDGE__ is invalid)
AnnaBridge 167:e84263d55307 1483 */
AnnaBridge 167:e84263d55307 1484 #define IS_ADC_EXTTRIGINJEC_EDGE(__EDGE__) (((__EDGE__) == ADC_EXTERNALTRIGINJECCONV_EDGE_NONE) || \
AnnaBridge 167:e84263d55307 1485 ((__EDGE__) == ADC_EXTERNALTRIGINJECCONV_EDGE_RISING) || \
AnnaBridge 167:e84263d55307 1486 ((__EDGE__) == ADC_EXTERNALTRIGINJECCONV_EDGE_FALLING) || \
AnnaBridge 167:e84263d55307 1487 ((__EDGE__) == ADC_EXTERNALTRIGINJECCONV_EDGE_RISINGFALLING) )
<> 144:ef7eb2e8f9f7 1488
AnnaBridge 167:e84263d55307 1489 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1490 /**
<> 144:ef7eb2e8f9f7 1491 * @brief Verify the ADC multimode setting.
<> 144:ef7eb2e8f9f7 1492 * @param __MODE__: programmed ADC multimode setting.
<> 144:ef7eb2e8f9f7 1493 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
<> 144:ef7eb2e8f9f7 1494 */
<> 144:ef7eb2e8f9f7 1495 #define IS_ADC_MULTIMODE(__MODE__) (((__MODE__) == ADC_MODE_INDEPENDENT) || \
<> 144:ef7eb2e8f9f7 1496 ((__MODE__) == ADC_DUALMODE_REGSIMULT_INJECSIMULT) || \
<> 144:ef7eb2e8f9f7 1497 ((__MODE__) == ADC_DUALMODE_REGSIMULT_ALTERTRIG) || \
<> 144:ef7eb2e8f9f7 1498 ((__MODE__) == ADC_DUALMODE_REGINTERL_INJECSIMULT) || \
<> 144:ef7eb2e8f9f7 1499 ((__MODE__) == ADC_DUALMODE_INJECSIMULT) || \
<> 144:ef7eb2e8f9f7 1500 ((__MODE__) == ADC_DUALMODE_REGSIMULT) || \
<> 144:ef7eb2e8f9f7 1501 ((__MODE__) == ADC_DUALMODE_INTERL) || \
<> 144:ef7eb2e8f9f7 1502 ((__MODE__) == ADC_DUALMODE_ALTERTRIG) )
<> 144:ef7eb2e8f9f7 1503
<> 144:ef7eb2e8f9f7 1504 /**
<> 144:ef7eb2e8f9f7 1505 * @brief Verify the ADC multimode DMA access setting.
<> 144:ef7eb2e8f9f7 1506 * @param __MODE__: programmed ADC multimode DMA access setting.
<> 144:ef7eb2e8f9f7 1507 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
<> 144:ef7eb2e8f9f7 1508 */
<> 144:ef7eb2e8f9f7 1509 #define IS_ADC_DMA_ACCESS_MULTIMODE(__MODE__) (((__MODE__) == ADC_DMAACCESSMODE_DISABLED) || \
<> 144:ef7eb2e8f9f7 1510 ((__MODE__) == ADC_DMAACCESSMODE_12_10_BITS) || \
<> 144:ef7eb2e8f9f7 1511 ((__MODE__) == ADC_DMAACCESSMODE_8_6_BITS) )
<> 144:ef7eb2e8f9f7 1512
<> 144:ef7eb2e8f9f7 1513 /**
<> 144:ef7eb2e8f9f7 1514 * @brief Verify the ADC multimode delay setting.
<> 144:ef7eb2e8f9f7 1515 * @param __DELAY__: programmed ADC multimode delay setting.
<> 144:ef7eb2e8f9f7 1516 * @retval SET (__DELAY__ is a valid value) or RESET (__DELAY__ is invalid)
<> 144:ef7eb2e8f9f7 1517 */
<> 144:ef7eb2e8f9f7 1518 #define IS_ADC_SAMPLING_DELAY(__DELAY__) (((__DELAY__) == ADC_TWOSAMPLINGDELAY_1CYCLE) || \
<> 144:ef7eb2e8f9f7 1519 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_2CYCLES) || \
<> 144:ef7eb2e8f9f7 1520 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_3CYCLES) || \
<> 144:ef7eb2e8f9f7 1521 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_4CYCLES) || \
<> 144:ef7eb2e8f9f7 1522 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_5CYCLES) || \
<> 144:ef7eb2e8f9f7 1523 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_6CYCLES) || \
<> 144:ef7eb2e8f9f7 1524 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_7CYCLES) || \
<> 144:ef7eb2e8f9f7 1525 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_8CYCLES) || \
<> 144:ef7eb2e8f9f7 1526 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_9CYCLES) || \
<> 144:ef7eb2e8f9f7 1527 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_10CYCLES) || \
<> 144:ef7eb2e8f9f7 1528 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_11CYCLES) || \
<> 144:ef7eb2e8f9f7 1529 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_12CYCLES) )
AnnaBridge 167:e84263d55307 1530 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
<> 144:ef7eb2e8f9f7 1531
<> 144:ef7eb2e8f9f7 1532 /**
<> 144:ef7eb2e8f9f7 1533 * @brief Verify the ADC analog watchdog setting.
<> 144:ef7eb2e8f9f7 1534 * @param __WATCHDOG__: programmed ADC analog watchdog setting.
<> 144:ef7eb2e8f9f7 1535 * @retval SET (__WATCHDOG__ is valid) or RESET (__WATCHDOG__ is invalid)
<> 144:ef7eb2e8f9f7 1536 */
<> 144:ef7eb2e8f9f7 1537 #define IS_ADC_ANALOG_WATCHDOG_NUMBER(__WATCHDOG__) (((__WATCHDOG__) == ADC_ANALOGWATCHDOG_1) || \
<> 144:ef7eb2e8f9f7 1538 ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_2) || \
<> 144:ef7eb2e8f9f7 1539 ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_3) )
<> 144:ef7eb2e8f9f7 1540
<> 144:ef7eb2e8f9f7 1541 /**
<> 144:ef7eb2e8f9f7 1542 * @brief Verify the ADC analog watchdog mode setting.
<> 144:ef7eb2e8f9f7 1543 * @param __WATCHDOG_MODE__: programmed ADC analog watchdog mode setting.
<> 144:ef7eb2e8f9f7 1544 * @retval SET (__WATCHDOG_MODE__ is valid) or RESET (__WATCHDOG_MODE__ is invalid)
<> 144:ef7eb2e8f9f7 1545 */
<> 144:ef7eb2e8f9f7 1546 #define IS_ADC_ANALOG_WATCHDOG_MODE(__WATCHDOG_MODE__) (((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_NONE) || \
<> 144:ef7eb2e8f9f7 1547 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \
<> 144:ef7eb2e8f9f7 1548 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_SINGLE_INJEC) || \
<> 144:ef7eb2e8f9f7 1549 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC) || \
<> 144:ef7eb2e8f9f7 1550 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_ALL_REG) || \
<> 144:ef7eb2e8f9f7 1551 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_ALL_INJEC) || \
<> 144:ef7eb2e8f9f7 1552 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_ALL_REGINJEC) )
<> 144:ef7eb2e8f9f7 1553
<> 144:ef7eb2e8f9f7 1554 /**
<> 144:ef7eb2e8f9f7 1555 * @brief Verify the ADC conversion (regular or injected or both).
<> 144:ef7eb2e8f9f7 1556 * @param __CONVERSION__: ADC conversion group.
<> 144:ef7eb2e8f9f7 1557 * @retval SET (__CONVERSION__ is valid) or RESET (__CONVERSION__ is invalid)
<> 144:ef7eb2e8f9f7 1558 */
<> 144:ef7eb2e8f9f7 1559 #define IS_ADC_CONVERSION_GROUP(__CONVERSION__) (((__CONVERSION__) == ADC_REGULAR_GROUP) || \
<> 144:ef7eb2e8f9f7 1560 ((__CONVERSION__) == ADC_INJECTED_GROUP) || \
<> 144:ef7eb2e8f9f7 1561 ((__CONVERSION__) == ADC_REGULAR_INJECTED_GROUP) )
<> 144:ef7eb2e8f9f7 1562
<> 144:ef7eb2e8f9f7 1563 /**
<> 144:ef7eb2e8f9f7 1564 * @brief Verify the ADC event type.
<> 144:ef7eb2e8f9f7 1565 * @param __EVENT__: ADC event.
<> 144:ef7eb2e8f9f7 1566 * @retval SET (__EVENT__ is valid) or RESET (__EVENT__ is invalid)
<> 144:ef7eb2e8f9f7 1567 */
<> 144:ef7eb2e8f9f7 1568 #define IS_ADC_EVENT_TYPE(__EVENT__) (((__EVENT__) == ADC_EOSMP_EVENT) || \
<> 144:ef7eb2e8f9f7 1569 ((__EVENT__) == ADC_AWD_EVENT) || \
<> 144:ef7eb2e8f9f7 1570 ((__EVENT__) == ADC_AWD2_EVENT) || \
<> 144:ef7eb2e8f9f7 1571 ((__EVENT__) == ADC_AWD3_EVENT) || \
<> 144:ef7eb2e8f9f7 1572 ((__EVENT__) == ADC_OVR_EVENT) || \
<> 144:ef7eb2e8f9f7 1573 ((__EVENT__) == ADC_JQOVF_EVENT) )
<> 144:ef7eb2e8f9f7 1574
<> 144:ef7eb2e8f9f7 1575 /**
<> 144:ef7eb2e8f9f7 1576 * @brief Verify the ADC oversampling ratio.
<> 144:ef7eb2e8f9f7 1577 * @param __RATIO__: programmed ADC oversampling ratio.
<> 144:ef7eb2e8f9f7 1578 * @retval SET (__RATIO__ is a valid value) or RESET (__RATIO__ is invalid)
<> 144:ef7eb2e8f9f7 1579 */
<> 144:ef7eb2e8f9f7 1580 #define IS_ADC_OVERSAMPLING_RATIO(__RATIO__) (((__RATIO__) == ADC_OVERSAMPLING_RATIO_2 ) || \
<> 144:ef7eb2e8f9f7 1581 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_4 ) || \
<> 144:ef7eb2e8f9f7 1582 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_8 ) || \
<> 144:ef7eb2e8f9f7 1583 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_16 ) || \
<> 144:ef7eb2e8f9f7 1584 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_32 ) || \
<> 144:ef7eb2e8f9f7 1585 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_64 ) || \
<> 144:ef7eb2e8f9f7 1586 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_128 ) || \
<> 144:ef7eb2e8f9f7 1587 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_256 ))
<> 144:ef7eb2e8f9f7 1588
<> 144:ef7eb2e8f9f7 1589 /**
<> 144:ef7eb2e8f9f7 1590 * @brief Verify the ADC oversampling shift.
<> 144:ef7eb2e8f9f7 1591 * @param __SHIFT__: programmed ADC oversampling shift.
<> 144:ef7eb2e8f9f7 1592 * @retval SET (__SHIFT__ is a valid value) or RESET (__SHIFT__ is invalid)
<> 144:ef7eb2e8f9f7 1593 */
<> 144:ef7eb2e8f9f7 1594 #define IS_ADC_RIGHT_BIT_SHIFT(__SHIFT__) (((__SHIFT__) == ADC_RIGHTBITSHIFT_NONE) || \
<> 144:ef7eb2e8f9f7 1595 ((__SHIFT__) == ADC_RIGHTBITSHIFT_1 ) || \
<> 144:ef7eb2e8f9f7 1596 ((__SHIFT__) == ADC_RIGHTBITSHIFT_2 ) || \
<> 144:ef7eb2e8f9f7 1597 ((__SHIFT__) == ADC_RIGHTBITSHIFT_3 ) || \
<> 144:ef7eb2e8f9f7 1598 ((__SHIFT__) == ADC_RIGHTBITSHIFT_4 ) || \
<> 144:ef7eb2e8f9f7 1599 ((__SHIFT__) == ADC_RIGHTBITSHIFT_5 ) || \
<> 144:ef7eb2e8f9f7 1600 ((__SHIFT__) == ADC_RIGHTBITSHIFT_6 ) || \
<> 144:ef7eb2e8f9f7 1601 ((__SHIFT__) == ADC_RIGHTBITSHIFT_7 ) || \
<> 144:ef7eb2e8f9f7 1602 ((__SHIFT__) == ADC_RIGHTBITSHIFT_8 ))
<> 144:ef7eb2e8f9f7 1603
<> 144:ef7eb2e8f9f7 1604 /**
<> 144:ef7eb2e8f9f7 1605 * @brief Verify the ADC oversampling triggered mode.
<> 144:ef7eb2e8f9f7 1606 * @param __MODE__: programmed ADC oversampling triggered mode.
<> 144:ef7eb2e8f9f7 1607 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
<> 144:ef7eb2e8f9f7 1608 */
<> 144:ef7eb2e8f9f7 1609 #define IS_ADC_TRIGGERED_OVERSAMPLING_MODE(__MODE__) (((__MODE__) == ADC_TRIGGEREDMODE_SINGLE_TRIGGER) || \
<> 144:ef7eb2e8f9f7 1610 ((__MODE__) == ADC_TRIGGEREDMODE_MULTI_TRIGGER) )
<> 144:ef7eb2e8f9f7 1611
<> 144:ef7eb2e8f9f7 1612 /**
<> 144:ef7eb2e8f9f7 1613 * @brief Verify the ADC oversampling regular conversion resumed or continued mode.
<> 144:ef7eb2e8f9f7 1614 * @param __MODE__: programmed ADC oversampling regular conversion resumed or continued mode.
<> 144:ef7eb2e8f9f7 1615 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
<> 144:ef7eb2e8f9f7 1616 */
<> 144:ef7eb2e8f9f7 1617 #define IS_ADC_REGOVERSAMPLING_MODE(__MODE__) (((__MODE__) == ADC_REGOVERSAMPLING_CONTINUED_MODE) || \
<> 144:ef7eb2e8f9f7 1618 ((__MODE__) == ADC_REGOVERSAMPLING_RESUMED_MODE) )
<> 144:ef7eb2e8f9f7 1619
<> 144:ef7eb2e8f9f7 1620
<> 144:ef7eb2e8f9f7 1621 /**
<> 144:ef7eb2e8f9f7 1622 * @brief Verify the DFSDM mode configuration.
<> 144:ef7eb2e8f9f7 1623 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1624 * @note When DMSDFM configuration is not supported, the macro systematically reports SET. For
<> 144:ef7eb2e8f9f7 1625 * this reason, the input parameter is the ADC handle and not the configuration parameter
<> 144:ef7eb2e8f9f7 1626 * directly.
<> 144:ef7eb2e8f9f7 1627 * @retval SET (DFSDM mode configuration is valid) or RESET (DFSDM mode configuration is invalid)
<> 144:ef7eb2e8f9f7 1628 */
AnnaBridge 167:e84263d55307 1629 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 1630 #define IS_ADC_DFSDMCFG_MODE(__HANDLE__) (((__HANDLE__)->Init.DFSDMConfig == ADC_DFSDM_MODE_DISABLE) || \
AnnaBridge 167:e84263d55307 1631 ((__HANDLE__)->Init.DFSDMConfig == ADC_DFSDM_MODE_ENABLE) )
AnnaBridge 167:e84263d55307 1632 #else
<> 144:ef7eb2e8f9f7 1633 #define IS_ADC_DFSDMCFG_MODE(__HANDLE__) (SET)
AnnaBridge 167:e84263d55307 1634 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
<> 144:ef7eb2e8f9f7 1635
<> 144:ef7eb2e8f9f7 1636 /**
<> 144:ef7eb2e8f9f7 1637 * @brief Return the DFSDM configuration mode.
<> 144:ef7eb2e8f9f7 1638 * @param __HANDLE__: ADC handle.
<> 144:ef7eb2e8f9f7 1639 * @note When DMSDFM configuration is not supported, the macro systematically reports 0x0 (i.e disabled).
<> 144:ef7eb2e8f9f7 1640 * For this reason, the input parameter is the ADC handle and not the configuration parameter
<> 144:ef7eb2e8f9f7 1641 * directly.
<> 144:ef7eb2e8f9f7 1642 * @retval DFSDM configuration mode
<> 144:ef7eb2e8f9f7 1643 */
AnnaBridge 167:e84263d55307 1644 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 167:e84263d55307 1645 #define ADC_CFGR_DFSDM(__HANDLE__) ((__HANDLE__)->Init.DFSDMConfig)
AnnaBridge 167:e84263d55307 1646 #else
<> 144:ef7eb2e8f9f7 1647 #define ADC_CFGR_DFSDM(__HANDLE__) (0x0)
AnnaBridge 167:e84263d55307 1648 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
<> 144:ef7eb2e8f9f7 1649
<> 144:ef7eb2e8f9f7 1650 /**
<> 144:ef7eb2e8f9f7 1651 * @}
<> 144:ef7eb2e8f9f7 1652 */
<> 144:ef7eb2e8f9f7 1653
<> 144:ef7eb2e8f9f7 1654
<> 144:ef7eb2e8f9f7 1655 /* Exported functions --------------------------------------------------------*/
AnnaBridge 167:e84263d55307 1656 /** @addtogroup ADCEx_Exported_Functions
<> 144:ef7eb2e8f9f7 1657 * @{
<> 144:ef7eb2e8f9f7 1658 */
<> 144:ef7eb2e8f9f7 1659
AnnaBridge 167:e84263d55307 1660 /** @addtogroup ADCEx_Exported_Functions_Group1
<> 144:ef7eb2e8f9f7 1661 * @{
<> 144:ef7eb2e8f9f7 1662 */
AnnaBridge 167:e84263d55307 1663 /* IO operation functions *****************************************************/
<> 144:ef7eb2e8f9f7 1664
<> 144:ef7eb2e8f9f7 1665 /* ADC calibration */
<> 144:ef7eb2e8f9f7 1666 HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc, uint32_t SingleDiff);
<> 144:ef7eb2e8f9f7 1667 uint32_t HAL_ADCEx_Calibration_GetValue(ADC_HandleTypeDef *hadc, uint32_t SingleDiff);
<> 144:ef7eb2e8f9f7 1668 HAL_StatusTypeDef HAL_ADCEx_Calibration_SetValue(ADC_HandleTypeDef *hadc, uint32_t SingleDiff, uint32_t CalibrationFactor);
<> 144:ef7eb2e8f9f7 1669
<> 144:ef7eb2e8f9f7 1670 /* Blocking mode: Polling */
<> 144:ef7eb2e8f9f7 1671 HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1672 HAL_StatusTypeDef HAL_ADCEx_InjectedStop(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1673 HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
<> 144:ef7eb2e8f9f7 1674
<> 144:ef7eb2e8f9f7 1675 /* Non-blocking mode: Interruption */
<> 144:ef7eb2e8f9f7 1676 HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1677 HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1678
AnnaBridge 167:e84263d55307 1679 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1680 /* ADC multimode */
<> 144:ef7eb2e8f9f7 1681 HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length);
<> 144:ef7eb2e8f9f7 1682 HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef *hadc);
<> 144:ef7eb2e8f9f7 1683 uint32_t HAL_ADCEx_MultiModeGetValue(ADC_HandleTypeDef *hadc);
AnnaBridge 167:e84263d55307 1684 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
<> 144:ef7eb2e8f9f7 1685
<> 144:ef7eb2e8f9f7 1686 /* ADC retrieve conversion value intended to be used with polling or interruption */
<> 144:ef7eb2e8f9f7 1687 uint32_t HAL_ADCEx_InjectedGetValue(ADC_HandleTypeDef* hadc, uint32_t InjectedRank);
<> 144:ef7eb2e8f9f7 1688
<> 144:ef7eb2e8f9f7 1689 /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption) */
<> 144:ef7eb2e8f9f7 1690 void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1691 void HAL_ADCEx_InjectedQueueOverflowCallback(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1692 void HAL_ADCEx_LevelOutOfWindow2Callback(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1693 void HAL_ADCEx_LevelOutOfWindow3Callback(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1694 void HAL_ADCEx_EndOfSamplingCallback(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1695
<> 144:ef7eb2e8f9f7 1696 /* ADC Regular conversions stop */
<> 144:ef7eb2e8f9f7 1697 HAL_StatusTypeDef HAL_ADCEx_RegularStop(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1698 HAL_StatusTypeDef HAL_ADCEx_RegularStop_IT(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1699 HAL_StatusTypeDef HAL_ADCEx_RegularStop_DMA(ADC_HandleTypeDef* hadc);
AnnaBridge 167:e84263d55307 1700 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1701 HAL_StatusTypeDef HAL_ADCEx_RegularMultiModeStop_DMA(ADC_HandleTypeDef* hadc);
AnnaBridge 167:e84263d55307 1702 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
<> 144:ef7eb2e8f9f7 1703
<> 144:ef7eb2e8f9f7 1704 /**
<> 144:ef7eb2e8f9f7 1705 * @}
<> 144:ef7eb2e8f9f7 1706 */
<> 144:ef7eb2e8f9f7 1707
AnnaBridge 167:e84263d55307 1708 /** @addtogroup ADCEx_Exported_Functions_Group2
<> 144:ef7eb2e8f9f7 1709 * @{
<> 144:ef7eb2e8f9f7 1710 */
<> 144:ef7eb2e8f9f7 1711 /* Peripheral Control functions ***********************************************/
<> 144:ef7eb2e8f9f7 1712 HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef* hadc,ADC_InjectionConfTypeDef* sConfigInjected);
AnnaBridge 167:e84263d55307 1713 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
<> 144:ef7eb2e8f9f7 1714 HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef *hadc, ADC_MultiModeTypeDef *multimode);
AnnaBridge 167:e84263d55307 1715 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
<> 144:ef7eb2e8f9f7 1716 HAL_StatusTypeDef HAL_ADCEx_EnableInjectedQueue(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1717 HAL_StatusTypeDef HAL_ADCEx_DisableInjectedQueue(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1718 HAL_StatusTypeDef HAL_ADCEx_DisableVoltageRegulator(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1719 HAL_StatusTypeDef HAL_ADCEx_EnterADCDeepPowerDownMode(ADC_HandleTypeDef* hadc);
<> 144:ef7eb2e8f9f7 1720
<> 144:ef7eb2e8f9f7 1721 /**
<> 144:ef7eb2e8f9f7 1722 * @}
<> 144:ef7eb2e8f9f7 1723 */
<> 144:ef7eb2e8f9f7 1724
<> 144:ef7eb2e8f9f7 1725 /**
<> 144:ef7eb2e8f9f7 1726 * @}
<> 144:ef7eb2e8f9f7 1727 */
<> 144:ef7eb2e8f9f7 1728
<> 144:ef7eb2e8f9f7 1729 /**
<> 144:ef7eb2e8f9f7 1730 * @}
<> 144:ef7eb2e8f9f7 1731 */
<> 144:ef7eb2e8f9f7 1732
<> 144:ef7eb2e8f9f7 1733 /**
<> 144:ef7eb2e8f9f7 1734 * @}
<> 144:ef7eb2e8f9f7 1735 */
<> 144:ef7eb2e8f9f7 1736
<> 144:ef7eb2e8f9f7 1737 #ifdef __cplusplus
<> 144:ef7eb2e8f9f7 1738 }
<> 144:ef7eb2e8f9f7 1739 #endif
<> 144:ef7eb2e8f9f7 1740
AnnaBridge 167:e84263d55307 1741 #endif /* __STM32L4xx_HAL_ADC_EX_H */
<> 144:ef7eb2e8f9f7 1742
<> 144:ef7eb2e8f9f7 1743
<> 144:ef7eb2e8f9f7 1744 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/