fix LPC812 PWM

Dependents:   IR_LED_Send

Fork of mbed-dev by mbed official

Committer:
bogdanm
Date:
Thu Oct 01 15:25:22 2015 +0300
Revision:
0:9b334a45a8ff
Initial commit on mbed-dev

Replaces mbed-src (now inactive)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 0:9b334a45a8ff 1 /**
bogdanm 0:9b334a45a8ff 2 ******************************************************************************
bogdanm 0:9b334a45a8ff 3 * @file stm32f3xx_hal_adc_ex.h
bogdanm 0:9b334a45a8ff 4 * @author MCD Application Team
bogdanm 0:9b334a45a8ff 5 * @version V1.1.0
bogdanm 0:9b334a45a8ff 6 * @date 12-Sept-2014
bogdanm 0:9b334a45a8ff 7 * @brief Header file containing functions prototypes of ADC HAL library.
bogdanm 0:9b334a45a8ff 8 ******************************************************************************
bogdanm 0:9b334a45a8ff 9 * @attention
bogdanm 0:9b334a45a8ff 10 *
bogdanm 0:9b334a45a8ff 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
bogdanm 0:9b334a45a8ff 12 *
bogdanm 0:9b334a45a8ff 13 * Redistribution and use in source and binary forms, with or without modification,
bogdanm 0:9b334a45a8ff 14 * are permitted provided that the following conditions are met:
bogdanm 0:9b334a45a8ff 15 * 1. Redistributions of source code must retain the above copyright notice,
bogdanm 0:9b334a45a8ff 16 * this list of conditions and the following disclaimer.
bogdanm 0:9b334a45a8ff 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
bogdanm 0:9b334a45a8ff 18 * this list of conditions and the following disclaimer in the documentation
bogdanm 0:9b334a45a8ff 19 * and/or other materials provided with the distribution.
bogdanm 0:9b334a45a8ff 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
bogdanm 0:9b334a45a8ff 21 * may be used to endorse or promote products derived from this software
bogdanm 0:9b334a45a8ff 22 * without specific prior written permission.
bogdanm 0:9b334a45a8ff 23 *
bogdanm 0:9b334a45a8ff 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
bogdanm 0:9b334a45a8ff 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
bogdanm 0:9b334a45a8ff 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
bogdanm 0:9b334a45a8ff 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
bogdanm 0:9b334a45a8ff 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
bogdanm 0:9b334a45a8ff 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
bogdanm 0:9b334a45a8ff 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
bogdanm 0:9b334a45a8ff 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
bogdanm 0:9b334a45a8ff 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
bogdanm 0:9b334a45a8ff 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
bogdanm 0:9b334a45a8ff 34 *
bogdanm 0:9b334a45a8ff 35 ******************************************************************************
bogdanm 0:9b334a45a8ff 36 */
bogdanm 0:9b334a45a8ff 37
bogdanm 0:9b334a45a8ff 38 /* Define to prevent recursive inclusion -------------------------------------*/
bogdanm 0:9b334a45a8ff 39 #ifndef __STM32F3xx_ADC_EX_H
bogdanm 0:9b334a45a8ff 40 #define __STM32F3xx_ADC_EX_H
bogdanm 0:9b334a45a8ff 41
bogdanm 0:9b334a45a8ff 42 #ifdef __cplusplus
bogdanm 0:9b334a45a8ff 43 extern "C" {
bogdanm 0:9b334a45a8ff 44 #endif
bogdanm 0:9b334a45a8ff 45
bogdanm 0:9b334a45a8ff 46 /* Includes ------------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 47 #include "stm32f3xx_hal_def.h"
bogdanm 0:9b334a45a8ff 48
bogdanm 0:9b334a45a8ff 49 /** @addtogroup STM32F3xx_HAL_Driver
bogdanm 0:9b334a45a8ff 50 * @{
bogdanm 0:9b334a45a8ff 51 */
bogdanm 0:9b334a45a8ff 52
bogdanm 0:9b334a45a8ff 53 /** @addtogroup ADCEx ADC Extended HAL module driver
bogdanm 0:9b334a45a8ff 54 * @{
bogdanm 0:9b334a45a8ff 55 */
bogdanm 0:9b334a45a8ff 56
bogdanm 0:9b334a45a8ff 57 /* Exported types ------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 58 /** @defgroup ADCEx_Exported_Types ADC Extented Exported Types
bogdanm 0:9b334a45a8ff 59 * @{
bogdanm 0:9b334a45a8ff 60 */
bogdanm 0:9b334a45a8ff 61 struct __ADC_HandleTypeDef;
bogdanm 0:9b334a45a8ff 62
bogdanm 0:9b334a45a8ff 63 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 64 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 65 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
bogdanm 0:9b334a45a8ff 66 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 67 /**
bogdanm 0:9b334a45a8ff 68 * @brief Structure definition of ADC initialization and regular group
bogdanm 0:9b334a45a8ff 69 * @note Parameters of this structure are shared within 2 scopes:
bogdanm 0:9b334a45a8ff 70 * - Scope entire ADC (affects regular and injected groups): ClockPrescaler, Resolution, DataAlign,
bogdanm 0:9b334a45a8ff 71 * ScanConvMode, EOCSelection, LowPowerAutoWait.
bogdanm 0:9b334a45a8ff 72 * - Scope regular group: ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion, ExternalTrigConvEdge, ExternalTrigConv, DMAContinuousRequests, Overrun.
bogdanm 0:9b334a45a8ff 73 * @note The setting of these parameters with function HAL_ADC_Init() is conditioned to ADC state.
bogdanm 0:9b334a45a8ff 74 * ADC state can be either:
bogdanm 0:9b334a45a8ff 75 * - For all parameters: ADC disabled
bogdanm 0:9b334a45a8ff 76 * - For all parameters except 'LowPowerAutoWait' and 'DMAContinuousRequests': ADC enabled without conversion on going on regular group.
bogdanm 0:9b334a45a8ff 77 * - For parameters 'LowPowerAutoWait' and 'DMAContinuousRequests': ADC enabled without conversion on going on regular and injected groups.
bogdanm 0:9b334a45a8ff 78 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
bogdanm 0:9b334a45a8ff 79 * without error reporting without error reporting (as it can be the expected behaviour in case of intended action to update another parameter (which fullfills the ADC state condition) on the fly).
bogdanm 0:9b334a45a8ff 80 */
bogdanm 0:9b334a45a8ff 81 typedef struct
bogdanm 0:9b334a45a8ff 82 {
bogdanm 0:9b334a45a8ff 83 uint32_t ClockPrescaler; /*!< Select ADC clock source (synchronous clock derived from AHB clock or asynchronous clock derived from ADC dedicated PLL 72MHz) and clock prescaler.
bogdanm 0:9b334a45a8ff 84 The clock is common for all the ADCs.
bogdanm 0:9b334a45a8ff 85 This parameter can be a value of @ref ADCEx_ClockPrescaler
bogdanm 0:9b334a45a8ff 86 Note: In case of usage of channels on injected group, ADC frequency should be low than AHB clock frequency /4 for resolution 12 or 10 bits,
bogdanm 0:9b334a45a8ff 87 AHB clock frequency /3 for resolution 8 bits, AHB clock frequency /2 for resolution 6 bits.
bogdanm 0:9b334a45a8ff 88 Note: In case of usage of the ADC dedicated PLL clock, this clock must be preliminarily enabled and prescaler set at RCC top level.
bogdanm 0:9b334a45a8ff 89 Note: This parameter can be modified only if all ADCs of the common ADC group are disabled (for products with several ADCs) */
bogdanm 0:9b334a45a8ff 90 uint32_t Resolution; /*!< Configures the ADC resolution.
bogdanm 0:9b334a45a8ff 91 This parameter can be a value of @ref ADCEx_Resolution */
bogdanm 0:9b334a45a8ff 92 uint32_t DataAlign; /*!< Specifies ADC data alignment to right (for resolution 12 bits: MSB on register bit 11 and LSB on register bit 0) (default setting)
bogdanm 0:9b334a45a8ff 93 or to left (for resolution 12 bits, if offset disabled: MSB on register bit 15 and LSB on register bit 4, if offset enabled: MSB on register bit 14 and LSB on register bit 3).
bogdanm 0:9b334a45a8ff 94 See reference manual for alignments with other resolutions.
bogdanm 0:9b334a45a8ff 95 This parameter can be a value of @ref ADCEx_Data_align */
bogdanm 0:9b334a45a8ff 96 uint32_t ScanConvMode; /*!< Configures the sequencer of regular and injected groups.
bogdanm 0:9b334a45a8ff 97 This parameter can be associated to parameter 'DiscontinuousConvMode' to have main sequence subdivided in successive parts.
bogdanm 0:9b334a45a8ff 98 If disabled: Conversion is performed in single mode (one channel converted, the one defined in rank 1).
bogdanm 0:9b334a45a8ff 99 Parameters 'NbrOfConversion' and 'InjectedNbrOfConversion' are discarded (equivalent to set to 1).
bogdanm 0:9b334a45a8ff 100 If enabled: Conversions are performed in sequence mode (multiple ranks defined by 'NbrOfConversion'/'InjectedNbrOfConversion' and each channel rank).
bogdanm 0:9b334a45a8ff 101 Scan direction is upward: from rank1 to rank 'n'.
bogdanm 0:9b334a45a8ff 102 This parameter can be a value of @ref ADCEx_Scan_mode */
bogdanm 0:9b334a45a8ff 103 uint32_t EOCSelection; /*!< Specifies what EOC (End Of Conversion) flag is used for conversion by polling and interruption: end of conversion of each rank or complete sequence.
bogdanm 0:9b334a45a8ff 104 This parameter can be a value of @ref ADCEx_EOCSelection. */
bogdanm 0:9b334a45a8ff 105 uint32_t LowPowerAutoWait; /*!< Selects the dynamic low power Auto Delay: new conversion start only when the previous
bogdanm 0:9b334a45a8ff 106 conversion (for regular group) or previous sequence (for injected group) has been treated by user software.
bogdanm 0:9b334a45a8ff 107 This feature automatically adapts the speed of ADC to the speed of the system that reads the data. Moreover, this avoids risk of overrun for low frequency applications.
bogdanm 0:9b334a45a8ff 108 This parameter can be set to ENABLE or DISABLE.
bogdanm 0:9b334a45a8ff 109 Note: Do not use with interruption or DMA (HAL_ADC_Start_IT(), HAL_ADC_Start_DMA()) since they have to clear immediately the EOC flag to free the IRQ vector sequencer.
bogdanm 0:9b334a45a8ff 110 Do use with polling: 1. Start conversion with HAL_ADC_Start(), 2. Later on, when conversion data is needed: use HAL_ADC_PollForConversion() to ensure that conversion is completed
bogdanm 0:9b334a45a8ff 111 and use HAL_ADC_GetValue() to retrieve conversion result and trig another conversion. */
bogdanm 0:9b334a45a8ff 112 uint32_t ContinuousConvMode; /*!< Specifies whether the conversion is performed in single mode (one conversion) or continuous mode for regular group,
bogdanm 0:9b334a45a8ff 113 after the selected trigger occurred (software start or external trigger).
bogdanm 0:9b334a45a8ff 114 This parameter can be set to ENABLE or DISABLE. */
bogdanm 0:9b334a45a8ff 115 uint32_t NbrOfConversion; /*!< Specifies the number of ranks that will be converted within the regular group sequencer.
bogdanm 0:9b334a45a8ff 116 To use the regular group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
bogdanm 0:9b334a45a8ff 117 This parameter must be a number between Min_Data = 1 and Max_Data = 16.
bogdanm 0:9b334a45a8ff 118 Note: This parameter must be modified when no conversion is on going on regular group (ADC disabled, or ADC enabled without continuous mode or external trigger that could lauch a conversion). */
bogdanm 0:9b334a45a8ff 119 uint32_t DiscontinuousConvMode; /*!< Specifies whether the conversions sequence of regular group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts).
bogdanm 0:9b334a45a8ff 120 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
bogdanm 0:9b334a45a8ff 121 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
bogdanm 0:9b334a45a8ff 122 This parameter can be set to ENABLE or DISABLE. */
bogdanm 0:9b334a45a8ff 123 uint32_t NbrOfDiscConversion; /*!< Specifies the number of discontinuous conversions in which the main sequence of regular group (parameter NbrOfConversion) will be subdivided.
bogdanm 0:9b334a45a8ff 124 If parameter 'DiscontinuousConvMode' is disabled, this parameter is discarded.
bogdanm 0:9b334a45a8ff 125 This parameter must be a number between Min_Data = 1 and Max_Data = 8. */
bogdanm 0:9b334a45a8ff 126 uint32_t ExternalTrigConv; /*!< Selects the external event used to trigger the conversion start of regular group.
bogdanm 0:9b334a45a8ff 127 If set to ADC_SOFTWARE_START, external triggers are disabled.
bogdanm 0:9b334a45a8ff 128 This parameter can be a value of @ref ADCEx_External_trigger_source_Regular
bogdanm 0:9b334a45a8ff 129 Caution: For devices with several ADCs, external trigger source is common to ADC common group (for example: ADC1&ADC2, ADC3&ADC4, if available) */
bogdanm 0:9b334a45a8ff 130 uint32_t ExternalTrigConvEdge; /*!< Selects the external trigger edge of regular group.
bogdanm 0:9b334a45a8ff 131 If trigger is set to ADC_SOFTWARE_START, this parameter is discarded.
bogdanm 0:9b334a45a8ff 132 This parameter can be a value of @ref ADCEx_External_trigger_edge_Regular */
bogdanm 0:9b334a45a8ff 133 uint32_t DMAContinuousRequests; /*!< Specifies whether the DMA requests are performed in one shot mode (DMA transfer stop when number of conversions is reached)
bogdanm 0:9b334a45a8ff 134 or in Continuous mode (DMA transfer unlimited, whatever number of conversions).
bogdanm 0:9b334a45a8ff 135 Note: In continuous mode, DMA must be configured in circular mode. Otherwise an overrun will be triggered when DMA buffer maximum pointer is reached.
bogdanm 0:9b334a45a8ff 136 This parameter can be set to ENABLE or DISABLE.
bogdanm 0:9b334a45a8ff 137 Note: This parameter must be modified when no conversion is on going on both regular and injected groups (ADC disabled, or ADC enabled without continuous mode or external trigger that could lauch a conversion). */
bogdanm 0:9b334a45a8ff 138 uint32_t Overrun; /*!< Select the behaviour in case of overrun: data overwritten (default) or preserved.
bogdanm 0:9b334a45a8ff 139 This parameter is for regular group only.
bogdanm 0:9b334a45a8ff 140 This parameter can be a value of @ref ADCEx_Overrun
bogdanm 0:9b334a45a8ff 141 Note: Case of overrun set to data preserved and usage with end on conversion interruption (HAL_Start_IT()): ADC IRQ handler has to clear end of conversion flags, this induces the release of the preserved data. If needed, this data can be saved into function HAL_ADC_ConvCpltCallback() (called before end of conversion flags clear).
bogdanm 0:9b334a45a8ff 142 Note: Error reporting in function of conversion mode:
bogdanm 0:9b334a45a8ff 143 - Usage with ADC conversion by polling for event or interruption: Error is reported only if overrun is set to data preserved. If overrun is set to data overwritten, user can willingly not read the conversion data each time, this is not considered as an erroneous case.
bogdanm 0:9b334a45a8ff 144 - Usage with ADC conversion by DMA: Error is reported whatever overrun setting (DMA is expected to process all data from data register, any data missed would be abnormal). */
bogdanm 0:9b334a45a8ff 145 }ADC_InitTypeDef;
bogdanm 0:9b334a45a8ff 146
bogdanm 0:9b334a45a8ff 147 /**
bogdanm 0:9b334a45a8ff 148 * @brief Structure definition of ADC channel for regular group
bogdanm 0:9b334a45a8ff 149 * @note The setting of these parameters with function HAL_ADC_ConfigChannel() is conditioned to ADC state.
bogdanm 0:9b334a45a8ff 150 * ADC state can be either:
bogdanm 0:9b334a45a8ff 151 * - For all parameters: ADC disabled (this is the only possible ADC state to modify parameter 'SingleDiff')
bogdanm 0:9b334a45a8ff 152 * - For all except parameters 'SamplingTime', 'Offset', 'OffsetNumber': ADC enabled without conversion on going on regular group.
bogdanm 0:9b334a45a8ff 153 * - For parameters 'SamplingTime', 'Offset', 'OffsetNumber': ADC enabled without conversion on going on regular and injected groups.
bogdanm 0:9b334a45a8ff 154 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
bogdanm 0:9b334a45a8ff 155 * without error reporting (as it can be the expected behaviour in case of intended action to update another parameter (which fulfills the ADC state condition) on the fly).
bogdanm 0:9b334a45a8ff 156 */
bogdanm 0:9b334a45a8ff 157 typedef struct
bogdanm 0:9b334a45a8ff 158 {
bogdanm 0:9b334a45a8ff 159 uint32_t Channel; /*!< Specifies the channel to configure into ADC regular group.
bogdanm 0:9b334a45a8ff 160 This parameter can be a value of @ref ADCEx_channels
bogdanm 0:9b334a45a8ff 161 Note: Depending on devices, some channels may not be available on package pins. Refer to device datasheet for channels availability. */
bogdanm 0:9b334a45a8ff 162 uint32_t Rank; /*!< Specifies the rank in the regular group sequencer.
bogdanm 0:9b334a45a8ff 163 This parameter can be a value of @ref ADCEx_regular_rank
bogdanm 0:9b334a45a8ff 164 Note: In case of need to disable a channel or change order of conversion sequencer, rank containing a previous channel setting can be overwritten by the new channel setting (or parameter number of conversions can be adjusted) */
bogdanm 0:9b334a45a8ff 165 uint32_t SamplingTime; /*!< Sampling time value to be set for the selected channel.
bogdanm 0:9b334a45a8ff 166 Unit: ADC clock cycles
bogdanm 0:9b334a45a8ff 167 Conversion time is the addition of sampling time and processing time (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).
bogdanm 0:9b334a45a8ff 168 This parameter can be a value of @ref ADCEx_sampling_times
bogdanm 0:9b334a45a8ff 169 Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups.
bogdanm 0:9b334a45a8ff 170 If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting.
bogdanm 0:9b334a45a8ff 171 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
bogdanm 0:9b334a45a8ff 172 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
bogdanm 0:9b334a45a8ff 173 Refer to device datasheet for timings values, parameters TS_vrefint, TS_vbat, TS_temp (values rough order: 2.2us min). */
bogdanm 0:9b334a45a8ff 174 uint32_t SingleDiff; /*!< Selection of single-ended or differential input.
bogdanm 0:9b334a45a8ff 175 In differential mode: Differential measurement is between the selected channel 'i' (positive input) and channel 'i+1' (negative input).
bogdanm 0:9b334a45a8ff 176 Only channel 'i' has to be configured, channel 'i+1' is configured automatically.
bogdanm 0:9b334a45a8ff 177 This parameter must be a value of @ref ADCEx_SingleDifferential
bogdanm 0:9b334a45a8ff 178 Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups.
bogdanm 0:9b334a45a8ff 179 If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting.
bogdanm 0:9b334a45a8ff 180 Note: Channels 1 to 14 are available in differential mode. Channels 15, 16, 17, 18 can be used only in single-ended mode.
bogdanm 0:9b334a45a8ff 181 Note: When configuring a channel 'i' in differential mode, the channel 'i+1' is not usable separately.
bogdanm 0:9b334a45a8ff 182 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
bogdanm 0:9b334a45a8ff 183 If ADC is enabled, this parameter setting is bypassed without error reporting (as it can be the expected behaviour in case of another parameter update on the fly) */
bogdanm 0:9b334a45a8ff 184 uint32_t OffsetNumber; /*!< Selects the offset number
bogdanm 0:9b334a45a8ff 185 This parameter can be a value of @ref ADCEx_OffsetNumber
bogdanm 0:9b334a45a8ff 186 Caution: Only one channel is allowed per channel. If another channel was on this offset number, the offset will be changed to the new channel */
bogdanm 0:9b334a45a8ff 187 uint32_t Offset; /*!< Defines the offset to be subtracted from the raw converted data when convert channels.
bogdanm 0:9b334a45a8ff 188 Offset value must be a positive number.
bogdanm 0:9b334a45a8ff 189 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively.
bogdanm 0:9b334a45a8ff 190 Note: This parameter must be modified when no conversion is on going on both regular and injected groups (ADC disabled, or ADC enabled without continuous mode or external trigger that could lauch a conversion). */
bogdanm 0:9b334a45a8ff 191 }ADC_ChannelConfTypeDef;
bogdanm 0:9b334a45a8ff 192
bogdanm 0:9b334a45a8ff 193 /**
bogdanm 0:9b334a45a8ff 194 * @brief Structure definition of ADC injected group and ADC channel for injected group
bogdanm 0:9b334a45a8ff 195 * @note Parameters of this structure are shared within 2 scopes:
bogdanm 0:9b334a45a8ff 196 * - Scope channel: InjectedChannel, InjectedRank, InjectedSamplingTime , InjectedSingleDiff, InjectedOffsetNumber, InjectedOffset
bogdanm 0:9b334a45a8ff 197 * - Scope injected group (affects all channels of injected group): InjectedNbrOfConversion, InjectedDiscontinuousConvMode,
bogdanm 0:9b334a45a8ff 198 * AutoInjectedConv, QueueInjectedContext, ExternalTrigInjecConvEdge, ExternalTrigInjecConv.
bogdanm 0:9b334a45a8ff 199 * @note The setting of these parameters with function HAL_ADCEx_InjectedConfigChannel() is conditioned to ADC state.
bogdanm 0:9b334a45a8ff 200 * ADC state can be either:
bogdanm 0:9b334a45a8ff 201 * - For all parameters: ADC disabled (this is the only possible ADC state to modify parameter 'InjectedSingleDiff')
bogdanm 0:9b334a45a8ff 202 * - For parameters 'InjectedDiscontinuousConvMode', 'QueueInjectedContext': ADC enabled without conversion on going on injected group.
bogdanm 0:9b334a45a8ff 203 * - For parameters 'InjectedSamplingTime', 'InjectedOffset', 'InjectedOffsetNumber', 'AutoInjectedConv': ADC enabled without conversion on going on regular and injected groups.
bogdanm 0:9b334a45a8ff 204 * - For parameters 'InjectedChannel', 'InjectedRank', 'InjectedNbrOfConversion', 'ExternalTrigInjecConv', 'ExternalTrigInjecConvEdge': ADC enabled and while conversion on going on regular and injected groups.
bogdanm 0:9b334a45a8ff 205 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
bogdanm 0:9b334a45a8ff 206 * without error reporting without error reporting (as it can be the expected behaviour in case of intended action to update another parameter (which fulfills the ADC state condition) on the fly).
bogdanm 0:9b334a45a8ff 207 */
bogdanm 0:9b334a45a8ff 208 typedef struct
bogdanm 0:9b334a45a8ff 209 {
bogdanm 0:9b334a45a8ff 210 uint32_t InjectedChannel; /*!< Configure the ADC injected channel
bogdanm 0:9b334a45a8ff 211 This parameter can be a value of @ref ADCEx_channels
bogdanm 0:9b334a45a8ff 212 Note: Depending on devices, some channels may not be available on package pins. Refer to device datasheet for channels availability. */
bogdanm 0:9b334a45a8ff 213 uint32_t InjectedRank; /*!< The rank in the regular group sequencer
bogdanm 0:9b334a45a8ff 214 This parameter must be a value of @ref ADCEx_injected_rank
bogdanm 0:9b334a45a8ff 215 Note: In case of need to disable a channel or change order of conversion sequencer, rank containing a previous channel setting can be overwritten by the new channel setting (or parameter number of conversions can be adjusted) */
bogdanm 0:9b334a45a8ff 216 uint32_t InjectedSamplingTime; /*!< Sampling time value to be set for the selected channel.
bogdanm 0:9b334a45a8ff 217 Unit: ADC clock cycles
bogdanm 0:9b334a45a8ff 218 Conversion time is the addition of sampling time and processing time (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).
bogdanm 0:9b334a45a8ff 219 This parameter can be a value of @ref ADCEx_sampling_times
bogdanm 0:9b334a45a8ff 220 Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups.
bogdanm 0:9b334a45a8ff 221 If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting.
bogdanm 0:9b334a45a8ff 222 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
bogdanm 0:9b334a45a8ff 223 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
bogdanm 0:9b334a45a8ff 224 Refer to device datasheet for timings values, parameters TS_vrefint, TS_vbat, TS_temp (values rough order: 2.2us min). */
bogdanm 0:9b334a45a8ff 225 uint32_t InjectedSingleDiff; /*!< Selection of single-ended or differential input.
bogdanm 0:9b334a45a8ff 226 In differential mode: Differential measurement is between the selected channel 'i' (positive input) and channel 'i+1' (negative input).
bogdanm 0:9b334a45a8ff 227 Only channel 'i' has to be configured, channel 'i+1' is configured automatically.
bogdanm 0:9b334a45a8ff 228 This parameter must be a value of @ref ADCEx_SingleDifferential
bogdanm 0:9b334a45a8ff 229 Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups.
bogdanm 0:9b334a45a8ff 230 If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting.
bogdanm 0:9b334a45a8ff 231 Note: Channels 1 to 14 are available in differential mode. Channels 15, 16, 17, 18 can be used only in single-ended mode.
bogdanm 0:9b334a45a8ff 232 Note: When configuring a channel 'i' in differential mode, the channel 'i-1' is not usable separately.
bogdanm 0:9b334a45a8ff 233 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
bogdanm 0:9b334a45a8ff 234 If ADC is enabled, this parameter setting is bypassed without error reporting (as it can be the expected behaviour in case of another parameter update on the fly) */
bogdanm 0:9b334a45a8ff 235 uint32_t InjectedOffsetNumber; /*!< Selects the offset number
bogdanm 0:9b334a45a8ff 236 This parameter can be a value of @ref ADCEx_OffsetNumber
bogdanm 0:9b334a45a8ff 237 Caution: Only one channel is allowed per offset number. If another channel was on this offset number, the offset will be changed to the new channel. */
bogdanm 0:9b334a45a8ff 238 uint32_t InjectedOffset; /*!< Defines the offset to be subtracted from the raw converted data.
bogdanm 0:9b334a45a8ff 239 Offset value must be a positive number.
bogdanm 0:9b334a45a8ff 240 Depending of ADC resolution selected (12, 10, 8 or 6 bits),
bogdanm 0:9b334a45a8ff 241 this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively. */
bogdanm 0:9b334a45a8ff 242 uint32_t InjectedNbrOfConversion; /*!< Specifies the number of ranks that will be converted within the injected group sequencer.
bogdanm 0:9b334a45a8ff 243 To use the injected group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
bogdanm 0:9b334a45a8ff 244 This parameter must be a number between Min_Data = 1 and Max_Data = 4.
bogdanm 0:9b334a45a8ff 245 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
bogdanm 0:9b334a45a8ff 246 configure a channel on injected group can impact the configuration of other channels previously set. */
bogdanm 0:9b334a45a8ff 247 uint32_t InjectedDiscontinuousConvMode; /*!< Specifies whether the conversions sequence of injected group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts).
bogdanm 0:9b334a45a8ff 248 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
bogdanm 0:9b334a45a8ff 249 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
bogdanm 0:9b334a45a8ff 250 This parameter can be set to ENABLE or DISABLE.
bogdanm 0:9b334a45a8ff 251 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
bogdanm 0:9b334a45a8ff 252 Note: For injected group, number of discontinuous ranks increment is fixed to one-by-one.
bogdanm 0:9b334a45a8ff 253 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
bogdanm 0:9b334a45a8ff 254 configure a channel on injected group can impact the configuration of other channels previously set. */
bogdanm 0:9b334a45a8ff 255 uint32_t AutoInjectedConv; /*!< Enables or disables the selected ADC automatic injected group conversion after regular one
bogdanm 0:9b334a45a8ff 256 This parameter can be set to ENABLE or DISABLE.
bogdanm 0:9b334a45a8ff 257 Note: To use Automatic injected conversion, discontinuous mode must be disabled ('DiscontinuousConvMode' and 'InjectedDiscontinuousConvMode' set to DISABLE)
bogdanm 0:9b334a45a8ff 258 Note: To use Automatic injected conversion, injected group external triggers must be disabled ('ExternalTrigInjecConv' set to ADC_SOFTWARE_START)
bogdanm 0:9b334a45a8ff 259 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.
bogdanm 0:9b334a45a8ff 260 To maintain JAUTO always enabled, DMA must be configured in circular mode.
bogdanm 0:9b334a45a8ff 261 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
bogdanm 0:9b334a45a8ff 262 configure a channel on injected group can impact the configuration of other channels previously set. */
bogdanm 0:9b334a45a8ff 263 uint32_t QueueInjectedContext; /*!< Specifies whether the context queue feature is enabled.
bogdanm 0:9b334a45a8ff 264 This parameter can be set to ENABLE or DISABLE.
bogdanm 0:9b334a45a8ff 265 If context queue is enabled, injected sequencer&channels configurations are queued on up to 2 contexts. If a
bogdanm 0:9b334a45a8ff 266 new injected context is set when queue is full, error is triggered by interruption and through function 'HAL_ADCEx_InjectedQueueOverflowCallback'.
bogdanm 0:9b334a45a8ff 267 Caution: This feature request that the sequence is fully configured before injected conversion start.
bogdanm 0:9b334a45a8ff 268 Therefore, configure channels with HAL_ADCEx_InjectedConfigChannel() as many times as value of 'InjectedNbrOfConversion' parameter.
bogdanm 0:9b334a45a8ff 269 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
bogdanm 0:9b334a45a8ff 270 configure a channel on injected group can impact the configuration of other channels previously set.
bogdanm 0:9b334a45a8ff 271 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion). */
bogdanm 0:9b334a45a8ff 272 uint32_t ExternalTrigInjecConv; /*!< Selects the external event used to trigger the conversion start of injected group.
bogdanm 0:9b334a45a8ff 273 If set to ADC_INJECTED_SOFTWARE_START, external triggers are disabled.
bogdanm 0:9b334a45a8ff 274 This parameter can be a value of @ref ADCEx_External_trigger_source_Injected
bogdanm 0:9b334a45a8ff 275 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
bogdanm 0:9b334a45a8ff 276 configure a channel on injected group can impact the configuration of other channels previously set. */
bogdanm 0:9b334a45a8ff 277 uint32_t ExternalTrigInjecConvEdge; /*!< Selects the external trigger edge of injected group.
bogdanm 0:9b334a45a8ff 278 This parameter can be a value of @ref ADCEx_External_trigger_edge_Injected.
bogdanm 0:9b334a45a8ff 279 If trigger is set to ADC_INJECTED_SOFTWARE_START, this parameter is discarded.
bogdanm 0:9b334a45a8ff 280 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
bogdanm 0:9b334a45a8ff 281 configure a channel on injected group can impact the configuration of other channels previously set. */
bogdanm 0:9b334a45a8ff 282 }ADC_InjectionConfTypeDef;
bogdanm 0:9b334a45a8ff 283
bogdanm 0:9b334a45a8ff 284 /**
bogdanm 0:9b334a45a8ff 285 * @brief Structure definition of ADC analog watchdog
bogdanm 0:9b334a45a8ff 286 * @note The setting of these parameters with function HAL_ADC_AnalogWDGConfig() is conditioned to ADC state.
bogdanm 0:9b334a45a8ff 287 * ADC state can be either: ADC disabled or ADC enabled without conversion on going on regular and injected groups.
bogdanm 0:9b334a45a8ff 288 */
bogdanm 0:9b334a45a8ff 289 typedef struct
bogdanm 0:9b334a45a8ff 290 {
bogdanm 0:9b334a45a8ff 291 uint32_t WatchdogNumber; /*!< Selects which ADC analog watchdog to apply to the selected channel.
bogdanm 0:9b334a45a8ff 292 For Analog Watchdog 1: Only 1 channel can be monitored (or overall group of channels by setting parameter 'WatchdogMode')
bogdanm 0:9b334a45a8ff 293 For Analog Watchdog 2 and 3: Several channels can be monitored (by successive calls of 'HAL_ADC_AnalogWDGConfig()' for each channel)
bogdanm 0:9b334a45a8ff 294 This parameter can be a value of @ref ADCEx_analog_watchdog_number. */
bogdanm 0:9b334a45a8ff 295 uint32_t WatchdogMode; /*!< For Analog Watchdog 1: Configures the ADC analog watchdog mode: single channel/overall group of channels, regular/injected group.
bogdanm 0:9b334a45a8ff 296 For Analog Watchdog 2 and 3: There is no configuration for overall group of channels as AWD1. Set value 'ADC_ANALOGWATCHDOG_NONE' to reset channels group programmed with parameter 'Channel', set any other value to not use this parameter.
bogdanm 0:9b334a45a8ff 297 This parameter can be a value of @ref ADCEx_analog_watchdog_mode. */
bogdanm 0:9b334a45a8ff 298 uint32_t Channel; /*!< Selects which ADC channel to monitor by analog watchdog.
bogdanm 0:9b334a45a8ff 299 For Analog Watchdog 1: this parameter has an effect only if parameter 'WatchdogMode' is configured on single channel. Only 1 channel can be monitored.
bogdanm 0:9b334a45a8ff 300 For Analog Watchdog 2 and 3: Several channels can be monitored (successive calls of HAL_ADC_AnalogWDGConfig() must be done, one for each channel.
bogdanm 0:9b334a45a8ff 301 Channels group reset can be done by setting WatchdogMode to 'ADC_ANALOGWATCHDOG_NONE').
bogdanm 0:9b334a45a8ff 302 This parameter can be a value of @ref ADCEx_channels. */
bogdanm 0:9b334a45a8ff 303 uint32_t ITMode; /*!< Specifies whether the analog watchdog is configured in interrupt or polling mode.
bogdanm 0:9b334a45a8ff 304 This parameter can be set to ENABLE or DISABLE */
bogdanm 0:9b334a45a8ff 305 uint32_t HighThreshold; /*!< Configures the ADC analog watchdog High threshold value.
bogdanm 0:9b334a45a8ff 306 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively.
bogdanm 0:9b334a45a8ff 307 Note: Analog watchdog 2 and 3 are limited to a resolution of 8 bits: if ADC resolution is 12 bits
bogdanm 0:9b334a45a8ff 308 the 4 LSB are ignored, if ADC resolution is 10 bits the 2 LSB are ignored. */
bogdanm 0:9b334a45a8ff 309 uint32_t LowThreshold; /*!< Configures the ADC analog watchdog High threshold value.
bogdanm 0:9b334a45a8ff 310 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively.
bogdanm 0:9b334a45a8ff 311 Note: Analog watchdog 2 and 3 are limited to a resolution of 8 bits: if ADC resolution is 12 bits
bogdanm 0:9b334a45a8ff 312 the 4 LSB are ignored, if ADC resolution is 10 bits the 2 LSB are ignored. */
bogdanm 0:9b334a45a8ff 313 }ADC_AnalogWDGConfTypeDef;
bogdanm 0:9b334a45a8ff 314
bogdanm 0:9b334a45a8ff 315 /**
bogdanm 0:9b334a45a8ff 316 * @brief Structure definition of ADC multimode
bogdanm 0:9b334a45a8ff 317 * @note The setting of these parameters with function HAL_ADCEx_MultiModeConfigChannel() is conditioned to ADCs state (both ADCs of the common group).
bogdanm 0:9b334a45a8ff 318 * State of ADCs of the common group must be: disabled.
bogdanm 0:9b334a45a8ff 319 */
bogdanm 0:9b334a45a8ff 320 typedef struct
bogdanm 0:9b334a45a8ff 321 {
bogdanm 0:9b334a45a8ff 322 uint32_t Mode; /*!< Configures the ADC to operate in independent or multi mode.
bogdanm 0:9b334a45a8ff 323 This parameter can be a value of @ref ADCEx_Common_mode */
bogdanm 0:9b334a45a8ff 324 uint32_t DMAAccessMode; /*!< Configures the DMA mode for multi ADC mode:
bogdanm 0:9b334a45a8ff 325 selection whether 2 DMA channels (each ADC use its own DMA channel) or 1 DMA channel (one DMA channel for both ADC, DMA of ADC master)
bogdanm 0:9b334a45a8ff 326 This parameter can be a value of @ref ADCEx_Direct_memory_access_mode_for_multimode
bogdanm 0:9b334a45a8ff 327 Caution: Limitations with multimode DMA access enabled (1 DMA channel used): In case of dual mode in high speed (more than 5Msps) or high activity of DMA by other peripherals, there is a risk of DMA overrun.
bogdanm 0:9b334a45a8ff 328 Therefore, it is recommended to disable multimode DMA access: each ADC use its own DMA channel. */
bogdanm 0:9b334a45a8ff 329 uint32_t TwoSamplingDelay; /*!< Configures the Delay between 2 sampling phases.
bogdanm 0:9b334a45a8ff 330 This parameter can be a value of @ref ADCEx_delay_between_2_sampling_phases
bogdanm 0:9b334a45a8ff 331 Delay range depends on selected resolution: from 1 to 12 clock cycles for 12 bits, from 1 to 10 clock cycles for 10 bits
bogdanm 0:9b334a45a8ff 332 from 1 to 8 clock cycles for 8 bits, from 1 to 6 clock cycles for 6 bits */
bogdanm 0:9b334a45a8ff 333 }ADC_MultiModeTypeDef;
bogdanm 0:9b334a45a8ff 334 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 335 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 336 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
bogdanm 0:9b334a45a8ff 337 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 338
bogdanm 0:9b334a45a8ff 339 #if defined(STM32F373xC) || defined(STM32F378xx)
bogdanm 0:9b334a45a8ff 340 /**
bogdanm 0:9b334a45a8ff 341 * @brief Structure definition of ADC and regular group initialization
bogdanm 0:9b334a45a8ff 342 * @note Parameters of this structure are shared within 2 scopes:
bogdanm 0:9b334a45a8ff 343 * - Scope entire ADC (affects regular and injected groups): DataAlign, ScanConvMode.
bogdanm 0:9b334a45a8ff 344 * - Scope regular group: ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion, ExternalTrigConvEdge, ExternalTrigConv.
bogdanm 0:9b334a45a8ff 345 * @note The setting of these parameters with function HAL_ADC_Init() is conditioned to ADC state.
bogdanm 0:9b334a45a8ff 346 * ADC can be either disabled or enabled without conversion on going on regular group.
bogdanm 0:9b334a45a8ff 347 */
bogdanm 0:9b334a45a8ff 348 typedef struct
bogdanm 0:9b334a45a8ff 349 {
bogdanm 0:9b334a45a8ff 350 uint32_t DataAlign; /*!< Specifies ADC data alignment to right (MSB on register bit 11 and LSB on register bit 0) (default setting)
bogdanm 0:9b334a45a8ff 351 or to left (if regular group: MSB on register bit 15 and LSB on register bit 4, if injected group (MSB kept as signed value due to potential negative value after offset application): MSB on register bit 14 and LSB on register bit 3).
bogdanm 0:9b334a45a8ff 352 This parameter can be a value of @ref ADCEx_Data_align */
bogdanm 0:9b334a45a8ff 353 uint32_t ScanConvMode; /*!< Configures the sequencer of regular and injected groups.
bogdanm 0:9b334a45a8ff 354 This parameter can be associated to parameter 'DiscontinuousConvMode' to have main sequence subdivided in successive parts.
bogdanm 0:9b334a45a8ff 355 If disabled: Conversion is performed in single mode (one channel converted, the one defined in rank 1).
bogdanm 0:9b334a45a8ff 356 Parameters 'NbrOfConversion' and 'InjectedNbrOfConversion' are discarded (equivalent to set to 1).
bogdanm 0:9b334a45a8ff 357 If enabled: Conversions are performed in sequence mode (multiple ranks defined by 'NbrOfConversion'/'InjectedNbrOfConversion' and each channel rank).
bogdanm 0:9b334a45a8ff 358 Scan direction is upward: from rank1 to rank 'n'.
bogdanm 0:9b334a45a8ff 359 This parameter can be a value of @ref ADCEx_Scan_mode
bogdanm 0:9b334a45a8ff 360 Note: For regular group, this parameter should be enabled in conversion either by polling (HAL_ADC_Start with Discontinuous mode and NbrOfDiscConversion=1)
bogdanm 0:9b334a45a8ff 361 or by DMA (HAL_ADC_Start_DMA), but not by interruption (HAL_ADC_Start_IT): in scan mode, interruption is triggered only on the
bogdanm 0:9b334a45a8ff 362 the last conversion of the sequence. All previous conversions would be overwritten by the last one.
bogdanm 0:9b334a45a8ff 363 Injected group used with scan mode has not this constraint: each rank has its own result register, no data is overwritten. */
bogdanm 0:9b334a45a8ff 364 uint32_t ContinuousConvMode; /*!< Specifies whether the conversion is performed in single mode (one conversion) or continuous mode for regular group,
bogdanm 0:9b334a45a8ff 365 after the selected trigger occurred (software start or external trigger).
bogdanm 0:9b334a45a8ff 366 This parameter can be set to ENABLE or DISABLE. */
bogdanm 0:9b334a45a8ff 367 uint32_t NbrOfConversion; /*!< Specifies the number of ranks that will be converted within the regular group sequencer.
bogdanm 0:9b334a45a8ff 368 To use regular group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
bogdanm 0:9b334a45a8ff 369 This parameter must be a number between Min_Data = 1 and Max_Data = 16. */
bogdanm 0:9b334a45a8ff 370 uint32_t DiscontinuousConvMode; /*!< Specifies whether the conversions sequence of regular group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts).
bogdanm 0:9b334a45a8ff 371 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
bogdanm 0:9b334a45a8ff 372 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
bogdanm 0:9b334a45a8ff 373 This parameter can be set to ENABLE or DISABLE. */
bogdanm 0:9b334a45a8ff 374 uint32_t NbrOfDiscConversion; /*!< Specifies the number of discontinuous conversions in which the main sequence of regular group (parameter NbrOfConversion) will be subdivided.
bogdanm 0:9b334a45a8ff 375 If parameter 'DiscontinuousConvMode' is disabled, this parameter is discarded.
bogdanm 0:9b334a45a8ff 376 This parameter must be a number between Min_Data = 1 and Max_Data = 8. */
bogdanm 0:9b334a45a8ff 377 uint32_t ExternalTrigConv; /*!< Selects the external event used to trigger the conversion start of regular group.
bogdanm 0:9b334a45a8ff 378 If set to ADC_SOFTWARE_START, external triggers are disabled.
bogdanm 0:9b334a45a8ff 379 If set to external trigger source, triggering is on event rising edge.
bogdanm 0:9b334a45a8ff 380 This parameter can be a value of @ref ADCEx_External_trigger_source_Regular */
bogdanm 0:9b334a45a8ff 381 }ADC_InitTypeDef;
bogdanm 0:9b334a45a8ff 382
bogdanm 0:9b334a45a8ff 383 /**
bogdanm 0:9b334a45a8ff 384 * @brief Structure definition of ADC channel for regular group
bogdanm 0:9b334a45a8ff 385 * @note The setting of these parameters with function HAL_ADC_ConfigChannel() is conditioned to ADC state.
bogdanm 0:9b334a45a8ff 386 * ADC can be either disabled or enabled without conversion on going on regular group.
bogdanm 0:9b334a45a8ff 387 */
bogdanm 0:9b334a45a8ff 388 typedef struct
bogdanm 0:9b334a45a8ff 389 {
bogdanm 0:9b334a45a8ff 390 uint32_t Channel; /*!< Specifies the channel to configure into ADC regular group.
bogdanm 0:9b334a45a8ff 391 This parameter can be a value of @ref ADCEx_channels
bogdanm 0:9b334a45a8ff 392 Note: Depending on devices, some channels may not be available on package pins. Refer to device datasheet for channels availability. */
bogdanm 0:9b334a45a8ff 393 uint32_t Rank; /*!< Specifies the rank in the regular group sequencer
bogdanm 0:9b334a45a8ff 394 This parameter can be a value of @ref ADCEx_regular_rank
bogdanm 0:9b334a45a8ff 395 Note: In case of need to disable a channel or change order of conversion sequencer, rank containing a previous channel setting can be overwritten by the new channel setting (or parameter number of conversions can be adjusted) */
bogdanm 0:9b334a45a8ff 396 uint32_t SamplingTime; /*!< Sampling time value to be set for the selected channel.
bogdanm 0:9b334a45a8ff 397 Unit: ADC clock cycles
bogdanm 0:9b334a45a8ff 398 Conversion time is the addition of sampling time and processing time (12.5 ADC clock cycles at ADC resolution 12 bits).
bogdanm 0:9b334a45a8ff 399 This parameter can be a value of @ref ADCEx_sampling_times
bogdanm 0:9b334a45a8ff 400 Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups.
bogdanm 0:9b334a45a8ff 401 If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting.
bogdanm 0:9b334a45a8ff 402 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
bogdanm 0:9b334a45a8ff 403 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
bogdanm 0:9b334a45a8ff 404 Refer to device datasheet for timings values, parameters TS_vrefint, TS_vbat, TS_temp (values rough order: 5us to 17.1us min). */
bogdanm 0:9b334a45a8ff 405 }ADC_ChannelConfTypeDef;
bogdanm 0:9b334a45a8ff 406
bogdanm 0:9b334a45a8ff 407 /**
bogdanm 0:9b334a45a8ff 408 * @brief ADC Configuration injected Channel structure definition
bogdanm 0:9b334a45a8ff 409 * @note Parameters of this structure are shared within 2 scopes:
bogdanm 0:9b334a45a8ff 410 * - Scope channel: InjectedChannel, InjectedRank, InjectedSamplingTime, InjectedOffset
bogdanm 0:9b334a45a8ff 411 * - Scope injected group (affects all channels of injected group): InjectedNbrOfConversion, InjectedDiscontinuousConvMode,
bogdanm 0:9b334a45a8ff 412 * AutoInjectedConv, ExternalTrigInjecConvEdge, ExternalTrigInjecConv.
bogdanm 0:9b334a45a8ff 413 * @note The setting of these parameters with function HAL_ADCEx_InjectedConfigChannel() is conditioned to ADC state.
bogdanm 0:9b334a45a8ff 414 * ADC state can be either:
bogdanm 0:9b334a45a8ff 415 * - For all parameters: ADC disabled (this is the only possible ADC state to modify parameter 'ExternalTrigInjecConv')
bogdanm 0:9b334a45a8ff 416 * - For all except parameters 'ExternalTrigInjecConv': ADC enabled without conversion on going on injected group.
bogdanm 0:9b334a45a8ff 417 */
bogdanm 0:9b334a45a8ff 418 typedef struct
bogdanm 0:9b334a45a8ff 419 {
bogdanm 0:9b334a45a8ff 420 uint32_t InjectedChannel; /*!< Selection of ADC channel to configure
bogdanm 0:9b334a45a8ff 421 This parameter can be a value of @ref ADCEx_channels
bogdanm 0:9b334a45a8ff 422 Note: Depending on devices, some channels may not be available on package pins. Refer to device datasheet for channels availability. */
bogdanm 0:9b334a45a8ff 423 uint32_t InjectedRank; /*!< Rank in the injected group sequencer
bogdanm 0:9b334a45a8ff 424 This parameter must be a value of @ref ADCEx_injected_rank
bogdanm 0:9b334a45a8ff 425 Note: In case of need to disable a channel or change order of conversion sequencer, rank containing a previous channel setting can be overwritten by the new channel setting (or parameter number of conversions can be adjusted) */
bogdanm 0:9b334a45a8ff 426 uint32_t InjectedSamplingTime; /*!< Sampling time value to be set for the selected channel.
bogdanm 0:9b334a45a8ff 427 Unit: ADC clock cycles
bogdanm 0:9b334a45a8ff 428 Conversion time is the addition of sampling time and processing time (12.5 ADC clock cycles at ADC resolution 12 bits).
bogdanm 0:9b334a45a8ff 429 This parameter can be a value of @ref ADCEx_sampling_times
bogdanm 0:9b334a45a8ff 430 Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups.
bogdanm 0:9b334a45a8ff 431 If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting.
bogdanm 0:9b334a45a8ff 432 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
bogdanm 0:9b334a45a8ff 433 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
bogdanm 0:9b334a45a8ff 434 Refer to device datasheet for timings values, parameters TS_vrefint, TS_vbat, TS_temp (values rough order: 5us to 17.1us min). */
bogdanm 0:9b334a45a8ff 435 uint32_t InjectedOffset; /*!< Defines the offset to be subtracted from the raw converted data (for channels set on injected group only).
bogdanm 0:9b334a45a8ff 436 Offset value must be a positive number.
bogdanm 0:9b334a45a8ff 437 Depending of ADC resolution selected (12, 10, 8 or 6 bits),
bogdanm 0:9b334a45a8ff 438 this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively. */
bogdanm 0:9b334a45a8ff 439 uint32_t InjectedNbrOfConversion; /*!< Specifies the number of ranks that will be converted within the injected group sequencer.
bogdanm 0:9b334a45a8ff 440 To use the injected group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
bogdanm 0:9b334a45a8ff 441 This parameter must be a number between Min_Data = 1 and Max_Data = 4.
bogdanm 0:9b334a45a8ff 442 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
bogdanm 0:9b334a45a8ff 443 configure a channel on injected group can impact the configuration of other channels previously set. */
bogdanm 0:9b334a45a8ff 444 uint32_t InjectedDiscontinuousConvMode; /*!< Specifies whether the conversions sequence of injected group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts).
bogdanm 0:9b334a45a8ff 445 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
bogdanm 0:9b334a45a8ff 446 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
bogdanm 0:9b334a45a8ff 447 This parameter can be set to ENABLE or DISABLE.
bogdanm 0:9b334a45a8ff 448 Note: For injected group, number of discontinuous ranks increment is fixed to one-by-one.
bogdanm 0:9b334a45a8ff 449 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
bogdanm 0:9b334a45a8ff 450 configure a channel on injected group can impact the configuration of other channels previously set. */
bogdanm 0:9b334a45a8ff 451 uint32_t AutoInjectedConv; /*!< Enables or disables the selected ADC automatic injected group conversion after regular one
bogdanm 0:9b334a45a8ff 452 This parameter can be set to ENABLE or DISABLE.
bogdanm 0:9b334a45a8ff 453 Note: To use Automatic injected conversion, discontinuous mode must be disabled ('DiscontinuousConvMode' and 'InjectedDiscontinuousConvMode' set to DISABLE)
bogdanm 0:9b334a45a8ff 454 Note: To use Automatic injected conversion, injected group external triggers must be disabled ('ExternalTrigInjecConv' set to ADC_SOFTWARE_START)
bogdanm 0:9b334a45a8ff 455 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.
bogdanm 0:9b334a45a8ff 456 To maintain JAUTO always enabled, DMA must be configured in circular mode.
bogdanm 0:9b334a45a8ff 457 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
bogdanm 0:9b334a45a8ff 458 configure a channel on injected group can impact the configuration of other channels previously set. */
bogdanm 0:9b334a45a8ff 459 uint32_t ExternalTrigInjecConv; /*!< Selects the external event used to trigger the conversion start of injected group.
bogdanm 0:9b334a45a8ff 460 If set to ADC_INJECTED_SOFTWARE_START, external triggers are disabled.
bogdanm 0:9b334a45a8ff 461 If set to external trigger source, triggering is on event rising edge.
bogdanm 0:9b334a45a8ff 462 This parameter can be a value of @ref ADCEx_External_trigger_source_Injected
bogdanm 0:9b334a45a8ff 463 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
bogdanm 0:9b334a45a8ff 464 If ADC is enabled, this parameter setting is bypassed without error reporting (as it can be the expected behaviour in case of another parameter update on the fly)
bogdanm 0:9b334a45a8ff 465 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
bogdanm 0:9b334a45a8ff 466 configure a channel on injected group can impact the configuration of other channels previously set. */
bogdanm 0:9b334a45a8ff 467 }ADC_InjectionConfTypeDef;
bogdanm 0:9b334a45a8ff 468
bogdanm 0:9b334a45a8ff 469 /**
bogdanm 0:9b334a45a8ff 470 * @brief ADC Configuration analog watchdog definition
bogdanm 0:9b334a45a8ff 471 * @note The setting of these parameters with function is conditioned to ADC state.
bogdanm 0:9b334a45a8ff 472 * ADC state can be either disabled or enabled without conversion on going on regular and injected groups.
bogdanm 0:9b334a45a8ff 473 */
bogdanm 0:9b334a45a8ff 474 typedef struct
bogdanm 0:9b334a45a8ff 475 {
bogdanm 0:9b334a45a8ff 476 uint32_t WatchdogMode; /*!< Configures the ADC analog watchdog mode: single/all channels, regular/injected group.
bogdanm 0:9b334a45a8ff 477 This parameter can be a value of @ref ADCEx_analog_watchdog_mode. */
bogdanm 0:9b334a45a8ff 478 uint32_t Channel; /*!< Selects which ADC channel to monitor by analog watchdog.
bogdanm 0:9b334a45a8ff 479 This parameter has an effect only if watchdog mode is configured on single channel (parameter WatchdogMode)
bogdanm 0:9b334a45a8ff 480 This parameter can be a value of @ref ADCEx_channels. */
bogdanm 0:9b334a45a8ff 481 uint32_t ITMode; /*!< Specifies whether the analog watchdog is configured in interrupt or polling mode.
bogdanm 0:9b334a45a8ff 482 This parameter can be set to ENABLE or DISABLE */
bogdanm 0:9b334a45a8ff 483 uint32_t HighThreshold; /*!< Configures the ADC analog watchdog High threshold value.
bogdanm 0:9b334a45a8ff 484 This parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF. */
bogdanm 0:9b334a45a8ff 485 uint32_t LowThreshold; /*!< Configures the ADC analog watchdog High threshold value.
bogdanm 0:9b334a45a8ff 486 This parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF. */
bogdanm 0:9b334a45a8ff 487 uint32_t WatchdogNumber; /*!< Reserved for future use, can be set to 0 */
bogdanm 0:9b334a45a8ff 488 }ADC_AnalogWDGConfTypeDef;
bogdanm 0:9b334a45a8ff 489 #endif /* STM32F373xC || STM32F378xx */
bogdanm 0:9b334a45a8ff 490 /**
bogdanm 0:9b334a45a8ff 491 * @}
bogdanm 0:9b334a45a8ff 492 */
bogdanm 0:9b334a45a8ff 493
bogdanm 0:9b334a45a8ff 494 /* Exported constants --------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 495
bogdanm 0:9b334a45a8ff 496 /** @defgroup ADCEx_Exported_Constants ADC Extended Exported Constants
bogdanm 0:9b334a45a8ff 497 * @{
bogdanm 0:9b334a45a8ff 498 */
bogdanm 0:9b334a45a8ff 499
bogdanm 0:9b334a45a8ff 500 /** @defgroup ADCEx_Error_Code ADC Extended Error Code
bogdanm 0:9b334a45a8ff 501 * @{
bogdanm 0:9b334a45a8ff 502 */
bogdanm 0:9b334a45a8ff 503 #define HAL_ADC_ERROR_NONE ((uint32_t)0x00) /*!< No error */
bogdanm 0:9b334a45a8ff 504 #define HAL_ADC_ERROR_INTERNAL ((uint32_t)0x01) /*!< ADC IP internal error: if problem of clocking,
bogdanm 0:9b334a45a8ff 505 enable/disable, erroneous state */
bogdanm 0:9b334a45a8ff 506 #define HAL_ADC_ERROR_OVR ((uint32_t)0x02) /*!< Overrun error */
bogdanm 0:9b334a45a8ff 507 #define HAL_ADC_ERROR_DMA ((uint32_t)0x04) /*!< DMA transfer error */
bogdanm 0:9b334a45a8ff 508 #define HAL_ADC_ERROR_JQOVF ((uint32_t)0x08) /*!< Injected context queue overflow error */
bogdanm 0:9b334a45a8ff 509 /**
bogdanm 0:9b334a45a8ff 510 * @}
bogdanm 0:9b334a45a8ff 511 */
bogdanm 0:9b334a45a8ff 512
bogdanm 0:9b334a45a8ff 513 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 514 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 515 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
bogdanm 0:9b334a45a8ff 516 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 517 /** @defgroup ADCEx_ClockPrescaler ADC Extended Clock Prescaler
bogdanm 0:9b334a45a8ff 518 * @{
bogdanm 0:9b334a45a8ff 519 */
bogdanm 0:9b334a45a8ff 520 #define ADC_CLOCK_ASYNC ((uint32_t)0x00000000) /*!< ADC asynchronous clock derived from ADC dedicated PLL */
bogdanm 0:9b334a45a8ff 521
bogdanm 0:9b334a45a8ff 522 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 523 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 524 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 525 #define ADC_CLOCK_SYNC_PCLK_DIV1 ((uint32_t)ADC12_CCR_CKMODE_0) /*!< ADC synchronous clock derived from AHB clock without prescaler */
bogdanm 0:9b334a45a8ff 526 #define ADC_CLOCK_SYNC_PCLK_DIV2 ((uint32_t)ADC12_CCR_CKMODE_1) /*!< ADC synchronous clock derived from AHB clock divided by a prescaler of 2 */
bogdanm 0:9b334a45a8ff 527 #define ADC_CLOCK_SYNC_PCLK_DIV4 ((uint32_t)ADC12_CCR_CKMODE) /*!< ADC synchronous clock derived from AHB clock divided by a prescaler of 4 */
bogdanm 0:9b334a45a8ff 528 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 529 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 530 /* STM32F303x8 || STM32F334x8 || STM32F328xx */
bogdanm 0:9b334a45a8ff 531
bogdanm 0:9b334a45a8ff 532 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 533 #define ADC_CLOCK_SYNC_PCLK_DIV1 ((uint32_t)ADC1_CCR_CKMODE_0) /*!< ADC synchronous clock derived from AHB clock without prescaler */
bogdanm 0:9b334a45a8ff 534 #define ADC_CLOCK_SYNC_PCLK_DIV2 ((uint32_t)ADC1_CCR_CKMODE_1) /*!< ADC synchronous clock derived from AHB clock divided by a prescaler of 2 */
bogdanm 0:9b334a45a8ff 535 #define ADC_CLOCK_SYNC_PCLK_DIV4 ((uint32_t)ADC1_CCR_CKMODE) /*!< ADC synchronous clock derived from AHB clock divided by a prescaler of 4 */
bogdanm 0:9b334a45a8ff 536 #endif /* STM32F301x8 || STM32F318xx || STM32F302x8 */
bogdanm 0:9b334a45a8ff 537
bogdanm 0:9b334a45a8ff 538 #define ADC_CLOCKPRESCALER_PCLK_DIV1 ADC_CLOCK_SYNC_PCLK_DIV1 /* Obsolete naming, kept for compatibility with some other devices */
bogdanm 0:9b334a45a8ff 539 #define ADC_CLOCKPRESCALER_PCLK_DIV2 ADC_CLOCK_SYNC_PCLK_DIV2 /* Obsolete naming, kept for compatibility with some other devices */
bogdanm 0:9b334a45a8ff 540 #define ADC_CLOCKPRESCALER_PCLK_DIV4 ADC_CLOCK_SYNC_PCLK_DIV4 /* Obsolete naming, kept for compatibility with some other devices */
bogdanm 0:9b334a45a8ff 541
bogdanm 0:9b334a45a8ff 542 #define IS_ADC_CLOCKPRESCALER(ADC_CLOCK) (((ADC_CLOCK) == ADC_CLOCK_ASYNC) || \
bogdanm 0:9b334a45a8ff 543 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV1) || \
bogdanm 0:9b334a45a8ff 544 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV2) || \
bogdanm 0:9b334a45a8ff 545 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV4) )
bogdanm 0:9b334a45a8ff 546 /**
bogdanm 0:9b334a45a8ff 547 * @}
bogdanm 0:9b334a45a8ff 548 */
bogdanm 0:9b334a45a8ff 549
bogdanm 0:9b334a45a8ff 550 /** @defgroup ADCEx_Resolution ADC Extended Resolution
bogdanm 0:9b334a45a8ff 551 * @{
bogdanm 0:9b334a45a8ff 552 */
bogdanm 0:9b334a45a8ff 553 #define ADC_RESOLUTION12b ((uint32_t)0x00000000) /*!< ADC 12-bit resolution */
bogdanm 0:9b334a45a8ff 554 #define ADC_RESOLUTION10b ((uint32_t)ADC_CFGR_RES_0) /*!< ADC 10-bit resolution */
bogdanm 0:9b334a45a8ff 555 #define ADC_RESOLUTION8b ((uint32_t)ADC_CFGR_RES_1) /*!< ADC 8-bit resolution */
bogdanm 0:9b334a45a8ff 556 #define ADC_RESOLUTION6b ((uint32_t)ADC_CFGR_RES) /*!< ADC 6-bit resolution */
bogdanm 0:9b334a45a8ff 557
bogdanm 0:9b334a45a8ff 558 #define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_RESOLUTION12b) || \
bogdanm 0:9b334a45a8ff 559 ((RESOLUTION) == ADC_RESOLUTION10b) || \
bogdanm 0:9b334a45a8ff 560 ((RESOLUTION) == ADC_RESOLUTION8b) || \
bogdanm 0:9b334a45a8ff 561 ((RESOLUTION) == ADC_RESOLUTION6b) )
bogdanm 0:9b334a45a8ff 562
bogdanm 0:9b334a45a8ff 563 #define IS_ADC_RESOLUTION_8_6_BITS(RESOLUTION) (((RESOLUTION) == ADC_RESOLUTION8b) || \
bogdanm 0:9b334a45a8ff 564 ((RESOLUTION) == ADC_RESOLUTION6b) )
bogdanm 0:9b334a45a8ff 565 /**
bogdanm 0:9b334a45a8ff 566 * @}
bogdanm 0:9b334a45a8ff 567 */
bogdanm 0:9b334a45a8ff 568
bogdanm 0:9b334a45a8ff 569 /** @defgroup ADCEx_Data_align ADC Extended Data Alignment
bogdanm 0:9b334a45a8ff 570 * @{
bogdanm 0:9b334a45a8ff 571 */
bogdanm 0:9b334a45a8ff 572 #define ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 573 #define ADC_DATAALIGN_LEFT ((uint32_t)ADC_CFGR_ALIGN)
bogdanm 0:9b334a45a8ff 574
bogdanm 0:9b334a45a8ff 575 #define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DATAALIGN_RIGHT) || \
bogdanm 0:9b334a45a8ff 576 ((ALIGN) == ADC_DATAALIGN_LEFT) )
bogdanm 0:9b334a45a8ff 577 /**
bogdanm 0:9b334a45a8ff 578 * @}
bogdanm 0:9b334a45a8ff 579 */
bogdanm 0:9b334a45a8ff 580
bogdanm 0:9b334a45a8ff 581 /** @defgroup ADCEx_Scan_mode ADC Extended Scan Mode
bogdanm 0:9b334a45a8ff 582 * @{
bogdanm 0:9b334a45a8ff 583 */
bogdanm 0:9b334a45a8ff 584 #define ADC_SCAN_DISABLE ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 585 #define ADC_SCAN_ENABLE ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 586
bogdanm 0:9b334a45a8ff 587 #define IS_ADC_SCAN_MODE(SCAN_MODE) (((SCAN_MODE) == ADC_SCAN_DISABLE) || \
bogdanm 0:9b334a45a8ff 588 ((SCAN_MODE) == ADC_SCAN_ENABLE) )
bogdanm 0:9b334a45a8ff 589 /**
bogdanm 0:9b334a45a8ff 590 * @}
bogdanm 0:9b334a45a8ff 591 */
bogdanm 0:9b334a45a8ff 592
bogdanm 0:9b334a45a8ff 593 /** @defgroup ADCEx_External_trigger_edge_Regular ADC Extended External trigger enable and polarity selection for regular channels
bogdanm 0:9b334a45a8ff 594 * @{
bogdanm 0:9b334a45a8ff 595 */
bogdanm 0:9b334a45a8ff 596 #define ADC_EXTERNALTRIGCONVEDGE_NONE ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 597 #define ADC_EXTERNALTRIGCONVEDGE_RISING ((uint32_t)ADC_CFGR_EXTEN_0)
bogdanm 0:9b334a45a8ff 598 #define ADC_EXTERNALTRIGCONVEDGE_FALLING ((uint32_t)ADC_CFGR_EXTEN_1)
bogdanm 0:9b334a45a8ff 599 #define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING ((uint32_t)ADC_CFGR_EXTEN)
bogdanm 0:9b334a45a8ff 600
bogdanm 0:9b334a45a8ff 601 #define IS_ADC_EXTTRIG_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \
bogdanm 0:9b334a45a8ff 602 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISING) || \
bogdanm 0:9b334a45a8ff 603 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \
bogdanm 0:9b334a45a8ff 604 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING) )
bogdanm 0:9b334a45a8ff 605 /**
bogdanm 0:9b334a45a8ff 606 * @}
bogdanm 0:9b334a45a8ff 607 */
bogdanm 0:9b334a45a8ff 608
bogdanm 0:9b334a45a8ff 609 /** @defgroup ADCEx_External_trigger_source_Regular ADC Extended External trigger selection for regular group
bogdanm 0:9b334a45a8ff 610 * @{
bogdanm 0:9b334a45a8ff 611 */
bogdanm 0:9b334a45a8ff 612 #if defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 613 defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 614 /*!< List of external triggers with generic trigger name, independently of */
bogdanm 0:9b334a45a8ff 615 /* ADC target (caution: applies to other ADCs sharing the same common group), */
bogdanm 0:9b334a45a8ff 616 /* sorted by trigger name: */
bogdanm 0:9b334a45a8ff 617
bogdanm 0:9b334a45a8ff 618 /*!< External triggers of regular group for ADC1&ADC2 only */
bogdanm 0:9b334a45a8ff 619 #define ADC_EXTERNALTRIGCONV_T1_CC1 ADC1_2_EXTERNALTRIG_T1_CC1
bogdanm 0:9b334a45a8ff 620 #define ADC_EXTERNALTRIGCONV_T1_CC2 ADC1_2_EXTERNALTRIG_T1_CC2
bogdanm 0:9b334a45a8ff 621 #define ADC_EXTERNALTRIGCONV_T2_CC2 ADC1_2_EXTERNALTRIG_T2_CC2
bogdanm 0:9b334a45a8ff 622 #define ADC_EXTERNALTRIGCONV_T3_CC4 ADC1_2_EXTERNALTRIG_T3_CC4
bogdanm 0:9b334a45a8ff 623 #define ADC_EXTERNALTRIGCONV_T4_CC4 ADC1_2_EXTERNALTRIG_T4_CC4
bogdanm 0:9b334a45a8ff 624 #define ADC_EXTERNALTRIGCONV_T6_TRGO ADC1_2_EXTERNALTRIG_T6_TRGO
bogdanm 0:9b334a45a8ff 625 #define ADC_EXTERNALTRIGCONV_EXT_IT11 ADC1_2_EXTERNALTRIG_EXT_IT11
bogdanm 0:9b334a45a8ff 626
bogdanm 0:9b334a45a8ff 627 /*!< External triggers of regular group for ADC3&ADC4 only */
bogdanm 0:9b334a45a8ff 628 #define ADC_EXTERNALTRIGCONV_T2_CC1 ADC3_4_EXTERNALTRIG_T2_CC1
bogdanm 0:9b334a45a8ff 629 #define ADC_EXTERNALTRIGCONV_T2_CC3 ADC3_4_EXTERNALTRIG_T2_CC3
bogdanm 0:9b334a45a8ff 630 #define ADC_EXTERNALTRIGCONV_T3_CC1 ADC3_4_EXTERNALTRIG_T3_CC1
bogdanm 0:9b334a45a8ff 631 #define ADC_EXTERNALTRIGCONV_T4_CC1 ADC3_4_EXTERNALTRIG_T4_CC1
bogdanm 0:9b334a45a8ff 632 #define ADC_EXTERNALTRIGCONV_T7_TRGO ADC3_4_EXTERNALTRIG_T7_TRGO
bogdanm 0:9b334a45a8ff 633 #define ADC_EXTERNALTRIGCONV_T8_CC1 ADC3_4_EXTERNALTRIG_T8_CC1
bogdanm 0:9b334a45a8ff 634 #define ADC_EXTERNALTRIGCONV_EXT_IT2 ADC3_4_EXTERNALTRIG_EXT_IT2
bogdanm 0:9b334a45a8ff 635
bogdanm 0:9b334a45a8ff 636 /*!< External triggers of regular group for ADC1&ADC2, ADC3&ADC4 */
bogdanm 0:9b334a45a8ff 637 /* Note: Triggers affected to group ADC1_2 by default, redirected to group */
bogdanm 0:9b334a45a8ff 638 /* ADC3_4 by driver when needed. */
bogdanm 0:9b334a45a8ff 639 #define ADC_EXTERNALTRIGCONV_T1_CC3 ADC1_2_EXTERNALTRIG_T1_CC3
bogdanm 0:9b334a45a8ff 640 #define ADC_EXTERNALTRIGCONV_T1_TRGO ADC1_2_EXTERNALTRIG_T1_TRGO
bogdanm 0:9b334a45a8ff 641 #define ADC_EXTERNALTRIGCONV_T1_TRGO2 ADC1_2_EXTERNALTRIG_T1_TRGO2
bogdanm 0:9b334a45a8ff 642 #define ADC_EXTERNALTRIGCONV_T2_TRGO ADC1_2_EXTERNALTRIG_T2_TRGO
bogdanm 0:9b334a45a8ff 643 #define ADC_EXTERNALTRIGCONV_T3_TRGO ADC1_2_EXTERNALTRIG_T3_TRGO
bogdanm 0:9b334a45a8ff 644 #define ADC_EXTERNALTRIGCONV_T4_TRGO ADC1_2_EXTERNALTRIG_T4_TRGO
bogdanm 0:9b334a45a8ff 645 #define ADC_EXTERNALTRIGCONV_T8_TRGO ADC1_2_EXTERNALTRIG_T8_TRGO
bogdanm 0:9b334a45a8ff 646 #define ADC_EXTERNALTRIGCONV_T8_TRGO2 ADC1_2_EXTERNALTRIG_T8_TRGO2
bogdanm 0:9b334a45a8ff 647 #define ADC_EXTERNALTRIGCONV_T15_TRGO ADC1_2_EXTERNALTRIG_T15_TRGO
bogdanm 0:9b334a45a8ff 648
bogdanm 0:9b334a45a8ff 649 #define ADC_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 650
bogdanm 0:9b334a45a8ff 651 #if defined(STM32F303xE) || defined(STM32F398xx)
bogdanm 0:9b334a45a8ff 652 /* ADC external triggers specific to device STM303xE: mask to differentiate */
bogdanm 0:9b334a45a8ff 653 /* standard triggers from specific timer 20, needed for reallocation of */
bogdanm 0:9b334a45a8ff 654 /* triggers common to ADC1&2/ADC3&4 and to avoind mixing with standard */
bogdanm 0:9b334a45a8ff 655 /* triggers without remap. */
bogdanm 0:9b334a45a8ff 656 #define ADC_EXTERNALTRIGCONV_T20_MASK 0x1000
bogdanm 0:9b334a45a8ff 657
bogdanm 0:9b334a45a8ff 658 /*!< List of external triggers specific to device STM303xE: using Timer20 */
bogdanm 0:9b334a45a8ff 659 /* with ADC trigger input remap. */
bogdanm 0:9b334a45a8ff 660 /* To remap ADC trigger from other timers/ExtLine to timer20: use macro */
bogdanm 0:9b334a45a8ff 661 /* " __HAL_REMAPADCTRIGGER_ENABLE(...) " with parameters described below: */
bogdanm 0:9b334a45a8ff 662
bogdanm 0:9b334a45a8ff 663 /*!< External triggers of regular group for ADC1&ADC2 only, specific to */
bogdanm 0:9b334a45a8ff 664 /* device STM303xE: : using Timer20 with ADC trigger input remap */
bogdanm 0:9b334a45a8ff 665 #define ADC_EXTERNALTRIGCONV_T20_CC2 ADC_EXTERNALTRIGCONV_T6_TRGO /*!< Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_EXT13) */
bogdanm 0:9b334a45a8ff 666 #define ADC_EXTERNALTRIGCONV_T20_CC3 ADC_EXTERNALTRIGCONV_T3_CC4 /*!< Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_EXT15) */
bogdanm 0:9b334a45a8ff 667
bogdanm 0:9b334a45a8ff 668 /*!< External triggers of regular group for ADC3&ADC4 only, specific to */
bogdanm 0:9b334a45a8ff 669 /* device STM303xE: : using Timer20 with ADC trigger input remap */
bogdanm 0:9b334a45a8ff 670 /* None */
bogdanm 0:9b334a45a8ff 671
bogdanm 0:9b334a45a8ff 672 /*!< External triggers of regular group for ADC1&ADC2, ADC3&ADC4, specific to */
bogdanm 0:9b334a45a8ff 673 /* device STM303xE: : using Timer20 with ADC trigger input remap */
bogdanm 0:9b334a45a8ff 674 /* Note: Triggers affected to group ADC1_2 by default, redirected to group */
bogdanm 0:9b334a45a8ff 675 /* ADC3_4 by driver when needed. */
bogdanm 0:9b334a45a8ff 676 #define ADC_EXTERNALTRIGCONV_T20_CC1 (ADC_EXTERNALTRIGCONV_T4_CC4 | ADC_EXTERNALTRIGCONV_T20_MASK) /*!< For ADC1&ADC2: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_EXT5) */
bogdanm 0:9b334a45a8ff 677 /*!< For ADC3&ADC4: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC34_EXT15) */
bogdanm 0:9b334a45a8ff 678 #define ADC_EXTERNALTRIGCONV_T20_TRGO (ADC_EXTERNALTRIGCONV_T1_CC3 | ADC_EXTERNALTRIGCONV_T20_MASK) /*!< For ADC1&ADC2: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_EXT2) */
bogdanm 0:9b334a45a8ff 679 /*!< For ADC3&ADC4: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC34_EXT5) */
bogdanm 0:9b334a45a8ff 680 #define ADC_EXTERNALTRIGCONV_T20_TRGO2 (ADC_EXTERNALTRIGCONV_T2_CC2 | ADC_EXTERNALTRIGCONV_T20_MASK) /*!< For ADC1&ADC2: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_EXT3) */
bogdanm 0:9b334a45a8ff 681 /*!< For ADC3&ADC4: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC34_EXT6) */
bogdanm 0:9b334a45a8ff 682 #endif /* STM32F303xE || STM32F398xx */
bogdanm 0:9b334a45a8ff 683
bogdanm 0:9b334a45a8ff 684 #if defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 685 #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1) || \
bogdanm 0:9b334a45a8ff 686 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2) || \
bogdanm 0:9b334a45a8ff 687 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
bogdanm 0:9b334a45a8ff 688 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 689 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC4) || \
bogdanm 0:9b334a45a8ff 690 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 691 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \
bogdanm 0:9b334a45a8ff 692 \
bogdanm 0:9b334a45a8ff 693 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC1) || \
bogdanm 0:9b334a45a8ff 694 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC3) || \
bogdanm 0:9b334a45a8ff 695 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC1) || \
bogdanm 0:9b334a45a8ff 696 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC1) || \
bogdanm 0:9b334a45a8ff 697 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T7_TRGO) || \
bogdanm 0:9b334a45a8ff 698 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_CC1) || \
bogdanm 0:9b334a45a8ff 699 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT2) || \
bogdanm 0:9b334a45a8ff 700 \
bogdanm 0:9b334a45a8ff 701 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3) || \
bogdanm 0:9b334a45a8ff 702 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 703 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 704 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 705 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 706 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 707 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_TRGO) || \
bogdanm 0:9b334a45a8ff 708 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_TRGO2) || \
bogdanm 0:9b334a45a8ff 709 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 710 \
bogdanm 0:9b334a45a8ff 711 ((REGTRIG) == ADC_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 712 #endif /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 713
bogdanm 0:9b334a45a8ff 714 #if defined(STM32F303xE) || defined(STM32F398xx)
bogdanm 0:9b334a45a8ff 715 #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1) || \
bogdanm 0:9b334a45a8ff 716 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2) || \
bogdanm 0:9b334a45a8ff 717 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
bogdanm 0:9b334a45a8ff 718 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 719 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC4) || \
bogdanm 0:9b334a45a8ff 720 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 721 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \
bogdanm 0:9b334a45a8ff 722 \
bogdanm 0:9b334a45a8ff 723 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC1) || \
bogdanm 0:9b334a45a8ff 724 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC3) || \
bogdanm 0:9b334a45a8ff 725 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC1) || \
bogdanm 0:9b334a45a8ff 726 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC1) || \
bogdanm 0:9b334a45a8ff 727 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T7_TRGO) || \
bogdanm 0:9b334a45a8ff 728 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_CC1) || \
bogdanm 0:9b334a45a8ff 729 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT2) || \
bogdanm 0:9b334a45a8ff 730 \
bogdanm 0:9b334a45a8ff 731 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3) || \
bogdanm 0:9b334a45a8ff 732 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 733 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 734 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 735 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 736 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 737 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_TRGO) || \
bogdanm 0:9b334a45a8ff 738 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_TRGO2) || \
bogdanm 0:9b334a45a8ff 739 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 740 \
bogdanm 0:9b334a45a8ff 741 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T20_CC2) || \
bogdanm 0:9b334a45a8ff 742 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T20_CC3) || \
bogdanm 0:9b334a45a8ff 743 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T20_CC1) || \
bogdanm 0:9b334a45a8ff 744 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T20_TRGO) || \
bogdanm 0:9b334a45a8ff 745 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T20_TRGO2) || \
bogdanm 0:9b334a45a8ff 746 \
bogdanm 0:9b334a45a8ff 747 ((REGTRIG) == ADC_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 748 #endif /* STM32F303xE || STM32F398xx */
bogdanm 0:9b334a45a8ff 749
bogdanm 0:9b334a45a8ff 750 #endif /* STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 751 /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 752
bogdanm 0:9b334a45a8ff 753 #if defined(STM32F302xE) || \
bogdanm 0:9b334a45a8ff 754 defined(STM32F302xC)
bogdanm 0:9b334a45a8ff 755 /*!< List of external triggers with generic trigger name, independently of */
bogdanm 0:9b334a45a8ff 756 /* ADC target (caution: applies to other ADCs sharing the same common group), */
bogdanm 0:9b334a45a8ff 757 /* sorted by trigger name: */
bogdanm 0:9b334a45a8ff 758
bogdanm 0:9b334a45a8ff 759 /*!< External triggers of regular group for ADC1&ADC2 */
bogdanm 0:9b334a45a8ff 760 #define ADC_EXTERNALTRIGCONV_T1_CC1 ADC1_2_EXTERNALTRIG_T1_CC1
bogdanm 0:9b334a45a8ff 761 #define ADC_EXTERNALTRIGCONV_T1_CC2 ADC1_2_EXTERNALTRIG_T1_CC2
bogdanm 0:9b334a45a8ff 762 #define ADC_EXTERNALTRIGCONV_T1_CC3 ADC1_2_EXTERNALTRIG_T1_CC3
bogdanm 0:9b334a45a8ff 763 #define ADC_EXTERNALTRIGCONV_T1_TRGO ADC1_2_EXTERNALTRIG_T1_TRGO
bogdanm 0:9b334a45a8ff 764 #define ADC_EXTERNALTRIGCONV_T1_TRGO2 ADC1_2_EXTERNALTRIG_T1_TRGO2
bogdanm 0:9b334a45a8ff 765 #define ADC_EXTERNALTRIGCONV_T2_CC2 ADC1_2_EXTERNALTRIG_T2_CC2
bogdanm 0:9b334a45a8ff 766 #define ADC_EXTERNALTRIGCONV_T2_TRGO ADC1_2_EXTERNALTRIG_T2_TRGO
bogdanm 0:9b334a45a8ff 767 #define ADC_EXTERNALTRIGCONV_T3_CC4 ADC1_2_EXTERNALTRIG_T3_CC4
bogdanm 0:9b334a45a8ff 768 #define ADC_EXTERNALTRIGCONV_T3_TRGO ADC1_2_EXTERNALTRIG_T3_TRGO
bogdanm 0:9b334a45a8ff 769 #define ADC_EXTERNALTRIGCONV_T4_CC4 ADC1_2_EXTERNALTRIG_T4_CC4
bogdanm 0:9b334a45a8ff 770 #define ADC_EXTERNALTRIGCONV_T4_TRGO ADC1_2_EXTERNALTRIG_T4_TRGO
bogdanm 0:9b334a45a8ff 771 #define ADC_EXTERNALTRIGCONV_T6_TRGO ADC1_2_EXTERNALTRIG_T6_TRGO
bogdanm 0:9b334a45a8ff 772 #define ADC_EXTERNALTRIGCONV_T15_TRGO ADC1_2_EXTERNALTRIG_T15_TRGO
bogdanm 0:9b334a45a8ff 773 #define ADC_EXTERNALTRIGCONV_EXT_IT11 ADC1_2_EXTERNALTRIG_EXT_IT11
bogdanm 0:9b334a45a8ff 774 #define ADC_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 775
bogdanm 0:9b334a45a8ff 776 #if defined(STM32F302xE)
bogdanm 0:9b334a45a8ff 777 /* ADC external triggers specific to device STM302xE: mask to differentiate */
bogdanm 0:9b334a45a8ff 778 /* standard triggers from specific timer 20, needed for reallocation of */
bogdanm 0:9b334a45a8ff 779 /* triggers common to ADC1&2 and to avoind mixing with standard */
bogdanm 0:9b334a45a8ff 780 /* triggers without remap. */
bogdanm 0:9b334a45a8ff 781 #define ADC_EXTERNALTRIGCONV_T20_MASK 0x1000
bogdanm 0:9b334a45a8ff 782
bogdanm 0:9b334a45a8ff 783 /*!< List of external triggers specific to device STM302xE: using Timer20 */
bogdanm 0:9b334a45a8ff 784 /* with ADC trigger input remap. */
bogdanm 0:9b334a45a8ff 785 /* To remap ADC trigger from other timers/ExtLine to timer20: use macro */
bogdanm 0:9b334a45a8ff 786 /* " __HAL_REMAPADCTRIGGER_ENABLE(...) " with parameters described below: */
bogdanm 0:9b334a45a8ff 787
bogdanm 0:9b334a45a8ff 788 /*!< External triggers of regular group for ADC1&ADC2 only, specific to */
bogdanm 0:9b334a45a8ff 789 /* device STM302xE: : using Timer20 with ADC trigger input remap */
bogdanm 0:9b334a45a8ff 790 #define ADC_EXTERNALTRIGCONV_T20_CC2 ADC_EXTERNALTRIGCONV_T6_TRGO /*!< Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_EXT13) */
bogdanm 0:9b334a45a8ff 791 #define ADC_EXTERNALTRIGCONV_T20_CC3 ADC_EXTERNALTRIGCONV_T3_CC4 /*!< Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_EXT15) */
bogdanm 0:9b334a45a8ff 792 #endif /* STM32F302xE */
bogdanm 0:9b334a45a8ff 793
bogdanm 0:9b334a45a8ff 794 #if defined(STM32F302xE)
bogdanm 0:9b334a45a8ff 795 #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1) || \
bogdanm 0:9b334a45a8ff 796 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2) || \
bogdanm 0:9b334a45a8ff 797 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3) || \
bogdanm 0:9b334a45a8ff 798 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
bogdanm 0:9b334a45a8ff 799 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 800 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC4) || \
bogdanm 0:9b334a45a8ff 801 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \
bogdanm 0:9b334a45a8ff 802 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 803 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 804 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 805 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 806 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 807 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 808 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 809 \
bogdanm 0:9b334a45a8ff 810 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T20_CC2) || \
bogdanm 0:9b334a45a8ff 811 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T20_CC3) || \
bogdanm 0:9b334a45a8ff 812 \
bogdanm 0:9b334a45a8ff 813 ((REGTRIG) == ADC_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 814 #endif /* STM32F302xE */
bogdanm 0:9b334a45a8ff 815
bogdanm 0:9b334a45a8ff 816 #if defined(STM32F302xC)
bogdanm 0:9b334a45a8ff 817 #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1) || \
bogdanm 0:9b334a45a8ff 818 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2) || \
bogdanm 0:9b334a45a8ff 819 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3) || \
bogdanm 0:9b334a45a8ff 820 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
bogdanm 0:9b334a45a8ff 821 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 822 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC4) || \
bogdanm 0:9b334a45a8ff 823 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \
bogdanm 0:9b334a45a8ff 824 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 825 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 826 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 827 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 828 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 829 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 830 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 831 \
bogdanm 0:9b334a45a8ff 832 ((REGTRIG) == ADC_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 833 #endif /* STM32F302xC */
bogdanm 0:9b334a45a8ff 834
bogdanm 0:9b334a45a8ff 835 #endif /* STM32F302xE || */
bogdanm 0:9b334a45a8ff 836 /* STM32F302xC */
bogdanm 0:9b334a45a8ff 837
bogdanm 0:9b334a45a8ff 838 #if defined(STM32F303x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 839 /*!< List of external triggers with generic trigger name, independently of */
bogdanm 0:9b334a45a8ff 840 /* ADC target (caution: applies to other ADCs sharing the same common group), */
bogdanm 0:9b334a45a8ff 841 /* sorted by trigger name: */
bogdanm 0:9b334a45a8ff 842
bogdanm 0:9b334a45a8ff 843 /*!< External triggers of regular group for ADC1&ADC2 */
bogdanm 0:9b334a45a8ff 844 #define ADC_EXTERNALTRIGCONV_T1_CC1 ADC1_2_EXTERNALTRIG_T1_CC1
bogdanm 0:9b334a45a8ff 845 #define ADC_EXTERNALTRIGCONV_T1_CC2 ADC1_2_EXTERNALTRIG_T1_CC2
bogdanm 0:9b334a45a8ff 846 #define ADC_EXTERNALTRIGCONV_T1_CC3 ADC1_2_EXTERNALTRIG_T1_CC3
bogdanm 0:9b334a45a8ff 847 #define ADC_EXTERNALTRIGCONV_T1_TRGO ADC1_2_EXTERNALTRIG_T1_TRGO
bogdanm 0:9b334a45a8ff 848 #define ADC_EXTERNALTRIGCONV_T1_TRGO2 ADC1_2_EXTERNALTRIG_T1_TRGO2
bogdanm 0:9b334a45a8ff 849 #define ADC_EXTERNALTRIGCONV_T2_CC2 ADC1_2_EXTERNALTRIG_T2_CC2
bogdanm 0:9b334a45a8ff 850 #define ADC_EXTERNALTRIGCONV_T2_TRGO ADC1_2_EXTERNALTRIG_T2_TRGO
bogdanm 0:9b334a45a8ff 851 #define ADC_EXTERNALTRIGCONV_T3_CC4 ADC1_2_EXTERNALTRIG_T3_CC4
bogdanm 0:9b334a45a8ff 852 #define ADC_EXTERNALTRIGCONV_T3_TRGO ADC1_2_EXTERNALTRIG_T3_TRGO
bogdanm 0:9b334a45a8ff 853 #define ADC_EXTERNALTRIGCONV_T4_CC4 ADC1_2_EXTERNALTRIG_T4_CC4
bogdanm 0:9b334a45a8ff 854 #define ADC_EXTERNALTRIGCONV_T4_TRGO ADC1_2_EXTERNALTRIG_T4_TRGO
bogdanm 0:9b334a45a8ff 855 #define ADC_EXTERNALTRIGCONV_T8_TRGO ADC1_2_EXTERNALTRIG_T8_TRGO
bogdanm 0:9b334a45a8ff 856 #define ADC_EXTERNALTRIGCONV_T8_TRGO2 ADC1_2_EXTERNALTRIG_T8_TRGO2
bogdanm 0:9b334a45a8ff 857 #define ADC_EXTERNALTRIGCONV_T6_TRGO ADC1_2_EXTERNALTRIG_T6_TRGO
bogdanm 0:9b334a45a8ff 858 #define ADC_EXTERNALTRIGCONV_T15_TRGO ADC1_2_EXTERNALTRIG_T15_TRGO
bogdanm 0:9b334a45a8ff 859 #define ADC_EXTERNALTRIGCONV_EXT_IT11 ADC1_2_EXTERNALTRIG_EXT_IT11
bogdanm 0:9b334a45a8ff 860 #define ADC_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 861
bogdanm 0:9b334a45a8ff 862 #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1) || \
bogdanm 0:9b334a45a8ff 863 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2) || \
bogdanm 0:9b334a45a8ff 864 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3) || \
bogdanm 0:9b334a45a8ff 865 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
bogdanm 0:9b334a45a8ff 866 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 867 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC4) || \
bogdanm 0:9b334a45a8ff 868 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \
bogdanm 0:9b334a45a8ff 869 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_TRGO) || \
bogdanm 0:9b334a45a8ff 870 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_TRGO2) || \
bogdanm 0:9b334a45a8ff 871 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 872 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 873 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 874 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 875 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 876 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 877 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 878 \
bogdanm 0:9b334a45a8ff 879 ((REGTRIG) == ADC_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 880 #endif /* STM32F303x8 || STM32F328xx */
bogdanm 0:9b334a45a8ff 881
bogdanm 0:9b334a45a8ff 882 #if defined(STM32F334x8)
bogdanm 0:9b334a45a8ff 883 /*!< List of external triggers with generic trigger name, independently of */
bogdanm 0:9b334a45a8ff 884 /* ADC target (caution: applies to other ADCs sharing the same common group), */
bogdanm 0:9b334a45a8ff 885 /* sorted by trigger name: */
bogdanm 0:9b334a45a8ff 886
bogdanm 0:9b334a45a8ff 887 /*!< External triggers of regular group for ADC1&ADC2 */
bogdanm 0:9b334a45a8ff 888 #define ADC_EXTERNALTRIGCONV_T1_CC1 ADC1_2_EXTERNALTRIG_T1_CC1
bogdanm 0:9b334a45a8ff 889 #define ADC_EXTERNALTRIGCONV_T1_CC2 ADC1_2_EXTERNALTRIG_T1_CC2
bogdanm 0:9b334a45a8ff 890 #define ADC_EXTERNALTRIGCONV_T1_CC3 ADC1_2_EXTERNALTRIG_T1_CC3
bogdanm 0:9b334a45a8ff 891 #define ADC_EXTERNALTRIGCONV_T1_TRGO ADC1_2_EXTERNALTRIG_T1_TRGO
bogdanm 0:9b334a45a8ff 892 #define ADC_EXTERNALTRIGCONV_T1_TRGO2 ADC1_2_EXTERNALTRIG_T1_TRGO2
bogdanm 0:9b334a45a8ff 893 #define ADC_EXTERNALTRIGCONV_T2_CC2 ADC1_2_EXTERNALTRIG_T2_CC2
bogdanm 0:9b334a45a8ff 894 #define ADC_EXTERNALTRIGCONV_T2_TRGO ADC1_2_EXTERNALTRIG_T2_TRGO
bogdanm 0:9b334a45a8ff 895 #define ADC_EXTERNALTRIGCONV_T3_CC4 ADC1_2_EXTERNALTRIG_T3_CC4
bogdanm 0:9b334a45a8ff 896 #define ADC_EXTERNALTRIGCONV_T3_TRGO ADC1_2_EXTERNALTRIG_T3_TRGO
bogdanm 0:9b334a45a8ff 897 #define ADC_EXTERNALTRIGCONV_T6_TRGO ADC1_2_EXTERNALTRIG_T6_TRGO
bogdanm 0:9b334a45a8ff 898 #define ADC_EXTERNALTRIGCONV_T15_TRGO ADC1_2_EXTERNALTRIG_T15_TRGO
bogdanm 0:9b334a45a8ff 899 #define ADC_EXTERNALTRIGCONVHRTIM_TRG1 ADC1_2_EXTERNALTRIG_HRTIM_TRG1
bogdanm 0:9b334a45a8ff 900 #define ADC_EXTERNALTRIGCONVHRTIM_TRG3 ADC1_2_EXTERNALTRIG_HRTIM_TRG3
bogdanm 0:9b334a45a8ff 901 #define ADC_EXTERNALTRIGCONV_EXT_IT11 ADC1_2_EXTERNALTRIG_EXT_IT11
bogdanm 0:9b334a45a8ff 902 #define ADC_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 903
bogdanm 0:9b334a45a8ff 904 #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1) || \
bogdanm 0:9b334a45a8ff 905 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2) || \
bogdanm 0:9b334a45a8ff 906 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3) || \
bogdanm 0:9b334a45a8ff 907 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
bogdanm 0:9b334a45a8ff 908 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 909 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \
bogdanm 0:9b334a45a8ff 910 ((REGTRIG) == ADC_EXTERNALTRIGCONVHRTIM_TRG1) || \
bogdanm 0:9b334a45a8ff 911 ((REGTRIG) == ADC_EXTERNALTRIGCONVHRTIM_TRG3) || \
bogdanm 0:9b334a45a8ff 912 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 913 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 914 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 915 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 916 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 917 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 918 \
bogdanm 0:9b334a45a8ff 919 ((REGTRIG) == ADC_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 920 #endif /* STM32F334x8 */
bogdanm 0:9b334a45a8ff 921
bogdanm 0:9b334a45a8ff 922 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 923 /* List of external triggers with generic trigger name, sorted by trigger */
bogdanm 0:9b334a45a8ff 924 /* name: */
bogdanm 0:9b334a45a8ff 925
bogdanm 0:9b334a45a8ff 926 /* External triggers of regular group for ADC1 */
bogdanm 0:9b334a45a8ff 927 #define ADC_EXTERNALTRIGCONV_T1_CC1 ADC1_EXTERNALTRIG_T1_CC1
bogdanm 0:9b334a45a8ff 928 #define ADC_EXTERNALTRIGCONV_T1_CC2 ADC1_EXTERNALTRIG_T1_CC2
bogdanm 0:9b334a45a8ff 929 #define ADC_EXTERNALTRIGCONV_T1_CC3 ADC1_EXTERNALTRIG_T1_CC3
bogdanm 0:9b334a45a8ff 930 #define ADC_EXTERNALTRIGCONV_EXT_IT11 ADC1_EXTERNALTRIG_EXT_IT11
bogdanm 0:9b334a45a8ff 931 #define ADC_EXTERNALTRIGCONV_T1_TRGO ADC1_EXTERNALTRIG_T1_TRGO
bogdanm 0:9b334a45a8ff 932 #define ADC_EXTERNALTRIGCONV_T1_TRGO2 ADC1_EXTERNALTRIG_T1_TRGO2
bogdanm 0:9b334a45a8ff 933 #define ADC_EXTERNALTRIGCONV_T2_TRGO ADC1_EXTERNALTRIG_T2_TRGO
bogdanm 0:9b334a45a8ff 934 #define ADC_EXTERNALTRIGCONV_T6_TRGO ADC1_EXTERNALTRIG_T6_TRGO
bogdanm 0:9b334a45a8ff 935 #define ADC_EXTERNALTRIGCONV_T15_TRGO ADC1_EXTERNALTRIG_T15_TRGO
bogdanm 0:9b334a45a8ff 936 #define ADC_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 937
bogdanm 0:9b334a45a8ff 938 #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1) || \
bogdanm 0:9b334a45a8ff 939 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2) || \
bogdanm 0:9b334a45a8ff 940 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3) || \
bogdanm 0:9b334a45a8ff 941 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \
bogdanm 0:9b334a45a8ff 942 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 943 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 944 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 945 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 946 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 947 ((REGTRIG) == ADC_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 948 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 949 /**
bogdanm 0:9b334a45a8ff 950 * @}
bogdanm 0:9b334a45a8ff 951 */
bogdanm 0:9b334a45a8ff 952
bogdanm 0:9b334a45a8ff 953 /** @defgroup ADCEx_Internal_HAL_driver_Ext_trig_src_Regular ADC Extended External trigger selection for regular group (Used Internally)
bogdanm 0:9b334a45a8ff 954 * @{
bogdanm 0:9b334a45a8ff 955 */
bogdanm 0:9b334a45a8ff 956 #if defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 957 defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 958 /* List of external triggers for common groups ADC1&ADC2 and/or ADC3&ADC4: */
bogdanm 0:9b334a45a8ff 959 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 960
bogdanm 0:9b334a45a8ff 961 /* External triggers of regular group for ADC1 & ADC2 */
bogdanm 0:9b334a45a8ff 962 #define ADC1_2_EXTERNALTRIG_T1_CC1 ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 963 #define ADC1_2_EXTERNALTRIG_T1_CC2 ((uint32_t)ADC_CFGR_EXTSEL_0)
bogdanm 0:9b334a45a8ff 964 #define ADC1_2_EXTERNALTRIG_T1_CC3 ((uint32_t)ADC_CFGR_EXTSEL_1)
bogdanm 0:9b334a45a8ff 965 #define ADC1_2_EXTERNALTRIG_T2_CC2 ((uint32_t)(ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 966 #define ADC1_2_EXTERNALTRIG_T3_TRGO ((uint32_t)ADC_CFGR_EXTSEL_2)
bogdanm 0:9b334a45a8ff 967 #define ADC1_2_EXTERNALTRIG_T4_CC4 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 968 #define ADC1_2_EXTERNALTRIG_EXT_IT11 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 969 #define ADC1_2_EXTERNALTRIG_T8_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 970 #define ADC1_2_EXTERNALTRIG_T8_TRGO2 ((uint32_t) ADC_CFGR_EXTSEL_3)
bogdanm 0:9b334a45a8ff 971 #define ADC1_2_EXTERNALTRIG_T1_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 972 #define ADC1_2_EXTERNALTRIG_T1_TRGO2 ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 973 #define ADC1_2_EXTERNALTRIG_T2_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 974 #define ADC1_2_EXTERNALTRIG_T4_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2))
bogdanm 0:9b334a45a8ff 975 #define ADC1_2_EXTERNALTRIG_T6_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 976 #define ADC1_2_EXTERNALTRIG_T15_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 977 #define ADC1_2_EXTERNALTRIG_T3_CC4 ((uint32_t)ADC_CFGR_EXTSEL)
bogdanm 0:9b334a45a8ff 978
bogdanm 0:9b334a45a8ff 979 /* External triggers of regular group for ADC3 & ADC4 */
bogdanm 0:9b334a45a8ff 980 #define ADC3_4_EXTERNALTRIG_T3_CC1 ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 981 #define ADC3_4_EXTERNALTRIG_T2_CC3 ((uint32_t)ADC_CFGR_EXTSEL_0)
bogdanm 0:9b334a45a8ff 982 #define ADC3_4_EXTERNALTRIG_T1_CC3 ((uint32_t)ADC_CFGR_EXTSEL_1)
bogdanm 0:9b334a45a8ff 983 #define ADC3_4_EXTERNALTRIG_T8_CC1 ((uint32_t)(ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 984 #define ADC3_4_EXTERNALTRIG_T8_TRGO ((uint32_t)ADC_CFGR_EXTSEL_2)
bogdanm 0:9b334a45a8ff 985 #define ADC3_4_EXTERNALTRIG_EXT_IT2 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 986 #define ADC3_4_EXTERNALTRIG_T4_CC1 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 987 #define ADC3_4_EXTERNALTRIG_T2_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 988 #define ADC3_4_EXTERNALTRIG_T8_TRGO2 ((uint32_t)ADC_CFGR_EXTSEL_3)
bogdanm 0:9b334a45a8ff 989 #define ADC3_4_EXTERNALTRIG_T1_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 990 #define ADC3_4_EXTERNALTRIG_T1_TRGO2 ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 991 #define ADC3_4_EXTERNALTRIG_T3_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 992 #define ADC3_4_EXTERNALTRIG_T4_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2))
bogdanm 0:9b334a45a8ff 993 #define ADC3_4_EXTERNALTRIG_T7_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 994 #define ADC3_4_EXTERNALTRIG_T15_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 995 #define ADC3_4_EXTERNALTRIG_T2_CC1 ((uint32_t)ADC_CFGR_EXTSEL)
bogdanm 0:9b334a45a8ff 996 #endif /* STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 997 /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 998
bogdanm 0:9b334a45a8ff 999 #if defined(STM32F302xE) || \
bogdanm 0:9b334a45a8ff 1000 defined(STM32F302xC)
bogdanm 0:9b334a45a8ff 1001 /* List of external triggers of common group ADC1&ADC2: */
bogdanm 0:9b334a45a8ff 1002 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 1003 #define ADC1_2_EXTERNALTRIG_T1_CC1 ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1004 #define ADC1_2_EXTERNALTRIG_T1_CC2 ((uint32_t)ADC_CFGR_EXTSEL_0)
bogdanm 0:9b334a45a8ff 1005 #define ADC1_2_EXTERNALTRIG_T1_CC3 ((uint32_t)ADC_CFGR_EXTSEL_1)
bogdanm 0:9b334a45a8ff 1006 #define ADC1_2_EXTERNALTRIG_T1_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1007 #define ADC1_2_EXTERNALTRIG_T1_TRGO2 ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1008 #define ADC1_2_EXTERNALTRIG_T2_CC2 ((uint32_t)(ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1009 #define ADC1_2_EXTERNALTRIG_T2_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1010 #define ADC1_2_EXTERNALTRIG_T3_CC4 ((uint32_t)ADC_CFGR_EXTSEL)
bogdanm 0:9b334a45a8ff 1011 #define ADC1_2_EXTERNALTRIG_T3_TRGO ((uint32_t)ADC_CFGR_EXTSEL_2)
bogdanm 0:9b334a45a8ff 1012 #define ADC1_2_EXTERNALTRIG_T4_CC4 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1013 #define ADC1_2_EXTERNALTRIG_T4_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2))
bogdanm 0:9b334a45a8ff 1014 #define ADC1_2_EXTERNALTRIG_T6_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1015 #define ADC1_2_EXTERNALTRIG_T15_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1016 #define ADC1_2_EXTERNALTRIG_EXT_IT11 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1017 #endif /* STM32F302xE || */
bogdanm 0:9b334a45a8ff 1018 /* STM32F302xC */
bogdanm 0:9b334a45a8ff 1019
bogdanm 0:9b334a45a8ff 1020 #if defined(STM32F303x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 1021 /* List of external triggers of common group ADC1&ADC2: */
bogdanm 0:9b334a45a8ff 1022 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 1023 #define ADC1_2_EXTERNALTRIG_T1_CC1 ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1024 #define ADC1_2_EXTERNALTRIG_T1_CC2 ((uint32_t)ADC_CFGR_EXTSEL_0)
bogdanm 0:9b334a45a8ff 1025 #define ADC1_2_EXTERNALTRIG_T1_CC3 ((uint32_t)ADC_CFGR_EXTSEL_1)
bogdanm 0:9b334a45a8ff 1026 #define ADC1_2_EXTERNALTRIG_T2_CC2 ((uint32_t)(ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1027 #define ADC1_2_EXTERNALTRIG_T3_TRGO ((uint32_t)ADC_CFGR_EXTSEL_2)
bogdanm 0:9b334a45a8ff 1028 #define ADC1_2_EXTERNALTRIG_T4_CC4 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1029 #define ADC1_2_EXTERNALTRIG_EXT_IT11 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1030 #define ADC1_2_EXTERNALTRIG_T8_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1031 #define ADC1_2_EXTERNALTRIG_T8_TRGO2 ((uint32_t) ADC_CFGR_EXTSEL_3)
bogdanm 0:9b334a45a8ff 1032 #define ADC1_2_EXTERNALTRIG_T1_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1033 #define ADC1_2_EXTERNALTRIG_T1_TRGO2 ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1034 #define ADC1_2_EXTERNALTRIG_T2_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1035 #define ADC1_2_EXTERNALTRIG_T4_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2))
bogdanm 0:9b334a45a8ff 1036 #define ADC1_2_EXTERNALTRIG_T6_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1037 #define ADC1_2_EXTERNALTRIG_T15_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1038 #define ADC1_2_EXTERNALTRIG_T3_CC4 ((uint32_t)ADC_CFGR_EXTSEL)
bogdanm 0:9b334a45a8ff 1039 #endif /* STM32F303x8 || STM32F328xx */
bogdanm 0:9b334a45a8ff 1040
bogdanm 0:9b334a45a8ff 1041 #if defined(STM32F334x8)
bogdanm 0:9b334a45a8ff 1042 /* List of external triggers of common group ADC1&ADC2: */
bogdanm 0:9b334a45a8ff 1043 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 1044 #define ADC1_2_EXTERNALTRIG_T1_CC1 ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1045 #define ADC1_2_EXTERNALTRIG_T1_CC2 ((uint32_t)ADC_CFGR_EXTSEL_0)
bogdanm 0:9b334a45a8ff 1046 #define ADC1_2_EXTERNALTRIG_T1_CC3 ((uint32_t)ADC_CFGR_EXTSEL_1)
bogdanm 0:9b334a45a8ff 1047 #define ADC1_2_EXTERNALTRIG_T2_CC2 ((uint32_t)(ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1048 #define ADC1_2_EXTERNALTRIG_T3_TRGO ((uint32_t)ADC_CFGR_EXTSEL_2)
bogdanm 0:9b334a45a8ff 1049 #define ADC1_2_EXTERNALTRIG_EXT_IT11 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1050 #define ADC1_2_EXTERNALTRIG_HRTIM_TRG1 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1051 #define ADC1_2_EXTERNALTRIG_HRTIM_TRG3 ((uint32_t) ADC_CFGR_EXTSEL_3)
bogdanm 0:9b334a45a8ff 1052 #define ADC1_2_EXTERNALTRIG_T1_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1053 #define ADC1_2_EXTERNALTRIG_T1_TRGO2 ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1054 #define ADC1_2_EXTERNALTRIG_T2_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1055 #define ADC1_2_EXTERNALTRIG_T6_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1056 #define ADC1_2_EXTERNALTRIG_T15_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1057 #define ADC1_2_EXTERNALTRIG_T3_CC4 ((uint32_t)ADC_CFGR_EXTSEL)
bogdanm 0:9b334a45a8ff 1058 #endif /* STM32F334x8 */
bogdanm 0:9b334a45a8ff 1059
bogdanm 0:9b334a45a8ff 1060 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 1061 /* List of external triggers of regular group for ADC1: */
bogdanm 0:9b334a45a8ff 1062 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 1063 #define ADC1_EXTERNALTRIG_T1_CC1 ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1064 #define ADC1_EXTERNALTRIG_T1_CC2 ((uint32_t)ADC_CFGR_EXTSEL_0)
bogdanm 0:9b334a45a8ff 1065 #define ADC1_EXTERNALTRIG_T1_CC3 ((uint32_t)ADC_CFGR_EXTSEL_1)
bogdanm 0:9b334a45a8ff 1066 #define ADC1_EXTERNALTRIG_EXT_IT11 ((uint32_t)(ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1067 #define ADC1_EXTERNALTRIG_T1_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1068 #define ADC1_EXTERNALTRIG_T1_TRGO2 ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1069 #define ADC1_EXTERNALTRIG_T2_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1070 #define ADC1_EXTERNALTRIG_T6_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0))
bogdanm 0:9b334a45a8ff 1071 #define ADC1_EXTERNALTRIG_T15_TRGO ((uint32_t)(ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1))
bogdanm 0:9b334a45a8ff 1072 #define ADC_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1073 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 1074 /**
bogdanm 0:9b334a45a8ff 1075 * @}
bogdanm 0:9b334a45a8ff 1076 */
bogdanm 0:9b334a45a8ff 1077
bogdanm 0:9b334a45a8ff 1078
bogdanm 0:9b334a45a8ff 1079 /** @defgroup ADCEx_EOCSelection ADC Extended End of Regular Sequence/Conversion
bogdanm 0:9b334a45a8ff 1080 * @{
bogdanm 0:9b334a45a8ff 1081 */
bogdanm 0:9b334a45a8ff 1082 #define EOC_SINGLE_CONV ((uint32_t) ADC_ISR_EOC)
bogdanm 0:9b334a45a8ff 1083 #define EOC_SEQ_CONV ((uint32_t) ADC_ISR_EOS)
bogdanm 0:9b334a45a8ff 1084 #define EOC_SINGLE_SEQ_CONV ((uint32_t)(ADC_ISR_EOC | ADC_ISR_EOS)) /*!< reserved for future use */
bogdanm 0:9b334a45a8ff 1085
bogdanm 0:9b334a45a8ff 1086 #define IS_ADC_EOC_SELECTION(EOC_SELECTION) (((EOC_SELECTION) == EOC_SINGLE_CONV) || \
bogdanm 0:9b334a45a8ff 1087 ((EOC_SELECTION) == EOC_SEQ_CONV) || \
bogdanm 0:9b334a45a8ff 1088 ((EOC_SELECTION) == EOC_SINGLE_SEQ_CONV) )
bogdanm 0:9b334a45a8ff 1089 /**
bogdanm 0:9b334a45a8ff 1090 * @}
bogdanm 0:9b334a45a8ff 1091 */
bogdanm 0:9b334a45a8ff 1092
bogdanm 0:9b334a45a8ff 1093 /** @defgroup ADCEx_Overrun ADC Extended overrun
bogdanm 0:9b334a45a8ff 1094 * @{
bogdanm 0:9b334a45a8ff 1095 */
bogdanm 0:9b334a45a8ff 1096 #define OVR_DATA_OVERWRITTEN ((uint32_t)0x00000000) /*!< Default setting, to be used for compatibility with other STM32 devices */
bogdanm 0:9b334a45a8ff 1097 #define OVR_DATA_PRESERVED ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1098
bogdanm 0:9b334a45a8ff 1099 #define IS_ADC_OVERRUN(OVR) (((OVR) == OVR_DATA_PRESERVED) || \
bogdanm 0:9b334a45a8ff 1100 ((OVR) == OVR_DATA_OVERWRITTEN) )
bogdanm 0:9b334a45a8ff 1101 /**
bogdanm 0:9b334a45a8ff 1102 * @}
bogdanm 0:9b334a45a8ff 1103 */
bogdanm 0:9b334a45a8ff 1104
bogdanm 0:9b334a45a8ff 1105 /** @defgroup ADCEx_channels ADC Extended Channels
bogdanm 0:9b334a45a8ff 1106 * @{
bogdanm 0:9b334a45a8ff 1107 */
bogdanm 0:9b334a45a8ff 1108 /* Note: Depending on devices, some channels may not be available on package */
bogdanm 0:9b334a45a8ff 1109 /* pins. Refer to device datasheet for channels availability. */
bogdanm 0:9b334a45a8ff 1110 #define ADC_CHANNEL_1 ((uint32_t)(ADC_SQR3_SQ10_0))
bogdanm 0:9b334a45a8ff 1111 #define ADC_CHANNEL_2 ((uint32_t)(ADC_SQR3_SQ10_1))
bogdanm 0:9b334a45a8ff 1112 #define ADC_CHANNEL_3 ((uint32_t)(ADC_SQR3_SQ10_1 | ADC_SQR3_SQ10_0))
bogdanm 0:9b334a45a8ff 1113 #define ADC_CHANNEL_4 ((uint32_t)(ADC_SQR3_SQ10_2))
bogdanm 0:9b334a45a8ff 1114 #define ADC_CHANNEL_5 ((uint32_t)(ADC_SQR3_SQ10_2 | ADC_SQR3_SQ10_0))
bogdanm 0:9b334a45a8ff 1115 #define ADC_CHANNEL_6 ((uint32_t)(ADC_SQR3_SQ10_2 | ADC_SQR3_SQ10_1))
bogdanm 0:9b334a45a8ff 1116 #define ADC_CHANNEL_7 ((uint32_t)(ADC_SQR3_SQ10_2 | ADC_SQR3_SQ10_1 | ADC_SQR3_SQ10_0))
bogdanm 0:9b334a45a8ff 1117 #define ADC_CHANNEL_8 ((uint32_t)(ADC_SQR3_SQ10_3))
bogdanm 0:9b334a45a8ff 1118 #define ADC_CHANNEL_9 ((uint32_t)(ADC_SQR3_SQ10_3 | ADC_SQR3_SQ10_0))
bogdanm 0:9b334a45a8ff 1119 #define ADC_CHANNEL_10 ((uint32_t)(ADC_SQR3_SQ10_3 | ADC_SQR3_SQ10_1))
bogdanm 0:9b334a45a8ff 1120 #define ADC_CHANNEL_11 ((uint32_t)(ADC_SQR3_SQ10_3 | ADC_SQR3_SQ10_1 | ADC_SQR3_SQ10_0))
bogdanm 0:9b334a45a8ff 1121 #define ADC_CHANNEL_12 ((uint32_t)(ADC_SQR3_SQ10_3 | ADC_SQR3_SQ10_2))
bogdanm 0:9b334a45a8ff 1122 #define ADC_CHANNEL_13 ((uint32_t)(ADC_SQR3_SQ10_3 | ADC_SQR3_SQ10_2 | ADC_SQR3_SQ10_0))
bogdanm 0:9b334a45a8ff 1123 #define ADC_CHANNEL_14 ((uint32_t)(ADC_SQR3_SQ10_3 | ADC_SQR3_SQ10_2 | ADC_SQR3_SQ10_1))
bogdanm 0:9b334a45a8ff 1124 #define ADC_CHANNEL_15 ((uint32_t)(ADC_SQR3_SQ10_3 | ADC_SQR3_SQ10_2 | ADC_SQR3_SQ10_1 | ADC_SQR3_SQ10_0))
bogdanm 0:9b334a45a8ff 1125 #define ADC_CHANNEL_16 ((uint32_t)(ADC_SQR3_SQ10_4))
bogdanm 0:9b334a45a8ff 1126 #define ADC_CHANNEL_17 ((uint32_t)(ADC_SQR3_SQ10_4 | ADC_SQR3_SQ10_0))
bogdanm 0:9b334a45a8ff 1127 #define ADC_CHANNEL_18 ((uint32_t)(ADC_SQR3_SQ10_4 | ADC_SQR3_SQ10_1))
bogdanm 0:9b334a45a8ff 1128
bogdanm 0:9b334a45a8ff 1129 /* Note: Vopamp1, TempSensor and Vbat internal channels available on ADC1 only */
bogdanm 0:9b334a45a8ff 1130 #define ADC_CHANNEL_VOPAMP1 ADC_CHANNEL_15
bogdanm 0:9b334a45a8ff 1131 #define ADC_CHANNEL_TEMPSENSOR ADC_CHANNEL_16
bogdanm 0:9b334a45a8ff 1132 #define ADC_CHANNEL_VBAT ADC_CHANNEL_17
bogdanm 0:9b334a45a8ff 1133
bogdanm 0:9b334a45a8ff 1134 /* Note: Vopamp2/3/4 internal channels available on ADC2/3/4 respectively */
bogdanm 0:9b334a45a8ff 1135 #define ADC_CHANNEL_VOPAMP2 ADC_CHANNEL_17
bogdanm 0:9b334a45a8ff 1136 #define ADC_CHANNEL_VOPAMP3 ADC_CHANNEL_17
bogdanm 0:9b334a45a8ff 1137 #define ADC_CHANNEL_VOPAMP4 ADC_CHANNEL_17
bogdanm 0:9b334a45a8ff 1138
bogdanm 0:9b334a45a8ff 1139 /* Note: VrefInt internal channels available on all ADCs, but only */
bogdanm 0:9b334a45a8ff 1140 /* one ADC is allowed to be connected to VrefInt at the same time. */
bogdanm 0:9b334a45a8ff 1141 #define ADC_CHANNEL_VREFINT ((uint32_t)ADC_CHANNEL_18)
bogdanm 0:9b334a45a8ff 1142
bogdanm 0:9b334a45a8ff 1143 #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_CHANNEL_1) || \
bogdanm 0:9b334a45a8ff 1144 ((CHANNEL) == ADC_CHANNEL_2) || \
bogdanm 0:9b334a45a8ff 1145 ((CHANNEL) == ADC_CHANNEL_3) || \
bogdanm 0:9b334a45a8ff 1146 ((CHANNEL) == ADC_CHANNEL_4) || \
bogdanm 0:9b334a45a8ff 1147 ((CHANNEL) == ADC_CHANNEL_5) || \
bogdanm 0:9b334a45a8ff 1148 ((CHANNEL) == ADC_CHANNEL_6) || \
bogdanm 0:9b334a45a8ff 1149 ((CHANNEL) == ADC_CHANNEL_7) || \
bogdanm 0:9b334a45a8ff 1150 ((CHANNEL) == ADC_CHANNEL_8) || \
bogdanm 0:9b334a45a8ff 1151 ((CHANNEL) == ADC_CHANNEL_9) || \
bogdanm 0:9b334a45a8ff 1152 ((CHANNEL) == ADC_CHANNEL_10) || \
bogdanm 0:9b334a45a8ff 1153 ((CHANNEL) == ADC_CHANNEL_11) || \
bogdanm 0:9b334a45a8ff 1154 ((CHANNEL) == ADC_CHANNEL_12) || \
bogdanm 0:9b334a45a8ff 1155 ((CHANNEL) == ADC_CHANNEL_13) || \
bogdanm 0:9b334a45a8ff 1156 ((CHANNEL) == ADC_CHANNEL_14) || \
bogdanm 0:9b334a45a8ff 1157 ((CHANNEL) == ADC_CHANNEL_15) || \
bogdanm 0:9b334a45a8ff 1158 ((CHANNEL) == ADC_CHANNEL_TEMPSENSOR) || \
bogdanm 0:9b334a45a8ff 1159 ((CHANNEL) == ADC_CHANNEL_VBAT) || \
bogdanm 0:9b334a45a8ff 1160 ((CHANNEL) == ADC_CHANNEL_VREFINT) || \
bogdanm 0:9b334a45a8ff 1161 ((CHANNEL) == ADC_CHANNEL_VOPAMP1) || \
bogdanm 0:9b334a45a8ff 1162 ((CHANNEL) == ADC_CHANNEL_VOPAMP2) || \
bogdanm 0:9b334a45a8ff 1163 ((CHANNEL) == ADC_CHANNEL_VOPAMP3) || \
bogdanm 0:9b334a45a8ff 1164 ((CHANNEL) == ADC_CHANNEL_VOPAMP4) )
bogdanm 0:9b334a45a8ff 1165
bogdanm 0:9b334a45a8ff 1166 #define IS_ADC_DIFF_CHANNEL(CHANNEL) (((CHANNEL) == ADC_CHANNEL_1) || \
bogdanm 0:9b334a45a8ff 1167 ((CHANNEL) == ADC_CHANNEL_2) || \
bogdanm 0:9b334a45a8ff 1168 ((CHANNEL) == ADC_CHANNEL_3) || \
bogdanm 0:9b334a45a8ff 1169 ((CHANNEL) == ADC_CHANNEL_4) || \
bogdanm 0:9b334a45a8ff 1170 ((CHANNEL) == ADC_CHANNEL_5) || \
bogdanm 0:9b334a45a8ff 1171 ((CHANNEL) == ADC_CHANNEL_6) || \
bogdanm 0:9b334a45a8ff 1172 ((CHANNEL) == ADC_CHANNEL_7) || \
bogdanm 0:9b334a45a8ff 1173 ((CHANNEL) == ADC_CHANNEL_8) || \
bogdanm 0:9b334a45a8ff 1174 ((CHANNEL) == ADC_CHANNEL_9) || \
bogdanm 0:9b334a45a8ff 1175 ((CHANNEL) == ADC_CHANNEL_10) || \
bogdanm 0:9b334a45a8ff 1176 ((CHANNEL) == ADC_CHANNEL_11) || \
bogdanm 0:9b334a45a8ff 1177 ((CHANNEL) == ADC_CHANNEL_12) || \
bogdanm 0:9b334a45a8ff 1178 ((CHANNEL) == ADC_CHANNEL_13) || \
bogdanm 0:9b334a45a8ff 1179 ((CHANNEL) == ADC_CHANNEL_14) )
bogdanm 0:9b334a45a8ff 1180
bogdanm 0:9b334a45a8ff 1181 /**
bogdanm 0:9b334a45a8ff 1182 * @}
bogdanm 0:9b334a45a8ff 1183 */
bogdanm 0:9b334a45a8ff 1184
bogdanm 0:9b334a45a8ff 1185 /** @defgroup ADCEx_sampling_times ADC Extended Sampling Times
bogdanm 0:9b334a45a8ff 1186 * @{
bogdanm 0:9b334a45a8ff 1187 */
bogdanm 0:9b334a45a8ff 1188 #define ADC_SAMPLETIME_1CYCLE_5 ((uint32_t)0x00000000) /*!< Sampling time 1.5 ADC clock cycle */
bogdanm 0:9b334a45a8ff 1189 #define ADC_SAMPLETIME_2CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10_0) /*!< Sampling time 2.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 1190 #define ADC_SAMPLETIME_4CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10_1) /*!< Sampling time 4.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 1191 #define ADC_SAMPLETIME_7CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP10_1 | ADC_SMPR2_SMP10_0)) /*!< Sampling time 7.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 1192 #define ADC_SAMPLETIME_19CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10_2) /*!< Sampling time 19.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 1193 #define ADC_SAMPLETIME_61CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_0)) /*!< Sampling time 61.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 1194 #define ADC_SAMPLETIME_181CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_1)) /*!< Sampling time 181.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 1195 #define ADC_SAMPLETIME_601CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10) /*!< Sampling time 601.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 1196
bogdanm 0:9b334a45a8ff 1197 #define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SAMPLETIME_1CYCLE_5) || \
bogdanm 0:9b334a45a8ff 1198 ((TIME) == ADC_SAMPLETIME_2CYCLES_5) || \
bogdanm 0:9b334a45a8ff 1199 ((TIME) == ADC_SAMPLETIME_4CYCLES_5) || \
bogdanm 0:9b334a45a8ff 1200 ((TIME) == ADC_SAMPLETIME_7CYCLES_5) || \
bogdanm 0:9b334a45a8ff 1201 ((TIME) == ADC_SAMPLETIME_19CYCLES_5) || \
bogdanm 0:9b334a45a8ff 1202 ((TIME) == ADC_SAMPLETIME_61CYCLES_5) || \
bogdanm 0:9b334a45a8ff 1203 ((TIME) == ADC_SAMPLETIME_181CYCLES_5) || \
bogdanm 0:9b334a45a8ff 1204 ((TIME) == ADC_SAMPLETIME_601CYCLES_5) )
bogdanm 0:9b334a45a8ff 1205 /**
bogdanm 0:9b334a45a8ff 1206 * @}
bogdanm 0:9b334a45a8ff 1207 */
bogdanm 0:9b334a45a8ff 1208
bogdanm 0:9b334a45a8ff 1209 /** @defgroup ADCEx_SingleDifferential ADC Extended Single-ended/Differential input mode
bogdanm 0:9b334a45a8ff 1210 * @{
bogdanm 0:9b334a45a8ff 1211 */
bogdanm 0:9b334a45a8ff 1212 #define ADC_SINGLE_ENDED ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1213 #define ADC_DIFFERENTIAL_ENDED ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1214
bogdanm 0:9b334a45a8ff 1215 #define IS_ADC_SINGLE_DIFFERENTIAL(SING_DIFF) (((SING_DIFF) == ADC_SINGLE_ENDED) || \
bogdanm 0:9b334a45a8ff 1216 ((SING_DIFF) == ADC_DIFFERENTIAL_ENDED) )
bogdanm 0:9b334a45a8ff 1217 /**
bogdanm 0:9b334a45a8ff 1218 * @}
bogdanm 0:9b334a45a8ff 1219 */
bogdanm 0:9b334a45a8ff 1220
bogdanm 0:9b334a45a8ff 1221 /** @defgroup ADCEx_OffsetNumber ADC Extended Offset Number
bogdanm 0:9b334a45a8ff 1222 * @{
bogdanm 0:9b334a45a8ff 1223 */
bogdanm 0:9b334a45a8ff 1224 #define ADC_OFFSET_NONE ((uint32_t)0x00)
bogdanm 0:9b334a45a8ff 1225 #define ADC_OFFSET_1 ((uint32_t)0x01)
bogdanm 0:9b334a45a8ff 1226 #define ADC_OFFSET_2 ((uint32_t)0x02)
bogdanm 0:9b334a45a8ff 1227 #define ADC_OFFSET_3 ((uint32_t)0x03)
bogdanm 0:9b334a45a8ff 1228 #define ADC_OFFSET_4 ((uint32_t)0x04)
bogdanm 0:9b334a45a8ff 1229
bogdanm 0:9b334a45a8ff 1230 #define IS_ADC_OFFSET_NUMBER(OFFSET_NUMBER) (((OFFSET_NUMBER) == ADC_OFFSET_NONE) || \
bogdanm 0:9b334a45a8ff 1231 ((OFFSET_NUMBER) == ADC_OFFSET_1) || \
bogdanm 0:9b334a45a8ff 1232 ((OFFSET_NUMBER) == ADC_OFFSET_2) || \
bogdanm 0:9b334a45a8ff 1233 ((OFFSET_NUMBER) == ADC_OFFSET_3) || \
bogdanm 0:9b334a45a8ff 1234 ((OFFSET_NUMBER) == ADC_OFFSET_4) )
bogdanm 0:9b334a45a8ff 1235 /**
bogdanm 0:9b334a45a8ff 1236 * @}
bogdanm 0:9b334a45a8ff 1237 */
bogdanm 0:9b334a45a8ff 1238
bogdanm 0:9b334a45a8ff 1239 /** @defgroup ADCEx_regular_rank ADC Extended Regular Channel Rank
bogdanm 0:9b334a45a8ff 1240 * @{
bogdanm 0:9b334a45a8ff 1241 */
bogdanm 0:9b334a45a8ff 1242 #define ADC_REGULAR_RANK_1 ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1243 #define ADC_REGULAR_RANK_2 ((uint32_t)0x00000002)
bogdanm 0:9b334a45a8ff 1244 #define ADC_REGULAR_RANK_3 ((uint32_t)0x00000003)
bogdanm 0:9b334a45a8ff 1245 #define ADC_REGULAR_RANK_4 ((uint32_t)0x00000004)
bogdanm 0:9b334a45a8ff 1246 #define ADC_REGULAR_RANK_5 ((uint32_t)0x00000005)
bogdanm 0:9b334a45a8ff 1247 #define ADC_REGULAR_RANK_6 ((uint32_t)0x00000006)
bogdanm 0:9b334a45a8ff 1248 #define ADC_REGULAR_RANK_7 ((uint32_t)0x00000007)
bogdanm 0:9b334a45a8ff 1249 #define ADC_REGULAR_RANK_8 ((uint32_t)0x00000008)
bogdanm 0:9b334a45a8ff 1250 #define ADC_REGULAR_RANK_9 ((uint32_t)0x00000009)
bogdanm 0:9b334a45a8ff 1251 #define ADC_REGULAR_RANK_10 ((uint32_t)0x0000000A)
bogdanm 0:9b334a45a8ff 1252 #define ADC_REGULAR_RANK_11 ((uint32_t)0x0000000B)
bogdanm 0:9b334a45a8ff 1253 #define ADC_REGULAR_RANK_12 ((uint32_t)0x0000000C)
bogdanm 0:9b334a45a8ff 1254 #define ADC_REGULAR_RANK_13 ((uint32_t)0x0000000D)
bogdanm 0:9b334a45a8ff 1255 #define ADC_REGULAR_RANK_14 ((uint32_t)0x0000000E)
bogdanm 0:9b334a45a8ff 1256 #define ADC_REGULAR_RANK_15 ((uint32_t)0x0000000F)
bogdanm 0:9b334a45a8ff 1257 #define ADC_REGULAR_RANK_16 ((uint32_t)0x00000010)
bogdanm 0:9b334a45a8ff 1258
bogdanm 0:9b334a45a8ff 1259 #define IS_ADC_REGULAR_RANK(CHANNEL) (((CHANNEL) == ADC_REGULAR_RANK_1 ) || \
bogdanm 0:9b334a45a8ff 1260 ((CHANNEL) == ADC_REGULAR_RANK_2 ) || \
bogdanm 0:9b334a45a8ff 1261 ((CHANNEL) == ADC_REGULAR_RANK_3 ) || \
bogdanm 0:9b334a45a8ff 1262 ((CHANNEL) == ADC_REGULAR_RANK_4 ) || \
bogdanm 0:9b334a45a8ff 1263 ((CHANNEL) == ADC_REGULAR_RANK_5 ) || \
bogdanm 0:9b334a45a8ff 1264 ((CHANNEL) == ADC_REGULAR_RANK_6 ) || \
bogdanm 0:9b334a45a8ff 1265 ((CHANNEL) == ADC_REGULAR_RANK_7 ) || \
bogdanm 0:9b334a45a8ff 1266 ((CHANNEL) == ADC_REGULAR_RANK_8 ) || \
bogdanm 0:9b334a45a8ff 1267 ((CHANNEL) == ADC_REGULAR_RANK_9 ) || \
bogdanm 0:9b334a45a8ff 1268 ((CHANNEL) == ADC_REGULAR_RANK_10) || \
bogdanm 0:9b334a45a8ff 1269 ((CHANNEL) == ADC_REGULAR_RANK_11) || \
bogdanm 0:9b334a45a8ff 1270 ((CHANNEL) == ADC_REGULAR_RANK_12) || \
bogdanm 0:9b334a45a8ff 1271 ((CHANNEL) == ADC_REGULAR_RANK_13) || \
bogdanm 0:9b334a45a8ff 1272 ((CHANNEL) == ADC_REGULAR_RANK_14) || \
bogdanm 0:9b334a45a8ff 1273 ((CHANNEL) == ADC_REGULAR_RANK_15) || \
bogdanm 0:9b334a45a8ff 1274 ((CHANNEL) == ADC_REGULAR_RANK_16) )
bogdanm 0:9b334a45a8ff 1275 /**
bogdanm 0:9b334a45a8ff 1276 * @}
bogdanm 0:9b334a45a8ff 1277 */
bogdanm 0:9b334a45a8ff 1278
bogdanm 0:9b334a45a8ff 1279 /** @defgroup ADCEx_injected_rank ADC Extended Injected Channel Rank
bogdanm 0:9b334a45a8ff 1280 * @{
bogdanm 0:9b334a45a8ff 1281 */
bogdanm 0:9b334a45a8ff 1282 #define ADC_INJECTED_RANK_1 ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1283 #define ADC_INJECTED_RANK_2 ((uint32_t)0x00000002)
bogdanm 0:9b334a45a8ff 1284 #define ADC_INJECTED_RANK_3 ((uint32_t)0x00000003)
bogdanm 0:9b334a45a8ff 1285 #define ADC_INJECTED_RANK_4 ((uint32_t)0x00000004)
bogdanm 0:9b334a45a8ff 1286
bogdanm 0:9b334a45a8ff 1287 #define IS_ADC_INJECTED_RANK(CHANNEL) (((CHANNEL) == ADC_INJECTED_RANK_1) || \
bogdanm 0:9b334a45a8ff 1288 ((CHANNEL) == ADC_INJECTED_RANK_2) || \
bogdanm 0:9b334a45a8ff 1289 ((CHANNEL) == ADC_INJECTED_RANK_3) || \
bogdanm 0:9b334a45a8ff 1290 ((CHANNEL) == ADC_INJECTED_RANK_4) )
bogdanm 0:9b334a45a8ff 1291 /**
bogdanm 0:9b334a45a8ff 1292 * @}
bogdanm 0:9b334a45a8ff 1293 */
bogdanm 0:9b334a45a8ff 1294
bogdanm 0:9b334a45a8ff 1295 /** @defgroup ADCEx_External_trigger_edge_Injected External Trigger Edge of Injected Group
bogdanm 0:9b334a45a8ff 1296 * @{
bogdanm 0:9b334a45a8ff 1297 */
bogdanm 0:9b334a45a8ff 1298 #define ADC_EXTERNALTRIGINJECCONV_EDGE_NONE ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1299 #define ADC_EXTERNALTRIGINJECCONV_EDGE_RISING ((uint32_t)ADC_JSQR_JEXTEN_0)
bogdanm 0:9b334a45a8ff 1300 #define ADC_EXTERNALTRIGINJECCONV_EDGE_FALLING ((uint32_t)ADC_JSQR_JEXTEN_1)
bogdanm 0:9b334a45a8ff 1301 #define ADC_EXTERNALTRIGINJECCONV_EDGE_RISINGFALLING ((uint32_t)ADC_JSQR_JEXTEN)
bogdanm 0:9b334a45a8ff 1302
bogdanm 0:9b334a45a8ff 1303 #define IS_ADC_EXTTRIGINJEC_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGINJECCONV_EDGE_NONE) || \
bogdanm 0:9b334a45a8ff 1304 ((EDGE) == ADC_EXTERNALTRIGINJECCONV_EDGE_RISING) || \
bogdanm 0:9b334a45a8ff 1305 ((EDGE) == ADC_EXTERNALTRIGINJECCONV_EDGE_FALLING) || \
bogdanm 0:9b334a45a8ff 1306 ((EDGE) == ADC_EXTERNALTRIGINJECCONV_EDGE_RISINGFALLING) )
bogdanm 0:9b334a45a8ff 1307 /**
bogdanm 0:9b334a45a8ff 1308 * @}
bogdanm 0:9b334a45a8ff 1309 */
bogdanm 0:9b334a45a8ff 1310
bogdanm 0:9b334a45a8ff 1311 /** @defgroup ADCEx_External_trigger_source_Injected External Trigger Source of Injected Group
bogdanm 0:9b334a45a8ff 1312 * @{
bogdanm 0:9b334a45a8ff 1313 */
bogdanm 0:9b334a45a8ff 1314 #if defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 1315 defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 1316 /* List of external triggers with generic trigger name, independently of ADC */
bogdanm 0:9b334a45a8ff 1317 /* target (caution: applies to other ADCs sharing the same common group), */
bogdanm 0:9b334a45a8ff 1318 /* sorted by trigger name: */
bogdanm 0:9b334a45a8ff 1319
bogdanm 0:9b334a45a8ff 1320 /* External triggers of injected group for ADC1&ADC2 only */
bogdanm 0:9b334a45a8ff 1321 #define ADC_EXTERNALTRIGINJECCONV_T2_CC1 ADC1_2_EXTERNALTRIGINJEC_T2_CC1
bogdanm 0:9b334a45a8ff 1322 #define ADC_EXTERNALTRIGINJECCONV_T3_CC1 ADC1_2_EXTERNALTRIGINJEC_T3_CC1
bogdanm 0:9b334a45a8ff 1323 #define ADC_EXTERNALTRIGINJECCONV_T3_CC3 ADC1_2_EXTERNALTRIGINJEC_T3_CC3
bogdanm 0:9b334a45a8ff 1324 #define ADC_EXTERNALTRIGINJECCONV_T3_CC4 ADC1_2_EXTERNALTRIGINJEC_T3_CC4
bogdanm 0:9b334a45a8ff 1325 #define ADC_EXTERNALTRIGINJECCONV_T6_TRGO ADC1_2_EXTERNALTRIGINJEC_T6_TRGO
bogdanm 0:9b334a45a8ff 1326 #define ADC_EXTERNALTRIGINJECCONV_EXT_IT15 ADC1_2_EXTERNALTRIGINJEC_EXT_IT15
bogdanm 0:9b334a45a8ff 1327
bogdanm 0:9b334a45a8ff 1328 /* External triggers of injected group for ADC3&ADC4 only */
bogdanm 0:9b334a45a8ff 1329 #define ADC_EXTERNALTRIGINJECCONV_T1_CC3 ADC3_4_EXTERNALTRIGINJEC_T1_CC3
bogdanm 0:9b334a45a8ff 1330 #define ADC_EXTERNALTRIGINJECCONV_T4_CC3 ADC3_4_EXTERNALTRIGINJEC_T4_CC3
bogdanm 0:9b334a45a8ff 1331 #define ADC_EXTERNALTRIGINJECCONV_T4_CC4 ADC3_4_EXTERNALTRIGINJEC_T4_CC4
bogdanm 0:9b334a45a8ff 1332 #define ADC_EXTERNALTRIGINJECCONV_T7_TRGO ADC3_4_EXTERNALTRIGINJEC_T7_TRGO
bogdanm 0:9b334a45a8ff 1333 #define ADC_EXTERNALTRIGINJECCONV_T8_CC2 ADC3_4_EXTERNALTRIGINJEC_T8_CC2
bogdanm 0:9b334a45a8ff 1334
bogdanm 0:9b334a45a8ff 1335 /* External triggers of injected group for ADC1&ADC2, ADC3&ADC4 */
bogdanm 0:9b334a45a8ff 1336 /* Note: Triggers affected to group ADC1_2 by default, redirected to group */
bogdanm 0:9b334a45a8ff 1337 /* ADC3_4 by driver when needed. */
bogdanm 0:9b334a45a8ff 1338 #define ADC_EXTERNALTRIGINJECCONV_T1_CC4 ADC1_2_EXTERNALTRIGINJEC_T1_CC4
bogdanm 0:9b334a45a8ff 1339 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO ADC1_2_EXTERNALTRIGINJEC_T1_TRGO
bogdanm 0:9b334a45a8ff 1340 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO2 ADC1_2_EXTERNALTRIGINJEC_T1_TRGO2
bogdanm 0:9b334a45a8ff 1341 #define ADC_EXTERNALTRIGINJECCONV_T2_TRGO ADC1_2_EXTERNALTRIGINJEC_T2_TRGO
bogdanm 0:9b334a45a8ff 1342 #define ADC_EXTERNALTRIGINJECCONV_T3_TRGO ADC1_2_EXTERNALTRIGINJEC_T3_TRGO
bogdanm 0:9b334a45a8ff 1343 #define ADC_EXTERNALTRIGINJECCONV_T4_TRGO ADC1_2_EXTERNALTRIGINJEC_T4_TRGO
bogdanm 0:9b334a45a8ff 1344 #define ADC_EXTERNALTRIGINJECCONV_T8_CC4 ADC1_2_EXTERNALTRIGINJEC_T8_CC4
bogdanm 0:9b334a45a8ff 1345 #define ADC_EXTERNALTRIGINJECCONV_T8_TRGO ADC1_2_EXTERNALTRIGINJEC_T8_TRGO
bogdanm 0:9b334a45a8ff 1346 #define ADC_EXTERNALTRIGINJECCONV_T8_TRGO2 ADC1_2_EXTERNALTRIGINJEC_T8_TRGO2
bogdanm 0:9b334a45a8ff 1347 #define ADC_EXTERNALTRIGINJECCONV_T15_TRGO ADC1_2_EXTERNALTRIGINJEC_T15_TRGO
bogdanm 0:9b334a45a8ff 1348
bogdanm 0:9b334a45a8ff 1349 #define ADC_INJECTED_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1350
bogdanm 0:9b334a45a8ff 1351 #if defined(STM32F303xE) || defined(STM32F398xx)
bogdanm 0:9b334a45a8ff 1352 /*!< List of external triggers specific to device STM303xE: using Timer20 */
bogdanm 0:9b334a45a8ff 1353 /* with ADC trigger input remap. */
bogdanm 0:9b334a45a8ff 1354 /* To remap ADC trigger from other timers/ExtLine to timer20: use macro */
bogdanm 0:9b334a45a8ff 1355 /* " __HAL_REMAPADCTRIGGER_ENABLE(...) " with parameters described below: */
bogdanm 0:9b334a45a8ff 1356
bogdanm 0:9b334a45a8ff 1357 /*!< External triggers of injected group for ADC1&ADC2 only, specific to */
bogdanm 0:9b334a45a8ff 1358 /* device STM303xE: : using Timer20 with ADC trigger input remap */
bogdanm 0:9b334a45a8ff 1359 #define ADC_EXTERNALTRIGINJECCONV_T20_CC4 ADC_EXTERNALTRIGINJECCONV_T3_CC1 /*!< Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_JEXT13) */
bogdanm 0:9b334a45a8ff 1360
bogdanm 0:9b334a45a8ff 1361 /*!< External triggers of injected group for ADC3&ADC4 only, specific to */
bogdanm 0:9b334a45a8ff 1362 /* device STM303xE: : using Timer20 with ADC trigger input remap */
bogdanm 0:9b334a45a8ff 1363 #define ADC_EXTERNALTRIGINJECCONV_T20_CC2 ADC_EXTERNALTRIGINJECCONV_T7_TRGO /*!< Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC34_JEXT14) */
bogdanm 0:9b334a45a8ff 1364
bogdanm 0:9b334a45a8ff 1365 /*!< External triggers of regular group for ADC1&ADC2, ADC3&ADC4, specific to */
bogdanm 0:9b334a45a8ff 1366 /* device STM303xE: : using Timer20 with ADC trigger input remap */
bogdanm 0:9b334a45a8ff 1367 /* Note: Triggers affected to group ADC1_2 by default, redirected to group */
bogdanm 0:9b334a45a8ff 1368 /* ADC3_4 by driver when needed. */
bogdanm 0:9b334a45a8ff 1369 #define ADC_EXTERNALTRIGINJECCONV_T20_TRGO (ADC_EXTERNALTRIGINJECCONV_T2_CC1 | ADC_EXTERNALTRIGCONV_T20_MASK) /*!< For ADC1&ADC2: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_JEXT3) */
bogdanm 0:9b334a45a8ff 1370 /*!< For ADC3&ADC4: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC34_JEXT5) */
bogdanm 0:9b334a45a8ff 1371 #define ADC_EXTERNALTRIGINJECCONV_T20_TRGO2 (ADC_EXTERNALTRIGINJECCONV_EXT_IT15 | ADC_EXTERNALTRIGCONV_T20_MASK) /*!< For ADC1&ADC2: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_JEXT6) */
bogdanm 0:9b334a45a8ff 1372 /*!< For ADC3&ADC4: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC34_JEXT11) */
bogdanm 0:9b334a45a8ff 1373 #endif /* STM32F303xE || STM32F398xx */
bogdanm 0:9b334a45a8ff 1374
bogdanm 0:9b334a45a8ff 1375 #if defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 1376 #define IS_ADC_EXTTRIGINJEC(INJTRIG) (((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_CC1) || \
bogdanm 0:9b334a45a8ff 1377 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC1) || \
bogdanm 0:9b334a45a8ff 1378 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 1379 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 1380 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_EXT_IT15) || \
bogdanm 0:9b334a45a8ff 1381 \
bogdanm 0:9b334a45a8ff 1382 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_CC3) || \
bogdanm 0:9b334a45a8ff 1383 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_CC4) || \
bogdanm 0:9b334a45a8ff 1384 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T7_TRGO) || \
bogdanm 0:9b334a45a8ff 1385 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_CC2) || \
bogdanm 0:9b334a45a8ff 1386 \
bogdanm 0:9b334a45a8ff 1387 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_CC4) || \
bogdanm 0:9b334a45a8ff 1388 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 1389 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 1390 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 1391 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC3) || \
bogdanm 0:9b334a45a8ff 1392 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 1393 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 1394 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_CC4) || \
bogdanm 0:9b334a45a8ff 1395 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_TRGO) || \
bogdanm 0:9b334a45a8ff 1396 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_TRGO2) || \
bogdanm 0:9b334a45a8ff 1397 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 1398 \
bogdanm 0:9b334a45a8ff 1399 ((INJTRIG) == ADC_INJECTED_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 1400 #endif /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 1401
bogdanm 0:9b334a45a8ff 1402 #if defined(STM32F303xE) || defined(STM32F398xx)
bogdanm 0:9b334a45a8ff 1403 #define IS_ADC_EXTTRIGINJEC(INJTRIG) (((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_CC1) || \
bogdanm 0:9b334a45a8ff 1404 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC1) || \
bogdanm 0:9b334a45a8ff 1405 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 1406 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 1407 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_EXT_IT15) || \
bogdanm 0:9b334a45a8ff 1408 \
bogdanm 0:9b334a45a8ff 1409 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_CC3) || \
bogdanm 0:9b334a45a8ff 1410 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_CC4) || \
bogdanm 0:9b334a45a8ff 1411 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T7_TRGO) || \
bogdanm 0:9b334a45a8ff 1412 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_CC2) || \
bogdanm 0:9b334a45a8ff 1413 \
bogdanm 0:9b334a45a8ff 1414 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_CC4) || \
bogdanm 0:9b334a45a8ff 1415 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 1416 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 1417 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 1418 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC3) || \
bogdanm 0:9b334a45a8ff 1419 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 1420 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 1421 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_CC4) || \
bogdanm 0:9b334a45a8ff 1422 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_TRGO) || \
bogdanm 0:9b334a45a8ff 1423 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_TRGO2) || \
bogdanm 0:9b334a45a8ff 1424 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 1425 \
bogdanm 0:9b334a45a8ff 1426 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T20_CC4) || \
bogdanm 0:9b334a45a8ff 1427 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T20_CC2) || \
bogdanm 0:9b334a45a8ff 1428 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T20_TRGO) || \
bogdanm 0:9b334a45a8ff 1429 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T20_TRGO2) || \
bogdanm 0:9b334a45a8ff 1430 \
bogdanm 0:9b334a45a8ff 1431 ((INJTRIG) == ADC_INJECTED_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 1432 #endif /* STM32F303xE || STM32F398xx */
bogdanm 0:9b334a45a8ff 1433
bogdanm 0:9b334a45a8ff 1434 #endif /* STM32F303xC || STM32F303xE || STM32F398xx || STM32F358xx */
bogdanm 0:9b334a45a8ff 1435
bogdanm 0:9b334a45a8ff 1436 #if defined(STM32F302xE) || \
bogdanm 0:9b334a45a8ff 1437 defined(STM32F302xC)
bogdanm 0:9b334a45a8ff 1438 /*!< List of external triggers with generic trigger name, independently of */
bogdanm 0:9b334a45a8ff 1439 /* ADC target (caution: applies to other ADCs sharing the same common group), */
bogdanm 0:9b334a45a8ff 1440 /* sorted by trigger name: */
bogdanm 0:9b334a45a8ff 1441
bogdanm 0:9b334a45a8ff 1442 /* External triggers of injected group for ADC1&ADC2 */
bogdanm 0:9b334a45a8ff 1443 #define ADC_EXTERNALTRIGINJECCONV_T1_CC4 ADC1_2_EXTERNALTRIGINJEC_T1_CC4
bogdanm 0:9b334a45a8ff 1444 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO ADC1_2_EXTERNALTRIGINJEC_T1_TRGO
bogdanm 0:9b334a45a8ff 1445 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO2 ADC1_2_EXTERNALTRIGINJEC_T1_TRGO2
bogdanm 0:9b334a45a8ff 1446 #define ADC_EXTERNALTRIGINJECCONV_T2_CC1 ADC1_2_EXTERNALTRIGINJEC_T2_CC1
bogdanm 0:9b334a45a8ff 1447 #define ADC_EXTERNALTRIGINJECCONV_T2_TRGO ADC1_2_EXTERNALTRIGINJEC_T2_TRGO
bogdanm 0:9b334a45a8ff 1448 #define ADC_EXTERNALTRIGINJECCONV_T3_CC1 ADC1_2_EXTERNALTRIGINJEC_T3_CC1
bogdanm 0:9b334a45a8ff 1449 #define ADC_EXTERNALTRIGINJECCONV_T3_CC3 ADC1_2_EXTERNALTRIGINJEC_T3_CC3
bogdanm 0:9b334a45a8ff 1450 #define ADC_EXTERNALTRIGINJECCONV_T3_CC4 ADC1_2_EXTERNALTRIGINJEC_T3_CC4
bogdanm 0:9b334a45a8ff 1451 #define ADC_EXTERNALTRIGINJECCONV_T3_TRGO ADC1_2_EXTERNALTRIGINJEC_T3_TRGO
bogdanm 0:9b334a45a8ff 1452 #define ADC_EXTERNALTRIGINJECCONV_T4_TRGO ADC1_2_EXTERNALTRIGINJEC_T4_TRGO
bogdanm 0:9b334a45a8ff 1453 #define ADC_EXTERNALTRIGINJECCONV_T6_TRGO ADC1_2_EXTERNALTRIGINJEC_T6_TRGO
bogdanm 0:9b334a45a8ff 1454 #define ADC_EXTERNALTRIGINJECCONV_T15_TRGO ADC1_2_EXTERNALTRIGINJEC_T15_TRGO
bogdanm 0:9b334a45a8ff 1455 #define ADC_EXTERNALTRIGINJECCONV_EXT_IT15 ADC1_2_EXTERNALTRIGINJEC_EXT_IT15
bogdanm 0:9b334a45a8ff 1456
bogdanm 0:9b334a45a8ff 1457 #define ADC_INJECTED_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1458
bogdanm 0:9b334a45a8ff 1459 #if defined(STM32F302xE)
bogdanm 0:9b334a45a8ff 1460 /*!< List of external triggers specific to device STM302xE: using Timer20 */
bogdanm 0:9b334a45a8ff 1461 /* with ADC trigger input remap. */
bogdanm 0:9b334a45a8ff 1462 /* To remap ADC trigger from other timers/ExtLine to timer20: use macro */
bogdanm 0:9b334a45a8ff 1463 /* " __HAL_REMAPADCTRIGGER_ENABLE(...) " with parameters described below: */
bogdanm 0:9b334a45a8ff 1464
bogdanm 0:9b334a45a8ff 1465 /*!< External triggers of injected group for ADC1&ADC2 only, specific to */
bogdanm 0:9b334a45a8ff 1466 /* device STM302xE: : using Timer20 with ADC trigger input remap */
bogdanm 0:9b334a45a8ff 1467 #define ADC_EXTERNALTRIGINJECCONV_T20_CC4 ADC_EXTERNALTRIGINJECCONV_T3_CC1 /*!< Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_JEXT13) */
bogdanm 0:9b334a45a8ff 1468 #define ADC_EXTERNALTRIGINJECCONV_T20_TRGO (ADC_EXTERNALTRIGINJECCONV_T2_CC1 | ADC_EXTERNALTRIGCONV_T20_MASK) /*!< For ADC1&ADC2: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_JEXT3) */
bogdanm 0:9b334a45a8ff 1469 #define ADC_EXTERNALTRIGINJECCONV_T20_TRGO2 (ADC_EXTERNALTRIGINJECCONV_EXT_IT15 | ADC_EXTERNALTRIGCONV_T20_MASK) /*!< For ADC1&ADC2: Remap trigger using macro __HAL_REMAPADCTRIGGER_ENABLE(HAL_REMAPADCTRIGGER_ADC12_JEXT6) */
bogdanm 0:9b334a45a8ff 1470 #endif /* STM32F302xE */
bogdanm 0:9b334a45a8ff 1471
bogdanm 0:9b334a45a8ff 1472 #if defined(STM32F302xE)
bogdanm 0:9b334a45a8ff 1473 #define IS_ADC_EXTTRIGINJEC(INJTRIG) (((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_CC4) || \
bogdanm 0:9b334a45a8ff 1474 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 1475 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 1476 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_CC1) || \
bogdanm 0:9b334a45a8ff 1477 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 1478 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC1) || \
bogdanm 0:9b334a45a8ff 1479 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC3) || \
bogdanm 0:9b334a45a8ff 1480 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 1481 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 1482 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 1483 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 1484 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 1485 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_EXT_IT15) || \
bogdanm 0:9b334a45a8ff 1486 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T20_CC4) || \
bogdanm 0:9b334a45a8ff 1487 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T20_TRGO) || \
bogdanm 0:9b334a45a8ff 1488 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T20_TRGO2) || \
bogdanm 0:9b334a45a8ff 1489 ((INJTRIG) == ADC_INJECTED_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 1490 #endif /* STM32F302xE */
bogdanm 0:9b334a45a8ff 1491
bogdanm 0:9b334a45a8ff 1492 #if defined(STM32F302xC)
bogdanm 0:9b334a45a8ff 1493 #define IS_ADC_EXTTRIGINJEC(INJTRIG) (((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_CC4) || \
bogdanm 0:9b334a45a8ff 1494 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 1495 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 1496 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_CC1) || \
bogdanm 0:9b334a45a8ff 1497 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 1498 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC1) || \
bogdanm 0:9b334a45a8ff 1499 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC3) || \
bogdanm 0:9b334a45a8ff 1500 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 1501 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 1502 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 1503 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 1504 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 1505 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_EXT_IT15) || \
bogdanm 0:9b334a45a8ff 1506 ((INJTRIG) == ADC_INJECTED_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 1507 #endif /* STM32F302xC */
bogdanm 0:9b334a45a8ff 1508
bogdanm 0:9b334a45a8ff 1509 #endif /* STM32F302xE || */
bogdanm 0:9b334a45a8ff 1510 /* STM32F302xC */
bogdanm 0:9b334a45a8ff 1511
bogdanm 0:9b334a45a8ff 1512 #if defined(STM32F303x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 1513 /*!< List of external triggers with generic trigger name, independently of */
bogdanm 0:9b334a45a8ff 1514 /* ADC target (caution: applies to other ADCs sharing the same common group), */
bogdanm 0:9b334a45a8ff 1515 /* sorted by trigger name: */
bogdanm 0:9b334a45a8ff 1516
bogdanm 0:9b334a45a8ff 1517 /* External triggers of injected group for ADC1&ADC2 */
bogdanm 0:9b334a45a8ff 1518 #define ADC_EXTERNALTRIGINJECCONV_T1_CC4 ADC1_2_EXTERNALTRIGINJEC_T1_CC4
bogdanm 0:9b334a45a8ff 1519 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO ADC1_2_EXTERNALTRIGINJEC_T1_TRGO
bogdanm 0:9b334a45a8ff 1520 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO2 ADC1_2_EXTERNALTRIGINJEC_T1_TRGO2
bogdanm 0:9b334a45a8ff 1521 #define ADC_EXTERNALTRIGINJECCONV_T2_CC1 ADC1_2_EXTERNALTRIGINJEC_T2_CC1
bogdanm 0:9b334a45a8ff 1522 #define ADC_EXTERNALTRIGINJECCONV_T2_TRGO ADC1_2_EXTERNALTRIGINJEC_T2_TRGO
bogdanm 0:9b334a45a8ff 1523 #define ADC_EXTERNALTRIGINJECCONV_T3_CC1 ADC1_2_EXTERNALTRIGINJEC_T3_CC1
bogdanm 0:9b334a45a8ff 1524 #define ADC_EXTERNALTRIGINJECCONV_T3_CC3 ADC1_2_EXTERNALTRIGINJEC_T3_CC3
bogdanm 0:9b334a45a8ff 1525 #define ADC_EXTERNALTRIGINJECCONV_T3_CC4 ADC1_2_EXTERNALTRIGINJEC_T3_CC4
bogdanm 0:9b334a45a8ff 1526 #define ADC_EXTERNALTRIGINJECCONV_T3_TRGO ADC1_2_EXTERNALTRIGINJEC_T3_TRGO
bogdanm 0:9b334a45a8ff 1527 #define ADC_EXTERNALTRIGINJECCONV_T4_TRGO ADC1_2_EXTERNALTRIGINJEC_T4_TRGO
bogdanm 0:9b334a45a8ff 1528 #define ADC_EXTERNALTRIGINJECCONV_T6_TRGO ADC1_2_EXTERNALTRIGINJEC_T6_TRGO
bogdanm 0:9b334a45a8ff 1529 #define ADC_EXTERNALTRIGINJECCONV_T8_CC4 ADC1_2_EXTERNALTRIGINJEC_T8_CC4
bogdanm 0:9b334a45a8ff 1530 #define ADC_EXTERNALTRIGINJECCONV_T8_TRGO ADC1_2_EXTERNALTRIGINJEC_T8_TRGO
bogdanm 0:9b334a45a8ff 1531 #define ADC_EXTERNALTRIGINJECCONV_T8_TRGO2 ADC1_2_EXTERNALTRIGINJEC_T8_TRGO2
bogdanm 0:9b334a45a8ff 1532 #define ADC_EXTERNALTRIGINJECCONV_T15_TRGO ADC1_2_EXTERNALTRIGINJEC_T15_TRGO
bogdanm 0:9b334a45a8ff 1533 #define ADC_EXTERNALTRIGINJECCONV_EXT_IT15 ADC1_2_EXTERNALTRIGINJEC_EXT_IT15
bogdanm 0:9b334a45a8ff 1534
bogdanm 0:9b334a45a8ff 1535 #define ADC_INJECTED_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1536
bogdanm 0:9b334a45a8ff 1537 #define IS_ADC_EXTTRIGINJEC(INJTRIG) (((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 1538 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_CC4) || \
bogdanm 0:9b334a45a8ff 1539 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 1540 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_CC1) || \
bogdanm 0:9b334a45a8ff 1541 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 1542 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 1543 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_EXT_IT15) || \
bogdanm 0:9b334a45a8ff 1544 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_CC4) || \
bogdanm 0:9b334a45a8ff 1545 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 1546 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_TRGO) || \
bogdanm 0:9b334a45a8ff 1547 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T8_TRGO2) || \
bogdanm 0:9b334a45a8ff 1548 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC3) || \
bogdanm 0:9b334a45a8ff 1549 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 1550 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC1) || \
bogdanm 0:9b334a45a8ff 1551 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 1552 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 1553 ((INJTRIG) == ADC_INJECTED_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 1554 #endif /* STM32F303x8 || STM32F328xx */
bogdanm 0:9b334a45a8ff 1555
bogdanm 0:9b334a45a8ff 1556 #if defined(STM32F334x8)
bogdanm 0:9b334a45a8ff 1557 /*!< List of external triggers with generic trigger name, independently of */
bogdanm 0:9b334a45a8ff 1558 /* ADC target (caution: applies to other ADCs sharing the same common group), */
bogdanm 0:9b334a45a8ff 1559 /* sorted by trigger name: */
bogdanm 0:9b334a45a8ff 1560
bogdanm 0:9b334a45a8ff 1561 /* External triggers of injected group for ADC1&ADC2 */
bogdanm 0:9b334a45a8ff 1562 #define ADC_EXTERNALTRIGINJECCONV_T1_CC4 ADC1_2_EXTERNALTRIGINJEC_T1_CC4
bogdanm 0:9b334a45a8ff 1563 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO ADC1_2_EXTERNALTRIGINJEC_T1_TRGO
bogdanm 0:9b334a45a8ff 1564 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO2 ADC1_2_EXTERNALTRIGINJEC_T1_TRGO2
bogdanm 0:9b334a45a8ff 1565 #define ADC_EXTERNALTRIGINJECCONV_T2_CC1 ADC1_2_EXTERNALTRIGINJEC_T2_CC1
bogdanm 0:9b334a45a8ff 1566 #define ADC_EXTERNALTRIGINJECCONV_T2_TRGO ADC1_2_EXTERNALTRIGINJEC_T2_TRGO
bogdanm 0:9b334a45a8ff 1567 #define ADC_EXTERNALTRIGINJECCONV_T3_CC1 ADC1_2_EXTERNALTRIGINJEC_T3_CC1
bogdanm 0:9b334a45a8ff 1568 #define ADC_EXTERNALTRIGINJECCONV_T3_CC3 ADC1_2_EXTERNALTRIGINJEC_T3_CC3
bogdanm 0:9b334a45a8ff 1569 #define ADC_EXTERNALTRIGINJECCONV_T3_CC4 ADC1_2_EXTERNALTRIGINJEC_T3_CC4
bogdanm 0:9b334a45a8ff 1570 #define ADC_EXTERNALTRIGINJECCONV_T3_TRGO ADC1_2_EXTERNALTRIGINJEC_T3_TRGO
bogdanm 0:9b334a45a8ff 1571 #define ADC_EXTERNALTRIGINJECCONV_T6_TRGO ADC1_2_EXTERNALTRIGINJEC_T6_TRGO
bogdanm 0:9b334a45a8ff 1572 #define ADC_EXTERNALTRIGINJECCONV_T15_TRGO ADC1_2_EXTERNALTRIGINJEC_T15_TRGO
bogdanm 0:9b334a45a8ff 1573 #define ADC_EXTERNALTRIGINJECCONV_HRTIM_TRG2 ADC1_2_EXTERNALTRIGINJEC_HRTIM_TRG2
bogdanm 0:9b334a45a8ff 1574 #define ADC_EXTERNALTRIGINJECCONV_HRTIM_TRG4 ADC1_2_EXTERNALTRIGINJEC_HRTIM_TRG4
bogdanm 0:9b334a45a8ff 1575 #define ADC_EXTERNALTRIGINJECCONV_EXT_IT15 ADC1_2_EXTERNALTRIGINJEC_EXT_IT15
bogdanm 0:9b334a45a8ff 1576
bogdanm 0:9b334a45a8ff 1577 #define ADC_INJECTED_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1578
bogdanm 0:9b334a45a8ff 1579 #define IS_ADC_EXTTRIGINJEC(INJTRIG) (((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 1580 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_CC4) || \
bogdanm 0:9b334a45a8ff 1581 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 1582 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_CC1) || \
bogdanm 0:9b334a45a8ff 1583 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 1584 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_EXT_IT15) || \
bogdanm 0:9b334a45a8ff 1585 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 1586 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_HRTIM_TRG2) || \
bogdanm 0:9b334a45a8ff 1587 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_HRTIM_TRG4) || \
bogdanm 0:9b334a45a8ff 1588 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC3) || \
bogdanm 0:9b334a45a8ff 1589 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 1590 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC1) || \
bogdanm 0:9b334a45a8ff 1591 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 1592 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 1593 ((INJTRIG) == ADC_INJECTED_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 1594 #endif /* STM32F334x8 */
bogdanm 0:9b334a45a8ff 1595
bogdanm 0:9b334a45a8ff 1596 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 1597 /* List of external triggers with generic trigger name, sorted by trigger */
bogdanm 0:9b334a45a8ff 1598 /* name: */
bogdanm 0:9b334a45a8ff 1599
bogdanm 0:9b334a45a8ff 1600 /* External triggers of injected group for ADC1 */
bogdanm 0:9b334a45a8ff 1601 #define ADC_EXTERNALTRIGINJECCONV_T1_CC4 ADC1_EXTERNALTRIGINJEC_T1_CC4
bogdanm 0:9b334a45a8ff 1602 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO ADC1_EXTERNALTRIGINJEC_T1_TRGO
bogdanm 0:9b334a45a8ff 1603 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO2 ADC1_EXTERNALTRIGINJEC_T1_TRGO2
bogdanm 0:9b334a45a8ff 1604 #define ADC_EXTERNALTRIGINJECCONV_T6_TRGO ADC1_EXTERNALTRIGINJEC_T6_TRGO
bogdanm 0:9b334a45a8ff 1605 #define ADC_EXTERNALTRIGINJECCONV_T15_TRGO ADC1_EXTERNALTRIGINJEC_T15_TRGO
bogdanm 0:9b334a45a8ff 1606 #define ADC_EXTERNALTRIGINJECCONV_EXT_IT15 ADC1_EXTERNALTRIGINJEC_EXT_IT15
bogdanm 0:9b334a45a8ff 1607
bogdanm 0:9b334a45a8ff 1608 #define ADC_INJECTED_SOFTWARE_START ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1609
bogdanm 0:9b334a45a8ff 1610 #define IS_ADC_EXTTRIGINJEC(INJTRIG) (((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO) || \
bogdanm 0:9b334a45a8ff 1611 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_CC4) || \
bogdanm 0:9b334a45a8ff 1612 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_EXT_IT15) || \
bogdanm 0:9b334a45a8ff 1613 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO2) || \
bogdanm 0:9b334a45a8ff 1614 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T6_TRGO) || \
bogdanm 0:9b334a45a8ff 1615 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T15_TRGO) || \
bogdanm 0:9b334a45a8ff 1616 ((INJTRIG) == ADC_INJECTED_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 1617 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 1618 /**
bogdanm 0:9b334a45a8ff 1619 * @}
bogdanm 0:9b334a45a8ff 1620 */
bogdanm 0:9b334a45a8ff 1621
bogdanm 0:9b334a45a8ff 1622 /** @defgroup ADCEx_Internal_HAL_driver_Ext_trig_src_Injected ADC Extended External Trigger Source of Injected Group (Internal)
bogdanm 0:9b334a45a8ff 1623 * @{
bogdanm 0:9b334a45a8ff 1624 */
bogdanm 0:9b334a45a8ff 1625 #if defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 1626 defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 1627 /* List of external triggers sorted of groups ADC1&ADC2 and/or ADC3&ADC4: */
bogdanm 0:9b334a45a8ff 1628 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 1629
bogdanm 0:9b334a45a8ff 1630 /* External triggers for injected groups of ADC1 & ADC2 */
bogdanm 0:9b334a45a8ff 1631 #define ADC1_2_EXTERNALTRIGINJEC_T1_TRGO ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1632 #define ADC1_2_EXTERNALTRIGINJEC_T1_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_0)
bogdanm 0:9b334a45a8ff 1633 #define ADC1_2_EXTERNALTRIGINJEC_T2_TRGO ((uint32_t)ADC_JSQR_JEXTSEL_1)
bogdanm 0:9b334a45a8ff 1634 #define ADC1_2_EXTERNALTRIGINJEC_T2_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1635 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_2)
bogdanm 0:9b334a45a8ff 1636 #define ADC1_2_EXTERNALTRIGINJEC_T4_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1637 #define ADC1_2_EXTERNALTRIGINJEC_EXT_IT15 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1638 #define ADC1_2_EXTERNALTRIGINJEC_T8_CC4 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1639 #define ADC1_2_EXTERNALTRIGINJEC_T1_TRGO2 ((uint32_t)ADC_JSQR_JEXTSEL_3)
bogdanm 0:9b334a45a8ff 1640 #define ADC1_2_EXTERNALTRIGINJEC_T8_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1641 #define ADC1_2_EXTERNALTRIGINJEC_T8_TRGO2 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1642 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC3 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1643 #define ADC1_2_EXTERNALTRIGINJEC_T3_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2))
bogdanm 0:9b334a45a8ff 1644 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1645 #define ADC1_2_EXTERNALTRIGINJEC_T6_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1646 #define ADC1_2_EXTERNALTRIGINJEC_T15_TRGO ((uint32_t)ADC_JSQR_JEXTSEL)
bogdanm 0:9b334a45a8ff 1647
bogdanm 0:9b334a45a8ff 1648 /* External triggers for injected groups of ADC3 & ADC4 */
bogdanm 0:9b334a45a8ff 1649 /* Note: External triggers JEXT2 and JEXT5 are the same (TIM4_CC3 event). */
bogdanm 0:9b334a45a8ff 1650 /* JEXT2 is the main trigger, JEXT5 could be redirected to another */
bogdanm 0:9b334a45a8ff 1651 /* in future devices. */
bogdanm 0:9b334a45a8ff 1652 /* However, this channel is implemented with a SW offset of 0x10000 for */
bogdanm 0:9b334a45a8ff 1653 /* differentiation between similar triggers of common groups ADC1&ADC2, */
bogdanm 0:9b334a45a8ff 1654 /* ADC3&ADC4 (Differentiation processed into macro */
bogdanm 0:9b334a45a8ff 1655 /* __HAL_ADC_JSQR_JEXTSEL) */
bogdanm 0:9b334a45a8ff 1656 #define ADC3_4_EXTERNALTRIGINJEC_T1_TRGO ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1657 #define ADC3_4_EXTERNALTRIGINJEC_T1_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_0)
bogdanm 0:9b334a45a8ff 1658 #define ADC3_4_EXTERNALTRIGINJEC_T4_CC3 ((uint32_t)ADC_JSQR_JEXTSEL_1 | 0x10000)
bogdanm 0:9b334a45a8ff 1659 #define ADC3_4_EXTERNALTRIGINJEC_T8_CC2 ((uint32_t)(ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1660 #define ADC3_4_EXTERNALTRIGINJEC_T8_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_2)
bogdanm 0:9b334a45a8ff 1661
bogdanm 0:9b334a45a8ff 1662 #if defined(STM32F303xE) || defined(STM32F398xx)
bogdanm 0:9b334a45a8ff 1663 #define ADC3_4_EXTERNALTRIGINJEC_T20_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1664 #endif /* STM32F303xE || STM32F398xx */
bogdanm 0:9b334a45a8ff 1665
bogdanm 0:9b334a45a8ff 1666 #define ADC3_4_EXTERNALTRIGINJEC_T4_CC4 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1667 #define ADC3_4_EXTERNALTRIGINJEC_T4_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1668 #define ADC3_4_EXTERNALTRIGINJEC_T1_TRGO2 ((uint32_t)ADC_JSQR_JEXTSEL_3)
bogdanm 0:9b334a45a8ff 1669 #define ADC3_4_EXTERNALTRIGINJEC_T8_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1670 #define ADC3_4_EXTERNALTRIGINJEC_T8_TRGO2 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1671 #define ADC3_4_EXTERNALTRIGINJEC_T1_CC3 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1672 #define ADC3_4_EXTERNALTRIGINJEC_T3_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2))
bogdanm 0:9b334a45a8ff 1673 #define ADC3_4_EXTERNALTRIGINJEC_T2_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1674 #define ADC3_4_EXTERNALTRIGINJEC_T7_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1675 #define ADC3_4_EXTERNALTRIGINJEC_T15_TRGO ((uint32_t)ADC_JSQR_JEXTSEL)
bogdanm 0:9b334a45a8ff 1676 #endif /* STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 1677 /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 1678
bogdanm 0:9b334a45a8ff 1679 #if defined(STM32F302xE) || \
bogdanm 0:9b334a45a8ff 1680 defined(STM32F302xC)
bogdanm 0:9b334a45a8ff 1681 /* List of external triggers of group ADC1&ADC2: */
bogdanm 0:9b334a45a8ff 1682 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 1683 #define ADC1_2_EXTERNALTRIGINJEC_T1_TRGO ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1684 #define ADC1_2_EXTERNALTRIGINJEC_T1_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_0)
bogdanm 0:9b334a45a8ff 1685 #define ADC1_2_EXTERNALTRIGINJEC_T2_TRGO ((uint32_t)ADC_JSQR_JEXTSEL_1)
bogdanm 0:9b334a45a8ff 1686 #define ADC1_2_EXTERNALTRIGINJEC_T2_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1687 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_2)
bogdanm 0:9b334a45a8ff 1688 #define ADC1_2_EXTERNALTRIGINJEC_T4_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1689 #define ADC1_2_EXTERNALTRIGINJEC_EXT_IT15 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1690 #define ADC1_2_EXTERNALTRIGINJEC_T1_TRGO2 ((uint32_t)ADC_JSQR_JEXTSEL_3)
bogdanm 0:9b334a45a8ff 1691 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC3 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1692 #define ADC1_2_EXTERNALTRIGINJEC_T3_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2))
bogdanm 0:9b334a45a8ff 1693 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1694 #define ADC1_2_EXTERNALTRIGINJEC_T6_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1695 #define ADC1_2_EXTERNALTRIGINJEC_T15_TRGO ((uint32_t)ADC_JSQR_JEXTSEL)
bogdanm 0:9b334a45a8ff 1696 #endif /* STM32F302xE || */
bogdanm 0:9b334a45a8ff 1697 /* STM32F302xC */
bogdanm 0:9b334a45a8ff 1698
bogdanm 0:9b334a45a8ff 1699 #if defined(STM32F303x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 1700 /* List of external triggers of group ADC1&ADC2: */
bogdanm 0:9b334a45a8ff 1701 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 1702 #define ADC1_2_EXTERNALTRIGINJEC_T1_TRGO ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1703 #define ADC1_2_EXTERNALTRIGINJEC_T1_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_0)
bogdanm 0:9b334a45a8ff 1704 #define ADC1_2_EXTERNALTRIGINJEC_T2_TRGO ((uint32_t)ADC_JSQR_JEXTSEL_1)
bogdanm 0:9b334a45a8ff 1705 #define ADC1_2_EXTERNALTRIGINJEC_T2_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1706 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_2)
bogdanm 0:9b334a45a8ff 1707 #define ADC1_2_EXTERNALTRIGINJEC_T4_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1708 #define ADC1_2_EXTERNALTRIGINJEC_EXT_IT15 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1709 #define ADC1_2_EXTERNALTRIGINJEC_T8_CC4 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1710 #define ADC1_2_EXTERNALTRIGINJEC_T1_TRGO2 ((uint32_t)ADC_JSQR_JEXTSEL_3)
bogdanm 0:9b334a45a8ff 1711 #define ADC1_2_EXTERNALTRIGINJEC_T8_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1712 #define ADC1_2_EXTERNALTRIGINJEC_T8_TRGO2 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1713 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC3 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1714 #define ADC1_2_EXTERNALTRIGINJEC_T3_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2))
bogdanm 0:9b334a45a8ff 1715 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1716 #define ADC1_2_EXTERNALTRIGINJEC_T6_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1717 #define ADC1_2_EXTERNALTRIGINJEC_T15_TRGO ((uint32_t)ADC_JSQR_JEXTSEL)
bogdanm 0:9b334a45a8ff 1718 #endif /* STM32F303x8 || STM32F328xx */
bogdanm 0:9b334a45a8ff 1719
bogdanm 0:9b334a45a8ff 1720 #if defined(STM32F334x8)
bogdanm 0:9b334a45a8ff 1721 /* List of external triggers of group ADC1&ADC2: */
bogdanm 0:9b334a45a8ff 1722 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 1723 #define ADC1_2_EXTERNALTRIGINJEC_T1_TRGO ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1724 #define ADC1_2_EXTERNALTRIGINJEC_T1_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_0)
bogdanm 0:9b334a45a8ff 1725 #define ADC1_2_EXTERNALTRIGINJEC_T2_TRGO ((uint32_t)ADC_JSQR_JEXTSEL_1)
bogdanm 0:9b334a45a8ff 1726 #define ADC1_2_EXTERNALTRIGINJEC_T2_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1727 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_2)
bogdanm 0:9b334a45a8ff 1728 #define ADC1_2_EXTERNALTRIGINJEC_EXT_IT15 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1729 #define ADC1_2_EXTERNALTRIGINJEC_T1_TRGO2 ((uint32_t)ADC_JSQR_JEXTSEL_3)
bogdanm 0:9b334a45a8ff 1730 #define ADC1_2_EXTERNALTRIGINJEC_HRTIM_TRG2 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1731 #define ADC1_2_EXTERNALTRIGINJEC_HRTIM_TRG4 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1732 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC3 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1733 #define ADC1_2_EXTERNALTRIGINJEC_T3_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2))
bogdanm 0:9b334a45a8ff 1734 #define ADC1_2_EXTERNALTRIGINJEC_T3_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 1735 #define ADC1_2_EXTERNALTRIGINJEC_T6_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1736 #define ADC1_2_EXTERNALTRIGINJEC_T15_TRGO ((uint32_t)ADC_JSQR_JEXTSEL)
bogdanm 0:9b334a45a8ff 1737 #endif /* STM32F334x8 */
bogdanm 0:9b334a45a8ff 1738
bogdanm 0:9b334a45a8ff 1739 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 1740 /* List of external triggers of injected group for ADC1: */
bogdanm 0:9b334a45a8ff 1741 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 1742 #define ADC1_EXTERNALTRIGINJEC_T1_TRGO ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 1743 #define ADC1_EXTERNALTRIGINJEC_T1_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_0)
bogdanm 0:9b334a45a8ff 1744 #define ADC1_EXTERNALTRIGINJEC_EXT_IT15 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1745 #define ADC1_EXTERNALTRIGINJEC_T1_TRGO2 ((uint32_t)ADC_JSQR_JEXTSEL_3)
bogdanm 0:9b334a45a8ff 1746 #define ADC1_EXTERNALTRIGINJEC_T6_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 1747 #define ADC1_EXTERNALTRIGINJEC_T15_TRGO ((uint32_t)ADC_JSQR_JEXTSEL)
bogdanm 0:9b334a45a8ff 1748 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 1749 /**
bogdanm 0:9b334a45a8ff 1750 * @}
bogdanm 0:9b334a45a8ff 1751 */
bogdanm 0:9b334a45a8ff 1752
bogdanm 0:9b334a45a8ff 1753 /** @defgroup ADCEx_Common_mode ADC Extended Dual ADC Mode
bogdanm 0:9b334a45a8ff 1754 * @{
bogdanm 0:9b334a45a8ff 1755 */
bogdanm 0:9b334a45a8ff 1756 #define ADC_MODE_INDEPENDENT ((uint32_t)(0x00000000))
bogdanm 0:9b334a45a8ff 1757 #define ADC_DUALMODE_REGSIMULT_INJECSIMULT ((uint32_t)(ADC12_CCR_MULTI_0))
bogdanm 0:9b334a45a8ff 1758 #define ADC_DUALMODE_REGSIMULT_ALTERTRIG ((uint32_t)(ADC12_CCR_MULTI_1))
bogdanm 0:9b334a45a8ff 1759 #define ADC_DUALMODE_INJECSIMULT ((uint32_t)(ADC12_CCR_MULTI_2 | ADC12_CCR_MULTI_0))
bogdanm 0:9b334a45a8ff 1760 #define ADC_DUALMODE_REGSIMULT ((uint32_t)(ADC12_CCR_MULTI_2 | ADC12_CCR_MULTI_1))
bogdanm 0:9b334a45a8ff 1761 #define ADC_DUALMODE_INTERL ((uint32_t)(ADC12_CCR_MULTI_2 | ADC12_CCR_MULTI_1 | ADC12_CCR_MULTI_0))
bogdanm 0:9b334a45a8ff 1762 #define ADC_DUALMODE_ALTERTRIG ((uint32_t)(ADC12_CCR_MULTI_3 | ADC12_CCR_MULTI_0))
bogdanm 0:9b334a45a8ff 1763
bogdanm 0:9b334a45a8ff 1764 #define IS_ADC_MODE(MODE) (((MODE) == ADC_MODE_INDEPENDENT) || \
bogdanm 0:9b334a45a8ff 1765 ((MODE) == ADC_DUALMODE_REGSIMULT_INJECSIMULT) || \
bogdanm 0:9b334a45a8ff 1766 ((MODE) == ADC_DUALMODE_REGSIMULT_ALTERTRIG) || \
bogdanm 0:9b334a45a8ff 1767 ((MODE) == ADC_DUALMODE_INJECSIMULT) || \
bogdanm 0:9b334a45a8ff 1768 ((MODE) == ADC_DUALMODE_REGSIMULT) || \
bogdanm 0:9b334a45a8ff 1769 ((MODE) == ADC_DUALMODE_INTERL) || \
bogdanm 0:9b334a45a8ff 1770 ((MODE) == ADC_DUALMODE_ALTERTRIG) )
bogdanm 0:9b334a45a8ff 1771 /**
bogdanm 0:9b334a45a8ff 1772 * @}
bogdanm 0:9b334a45a8ff 1773 */
bogdanm 0:9b334a45a8ff 1774
bogdanm 0:9b334a45a8ff 1775
bogdanm 0:9b334a45a8ff 1776 /** @defgroup ADCEx_Direct_memory_access_mode_for_multimode ADC Extended DMA Mode for Dual ADC Mode
bogdanm 0:9b334a45a8ff 1777 * @{
bogdanm 0:9b334a45a8ff 1778 */
bogdanm 0:9b334a45a8ff 1779 #define ADC_DMAACCESSMODE_DISABLED ((uint32_t)0x00000000) /*!< DMA multimode disabled: each ADC will use its own DMA channel */
bogdanm 0:9b334a45a8ff 1780 #define ADC_DMAACCESSMODE_12_10_BITS ((uint32_t)ADC12_CCR_MDMA_1) /*!< DMA multimode enabled (one DMA channel for both ADC, DMA of ADC master) for 12 and 10 bits resolution */
bogdanm 0:9b334a45a8ff 1781 #define ADC_DMAACCESSMODE_8_6_BITS ((uint32_t)ADC12_CCR_MDMA) /*!< DMA multimode enabled (one DMA channel for both ADC, DMA of ADC master) for 8 and 6 bits resolution */
bogdanm 0:9b334a45a8ff 1782
bogdanm 0:9b334a45a8ff 1783 #define IS_ADC_DMA_ACCESS_MODE(MODE) (((MODE) == ADC_DMAACCESSMODE_DISABLED) || \
bogdanm 0:9b334a45a8ff 1784 ((MODE) == ADC_DMAACCESSMODE_12_10_BITS) || \
bogdanm 0:9b334a45a8ff 1785 ((MODE) == ADC_DMAACCESSMODE_8_6_BITS) )
bogdanm 0:9b334a45a8ff 1786 /**
bogdanm 0:9b334a45a8ff 1787 * @}
bogdanm 0:9b334a45a8ff 1788 */
bogdanm 0:9b334a45a8ff 1789
bogdanm 0:9b334a45a8ff 1790 /** @defgroup ADCEx_delay_between_2_sampling_phases ADC Extended Delay Between 2 Sampling Phases
bogdanm 0:9b334a45a8ff 1791 * @{
bogdanm 0:9b334a45a8ff 1792 */
bogdanm 0:9b334a45a8ff 1793 #define ADC_TWOSAMPLINGDELAY_1CYCLE ((uint32_t)(0x00000000))
bogdanm 0:9b334a45a8ff 1794 #define ADC_TWOSAMPLINGDELAY_2CYCLES ((uint32_t)(ADC12_CCR_DELAY_0))
bogdanm 0:9b334a45a8ff 1795 #define ADC_TWOSAMPLINGDELAY_3CYCLES ((uint32_t)(ADC12_CCR_DELAY_1))
bogdanm 0:9b334a45a8ff 1796 #define ADC_TWOSAMPLINGDELAY_4CYCLES ((uint32_t)(ADC12_CCR_DELAY_1 | ADC12_CCR_DELAY_0))
bogdanm 0:9b334a45a8ff 1797 #define ADC_TWOSAMPLINGDELAY_5CYCLES ((uint32_t)(ADC12_CCR_DELAY_2))
bogdanm 0:9b334a45a8ff 1798 #define ADC_TWOSAMPLINGDELAY_6CYCLES ((uint32_t)(ADC12_CCR_DELAY_2 | ADC12_CCR_DELAY_0))
bogdanm 0:9b334a45a8ff 1799 #define ADC_TWOSAMPLINGDELAY_7CYCLES ((uint32_t)(ADC12_CCR_DELAY_2 | ADC12_CCR_DELAY_1))
bogdanm 0:9b334a45a8ff 1800 #define ADC_TWOSAMPLINGDELAY_8CYCLES ((uint32_t)(ADC12_CCR_DELAY_2 | ADC12_CCR_DELAY_1 | ADC12_CCR_DELAY_0))
bogdanm 0:9b334a45a8ff 1801 #define ADC_TWOSAMPLINGDELAY_9CYCLES ((uint32_t)(ADC12_CCR_DELAY_3))
bogdanm 0:9b334a45a8ff 1802 #define ADC_TWOSAMPLINGDELAY_10CYCLES ((uint32_t)(ADC12_CCR_DELAY_3 | ADC12_CCR_DELAY_0))
bogdanm 0:9b334a45a8ff 1803 #define ADC_TWOSAMPLINGDELAY_11CYCLES ((uint32_t)(ADC12_CCR_DELAY_3 | ADC12_CCR_DELAY_1))
bogdanm 0:9b334a45a8ff 1804 #define ADC_TWOSAMPLINGDELAY_12CYCLES ((uint32_t)(ADC12_CCR_DELAY_3 | ADC12_CCR_DELAY_1 | ADC12_CCR_DELAY_0))
bogdanm 0:9b334a45a8ff 1805
bogdanm 0:9b334a45a8ff 1806 #define IS_ADC_SAMPLING_DELAY(DELAY) (((DELAY) == ADC_TWOSAMPLINGDELAY_1CYCLE) || \
bogdanm 0:9b334a45a8ff 1807 ((DELAY) == ADC_TWOSAMPLINGDELAY_2CYCLES) || \
bogdanm 0:9b334a45a8ff 1808 ((DELAY) == ADC_TWOSAMPLINGDELAY_3CYCLES) || \
bogdanm 0:9b334a45a8ff 1809 ((DELAY) == ADC_TWOSAMPLINGDELAY_4CYCLES) || \
bogdanm 0:9b334a45a8ff 1810 ((DELAY) == ADC_TWOSAMPLINGDELAY_5CYCLES) || \
bogdanm 0:9b334a45a8ff 1811 ((DELAY) == ADC_TWOSAMPLINGDELAY_6CYCLES) || \
bogdanm 0:9b334a45a8ff 1812 ((DELAY) == ADC_TWOSAMPLINGDELAY_7CYCLES) || \
bogdanm 0:9b334a45a8ff 1813 ((DELAY) == ADC_TWOSAMPLINGDELAY_8CYCLES) || \
bogdanm 0:9b334a45a8ff 1814 ((DELAY) == ADC_TWOSAMPLINGDELAY_9CYCLES) || \
bogdanm 0:9b334a45a8ff 1815 ((DELAY) == ADC_TWOSAMPLINGDELAY_10CYCLES) || \
bogdanm 0:9b334a45a8ff 1816 ((DELAY) == ADC_TWOSAMPLINGDELAY_11CYCLES) || \
bogdanm 0:9b334a45a8ff 1817 ((DELAY) == ADC_TWOSAMPLINGDELAY_12CYCLES) )
bogdanm 0:9b334a45a8ff 1818 /**
bogdanm 0:9b334a45a8ff 1819 * @}
bogdanm 0:9b334a45a8ff 1820 */
bogdanm 0:9b334a45a8ff 1821
bogdanm 0:9b334a45a8ff 1822 /** @defgroup ADCEx_analog_watchdog_number ADC Extended Analog Watchdog Selection
bogdanm 0:9b334a45a8ff 1823 * @{
bogdanm 0:9b334a45a8ff 1824 */
bogdanm 0:9b334a45a8ff 1825 #define ADC_ANALOGWATCHDOG_1 ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 1826 #define ADC_ANALOGWATCHDOG_2 ((uint32_t)0x00000002)
bogdanm 0:9b334a45a8ff 1827 #define ADC_ANALOGWATCHDOG_3 ((uint32_t)0x00000003)
bogdanm 0:9b334a45a8ff 1828
bogdanm 0:9b334a45a8ff 1829 #define IS_ADC_ANALOG_WATCHDOG_NUMBER(WATCHDOG) (((WATCHDOG) == ADC_ANALOGWATCHDOG_1) || \
bogdanm 0:9b334a45a8ff 1830 ((WATCHDOG) == ADC_ANALOGWATCHDOG_2) || \
bogdanm 0:9b334a45a8ff 1831 ((WATCHDOG) == ADC_ANALOGWATCHDOG_3) )
bogdanm 0:9b334a45a8ff 1832 /**
bogdanm 0:9b334a45a8ff 1833 * @}
bogdanm 0:9b334a45a8ff 1834 */
bogdanm 0:9b334a45a8ff 1835
bogdanm 0:9b334a45a8ff 1836 /** @defgroup ADCEx_analog_watchdog_mode ADC Extended Analog Watchdog Mode
bogdanm 0:9b334a45a8ff 1837 * @{
bogdanm 0:9b334a45a8ff 1838 */
bogdanm 0:9b334a45a8ff 1839 #define ADC_ANALOGWATCHDOG_NONE ((uint32_t) 0x00000000)
bogdanm 0:9b334a45a8ff 1840 #define ADC_ANALOGWATCHDOG_SINGLE_REG ((uint32_t)(ADC_CFGR_AWD1SGL | ADC_CFGR_AWD1EN))
bogdanm 0:9b334a45a8ff 1841 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC ((uint32_t)(ADC_CFGR_AWD1SGL | ADC_CFGR_JAWD1EN))
bogdanm 0:9b334a45a8ff 1842 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC ((uint32_t)(ADC_CFGR_AWD1SGL | ADC_CFGR_AWD1EN | ADC_CFGR_JAWD1EN))
bogdanm 0:9b334a45a8ff 1843 #define ADC_ANALOGWATCHDOG_ALL_REG ((uint32_t) ADC_CFGR_AWD1EN)
bogdanm 0:9b334a45a8ff 1844 #define ADC_ANALOGWATCHDOG_ALL_INJEC ((uint32_t) ADC_CFGR_JAWD1EN)
bogdanm 0:9b334a45a8ff 1845 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC ((uint32_t)(ADC_CFGR_AWD1EN | ADC_CFGR_JAWD1EN))
bogdanm 0:9b334a45a8ff 1846
bogdanm 0:9b334a45a8ff 1847 #define IS_ADC_ANALOG_WATCHDOG_MODE(WATCHDOG) (((WATCHDOG) == ADC_ANALOGWATCHDOG_NONE) || \
bogdanm 0:9b334a45a8ff 1848 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \
bogdanm 0:9b334a45a8ff 1849 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_INJEC) || \
bogdanm 0:9b334a45a8ff 1850 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC) || \
bogdanm 0:9b334a45a8ff 1851 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REG) || \
bogdanm 0:9b334a45a8ff 1852 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_INJEC) || \
bogdanm 0:9b334a45a8ff 1853 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REGINJEC) )
bogdanm 0:9b334a45a8ff 1854 /**
bogdanm 0:9b334a45a8ff 1855 * @}
bogdanm 0:9b334a45a8ff 1856 */
bogdanm 0:9b334a45a8ff 1857
bogdanm 0:9b334a45a8ff 1858 /** @defgroup ADC_conversion_group ADC Conversion Group
bogdanm 0:9b334a45a8ff 1859 * @{
bogdanm 0:9b334a45a8ff 1860 */
bogdanm 0:9b334a45a8ff 1861 #define REGULAR_GROUP ((uint32_t)(ADC_FLAG_EOC | ADC_FLAG_EOS))
bogdanm 0:9b334a45a8ff 1862 #define INJECTED_GROUP ((uint32_t)(ADC_FLAG_JEOC | ADC_FLAG_JEOS))
bogdanm 0:9b334a45a8ff 1863 #define REGULAR_INJECTED_GROUP ((uint32_t)(ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_JEOC | ADC_FLAG_JEOS))
bogdanm 0:9b334a45a8ff 1864
bogdanm 0:9b334a45a8ff 1865 #define IS_ADC_CONVERSION_GROUP(CONVERSION) (((CONVERSION) == REGULAR_GROUP) || \
bogdanm 0:9b334a45a8ff 1866 ((CONVERSION) == INJECTED_GROUP) || \
bogdanm 0:9b334a45a8ff 1867 ((CONVERSION) == REGULAR_INJECTED_GROUP) )
bogdanm 0:9b334a45a8ff 1868 /**
bogdanm 0:9b334a45a8ff 1869 * @}
bogdanm 0:9b334a45a8ff 1870 */
bogdanm 0:9b334a45a8ff 1871
bogdanm 0:9b334a45a8ff 1872 /** @defgroup ADCEx_Event_type ADC Extended Event Type
bogdanm 0:9b334a45a8ff 1873 * @{
bogdanm 0:9b334a45a8ff 1874 */
bogdanm 0:9b334a45a8ff 1875 #define AWD1_EVENT ((uint32_t)ADC_FLAG_AWD1) /*!< ADC Analog watchdog 1 event (main analog watchdog, present on all STM32 devices) */
bogdanm 0:9b334a45a8ff 1876 #define AWD2_EVENT ((uint32_t)ADC_FLAG_AWD2) /*!< ADC Analog watchdog 2 event (additional analog watchdog, present only on STM32F3 devices) */
bogdanm 0:9b334a45a8ff 1877 #define AWD3_EVENT ((uint32_t)ADC_FLAG_AWD3) /*!< ADC Analog watchdog 3 event (additional analog watchdog, present only on STM32F3 devices) */
bogdanm 0:9b334a45a8ff 1878 #define OVR_EVENT ((uint32_t)ADC_FLAG_OVR) /*!< ADC overrun event */
bogdanm 0:9b334a45a8ff 1879 #define JQOVF_EVENT ((uint32_t)ADC_FLAG_JQOVF) /*!< ADC Injected Context Queue Overflow event */
bogdanm 0:9b334a45a8ff 1880
bogdanm 0:9b334a45a8ff 1881 #define AWD_EVENT AWD1_EVENT /*!< ADC Analog watchdog 1 event: Naming for compatibility with other STM32 devices having only 1 analog watchdog */
bogdanm 0:9b334a45a8ff 1882
bogdanm 0:9b334a45a8ff 1883 #define IS_ADC_EVENT_TYPE(EVENT) (((EVENT) == AWD_EVENT) || \
bogdanm 0:9b334a45a8ff 1884 ((EVENT) == AWD2_EVENT) || \
bogdanm 0:9b334a45a8ff 1885 ((EVENT) == AWD3_EVENT) || \
bogdanm 0:9b334a45a8ff 1886 ((EVENT) == OVR_EVENT) || \
bogdanm 0:9b334a45a8ff 1887 ((EVENT) == JQOVF_EVENT) )
bogdanm 0:9b334a45a8ff 1888 /**
bogdanm 0:9b334a45a8ff 1889 * @}
bogdanm 0:9b334a45a8ff 1890 */
bogdanm 0:9b334a45a8ff 1891
bogdanm 0:9b334a45a8ff 1892 /** @defgroup ADCEx_interrupts_definition ADC Extended Interrupts Definition
bogdanm 0:9b334a45a8ff 1893 * @{
bogdanm 0:9b334a45a8ff 1894 */
bogdanm 0:9b334a45a8ff 1895 #define ADC_IT_RDY ADC_IER_RDY /*!< ADC Ready (ADRDY) interrupt source */
bogdanm 0:9b334a45a8ff 1896 #define ADC_IT_EOSMP ADC_IER_EOSMP /*!< ADC End of Sampling interrupt source */
bogdanm 0:9b334a45a8ff 1897 #define ADC_IT_EOC ADC_IER_EOC /*!< ADC End of Regular Conversion interrupt source */
bogdanm 0:9b334a45a8ff 1898 #define ADC_IT_EOS ADC_IER_EOS /*!< ADC End of Regular sequence of Conversions interrupt source */
bogdanm 0:9b334a45a8ff 1899 #define ADC_IT_OVR ADC_IER_OVR /*!< ADC overrun interrupt source */
bogdanm 0:9b334a45a8ff 1900 #define ADC_IT_JEOC ADC_IER_JEOC /*!< ADC End of Injected Conversion interrupt source */
bogdanm 0:9b334a45a8ff 1901 #define ADC_IT_JEOS ADC_IER_JEOS /*!< ADC End of Injected sequence of Conversions interrupt source */
bogdanm 0:9b334a45a8ff 1902 #define ADC_IT_AWD1 ADC_IER_AWD1 /*!< ADC Analog watchdog 1 interrupt source (main analog watchdog, present on all STM32 devices) */
bogdanm 0:9b334a45a8ff 1903 #define ADC_IT_AWD2 ADC_IER_AWD2 /*!< ADC Analog watchdog 2 interrupt source (additional analog watchdog, present only on STM32F3 devices) */
bogdanm 0:9b334a45a8ff 1904 #define ADC_IT_AWD3 ADC_IER_AWD3 /*!< ADC Analog watchdog 3 interrupt source (additional analog watchdog, present only on STM32F3 devices) */
bogdanm 0:9b334a45a8ff 1905 #define ADC_IT_JQOVF ADC_IER_JQOVF /*!< ADC Injected Context Queue Overflow interrupt source */
bogdanm 0:9b334a45a8ff 1906
bogdanm 0:9b334a45a8ff 1907 #define ADC_IT_AWD ADC_IT_AWD1 /*!< ADC Analog watchdog 1 interrupt source: Naming for compatibility with other STM32 devices having only 1 analog watchdog */
bogdanm 0:9b334a45a8ff 1908
bogdanm 0:9b334a45a8ff 1909 /* Check of single flag */
bogdanm 0:9b334a45a8ff 1910 #define IS_ADC_IT(IT) (((IT) == ADC_IT_RDY) || ((IT) == ADC_IT_EOSMP) || \
bogdanm 0:9b334a45a8ff 1911 ((IT) == ADC_IT_EOC) || ((IT) == ADC_IT_EOS) || \
bogdanm 0:9b334a45a8ff 1912 ((IT) == ADC_IT_OVR) || ((IT) == ADC_IT_EOS) || \
bogdanm 0:9b334a45a8ff 1913 ((IT) == ADC_IT_JEOS) || ((IT) == ADC_IT_AWD1) || \
bogdanm 0:9b334a45a8ff 1914 ((IT) == ADC_IT_AWD2) || ((IT) == ADC_IT_AWD3) || \
bogdanm 0:9b334a45a8ff 1915 ((IT) == ADC_IT_JQOVF) )
bogdanm 0:9b334a45a8ff 1916 /**
bogdanm 0:9b334a45a8ff 1917 * @}
bogdanm 0:9b334a45a8ff 1918 */
bogdanm 0:9b334a45a8ff 1919
bogdanm 0:9b334a45a8ff 1920 /** @defgroup ADCEx_flags_definition ADC Extended Flags Definition
bogdanm 0:9b334a45a8ff 1921 * @{
bogdanm 0:9b334a45a8ff 1922 */
bogdanm 0:9b334a45a8ff 1923 #define ADC_FLAG_RDY ADC_ISR_ADRD /*!< ADC Ready (ADRDY) flag */
bogdanm 0:9b334a45a8ff 1924 #define ADC_FLAG_EOSMP ADC_ISR_EOSMP /*!< ADC End of Sampling flag */
bogdanm 0:9b334a45a8ff 1925 #define ADC_FLAG_EOC ADC_ISR_EOC /*!< ADC End of Regular Conversion flag */
bogdanm 0:9b334a45a8ff 1926 #define ADC_FLAG_EOS ADC_ISR_EOS /*!< ADC End of Regular sequence of Conversions flag */
bogdanm 0:9b334a45a8ff 1927 #define ADC_FLAG_OVR ADC_ISR_OVR /*!< ADC overrun flag */
bogdanm 0:9b334a45a8ff 1928 #define ADC_FLAG_JEOC ADC_ISR_JEOC /*!< ADC End of Injected Conversion flag */
bogdanm 0:9b334a45a8ff 1929 #define ADC_FLAG_JEOS ADC_ISR_JEOS /*!< ADC End of Injected sequence of Conversions flag */
bogdanm 0:9b334a45a8ff 1930 #define ADC_FLAG_AWD1 ADC_ISR_AWD1 /*!< ADC Analog watchdog 1 flag (main analog watchdog, present on all STM32 devices) */
bogdanm 0:9b334a45a8ff 1931 #define ADC_FLAG_AWD2 ADC_ISR_AWD2 /*!< ADC Analog watchdog 2 flag (additional analog watchdog, present only on STM32F3 devices) */
bogdanm 0:9b334a45a8ff 1932 #define ADC_FLAG_AWD3 ADC_ISR_AWD3 /*!< ADC Analog watchdog 3 flag (additional analog watchdog, present only on STM32F3 devices) */
bogdanm 0:9b334a45a8ff 1933 #define ADC_FLAG_JQOVF ADC_ISR_JQOVF /*!< ADC Injected Context Queue Overflow flag */
bogdanm 0:9b334a45a8ff 1934
bogdanm 0:9b334a45a8ff 1935 #define ADC_FLAG_AWD ADC_FLAG_AWD1 /*!< ADC Analog watchdog 1 flag: Naming for compatibility with other STM32 devices having only 1 analog watchdog */
bogdanm 0:9b334a45a8ff 1936
bogdanm 0:9b334a45a8ff 1937 #define ADC_FLAG_ALL (ADC_FLAG_RDY | ADC_FLAG_EOSMP | ADC_FLAG_EOC | ADC_FLAG_EOS | \
bogdanm 0:9b334a45a8ff 1938 ADC_FLAG_JEOC | ADC_FLAG_JEOS | ADC_FLAG_OVR | ADC_FLAG_AWD1 | \
bogdanm 0:9b334a45a8ff 1939 ADC_FLAG_AWD2 | ADC_FLAG_AWD3 | ADC_FLAG_JQOVF)
bogdanm 0:9b334a45a8ff 1940
bogdanm 0:9b334a45a8ff 1941 /* Combination of all post-conversion flags bits: EOC/EOS, JEOC/JEOS, OVR, AWDx */
bogdanm 0:9b334a45a8ff 1942 #define ADC_FLAG_POSTCONV_ALL (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_JEOC | ADC_FLAG_JEOS | \
bogdanm 0:9b334a45a8ff 1943 ADC_FLAG_OVR | ADC_FLAG_AWD1 | ADC_FLAG_AWD2 | ADC_FLAG_AWD3 | \
bogdanm 0:9b334a45a8ff 1944 ADC_FLAG_JQOVF)
bogdanm 0:9b334a45a8ff 1945
bogdanm 0:9b334a45a8ff 1946 /* Check of single flag */
bogdanm 0:9b334a45a8ff 1947 #define IS_ADC_FLAG(FLAG) (((FLAG) == ADC_FLAG_RDY) || ((FLAG) == ADC_FLAG_EOSMP) || \
bogdanm 0:9b334a45a8ff 1948 ((FLAG) == ADC_FLAG_EOC) || ((FLAG) == ADC_FLAG_EOS) || \
bogdanm 0:9b334a45a8ff 1949 ((FLAG) == ADC_FLAG_OVR) || ((FLAG) == ADC_FLAG_JEOC) || \
bogdanm 0:9b334a45a8ff 1950 ((FLAG) == ADC_FLAG_JEOS) || ((FLAG) == ADC_FLAG_AWD1) || \
bogdanm 0:9b334a45a8ff 1951 ((FLAG) == ADC_FLAG_AWD2) || ((FLAG) == ADC_FLAG_AWD3) || \
bogdanm 0:9b334a45a8ff 1952 ((FLAG) == ADC_FLAG_JQOVF) )
bogdanm 0:9b334a45a8ff 1953 /**
bogdanm 0:9b334a45a8ff 1954 * @}
bogdanm 0:9b334a45a8ff 1955 */
bogdanm 0:9b334a45a8ff 1956
bogdanm 0:9b334a45a8ff 1957 /** @defgroup ADC_multimode_bits ADC Multimode Bits
bogdanm 0:9b334a45a8ff 1958 * @{
bogdanm 0:9b334a45a8ff 1959 */
bogdanm 0:9b334a45a8ff 1960 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 1961 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 1962 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 1963 #define ADC_CCR_MULTI ADC12_CCR_MULTI /*!< Multi ADC mode selection */
bogdanm 0:9b334a45a8ff 1964 #define ADC_CCR_MULTI_0 ADC12_CCR_MULTI_0 /*!< MULTI bit 0 */
bogdanm 0:9b334a45a8ff 1965 #define ADC_CCR_MULTI_1 ADC12_CCR_MULTI_1 /*!< MULTI bit 1 */
bogdanm 0:9b334a45a8ff 1966 #define ADC_CCR_MULTI_2 ADC12_CCR_MULTI_2 /*!< MULTI bit 2 */
bogdanm 0:9b334a45a8ff 1967 #define ADC_CCR_MULTI_3 ADC12_CCR_MULTI_3 /*!< MULTI bit 3 */
bogdanm 0:9b334a45a8ff 1968 #define ADC_CCR_MULTI_4 ADC12_CCR_MULTI_4 /*!< MULTI bit 4 */
bogdanm 0:9b334a45a8ff 1969 #define ADC_CCR_DELAY ADC12_CCR_DELAY /*!< Delay between 2 sampling phases */
bogdanm 0:9b334a45a8ff 1970 #define ADC_CCR_DELAY_0 ADC12_CCR_DELAY_0 /*!< DELAY bit 0 */
bogdanm 0:9b334a45a8ff 1971 #define ADC_CCR_DELAY_1 ADC12_CCR_DELAY_1 /*!< DELAY bit 1 */
bogdanm 0:9b334a45a8ff 1972 #define ADC_CCR_DELAY_2 ADC12_CCR_DELAY_2 /*!< DELAY bit 2 */
bogdanm 0:9b334a45a8ff 1973 #define ADC_CCR_DELAY_3 ADC12_CCR_DELAY_3 /*!< DELAY bit 3 */
bogdanm 0:9b334a45a8ff 1974 #define ADC_CCR_DMACFG ADC12_CCR_DMACFG /*!< DMA configuration for multi-ADC mode */
bogdanm 0:9b334a45a8ff 1975 #define ADC_CCR_MDMA ADC12_CCR_MDMA /*!< DMA mode for multi-ADC mode */
bogdanm 0:9b334a45a8ff 1976 #define ADC_CCR_MDMA_0 ADC12_CCR_MDMA_0 /*!< MDMA bit 0 */
bogdanm 0:9b334a45a8ff 1977 #define ADC_CCR_MDMA_1 ADC12_CCR_MDMA_1 /*!< MDMA bit 1 */
bogdanm 0:9b334a45a8ff 1978 #define ADC_CCR_CKMODE ADC12_CCR_CKMODE /*!< ADC clock mode */
bogdanm 0:9b334a45a8ff 1979 #define ADC_CCR_CKMODE_0 ADC12_CCR_CKMODE_0 /*!< CKMODE bit 0 */
bogdanm 0:9b334a45a8ff 1980 #define ADC_CCR_CKMODE_1 ADC12_CCR_CKMODE_1 /*!< CKMODE bit 1 */
bogdanm 0:9b334a45a8ff 1981 #define ADC_CCR_VREFEN ADC12_CCR_VREFEN /*!< VREFINT enable */
bogdanm 0:9b334a45a8ff 1982 #define ADC_CCR_TSEN ADC12_CCR_TSEN /*!< Temperature sensor enable */
bogdanm 0:9b334a45a8ff 1983 #define ADC_CCR_VBATEN ADC12_CCR_VBATEN /*!< VBAT enable */
bogdanm 0:9b334a45a8ff 1984 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 1985 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 1986 /* STM32F303x8 || STM32F334x8 || STM32F328xx */
bogdanm 0:9b334a45a8ff 1987
bogdanm 0:9b334a45a8ff 1988 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 1989 #define ADC_CCR_MULTI ADC1_CCR_MULTI /*!< Multi ADC mode selection */
bogdanm 0:9b334a45a8ff 1990 #define ADC_CCR_MULTI_0 ADC1_CCR_MULTI_0 /*!< MULTI bit 0 */
bogdanm 0:9b334a45a8ff 1991 #define ADC_CCR_MULTI_1 ADC1_CCR_MULTI_1 /*!< MULTI bit 1 */
bogdanm 0:9b334a45a8ff 1992 #define ADC_CCR_MULTI_2 ADC1_CCR_MULTI_2 /*!< MULTI bit 2 */
bogdanm 0:9b334a45a8ff 1993 #define ADC_CCR_MULTI_3 ADC1_CCR_MULTI_3 /*!< MULTI bit 3 */
bogdanm 0:9b334a45a8ff 1994 #define ADC_CCR_MULTI_4 ADC1_CCR_MULTI_4 /*!< MULTI bit 4 */
bogdanm 0:9b334a45a8ff 1995 #define ADC_CCR_DELAY ADC1_CCR_DELAY /*!< Delay between 2 sampling phases */
bogdanm 0:9b334a45a8ff 1996 #define ADC_CCR_DELAY_0 ADC1_CCR_DELAY_0 /*!< DELAY bit 0 */
bogdanm 0:9b334a45a8ff 1997 #define ADC_CCR_DELAY_1 ADC1_CCR_DELAY_1 /*!< DELAY bit 1 */
bogdanm 0:9b334a45a8ff 1998 #define ADC_CCR_DELAY_2 ADC1_CCR_DELAY_2 /*!< DELAY bit 2 */
bogdanm 0:9b334a45a8ff 1999 #define ADC_CCR_DELAY_3 ADC1_CCR_DELAY_3 /*!< DELAY bit 3 */
bogdanm 0:9b334a45a8ff 2000 #define ADC_CCR_DMACFG ADC1_CCR_DMACFG /*!< DMA configuration for multi-ADC mode */
bogdanm 0:9b334a45a8ff 2001 #define ADC_CCR_MDMA ADC1_CCR_MDMA /*!< DMA mode for multi-ADC mode */
bogdanm 0:9b334a45a8ff 2002 #define ADC_CCR_MDMA_0 ADC1_CCR_MDMA_0 /*!< MDMA bit 0 */
bogdanm 0:9b334a45a8ff 2003 #define ADC_CCR_MDMA_1 ADC1_CCR_MDMA_1 /*!< MDMA bit 1 */
bogdanm 0:9b334a45a8ff 2004 #define ADC_CCR_CKMODE ADC1_CCR_CKMODE /*!< ADC clock mode */
bogdanm 0:9b334a45a8ff 2005 #define ADC_CCR_CKMODE_0 ADC1_CCR_CKMODE_0 /*!< CKMODE bit 0 */
bogdanm 0:9b334a45a8ff 2006 #define ADC_CCR_CKMODE_1 ADC1_CCR_CKMODE_1 /*!< CKMODE bit 1 */
bogdanm 0:9b334a45a8ff 2007 #define ADC_CCR_VREFEN ADC1_CCR_VREFEN /*!< VREFINT enable */
bogdanm 0:9b334a45a8ff 2008 #define ADC_CCR_TSEN ADC1_CCR_TSEN /*!< Temperature sensor enable */
bogdanm 0:9b334a45a8ff 2009 #define ADC_CCR_VBATEN ADC1_CCR_VBATEN /*!< VBAT enable */
bogdanm 0:9b334a45a8ff 2010 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 2011
bogdanm 0:9b334a45a8ff 2012
bogdanm 0:9b334a45a8ff 2013 /**
bogdanm 0:9b334a45a8ff 2014 * @}
bogdanm 0:9b334a45a8ff 2015 */
bogdanm 0:9b334a45a8ff 2016
bogdanm 0:9b334a45a8ff 2017 /** @defgroup ADCEx_range_verification ADC Extended Range Verification
bogdanm 0:9b334a45a8ff 2018 * in function of ADC resolution selected (12, 10, 8 or 6 bits)
bogdanm 0:9b334a45a8ff 2019 * @{
bogdanm 0:9b334a45a8ff 2020 */
bogdanm 0:9b334a45a8ff 2021 #define IS_ADC_RANGE(RESOLUTION, ADC_VALUE) \
bogdanm 0:9b334a45a8ff 2022 ((((RESOLUTION) == ADC_RESOLUTION12b) && ((ADC_VALUE) <= ((uint32_t)0x0FFF))) || \
bogdanm 0:9b334a45a8ff 2023 (((RESOLUTION) == ADC_RESOLUTION10b) && ((ADC_VALUE) <= ((uint32_t)0x03FF))) || \
bogdanm 0:9b334a45a8ff 2024 (((RESOLUTION) == ADC_RESOLUTION8b) && ((ADC_VALUE) <= ((uint32_t)0x00FF))) || \
bogdanm 0:9b334a45a8ff 2025 (((RESOLUTION) == ADC_RESOLUTION6b) && ((ADC_VALUE) <= ((uint32_t)0x003F))) )
bogdanm 0:9b334a45a8ff 2026 /**
bogdanm 0:9b334a45a8ff 2027 * @}
bogdanm 0:9b334a45a8ff 2028 */
bogdanm 0:9b334a45a8ff 2029
bogdanm 0:9b334a45a8ff 2030 /** @defgroup ADC_injected_nb_conv_verification ADC Injected Conversion Number Verification
bogdanm 0:9b334a45a8ff 2031 * @{
bogdanm 0:9b334a45a8ff 2032 */
bogdanm 0:9b334a45a8ff 2033 #define IS_ADC_INJECTED_NB_CONV(LENGTH) (((LENGTH) >= ((uint32_t)1)) && ((LENGTH) <= ((uint32_t)4)))
bogdanm 0:9b334a45a8ff 2034 /**
bogdanm 0:9b334a45a8ff 2035 * @}
bogdanm 0:9b334a45a8ff 2036 */
bogdanm 0:9b334a45a8ff 2037
bogdanm 0:9b334a45a8ff 2038 /** @defgroup ADC_regular_nb_conv_verification ADC Regular Conversion Number Verification
bogdanm 0:9b334a45a8ff 2039 * @{
bogdanm 0:9b334a45a8ff 2040 */
bogdanm 0:9b334a45a8ff 2041 #define IS_ADC_REGULAR_NB_CONV(LENGTH) (((LENGTH) >= ((uint32_t)1)) && ((LENGTH) <= ((uint32_t)16)))
bogdanm 0:9b334a45a8ff 2042 /**
bogdanm 0:9b334a45a8ff 2043 * @}
bogdanm 0:9b334a45a8ff 2044 */
bogdanm 0:9b334a45a8ff 2045
bogdanm 0:9b334a45a8ff 2046 /** @defgroup ADC_regular_discontinuous_mode_number_verification ADC Regular Discontinuous Mode NumberVerification
bogdanm 0:9b334a45a8ff 2047 * @{
bogdanm 0:9b334a45a8ff 2048 */
bogdanm 0:9b334a45a8ff 2049 #define IS_ADC_REGULAR_DISCONT_NUMBER(NUMBER) (((NUMBER) >= ((uint32_t)1)) && ((NUMBER) <= ((uint32_t)8)))
bogdanm 0:9b334a45a8ff 2050 /**
bogdanm 0:9b334a45a8ff 2051 * @}
bogdanm 0:9b334a45a8ff 2052 */
bogdanm 0:9b334a45a8ff 2053
bogdanm 0:9b334a45a8ff 2054 /** @defgroup ADC_calibration_factor_length_verification ADC Calibration Factor Length Verification
bogdanm 0:9b334a45a8ff 2055 * @{
bogdanm 0:9b334a45a8ff 2056 */
bogdanm 0:9b334a45a8ff 2057 /**
bogdanm 0:9b334a45a8ff 2058 * @brief Calibration factor length verification (7 bits maximum)
bogdanm 0:9b334a45a8ff 2059 * @param _Calibration_Factor_: Calibration factor value
bogdanm 0:9b334a45a8ff 2060 * @retval None
bogdanm 0:9b334a45a8ff 2061 */
bogdanm 0:9b334a45a8ff 2062 #define IS_ADC_CALFACT(_Calibration_Factor_) ((_Calibration_Factor_) <= ((uint32_t)0x7F))
bogdanm 0:9b334a45a8ff 2063 /**
bogdanm 0:9b334a45a8ff 2064 * @}
bogdanm 0:9b334a45a8ff 2065 */
bogdanm 0:9b334a45a8ff 2066 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 2067 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 2068 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
bogdanm 0:9b334a45a8ff 2069 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 2070
bogdanm 0:9b334a45a8ff 2071
bogdanm 0:9b334a45a8ff 2072 #if defined(STM32F373xC) || defined(STM32F378xx)
bogdanm 0:9b334a45a8ff 2073 /** @defgroup ADCEx_Data_align ADC Extended Data Alignment
bogdanm 0:9b334a45a8ff 2074 * @{
bogdanm 0:9b334a45a8ff 2075 */
bogdanm 0:9b334a45a8ff 2076 #define ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 2077 #define ADC_DATAALIGN_LEFT ((uint32_t)ADC_CR2_ALIGN)
bogdanm 0:9b334a45a8ff 2078
bogdanm 0:9b334a45a8ff 2079 #define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DATAALIGN_RIGHT) || \
bogdanm 0:9b334a45a8ff 2080 ((ALIGN) == ADC_DATAALIGN_LEFT) )
bogdanm 0:9b334a45a8ff 2081 /**
bogdanm 0:9b334a45a8ff 2082 * @}
bogdanm 0:9b334a45a8ff 2083 */
bogdanm 0:9b334a45a8ff 2084
bogdanm 0:9b334a45a8ff 2085 /** @defgroup ADCEx_Scan_mode ADC Extended Scan Mode
bogdanm 0:9b334a45a8ff 2086 * @{
bogdanm 0:9b334a45a8ff 2087 */
bogdanm 0:9b334a45a8ff 2088 #define ADC_SCAN_DISABLE ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 2089 #define ADC_SCAN_ENABLE ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 2090
bogdanm 0:9b334a45a8ff 2091 #define IS_ADC_SCAN_MODE(SCAN_MODE) (((SCAN_MODE) == ADC_SCAN_DISABLE) || \
bogdanm 0:9b334a45a8ff 2092 ((SCAN_MODE) == ADC_SCAN_ENABLE) )
bogdanm 0:9b334a45a8ff 2093 /**
bogdanm 0:9b334a45a8ff 2094 * @}
bogdanm 0:9b334a45a8ff 2095 */
bogdanm 0:9b334a45a8ff 2096
bogdanm 0:9b334a45a8ff 2097 /** @defgroup ADCEx_External_trigger_edge_Regular ADC Extended External trigger enable for regular channels
bogdanm 0:9b334a45a8ff 2098 * @{
bogdanm 0:9b334a45a8ff 2099 */
bogdanm 0:9b334a45a8ff 2100 #define ADC_EXTERNALTRIGCONVEDGE_NONE ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 2101 #define ADC_EXTERNALTRIGCONVEDGE_RISING ((uint32_t)ADC_CR2_EXTTRIG)
bogdanm 0:9b334a45a8ff 2102
bogdanm 0:9b334a45a8ff 2103 #define IS_ADC_EXTTRIG_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \
bogdanm 0:9b334a45a8ff 2104 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISING) )
bogdanm 0:9b334a45a8ff 2105 /**
bogdanm 0:9b334a45a8ff 2106 * @}
bogdanm 0:9b334a45a8ff 2107 */
bogdanm 0:9b334a45a8ff 2108
bogdanm 0:9b334a45a8ff 2109 /** @defgroup ADCEx_External_trigger_source_Regular ADC Extended External trigger selection for regular group
bogdanm 0:9b334a45a8ff 2110 * @{
bogdanm 0:9b334a45a8ff 2111 */
bogdanm 0:9b334a45a8ff 2112 /* List of external triggers with generic trigger name, sorted by trigger */
bogdanm 0:9b334a45a8ff 2113 /* name: */
bogdanm 0:9b334a45a8ff 2114
bogdanm 0:9b334a45a8ff 2115 /* External triggers of regular group for ADC1 */
bogdanm 0:9b334a45a8ff 2116 #define ADC_EXTERNALTRIGCONV_T2_CC2 ADC_EXTERNALTRIG_T2_CC2
bogdanm 0:9b334a45a8ff 2117 #define ADC_EXTERNALTRIGCONV_T3_TRGO ADC_EXTERNALTRIG_T3_TRGO
bogdanm 0:9b334a45a8ff 2118 #define ADC_EXTERNALTRIGCONV_T4_CC2 ADC_EXTERNALTRIG_T4_CC2
bogdanm 0:9b334a45a8ff 2119 #define ADC_EXTERNALTRIGCONV_T19_TRGO ADC_EXTERNALTRIG_T19_TRGO
bogdanm 0:9b334a45a8ff 2120 #define ADC_EXTERNALTRIGCONV_T19_CC3 ADC_EXTERNALTRIG_T19_CC3
bogdanm 0:9b334a45a8ff 2121 #define ADC_EXTERNALTRIGCONV_T19_CC4 ADC_EXTERNALTRIG_T19_CC4
bogdanm 0:9b334a45a8ff 2122 #define ADC_EXTERNALTRIGCONV_EXT_IT11 ADC_EXTERNALTRIG_EXT_IT11
bogdanm 0:9b334a45a8ff 2123 #define ADC_SOFTWARE_START ADC_SWSTART
bogdanm 0:9b334a45a8ff 2124
bogdanm 0:9b334a45a8ff 2125 #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
bogdanm 0:9b334a45a8ff 2126 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
bogdanm 0:9b334a45a8ff 2127 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC2) || \
bogdanm 0:9b334a45a8ff 2128 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T19_TRGO) || \
bogdanm 0:9b334a45a8ff 2129 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T19_CC3) || \
bogdanm 0:9b334a45a8ff 2130 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T19_CC4) || \
bogdanm 0:9b334a45a8ff 2131 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \
bogdanm 0:9b334a45a8ff 2132 ((REGTRIG) == ADC_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 2133 /**
bogdanm 0:9b334a45a8ff 2134 * @}
bogdanm 0:9b334a45a8ff 2135 */
bogdanm 0:9b334a45a8ff 2136
bogdanm 0:9b334a45a8ff 2137
bogdanm 0:9b334a45a8ff 2138 /** @defgroup ADCEx_Internal_HAL_driver_Ext_trig_src_Regular ADC Extended External trigger selection for regular group (Used Internally)
bogdanm 0:9b334a45a8ff 2139 * @{
bogdanm 0:9b334a45a8ff 2140 */
bogdanm 0:9b334a45a8ff 2141
bogdanm 0:9b334a45a8ff 2142 /* List of external triggers of regular group for ADC1: */
bogdanm 0:9b334a45a8ff 2143 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 2144
bogdanm 0:9b334a45a8ff 2145 /* External triggers of regular group for ADC1 */
bogdanm 0:9b334a45a8ff 2146 #define ADC_EXTERNALTRIG_T19_TRGO ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 2147 #define ADC_EXTERNALTRIG_T19_CC3 ((uint32_t)ADC_CR2_EXTSEL_0)
bogdanm 0:9b334a45a8ff 2148 #define ADC_EXTERNALTRIG_T19_CC4 ((uint32_t)ADC_CR2_EXTSEL_1)
bogdanm 0:9b334a45a8ff 2149 #define ADC_EXTERNALTRIG_T2_CC2 ((uint32_t)(ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
bogdanm 0:9b334a45a8ff 2150 #define ADC_EXTERNALTRIG_T3_TRGO ((uint32_t)ADC_CR2_EXTSEL_2)
bogdanm 0:9b334a45a8ff 2151 #define ADC_EXTERNALTRIG_T4_CC2 ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))
bogdanm 0:9b334a45a8ff 2152 #define ADC_EXTERNALTRIG_EXT_IT11 ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))
bogdanm 0:9b334a45a8ff 2153 #define ADC_SWSTART ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
bogdanm 0:9b334a45a8ff 2154
bogdanm 0:9b334a45a8ff 2155 /**
bogdanm 0:9b334a45a8ff 2156 * @}
bogdanm 0:9b334a45a8ff 2157 */
bogdanm 0:9b334a45a8ff 2158
bogdanm 0:9b334a45a8ff 2159
bogdanm 0:9b334a45a8ff 2160 /** @defgroup ADCEx_channels ADC Extended Channels
bogdanm 0:9b334a45a8ff 2161 * @{
bogdanm 0:9b334a45a8ff 2162 */
bogdanm 0:9b334a45a8ff 2163 /* Note: Depending on devices, some channels may not be available on package */
bogdanm 0:9b334a45a8ff 2164 /* pins. Refer to device datasheet for channels availability. */
bogdanm 0:9b334a45a8ff 2165 #define ADC_CHANNEL_0 ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 2166 #define ADC_CHANNEL_1 ((uint32_t)(ADC_SQR3_SQ1_0))
bogdanm 0:9b334a45a8ff 2167 #define ADC_CHANNEL_2 ((uint32_t)(ADC_SQR3_SQ1_1))
bogdanm 0:9b334a45a8ff 2168 #define ADC_CHANNEL_3 ((uint32_t)(ADC_SQR3_SQ1_1 | ADC_SQR3_SQ1_0))
bogdanm 0:9b334a45a8ff 2169 #define ADC_CHANNEL_4 ((uint32_t)(ADC_SQR3_SQ1_2))
bogdanm 0:9b334a45a8ff 2170 #define ADC_CHANNEL_5 ((uint32_t)(ADC_SQR3_SQ1_2 | ADC_SQR3_SQ1_0))
bogdanm 0:9b334a45a8ff 2171 #define ADC_CHANNEL_6 ((uint32_t)(ADC_SQR3_SQ1_2 | ADC_SQR3_SQ1_1))
bogdanm 0:9b334a45a8ff 2172 #define ADC_CHANNEL_7 ((uint32_t)(ADC_SQR3_SQ1_2 | ADC_SQR3_SQ1_1 | ADC_SQR3_SQ1_0))
bogdanm 0:9b334a45a8ff 2173 #define ADC_CHANNEL_8 ((uint32_t)(ADC_SQR3_SQ1_3))
bogdanm 0:9b334a45a8ff 2174 #define ADC_CHANNEL_9 ((uint32_t)(ADC_SQR3_SQ1_3 | ADC_SQR3_SQ1_0))
bogdanm 0:9b334a45a8ff 2175 #define ADC_CHANNEL_10 ((uint32_t)(ADC_SQR3_SQ1_3 | ADC_SQR3_SQ1_1))
bogdanm 0:9b334a45a8ff 2176 #define ADC_CHANNEL_11 ((uint32_t)(ADC_SQR3_SQ1_3 | ADC_SQR3_SQ1_1 | ADC_SQR3_SQ1_0))
bogdanm 0:9b334a45a8ff 2177 #define ADC_CHANNEL_12 ((uint32_t)(ADC_SQR3_SQ1_3 | ADC_SQR3_SQ1_2))
bogdanm 0:9b334a45a8ff 2178 #define ADC_CHANNEL_13 ((uint32_t)(ADC_SQR3_SQ1_3 | ADC_SQR3_SQ1_2 | ADC_SQR3_SQ1_0))
bogdanm 0:9b334a45a8ff 2179 #define ADC_CHANNEL_14 ((uint32_t)(ADC_SQR3_SQ1_3 | ADC_SQR3_SQ1_2 | ADC_SQR3_SQ1_1))
bogdanm 0:9b334a45a8ff 2180 #define ADC_CHANNEL_15 ((uint32_t)(ADC_SQR3_SQ1_3 | ADC_SQR3_SQ1_2 | ADC_SQR3_SQ1_1 | ADC_SQR3_SQ1_0))
bogdanm 0:9b334a45a8ff 2181 #define ADC_CHANNEL_16 ((uint32_t)(ADC_SQR3_SQ1_4))
bogdanm 0:9b334a45a8ff 2182 #define ADC_CHANNEL_17 ((uint32_t)(ADC_SQR3_SQ1_4 | ADC_SQR3_SQ1_0))
bogdanm 0:9b334a45a8ff 2183 #define ADC_CHANNEL_18 ((uint32_t)(ADC_SQR3_SQ1_4 | ADC_SQR3_SQ1_1))
bogdanm 0:9b334a45a8ff 2184
bogdanm 0:9b334a45a8ff 2185 #define ADC_CHANNEL_TEMPSENSOR ADC_CHANNEL_16
bogdanm 0:9b334a45a8ff 2186 #define ADC_CHANNEL_VREFINT ADC_CHANNEL_17
bogdanm 0:9b334a45a8ff 2187 #define ADC_CHANNEL_VBAT ADC_CHANNEL_18
bogdanm 0:9b334a45a8ff 2188
bogdanm 0:9b334a45a8ff 2189 #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_CHANNEL_0) || \
bogdanm 0:9b334a45a8ff 2190 ((CHANNEL) == ADC_CHANNEL_1) || \
bogdanm 0:9b334a45a8ff 2191 ((CHANNEL) == ADC_CHANNEL_2) || \
bogdanm 0:9b334a45a8ff 2192 ((CHANNEL) == ADC_CHANNEL_3) || \
bogdanm 0:9b334a45a8ff 2193 ((CHANNEL) == ADC_CHANNEL_4) || \
bogdanm 0:9b334a45a8ff 2194 ((CHANNEL) == ADC_CHANNEL_5) || \
bogdanm 0:9b334a45a8ff 2195 ((CHANNEL) == ADC_CHANNEL_6) || \
bogdanm 0:9b334a45a8ff 2196 ((CHANNEL) == ADC_CHANNEL_7) || \
bogdanm 0:9b334a45a8ff 2197 ((CHANNEL) == ADC_CHANNEL_8) || \
bogdanm 0:9b334a45a8ff 2198 ((CHANNEL) == ADC_CHANNEL_9) || \
bogdanm 0:9b334a45a8ff 2199 ((CHANNEL) == ADC_CHANNEL_10) || \
bogdanm 0:9b334a45a8ff 2200 ((CHANNEL) == ADC_CHANNEL_11) || \
bogdanm 0:9b334a45a8ff 2201 ((CHANNEL) == ADC_CHANNEL_12) || \
bogdanm 0:9b334a45a8ff 2202 ((CHANNEL) == ADC_CHANNEL_13) || \
bogdanm 0:9b334a45a8ff 2203 ((CHANNEL) == ADC_CHANNEL_14) || \
bogdanm 0:9b334a45a8ff 2204 ((CHANNEL) == ADC_CHANNEL_15) || \
bogdanm 0:9b334a45a8ff 2205 ((CHANNEL) == ADC_CHANNEL_TEMPSENSOR) || \
bogdanm 0:9b334a45a8ff 2206 ((CHANNEL) == ADC_CHANNEL_VREFINT) || \
bogdanm 0:9b334a45a8ff 2207 ((CHANNEL) == ADC_CHANNEL_VBAT) )
bogdanm 0:9b334a45a8ff 2208 /**
bogdanm 0:9b334a45a8ff 2209 * @}
bogdanm 0:9b334a45a8ff 2210 */
bogdanm 0:9b334a45a8ff 2211
bogdanm 0:9b334a45a8ff 2212 /** @defgroup ADCEx_sampling_times ADC Extended Sampling Times
bogdanm 0:9b334a45a8ff 2213 * @{
bogdanm 0:9b334a45a8ff 2214 */
bogdanm 0:9b334a45a8ff 2215 #define ADC_SAMPLETIME_1CYCLE_5 ((uint32_t)0x00000000) /*!< Sampling time 1.5 ADC clock cycle */
bogdanm 0:9b334a45a8ff 2216 #define ADC_SAMPLETIME_7CYCLES_5 ((uint32_t) ADC_SMPR2_SMP0_0) /*!< Sampling time 7.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 2217 #define ADC_SAMPLETIME_13CYCLES_5 ((uint32_t) ADC_SMPR2_SMP0_1) /*!< Sampling time 13.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 2218 #define ADC_SAMPLETIME_28CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP0_1 | ADC_SMPR2_SMP0_0)) /*!< Sampling time 28.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 2219 #define ADC_SAMPLETIME_41CYCLES_5 ((uint32_t) ADC_SMPR2_SMP0_2) /*!< Sampling time 41.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 2220 #define ADC_SAMPLETIME_55CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP0_2 | ADC_SMPR2_SMP0_0)) /*!< Sampling time 55.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 2221 #define ADC_SAMPLETIME_71CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP0_2 | ADC_SMPR2_SMP0_1)) /*!< Sampling time 71.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 2222 #define ADC_SAMPLETIME_239CYCLES_5 ((uint32_t) ADC_SMPR2_SMP0) /*!< Sampling time 239.5 ADC clock cycles */
bogdanm 0:9b334a45a8ff 2223
bogdanm 0:9b334a45a8ff 2224 #define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SAMPLETIME_1CYCLE_5) || \
bogdanm 0:9b334a45a8ff 2225 ((TIME) == ADC_SAMPLETIME_7CYCLES_5) || \
bogdanm 0:9b334a45a8ff 2226 ((TIME) == ADC_SAMPLETIME_13CYCLES_5) || \
bogdanm 0:9b334a45a8ff 2227 ((TIME) == ADC_SAMPLETIME_28CYCLES_5) || \
bogdanm 0:9b334a45a8ff 2228 ((TIME) == ADC_SAMPLETIME_41CYCLES_5) || \
bogdanm 0:9b334a45a8ff 2229 ((TIME) == ADC_SAMPLETIME_55CYCLES_5) || \
bogdanm 0:9b334a45a8ff 2230 ((TIME) == ADC_SAMPLETIME_71CYCLES_5) || \
bogdanm 0:9b334a45a8ff 2231 ((TIME) == ADC_SAMPLETIME_239CYCLES_5) )
bogdanm 0:9b334a45a8ff 2232 /**
bogdanm 0:9b334a45a8ff 2233 * @}
bogdanm 0:9b334a45a8ff 2234 */
bogdanm 0:9b334a45a8ff 2235
bogdanm 0:9b334a45a8ff 2236 /** @defgroup ADCEx_sampling_times_all_channels ADC Extended Sampling Times All Channels
bogdanm 0:9b334a45a8ff 2237 * @{
bogdanm 0:9b334a45a8ff 2238 */
bogdanm 0:9b334a45a8ff 2239 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT2 \
bogdanm 0:9b334a45a8ff 2240 (ADC_SMPR2_SMP9_2 | ADC_SMPR2_SMP8_2 | ADC_SMPR2_SMP7_2 | ADC_SMPR2_SMP6_2 | \
bogdanm 0:9b334a45a8ff 2241 ADC_SMPR2_SMP5_2 | ADC_SMPR2_SMP4_2 | ADC_SMPR2_SMP3_2 | ADC_SMPR2_SMP2_2 | \
bogdanm 0:9b334a45a8ff 2242 ADC_SMPR2_SMP1_2 | ADC_SMPR2_SMP0_2)
bogdanm 0:9b334a45a8ff 2243 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT2 \
bogdanm 0:9b334a45a8ff 2244 (ADC_SMPR1_SMP17_2 | ADC_SMPR1_SMP16_2 | ADC_SMPR1_SMP15_2 | ADC_SMPR1_SMP14_2 | \
bogdanm 0:9b334a45a8ff 2245 ADC_SMPR1_SMP13_2 | ADC_SMPR1_SMP12_2 | ADC_SMPR1_SMP11_2 | ADC_SMPR1_SMP10_2 )
bogdanm 0:9b334a45a8ff 2246
bogdanm 0:9b334a45a8ff 2247 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT1 \
bogdanm 0:9b334a45a8ff 2248 (ADC_SMPR2_SMP9_1 | ADC_SMPR2_SMP8_1 | ADC_SMPR2_SMP7_1 | ADC_SMPR2_SMP6_1 | \
bogdanm 0:9b334a45a8ff 2249 ADC_SMPR2_SMP5_1 | ADC_SMPR2_SMP4_1 | ADC_SMPR2_SMP3_1 | ADC_SMPR2_SMP2_1 | \
bogdanm 0:9b334a45a8ff 2250 ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP0_1)
bogdanm 0:9b334a45a8ff 2251 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT1 \
bogdanm 0:9b334a45a8ff 2252 (ADC_SMPR1_SMP17_1 | ADC_SMPR1_SMP16_1 | ADC_SMPR1_SMP15_1 | ADC_SMPR1_SMP14_1 | \
bogdanm 0:9b334a45a8ff 2253 ADC_SMPR1_SMP13_1 | ADC_SMPR1_SMP12_1 | ADC_SMPR1_SMP11_1 | ADC_SMPR1_SMP10_1 )
bogdanm 0:9b334a45a8ff 2254
bogdanm 0:9b334a45a8ff 2255 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT0 \
bogdanm 0:9b334a45a8ff 2256 (ADC_SMPR2_SMP9_0 | ADC_SMPR2_SMP8_0 | ADC_SMPR2_SMP7_0 | ADC_SMPR2_SMP6_0 | \
bogdanm 0:9b334a45a8ff 2257 ADC_SMPR2_SMP5_0 | ADC_SMPR2_SMP4_0 | ADC_SMPR2_SMP3_0 | ADC_SMPR2_SMP2_0 | \
bogdanm 0:9b334a45a8ff 2258 ADC_SMPR2_SMP1_0 | ADC_SMPR2_SMP0_0)
bogdanm 0:9b334a45a8ff 2259 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT0 \
bogdanm 0:9b334a45a8ff 2260 (ADC_SMPR1_SMP17_0 | ADC_SMPR1_SMP16_0 | ADC_SMPR1_SMP15_0 | ADC_SMPR1_SMP14_0 | \
bogdanm 0:9b334a45a8ff 2261 ADC_SMPR1_SMP13_0 | ADC_SMPR1_SMP12_0 | ADC_SMPR1_SMP11_0 | ADC_SMPR1_SMP10_0 )
bogdanm 0:9b334a45a8ff 2262
bogdanm 0:9b334a45a8ff 2263 #define ADC_SAMPLETIME_1CYCLE5_SMPR2ALLCHANNELS ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 2264 #define ADC_SAMPLETIME_7CYCLES5_SMPR2ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT0)
bogdanm 0:9b334a45a8ff 2265 #define ADC_SAMPLETIME_13CYCLES5_SMPR2ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT1)
bogdanm 0:9b334a45a8ff 2266 #define ADC_SAMPLETIME_28CYCLES5_SMPR2ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT1 | ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT0)
bogdanm 0:9b334a45a8ff 2267 #define ADC_SAMPLETIME_41CYCLES5_SMPR2ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT2)
bogdanm 0:9b334a45a8ff 2268 #define ADC_SAMPLETIME_55CYCLES5_SMPR2ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT2 | ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT0)
bogdanm 0:9b334a45a8ff 2269 #define ADC_SAMPLETIME_71CYCLES5_SMPR2ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT2 | ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT1)
bogdanm 0:9b334a45a8ff 2270 #define ADC_SAMPLETIME_239CYCLES5_SMPR2ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT2 | ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT1 | ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT0)
bogdanm 0:9b334a45a8ff 2271
bogdanm 0:9b334a45a8ff 2272 #define ADC_SAMPLETIME_1CYCLE5_SMPR1ALLCHANNELS ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 2273 #define ADC_SAMPLETIME_7CYCLES5_SMPR1ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT0)
bogdanm 0:9b334a45a8ff 2274 #define ADC_SAMPLETIME_13CYCLES5_SMPR1ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT1)
bogdanm 0:9b334a45a8ff 2275 #define ADC_SAMPLETIME_28CYCLES5_SMPR1ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT1 | ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT0)
bogdanm 0:9b334a45a8ff 2276 #define ADC_SAMPLETIME_41CYCLES5_SMPR1ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT2)
bogdanm 0:9b334a45a8ff 2277 #define ADC_SAMPLETIME_55CYCLES5_SMPR1ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT2 | ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT0)
bogdanm 0:9b334a45a8ff 2278 #define ADC_SAMPLETIME_71CYCLES5_SMPR1ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT2 | ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT1)
bogdanm 0:9b334a45a8ff 2279 #define ADC_SAMPLETIME_239CYCLES5_SMPR1ALLCHANNELS (ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT2 | ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT1 | ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT0)
bogdanm 0:9b334a45a8ff 2280
bogdanm 0:9b334a45a8ff 2281 /**
bogdanm 0:9b334a45a8ff 2282 * @}
bogdanm 0:9b334a45a8ff 2283 */
bogdanm 0:9b334a45a8ff 2284
bogdanm 0:9b334a45a8ff 2285 /** @defgroup ADCEx_regular_rank ADC Extended Regular Channel Rank
bogdanm 0:9b334a45a8ff 2286 * @{
bogdanm 0:9b334a45a8ff 2287 */
bogdanm 0:9b334a45a8ff 2288 #define ADC_REGULAR_RANK_1 ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 2289 #define ADC_REGULAR_RANK_2 ((uint32_t)0x00000002)
bogdanm 0:9b334a45a8ff 2290 #define ADC_REGULAR_RANK_3 ((uint32_t)0x00000003)
bogdanm 0:9b334a45a8ff 2291 #define ADC_REGULAR_RANK_4 ((uint32_t)0x00000004)
bogdanm 0:9b334a45a8ff 2292 #define ADC_REGULAR_RANK_5 ((uint32_t)0x00000005)
bogdanm 0:9b334a45a8ff 2293 #define ADC_REGULAR_RANK_6 ((uint32_t)0x00000006)
bogdanm 0:9b334a45a8ff 2294 #define ADC_REGULAR_RANK_7 ((uint32_t)0x00000007)
bogdanm 0:9b334a45a8ff 2295 #define ADC_REGULAR_RANK_8 ((uint32_t)0x00000008)
bogdanm 0:9b334a45a8ff 2296 #define ADC_REGULAR_RANK_9 ((uint32_t)0x00000009)
bogdanm 0:9b334a45a8ff 2297 #define ADC_REGULAR_RANK_10 ((uint32_t)0x0000000A)
bogdanm 0:9b334a45a8ff 2298 #define ADC_REGULAR_RANK_11 ((uint32_t)0x0000000B)
bogdanm 0:9b334a45a8ff 2299 #define ADC_REGULAR_RANK_12 ((uint32_t)0x0000000C)
bogdanm 0:9b334a45a8ff 2300 #define ADC_REGULAR_RANK_13 ((uint32_t)0x0000000D)
bogdanm 0:9b334a45a8ff 2301 #define ADC_REGULAR_RANK_14 ((uint32_t)0x0000000E)
bogdanm 0:9b334a45a8ff 2302 #define ADC_REGULAR_RANK_15 ((uint32_t)0x0000000F)
bogdanm 0:9b334a45a8ff 2303 #define ADC_REGULAR_RANK_16 ((uint32_t)0x00000010)
bogdanm 0:9b334a45a8ff 2304
bogdanm 0:9b334a45a8ff 2305 #define IS_ADC_REGULAR_RANK(CHANNEL) (((CHANNEL) == ADC_REGULAR_RANK_1 ) || \
bogdanm 0:9b334a45a8ff 2306 ((CHANNEL) == ADC_REGULAR_RANK_2 ) || \
bogdanm 0:9b334a45a8ff 2307 ((CHANNEL) == ADC_REGULAR_RANK_3 ) || \
bogdanm 0:9b334a45a8ff 2308 ((CHANNEL) == ADC_REGULAR_RANK_4 ) || \
bogdanm 0:9b334a45a8ff 2309 ((CHANNEL) == ADC_REGULAR_RANK_5 ) || \
bogdanm 0:9b334a45a8ff 2310 ((CHANNEL) == ADC_REGULAR_RANK_6 ) || \
bogdanm 0:9b334a45a8ff 2311 ((CHANNEL) == ADC_REGULAR_RANK_7 ) || \
bogdanm 0:9b334a45a8ff 2312 ((CHANNEL) == ADC_REGULAR_RANK_8 ) || \
bogdanm 0:9b334a45a8ff 2313 ((CHANNEL) == ADC_REGULAR_RANK_9 ) || \
bogdanm 0:9b334a45a8ff 2314 ((CHANNEL) == ADC_REGULAR_RANK_10) || \
bogdanm 0:9b334a45a8ff 2315 ((CHANNEL) == ADC_REGULAR_RANK_11) || \
bogdanm 0:9b334a45a8ff 2316 ((CHANNEL) == ADC_REGULAR_RANK_12) || \
bogdanm 0:9b334a45a8ff 2317 ((CHANNEL) == ADC_REGULAR_RANK_13) || \
bogdanm 0:9b334a45a8ff 2318 ((CHANNEL) == ADC_REGULAR_RANK_14) || \
bogdanm 0:9b334a45a8ff 2319 ((CHANNEL) == ADC_REGULAR_RANK_15) || \
bogdanm 0:9b334a45a8ff 2320 ((CHANNEL) == ADC_REGULAR_RANK_16) )
bogdanm 0:9b334a45a8ff 2321 /**
bogdanm 0:9b334a45a8ff 2322 * @}
bogdanm 0:9b334a45a8ff 2323 */
bogdanm 0:9b334a45a8ff 2324
bogdanm 0:9b334a45a8ff 2325 /** @defgroup ADCEx_injected_rank ADC Extended Injected Channel Rank
bogdanm 0:9b334a45a8ff 2326 * @{
bogdanm 0:9b334a45a8ff 2327 */
bogdanm 0:9b334a45a8ff 2328 #define ADC_INJECTED_RANK_1 ((uint32_t)0x00000001)
bogdanm 0:9b334a45a8ff 2329 #define ADC_INJECTED_RANK_2 ((uint32_t)0x00000002)
bogdanm 0:9b334a45a8ff 2330 #define ADC_INJECTED_RANK_3 ((uint32_t)0x00000003)
bogdanm 0:9b334a45a8ff 2331 #define ADC_INJECTED_RANK_4 ((uint32_t)0x00000004)
bogdanm 0:9b334a45a8ff 2332
bogdanm 0:9b334a45a8ff 2333 #define IS_ADC_INJECTED_RANK(CHANNEL) (((CHANNEL) == ADC_INJECTED_RANK_1) || \
bogdanm 0:9b334a45a8ff 2334 ((CHANNEL) == ADC_INJECTED_RANK_2) || \
bogdanm 0:9b334a45a8ff 2335 ((CHANNEL) == ADC_INJECTED_RANK_3) || \
bogdanm 0:9b334a45a8ff 2336 ((CHANNEL) == ADC_INJECTED_RANK_4) )
bogdanm 0:9b334a45a8ff 2337 /**
bogdanm 0:9b334a45a8ff 2338 * @}
bogdanm 0:9b334a45a8ff 2339 */
bogdanm 0:9b334a45a8ff 2340
bogdanm 0:9b334a45a8ff 2341 /** @defgroup ADCEx_External_trigger_edge_Injected External Trigger Edge of Injected Group
bogdanm 0:9b334a45a8ff 2342 * @{
bogdanm 0:9b334a45a8ff 2343 */
bogdanm 0:9b334a45a8ff 2344 #define ADC_EXTERNALTRIGINJECCONV_EDGE_NONE ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 2345 #define ADC_EXTERNALTRIGINJECCONV_EDGE_RISING ((uint32_t)ADC_CR2_JEXTTRIG)
bogdanm 0:9b334a45a8ff 2346
bogdanm 0:9b334a45a8ff 2347 #define IS_ADC_EXTTRIGINJEC_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGINJECCONV_EDGE_NONE) || \
bogdanm 0:9b334a45a8ff 2348 ((EDGE) == ADC_EXTERNALTRIGINJECCONV_EDGE_RISING) )
bogdanm 0:9b334a45a8ff 2349 /**
bogdanm 0:9b334a45a8ff 2350 * @}
bogdanm 0:9b334a45a8ff 2351 */
bogdanm 0:9b334a45a8ff 2352
bogdanm 0:9b334a45a8ff 2353 /** @defgroup ADCEx_External_trigger_source_Injected External Trigger Source of Injected Group
bogdanm 0:9b334a45a8ff 2354 * @{
bogdanm 0:9b334a45a8ff 2355 */
bogdanm 0:9b334a45a8ff 2356 /* External triggers for injected groups of ADC1 */
bogdanm 0:9b334a45a8ff 2357 #define ADC_EXTERNALTRIGINJECCONV_T2_CC1 ADC_EXTERNALTRIGINJEC_T2_CC1
bogdanm 0:9b334a45a8ff 2358 #define ADC_EXTERNALTRIGINJECCONV_T2_TRGO ADC_EXTERNALTRIGINJEC_T2_TRGO
bogdanm 0:9b334a45a8ff 2359 #define ADC_EXTERNALTRIGINJECCONV_T3_CC4 ADC_EXTERNALTRIGINJEC_T3_CC4
bogdanm 0:9b334a45a8ff 2360 #define ADC_EXTERNALTRIGINJECCONV_T4_TRGO ADC_EXTERNALTRIGINJEC_T4_TRGO
bogdanm 0:9b334a45a8ff 2361 #define ADC_EXTERNALTRIGINJECCONV_T19_CC1 ADC_EXTERNALTRIGINJEC_T19_CC1
bogdanm 0:9b334a45a8ff 2362 #define ADC_EXTERNALTRIGINJECCONV_T19_CC2 ADC_EXTERNALTRIGINJEC_T19_CC2
bogdanm 0:9b334a45a8ff 2363 #define ADC_EXTERNALTRIGINJECCONV_EXT_IT15 ADC_EXTERNALTRIGINJEC_EXT_IT15
bogdanm 0:9b334a45a8ff 2364 #define ADC_INJECTED_SOFTWARE_START ADC_JSWSTART
bogdanm 0:9b334a45a8ff 2365
bogdanm 0:9b334a45a8ff 2366 #define IS_ADC_EXTTRIGINJEC(INJTRIG) (((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_CC1) || \
bogdanm 0:9b334a45a8ff 2367 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO) || \
bogdanm 0:9b334a45a8ff 2368 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T3_CC4) || \
bogdanm 0:9b334a45a8ff 2369 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO) || \
bogdanm 0:9b334a45a8ff 2370 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T19_CC1) || \
bogdanm 0:9b334a45a8ff 2371 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_T19_CC2) || \
bogdanm 0:9b334a45a8ff 2372 ((INJTRIG) == ADC_EXTERNALTRIGINJECCONV_EXT_IT15) || \
bogdanm 0:9b334a45a8ff 2373 ((INJTRIG) == ADC_INJECTED_SOFTWARE_START) )
bogdanm 0:9b334a45a8ff 2374 /**
bogdanm 0:9b334a45a8ff 2375 * @}
bogdanm 0:9b334a45a8ff 2376 */
bogdanm 0:9b334a45a8ff 2377
bogdanm 0:9b334a45a8ff 2378
bogdanm 0:9b334a45a8ff 2379 /** @defgroup ADCEx_Internal_HAL_driver_Ext_trig_src_Injected ADC Extended External Trigger Source of Injected Group (Internal)
bogdanm 0:9b334a45a8ff 2380 * @{
bogdanm 0:9b334a45a8ff 2381 */
bogdanm 0:9b334a45a8ff 2382
bogdanm 0:9b334a45a8ff 2383 /* List of external triggers of injected group for ADC1: */
bogdanm 0:9b334a45a8ff 2384 /* (used internally by HAL driver. To not use into HAL structure parameters) */
bogdanm 0:9b334a45a8ff 2385 #define ADC_EXTERNALTRIGINJEC_T19_CC1 ((uint32_t) 0x00000000)
bogdanm 0:9b334a45a8ff 2386 #define ADC_EXTERNALTRIGINJEC_T19_CC2 ((uint32_t) ADC_CR2_JEXTSEL_0)
bogdanm 0:9b334a45a8ff 2387 #define ADC_EXTERNALTRIGINJEC_T2_TRGO ((uint32_t) ADC_CR2_JEXTSEL_1)
bogdanm 0:9b334a45a8ff 2388 #define ADC_EXTERNALTRIGINJEC_T2_CC1 ((uint32_t)(ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 2389 #define ADC_EXTERNALTRIGINJEC_T3_CC4 ((uint32_t) ADC_CR2_JEXTSEL_2)
bogdanm 0:9b334a45a8ff 2390 #define ADC_EXTERNALTRIGINJEC_T4_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 2391 #define ADC_EXTERNALTRIGINJEC_EXT_IT15 ((uint32_t)(ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1))
bogdanm 0:9b334a45a8ff 2392 #define ADC_JSWSTART ((uint32_t)(ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0))
bogdanm 0:9b334a45a8ff 2393
bogdanm 0:9b334a45a8ff 2394 /**
bogdanm 0:9b334a45a8ff 2395 * @}
bogdanm 0:9b334a45a8ff 2396 */
bogdanm 0:9b334a45a8ff 2397
bogdanm 0:9b334a45a8ff 2398
bogdanm 0:9b334a45a8ff 2399 /** @defgroup ADCEx_analog_watchdog_mode ADC Extended analog watchdog mode
bogdanm 0:9b334a45a8ff 2400 * @{
bogdanm 0:9b334a45a8ff 2401 */
bogdanm 0:9b334a45a8ff 2402 #define ADC_ANALOGWATCHDOG_NONE ((uint32_t)0x00000000)
bogdanm 0:9b334a45a8ff 2403 #define ADC_ANALOGWATCHDOG_SINGLE_REG ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN))
bogdanm 0:9b334a45a8ff 2404 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN))
bogdanm 0:9b334a45a8ff 2405 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN | ADC_CR1_JAWDEN))
bogdanm 0:9b334a45a8ff 2406 #define ADC_ANALOGWATCHDOG_ALL_REG ((uint32_t) ADC_CR1_AWDEN)
bogdanm 0:9b334a45a8ff 2407 #define ADC_ANALOGWATCHDOG_ALL_INJEC ((uint32_t) ADC_CR1_JAWDEN)
bogdanm 0:9b334a45a8ff 2408 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC ((uint32_t)(ADC_CR1_AWDEN | ADC_CR1_JAWDEN))
bogdanm 0:9b334a45a8ff 2409
bogdanm 0:9b334a45a8ff 2410 #define IS_ADC_ANALOG_WATCHDOG_MODE(WATCHDOG) (((WATCHDOG) == ADC_ANALOGWATCHDOG_NONE) || \
bogdanm 0:9b334a45a8ff 2411 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \
bogdanm 0:9b334a45a8ff 2412 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_INJEC) || \
bogdanm 0:9b334a45a8ff 2413 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC) || \
bogdanm 0:9b334a45a8ff 2414 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REG) || \
bogdanm 0:9b334a45a8ff 2415 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_INJEC) || \
bogdanm 0:9b334a45a8ff 2416 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REGINJEC) )
bogdanm 0:9b334a45a8ff 2417 /**
bogdanm 0:9b334a45a8ff 2418 * @}
bogdanm 0:9b334a45a8ff 2419 */
bogdanm 0:9b334a45a8ff 2420
bogdanm 0:9b334a45a8ff 2421 /** @defgroup ADC_conversion_group ADC Conversion Group
bogdanm 0:9b334a45a8ff 2422 * @{
bogdanm 0:9b334a45a8ff 2423 */
bogdanm 0:9b334a45a8ff 2424 #define REGULAR_GROUP ((uint32_t)(ADC_FLAG_EOC))
bogdanm 0:9b334a45a8ff 2425 #define INJECTED_GROUP ((uint32_t)(ADC_FLAG_JEOC))
bogdanm 0:9b334a45a8ff 2426 #define REGULAR_INJECTED_GROUP ((uint32_t)(ADC_FLAG_EOC | ADC_FLAG_JEOC))
bogdanm 0:9b334a45a8ff 2427
bogdanm 0:9b334a45a8ff 2428 #define IS_ADC_CONVERSION_GROUP(CONVERSION) (((CONVERSION) == REGULAR_GROUP) || \
bogdanm 0:9b334a45a8ff 2429 ((CONVERSION) == INJECTED_GROUP) || \
bogdanm 0:9b334a45a8ff 2430 ((CONVERSION) == REGULAR_INJECTED_GROUP) )
bogdanm 0:9b334a45a8ff 2431 /**
bogdanm 0:9b334a45a8ff 2432 * @}
bogdanm 0:9b334a45a8ff 2433 */
bogdanm 0:9b334a45a8ff 2434
bogdanm 0:9b334a45a8ff 2435 /** @defgroup ADCEx_Event_type ADC Extended Event Type
bogdanm 0:9b334a45a8ff 2436 * @{
bogdanm 0:9b334a45a8ff 2437 */
bogdanm 0:9b334a45a8ff 2438 #define AWD_EVENT ((uint32_t)ADC_FLAG_AWD) /*!< ADC Analog watchdog event */
bogdanm 0:9b334a45a8ff 2439
bogdanm 0:9b334a45a8ff 2440 #define IS_ADC_EVENT_TYPE(EVENT) ((EVENT) == AWD_EVENT)
bogdanm 0:9b334a45a8ff 2441 /**
bogdanm 0:9b334a45a8ff 2442 * @}
bogdanm 0:9b334a45a8ff 2443 */
bogdanm 0:9b334a45a8ff 2444
bogdanm 0:9b334a45a8ff 2445 /** @defgroup ADCEx_interrupts_definition ADC Extended Interrupts Definition
bogdanm 0:9b334a45a8ff 2446 * @{
bogdanm 0:9b334a45a8ff 2447 */
bogdanm 0:9b334a45a8ff 2448 #define ADC_IT_EOC ADC_CR1_EOCIE /*!< ADC End of Regular Conversion interrupt source */
bogdanm 0:9b334a45a8ff 2449 #define ADC_IT_JEOC ADC_CR1_JEOCIE /*!< ADC End of Injected Conversion interrupt source */
bogdanm 0:9b334a45a8ff 2450 #define ADC_IT_AWD ADC_CR1_AWDIE /*!< ADC Analog watchdog interrupt source */
bogdanm 0:9b334a45a8ff 2451
bogdanm 0:9b334a45a8ff 2452 /* Check of single flag */
bogdanm 0:9b334a45a8ff 2453 #define IS_ADC_IT(IT) (((IT) == ADC_IT_EOC ) || \
bogdanm 0:9b334a45a8ff 2454 ((IT) == ADC_IT_JEOC) || \
bogdanm 0:9b334a45a8ff 2455 ((IT) == ADC_IT_AWD ) )
bogdanm 0:9b334a45a8ff 2456 /**
bogdanm 0:9b334a45a8ff 2457 * @}
bogdanm 0:9b334a45a8ff 2458 */
bogdanm 0:9b334a45a8ff 2459
bogdanm 0:9b334a45a8ff 2460 /** @defgroup ADCEx_flags_definition ADC Extended Flags Definition
bogdanm 0:9b334a45a8ff 2461 * @{
bogdanm 0:9b334a45a8ff 2462 */
bogdanm 0:9b334a45a8ff 2463 #define ADC_FLAG_AWD ADC_SR_AWD /*!< ADC Analog watchdog flag */
bogdanm 0:9b334a45a8ff 2464 #define ADC_FLAG_EOC ADC_SR_EOC /*!< ADC End of Regular conversion flag */
bogdanm 0:9b334a45a8ff 2465 #define ADC_FLAG_JEOC ADC_SR_JEOC /*!< ADC End of Injected conversion flag */
bogdanm 0:9b334a45a8ff 2466 #define ADC_FLAG_JSTRT ADC_SR_JSTRT /*!< ADC Injected group start flag */
bogdanm 0:9b334a45a8ff 2467 #define ADC_FLAG_STRT ADC_SR_STRT /*!< ADC Regular group start flag */
bogdanm 0:9b334a45a8ff 2468
bogdanm 0:9b334a45a8ff 2469 /* Combination of all post-conversion flags bits: EOC/EOS, JEOC/JEOS, OVR, AWDx */
bogdanm 0:9b334a45a8ff 2470 #define ADC_FLAG_POSTCONV_ALL (ADC_FLAG_EOC | ADC_FLAG_JEOC | ADC_FLAG_AWD )
bogdanm 0:9b334a45a8ff 2471
bogdanm 0:9b334a45a8ff 2472 /* Check of single flag */
bogdanm 0:9b334a45a8ff 2473 #define IS_ADC_FLAG(FLAG) (((FLAG) == ADC_FLAG_AWD) || \
bogdanm 0:9b334a45a8ff 2474 ((FLAG) == ADC_FLAG_EOC) || \
bogdanm 0:9b334a45a8ff 2475 ((FLAG) == ADC_FLAG_JEOC) || \
bogdanm 0:9b334a45a8ff 2476 ((FLAG) == ADC_FLAG_JSTRT) || \
bogdanm 0:9b334a45a8ff 2477 ((FLAG) == ADC_FLAG_STRT) )
bogdanm 0:9b334a45a8ff 2478 /**
bogdanm 0:9b334a45a8ff 2479 * @}
bogdanm 0:9b334a45a8ff 2480 */
bogdanm 0:9b334a45a8ff 2481
bogdanm 0:9b334a45a8ff 2482 /** @defgroup ADCEx_range_verification ADC Extended Range Verification
bogdanm 0:9b334a45a8ff 2483 * For a unique ADC resolution: 12 bits
bogdanm 0:9b334a45a8ff 2484 * @{
bogdanm 0:9b334a45a8ff 2485 */
bogdanm 0:9b334a45a8ff 2486 #define IS_ADC_RANGE(ADC_VALUE) ((ADC_VALUE) <= ((uint32_t)0x0FFF))
bogdanm 0:9b334a45a8ff 2487 /**
bogdanm 0:9b334a45a8ff 2488 * @}
bogdanm 0:9b334a45a8ff 2489 */
bogdanm 0:9b334a45a8ff 2490
bogdanm 0:9b334a45a8ff 2491 /** @defgroup ADC_injected_nb_conv_verification ADC Injected Conversion Number Verification
bogdanm 0:9b334a45a8ff 2492 * @{
bogdanm 0:9b334a45a8ff 2493 */
bogdanm 0:9b334a45a8ff 2494 #define IS_ADC_INJECTED_NB_CONV(LENGTH) (((LENGTH) >= ((uint32_t)1)) && ((LENGTH) <= ((uint32_t)4)))
bogdanm 0:9b334a45a8ff 2495 /**
bogdanm 0:9b334a45a8ff 2496 * @}
bogdanm 0:9b334a45a8ff 2497 */
bogdanm 0:9b334a45a8ff 2498
bogdanm 0:9b334a45a8ff 2499 /** @defgroup ADC_regular_nb_conv_verification ADC Regular Conversion Number Verification
bogdanm 0:9b334a45a8ff 2500 * @{
bogdanm 0:9b334a45a8ff 2501 */
bogdanm 0:9b334a45a8ff 2502 #define IS_ADC_REGULAR_NB_CONV(LENGTH) (((LENGTH) >= ((uint32_t)1)) && ((LENGTH) <= ((uint32_t)16)))
bogdanm 0:9b334a45a8ff 2503 /**
bogdanm 0:9b334a45a8ff 2504 * @}
bogdanm 0:9b334a45a8ff 2505 */
bogdanm 0:9b334a45a8ff 2506
bogdanm 0:9b334a45a8ff 2507 /** @defgroup ADC_regular_discontinuous_mode_number_verification ADC Regular Discontinuous Mode NumberVerification
bogdanm 0:9b334a45a8ff 2508 * @{
bogdanm 0:9b334a45a8ff 2509 */
bogdanm 0:9b334a45a8ff 2510 #define IS_ADC_REGULAR_DISCONT_NUMBER(NUMBER) (((NUMBER) >= ((uint32_t)1)) && ((NUMBER) <= ((uint32_t)8)))
bogdanm 0:9b334a45a8ff 2511 /**
bogdanm 0:9b334a45a8ff 2512 * @}
bogdanm 0:9b334a45a8ff 2513 */
bogdanm 0:9b334a45a8ff 2514 #endif /* STM32F373xC || STM32F378xx */
bogdanm 0:9b334a45a8ff 2515
bogdanm 0:9b334a45a8ff 2516 /**
bogdanm 0:9b334a45a8ff 2517 * @}
bogdanm 0:9b334a45a8ff 2518 */
bogdanm 0:9b334a45a8ff 2519
bogdanm 0:9b334a45a8ff 2520 /* Exported macros -----------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 2521
bogdanm 0:9b334a45a8ff 2522 /** @addtogroup ADC_Exported_Macro ADC Exported Macros
bogdanm 0:9b334a45a8ff 2523 * @{
bogdanm 0:9b334a45a8ff 2524 */
bogdanm 0:9b334a45a8ff 2525 /* Macro for internal HAL driver usage, and possibly can be used into code of */
bogdanm 0:9b334a45a8ff 2526 /* final user. */
bogdanm 0:9b334a45a8ff 2527
bogdanm 0:9b334a45a8ff 2528 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 2529 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 2530 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
bogdanm 0:9b334a45a8ff 2531 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 2532 /**
bogdanm 0:9b334a45a8ff 2533 * @brief Verification of ADC state: enabled or disabled
bogdanm 0:9b334a45a8ff 2534 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2535 * @retval SET (ADC enabled) or RESET (ADC disabled)
bogdanm 0:9b334a45a8ff 2536 */
bogdanm 0:9b334a45a8ff 2537 #define __HAL_ADC_IS_ENABLED(__HANDLE__) \
bogdanm 0:9b334a45a8ff 2538 (( ((((__HANDLE__)->Instance->CR) & (ADC_CR_ADEN | ADC_CR_ADDIS)) == ADC_CR_ADEN) && \
bogdanm 0:9b334a45a8ff 2539 ((((__HANDLE__)->Instance->ISR) & ADC_FLAG_RDY) == ADC_FLAG_RDY) \
bogdanm 0:9b334a45a8ff 2540 ) ? SET : RESET)
bogdanm 0:9b334a45a8ff 2541
bogdanm 0:9b334a45a8ff 2542 /**
bogdanm 0:9b334a45a8ff 2543 * @brief Test if conversion trigger of regular group is software start
bogdanm 0:9b334a45a8ff 2544 * or external trigger.
bogdanm 0:9b334a45a8ff 2545 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2546 * @retval SET (software start) or RESET (external trigger)
bogdanm 0:9b334a45a8ff 2547 */
bogdanm 0:9b334a45a8ff 2548 #define __HAL_ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \
bogdanm 0:9b334a45a8ff 2549 (((__HANDLE__)->Instance->CFGR & ADC_CFGR_EXTEN) == RESET)
bogdanm 0:9b334a45a8ff 2550
bogdanm 0:9b334a45a8ff 2551 /**
bogdanm 0:9b334a45a8ff 2552 * @brief Test if conversion trigger of injected group is software start
bogdanm 0:9b334a45a8ff 2553 * or external trigger.
bogdanm 0:9b334a45a8ff 2554 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2555 * @retval SET (software start) or RESET (external trigger)
bogdanm 0:9b334a45a8ff 2556 */
bogdanm 0:9b334a45a8ff 2557 #define __HAL_ADC_IS_SOFTWARE_START_INJECTED(__HANDLE__) \
bogdanm 0:9b334a45a8ff 2558 (((__HANDLE__)->Instance->JSQR & ADC_JSQR_JEXTEN) == RESET)
bogdanm 0:9b334a45a8ff 2559
bogdanm 0:9b334a45a8ff 2560 /**
bogdanm 0:9b334a45a8ff 2561 * @brief Check if no conversion on going on regular and/or injected groups
bogdanm 0:9b334a45a8ff 2562 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2563 * @retval SET (conversion is on going) or RESET (no conversion is on going)
bogdanm 0:9b334a45a8ff 2564 */
bogdanm 0:9b334a45a8ff 2565 #define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED(__HANDLE__) \
bogdanm 0:9b334a45a8ff 2566 (( (((__HANDLE__)->Instance->CR) & (ADC_CR_ADSTART | ADC_CR_JADSTART)) == RESET \
bogdanm 0:9b334a45a8ff 2567 ) ? RESET : SET)
bogdanm 0:9b334a45a8ff 2568
bogdanm 0:9b334a45a8ff 2569 /**
bogdanm 0:9b334a45a8ff 2570 * @brief Check if no conversion on going on regular group
bogdanm 0:9b334a45a8ff 2571 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2572 * @retval SET (conversion is on going) or RESET (no conversion is on going)
bogdanm 0:9b334a45a8ff 2573 */
bogdanm 0:9b334a45a8ff 2574 #define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR(__HANDLE__) \
bogdanm 0:9b334a45a8ff 2575 (( (((__HANDLE__)->Instance->CR) & ADC_CR_ADSTART) == RESET \
bogdanm 0:9b334a45a8ff 2576 ) ? RESET : SET)
bogdanm 0:9b334a45a8ff 2577
bogdanm 0:9b334a45a8ff 2578 /**
bogdanm 0:9b334a45a8ff 2579 * @brief Check if no conversion on going on injected group
bogdanm 0:9b334a45a8ff 2580 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2581 * @retval SET (conversion is on going) or RESET (no conversion is on going)
bogdanm 0:9b334a45a8ff 2582 */
bogdanm 0:9b334a45a8ff 2583 #define __HAL_ADC_IS_CONVERSION_ONGOING_INJECTED(__HANDLE__) \
bogdanm 0:9b334a45a8ff 2584 (( (((__HANDLE__)->Instance->CR) & ADC_CR_JADSTART) == RESET \
bogdanm 0:9b334a45a8ff 2585 ) ? RESET : SET)
bogdanm 0:9b334a45a8ff 2586
bogdanm 0:9b334a45a8ff 2587 /**
bogdanm 0:9b334a45a8ff 2588 * @brief Returns resolution bits in CFGR1 register: RES[1:0].
bogdanm 0:9b334a45a8ff 2589 * Returned value is among parameters to @ref ADCEx_Resolution.
bogdanm 0:9b334a45a8ff 2590 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2591 * @retval None
bogdanm 0:9b334a45a8ff 2592 */
bogdanm 0:9b334a45a8ff 2593 #define __HAL_ADC_GET_RESOLUTION(__HANDLE__) (((__HANDLE__)->Instance->CFGR) & ADC_CFGR_RES)
bogdanm 0:9b334a45a8ff 2594
bogdanm 0:9b334a45a8ff 2595 /** @brief Checks if the specified ADC interrupt source is enabled or disabled.
bogdanm 0:9b334a45a8ff 2596 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2597 * @param __INTERRUPT__: ADC interrupt source to check
bogdanm 0:9b334a45a8ff 2598 * @retval State of interruption (SET or RESET)
bogdanm 0:9b334a45a8ff 2599 */
bogdanm 0:9b334a45a8ff 2600 #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \
bogdanm 0:9b334a45a8ff 2601 (( ((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__) \
bogdanm 0:9b334a45a8ff 2602 )? SET : RESET \
bogdanm 0:9b334a45a8ff 2603 )
bogdanm 0:9b334a45a8ff 2604
bogdanm 0:9b334a45a8ff 2605 /**
bogdanm 0:9b334a45a8ff 2606 * @brief Enable the ADC end of conversion interrupt.
bogdanm 0:9b334a45a8ff 2607 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2608 * @param __INTERRUPT__: ADC Interrupt
bogdanm 0:9b334a45a8ff 2609 * @retval None
bogdanm 0:9b334a45a8ff 2610 */
bogdanm 0:9b334a45a8ff 2611 #define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) |= (__INTERRUPT__))
bogdanm 0:9b334a45a8ff 2612
bogdanm 0:9b334a45a8ff 2613 /**
bogdanm 0:9b334a45a8ff 2614 * @brief Disable the ADC end of conversion interrupt.
bogdanm 0:9b334a45a8ff 2615 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2616 * @param __INTERRUPT__: ADC Interrupt
bogdanm 0:9b334a45a8ff 2617 * @retval None
bogdanm 0:9b334a45a8ff 2618 */
bogdanm 0:9b334a45a8ff 2619 #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->IER) &= ~(__INTERRUPT__))
bogdanm 0:9b334a45a8ff 2620
bogdanm 0:9b334a45a8ff 2621 /**
bogdanm 0:9b334a45a8ff 2622 * @brief Get the selected ADC's flag status.
bogdanm 0:9b334a45a8ff 2623 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2624 * @param __FLAG__: ADC flag
bogdanm 0:9b334a45a8ff 2625 * @retval None
bogdanm 0:9b334a45a8ff 2626 */
bogdanm 0:9b334a45a8ff 2627 #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->ISR) & (__FLAG__)) == (__FLAG__))
bogdanm 0:9b334a45a8ff 2628
bogdanm 0:9b334a45a8ff 2629 /**
bogdanm 0:9b334a45a8ff 2630 * @brief Clear the ADC's pending flags
bogdanm 0:9b334a45a8ff 2631 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2632 * @param __FLAG__: ADC flag
bogdanm 0:9b334a45a8ff 2633 * @retval None
bogdanm 0:9b334a45a8ff 2634 */
bogdanm 0:9b334a45a8ff 2635 /* Note: bit cleared bit by writing 1 (writing 0 has no effect on any bit of register ISR) */
bogdanm 0:9b334a45a8ff 2636 #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR) = (__FLAG__))
bogdanm 0:9b334a45a8ff 2637
bogdanm 0:9b334a45a8ff 2638 /**
bogdanm 0:9b334a45a8ff 2639 * @brief Clear ADC error code (set it to error code: "no error")
bogdanm 0:9b334a45a8ff 2640 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2641 * @retval None
bogdanm 0:9b334a45a8ff 2642 */
bogdanm 0:9b334a45a8ff 2643 #define __HAL_ADC_CLEAR_ERRORCODE(__HANDLE__) ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)
bogdanm 0:9b334a45a8ff 2644 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 2645 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 2646 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
bogdanm 0:9b334a45a8ff 2647 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 2648
bogdanm 0:9b334a45a8ff 2649 #if defined(STM32F373xC) || defined(STM32F378xx)
bogdanm 0:9b334a45a8ff 2650 /**
bogdanm 0:9b334a45a8ff 2651 * @brief Verification of ADC state: enabled or disabled
bogdanm 0:9b334a45a8ff 2652 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2653 * @retval SET (ADC enabled) or RESET (ADC disabled)
bogdanm 0:9b334a45a8ff 2654 */
bogdanm 0:9b334a45a8ff 2655 #define __HAL_ADC_IS_ENABLED(__HANDLE__) \
bogdanm 0:9b334a45a8ff 2656 ((( ((__HANDLE__)->Instance->CR2 & ADC_CR2_ADON) == ADC_CR2_ADON ) \
bogdanm 0:9b334a45a8ff 2657 ) ? SET : RESET)
bogdanm 0:9b334a45a8ff 2658
bogdanm 0:9b334a45a8ff 2659 /**
bogdanm 0:9b334a45a8ff 2660 * @brief Test if conversion trigger of regular group is software start
bogdanm 0:9b334a45a8ff 2661 * or external trigger.
bogdanm 0:9b334a45a8ff 2662 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2663 * @retval SET (software start) or RESET (external trigger)
bogdanm 0:9b334a45a8ff 2664 */
bogdanm 0:9b334a45a8ff 2665 #define __HAL_ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \
bogdanm 0:9b334a45a8ff 2666 (((__HANDLE__)->Instance->CR2 & ADC_CR2_EXTSEL) == ADC_SOFTWARE_START)
bogdanm 0:9b334a45a8ff 2667
bogdanm 0:9b334a45a8ff 2668 /**
bogdanm 0:9b334a45a8ff 2669 * @brief Test if conversion trigger of injected group is software start
bogdanm 0:9b334a45a8ff 2670 * or external trigger.
bogdanm 0:9b334a45a8ff 2671 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2672 * @retval SET (software start) or RESET (external trigger)
bogdanm 0:9b334a45a8ff 2673 */
bogdanm 0:9b334a45a8ff 2674 #define __HAL_ADC_IS_SOFTWARE_START_INJECTED(__HANDLE__) \
bogdanm 0:9b334a45a8ff 2675 (((__HANDLE__)->Instance->CR2 & ADC_CR2_JEXTSEL) == ADC_INJECTED_SOFTWARE_START)
bogdanm 0:9b334a45a8ff 2676
bogdanm 0:9b334a45a8ff 2677 /** @brief Checks if the specified ADC interrupt source is enabled or disabled.
bogdanm 0:9b334a45a8ff 2678 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2679 * @param __INTERRUPT__: ADC interrupt source to check
bogdanm 0:9b334a45a8ff 2680 * @retval State of interruption (SET or RESET)
bogdanm 0:9b334a45a8ff 2681 */
bogdanm 0:9b334a45a8ff 2682 #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \
bogdanm 0:9b334a45a8ff 2683 (( ((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__) \
bogdanm 0:9b334a45a8ff 2684 )? SET : RESET \
bogdanm 0:9b334a45a8ff 2685 )
bogdanm 0:9b334a45a8ff 2686
bogdanm 0:9b334a45a8ff 2687
bogdanm 0:9b334a45a8ff 2688 /**
bogdanm 0:9b334a45a8ff 2689 * @brief Enable the ADC end of conversion interrupt.
bogdanm 0:9b334a45a8ff 2690 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2691 * @param __INTERRUPT__: ADC Interrupt
bogdanm 0:9b334a45a8ff 2692 * @retval None
bogdanm 0:9b334a45a8ff 2693 */
bogdanm 0:9b334a45a8ff 2694 #define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) |= (__INTERRUPT__))
bogdanm 0:9b334a45a8ff 2695
bogdanm 0:9b334a45a8ff 2696 /**
bogdanm 0:9b334a45a8ff 2697 * @brief Disable the ADC end of conversion interrupt.
bogdanm 0:9b334a45a8ff 2698 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2699 * @param __INTERRUPT__: ADC Interrupt
bogdanm 0:9b334a45a8ff 2700 * @retval None
bogdanm 0:9b334a45a8ff 2701 */
bogdanm 0:9b334a45a8ff 2702 #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) &= ~(__INTERRUPT__))
bogdanm 0:9b334a45a8ff 2703
bogdanm 0:9b334a45a8ff 2704 /**
bogdanm 0:9b334a45a8ff 2705 * @brief Get the selected ADC's flag status.
bogdanm 0:9b334a45a8ff 2706 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2707 * @param __FLAG__: ADC flag
bogdanm 0:9b334a45a8ff 2708 * @retval None
bogdanm 0:9b334a45a8ff 2709 */
bogdanm 0:9b334a45a8ff 2710 #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
bogdanm 0:9b334a45a8ff 2711
bogdanm 0:9b334a45a8ff 2712 /**
bogdanm 0:9b334a45a8ff 2713 * @brief Clear the ADC's pending flags
bogdanm 0:9b334a45a8ff 2714 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2715 * @param __FLAG__: ADC flag
bogdanm 0:9b334a45a8ff 2716 * @retval None
bogdanm 0:9b334a45a8ff 2717 */
bogdanm 0:9b334a45a8ff 2718 #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = ~(__FLAG__))
bogdanm 0:9b334a45a8ff 2719
bogdanm 0:9b334a45a8ff 2720 /**
bogdanm 0:9b334a45a8ff 2721 * @brief Clear ADC error code (set it to error code: "no error")
bogdanm 0:9b334a45a8ff 2722 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2723 * @retval None
bogdanm 0:9b334a45a8ff 2724 */
bogdanm 0:9b334a45a8ff 2725 #define __HAL_ADC_CLEAR_ERRORCODE(__HANDLE__) ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)
bogdanm 0:9b334a45a8ff 2726
bogdanm 0:9b334a45a8ff 2727 #endif /* STM32F373xC || STM32F378xx */
bogdanm 0:9b334a45a8ff 2728 /**
bogdanm 0:9b334a45a8ff 2729 * @}
bogdanm 0:9b334a45a8ff 2730 */
bogdanm 0:9b334a45a8ff 2731
bogdanm 0:9b334a45a8ff 2732
bogdanm 0:9b334a45a8ff 2733 /* Macro reserved for internal HAL driver usage, not intended to be used in */
bogdanm 0:9b334a45a8ff 2734 /* code of final user. */
bogdanm 0:9b334a45a8ff 2735
bogdanm 0:9b334a45a8ff 2736 /** @defgroup ADCEx_Exported_Macro_internal_HAL_driver ADC Extended Exported Macros (Internal)
bogdanm 0:9b334a45a8ff 2737 * @{
bogdanm 0:9b334a45a8ff 2738 */
bogdanm 0:9b334a45a8ff 2739 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 2740 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 2741 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
bogdanm 0:9b334a45a8ff 2742 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 2743
bogdanm 0:9b334a45a8ff 2744 /**
bogdanm 0:9b334a45a8ff 2745 * @brief Set the ADC's sample time for Channels numbers between 0 and 9.
bogdanm 0:9b334a45a8ff 2746 * @param _SAMPLETIME_: Sample time parameter.
bogdanm 0:9b334a45a8ff 2747 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 2748 * @retval None
bogdanm 0:9b334a45a8ff 2749 */
bogdanm 0:9b334a45a8ff 2750 #define __HAL_ADC_SMPR1(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3 * (_CHANNELNB_)))
bogdanm 0:9b334a45a8ff 2751
bogdanm 0:9b334a45a8ff 2752 /**
bogdanm 0:9b334a45a8ff 2753 * @brief Set the ADC's sample time for Channels numbers between 10 and 18.
bogdanm 0:9b334a45a8ff 2754 * @param _SAMPLETIME_: Sample time parameter.
bogdanm 0:9b334a45a8ff 2755 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 2756 * @retval None
bogdanm 0:9b334a45a8ff 2757 */
bogdanm 0:9b334a45a8ff 2758 #define __HAL_ADC_SMPR2(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3 * ((_CHANNELNB_) - 10)))
bogdanm 0:9b334a45a8ff 2759
bogdanm 0:9b334a45a8ff 2760 /**
bogdanm 0:9b334a45a8ff 2761 * @brief Set the selected regular Channel rank for rank between 1 and 4.
bogdanm 0:9b334a45a8ff 2762 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 2763 * @param _RANKNB_: Rank number.
bogdanm 0:9b334a45a8ff 2764 * @retval None
bogdanm 0:9b334a45a8ff 2765 */
bogdanm 0:9b334a45a8ff 2766 #define __HAL_ADC_SQR1_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (6 * (_RANKNB_)))
bogdanm 0:9b334a45a8ff 2767
bogdanm 0:9b334a45a8ff 2768 /**
bogdanm 0:9b334a45a8ff 2769 * @brief Set the selected regular Channel rank for rank between 5 and 9.
bogdanm 0:9b334a45a8ff 2770 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 2771 * @param _RANKNB_: Rank number.
bogdanm 0:9b334a45a8ff 2772 * @retval None
bogdanm 0:9b334a45a8ff 2773 */
bogdanm 0:9b334a45a8ff 2774 #define __HAL_ADC_SQR2_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (6 * ((_RANKNB_) - 5)))
bogdanm 0:9b334a45a8ff 2775
bogdanm 0:9b334a45a8ff 2776 /**
bogdanm 0:9b334a45a8ff 2777 * @brief Set the selected regular Channel rank for rank between 10 and 14.
bogdanm 0:9b334a45a8ff 2778 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 2779 * @param _RANKNB_: Rank number.
bogdanm 0:9b334a45a8ff 2780 * @retval None
bogdanm 0:9b334a45a8ff 2781 */
bogdanm 0:9b334a45a8ff 2782 #define __HAL_ADC_SQR3_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (6 * ((_RANKNB_) - 10)))
bogdanm 0:9b334a45a8ff 2783
bogdanm 0:9b334a45a8ff 2784 /**
bogdanm 0:9b334a45a8ff 2785 * @brief Set the selected regular Channel rank for rank between 15 and 16.
bogdanm 0:9b334a45a8ff 2786 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 2787 * @param _RANKNB_: Rank number.
bogdanm 0:9b334a45a8ff 2788 * @retval None
bogdanm 0:9b334a45a8ff 2789 */
bogdanm 0:9b334a45a8ff 2790 #define __HAL_ADC_SQR4_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (6 * ((_RANKNB_) - 15)))
bogdanm 0:9b334a45a8ff 2791
bogdanm 0:9b334a45a8ff 2792 /**
bogdanm 0:9b334a45a8ff 2793 * @brief Set the selected injected Channel rank.
bogdanm 0:9b334a45a8ff 2794 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 2795 * @param _RANKNB_: Rank number.
bogdanm 0:9b334a45a8ff 2796 * @retval None
bogdanm 0:9b334a45a8ff 2797 */
bogdanm 0:9b334a45a8ff 2798 #define __HAL_ADC_JSQR_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (6 * (_RANKNB_) +2))
bogdanm 0:9b334a45a8ff 2799
bogdanm 0:9b334a45a8ff 2800
bogdanm 0:9b334a45a8ff 2801 /**
bogdanm 0:9b334a45a8ff 2802 * @brief Set the Analog Watchdog 1 channel.
bogdanm 0:9b334a45a8ff 2803 * @param _CHANNEL_: channel to be monitored by Analog Watchdog 1.
bogdanm 0:9b334a45a8ff 2804 * @retval None
bogdanm 0:9b334a45a8ff 2805 */
bogdanm 0:9b334a45a8ff 2806 #define __HAL_ADC_CFGR_AWD1CH(_CHANNEL_) ((_CHANNEL_) << 26)
bogdanm 0:9b334a45a8ff 2807
bogdanm 0:9b334a45a8ff 2808 /**
bogdanm 0:9b334a45a8ff 2809 * @brief Configure the channel number into Analog Watchdog 2 or 3.
bogdanm 0:9b334a45a8ff 2810 * @param _CHANNEL_: ADC Channel
bogdanm 0:9b334a45a8ff 2811 * @retval None
bogdanm 0:9b334a45a8ff 2812 */
bogdanm 0:9b334a45a8ff 2813 #define __HAL_ADC_CFGR_AWD23CR(_CHANNEL_) (1U << (_CHANNEL_))
bogdanm 0:9b334a45a8ff 2814
bogdanm 0:9b334a45a8ff 2815 /**
bogdanm 0:9b334a45a8ff 2816 * @brief Enable automatic conversion of injected group
bogdanm 0:9b334a45a8ff 2817 * @param _INJECT_AUTO_CONVERSION_: Injected automatic conversion.
bogdanm 0:9b334a45a8ff 2818 * @retval None
bogdanm 0:9b334a45a8ff 2819 */
bogdanm 0:9b334a45a8ff 2820 #define __HAL_ADC_CFGR_INJECT_AUTO_CONVERSION(_INJECT_AUTO_CONVERSION_) ((_INJECT_AUTO_CONVERSION_) << 25)
bogdanm 0:9b334a45a8ff 2821
bogdanm 0:9b334a45a8ff 2822 /**
bogdanm 0:9b334a45a8ff 2823 * @brief Enable ADC injected context queue
bogdanm 0:9b334a45a8ff 2824 * @param _INJECT_CONTEXT_QUEUE_MODE_: Injected context queue mode.
bogdanm 0:9b334a45a8ff 2825 * @retval None
bogdanm 0:9b334a45a8ff 2826 */
bogdanm 0:9b334a45a8ff 2827 #define __HAL_ADC_CFGR_INJECT_CONTEXT_QUEUE(_INJECT_CONTEXT_QUEUE_MODE_) ((_INJECT_CONTEXT_QUEUE_MODE_) << 21)
bogdanm 0:9b334a45a8ff 2828
bogdanm 0:9b334a45a8ff 2829 /**
bogdanm 0:9b334a45a8ff 2830 * @brief Enable ADC discontinuous conversion mode for injected group
bogdanm 0:9b334a45a8ff 2831 * @param _INJECT_DISCONTINUOUS_MODE_: Injected discontinuous mode.
bogdanm 0:9b334a45a8ff 2832 * @retval None
bogdanm 0:9b334a45a8ff 2833 */
bogdanm 0:9b334a45a8ff 2834 #define __HAL_ADC_CFGR_INJECT_DISCCONTINUOUS(_INJECT_DISCONTINUOUS_MODE_) ((_INJECT_DISCONTINUOUS_MODE_) << 20)
bogdanm 0:9b334a45a8ff 2835
bogdanm 0:9b334a45a8ff 2836 /**
bogdanm 0:9b334a45a8ff 2837 * @brief Enable ADC discontinuous conversion mode for regular group
bogdanm 0:9b334a45a8ff 2838 * @param _REG_DISCONTINUOUS_MODE_: Regular discontinuous mode.
bogdanm 0:9b334a45a8ff 2839 * @retval None
bogdanm 0:9b334a45a8ff 2840 */
bogdanm 0:9b334a45a8ff 2841 #define __HAL_ADC_CFGR_REG_DISCCONTINUOUS(_REG_DISCONTINUOUS_MODE_) ((_REG_DISCONTINUOUS_MODE_) << 16)
bogdanm 0:9b334a45a8ff 2842
bogdanm 0:9b334a45a8ff 2843 /**
bogdanm 0:9b334a45a8ff 2844 * @brief Configures the number of discontinuous conversions for regular group.
bogdanm 0:9b334a45a8ff 2845 * @param _NBR_DISCONTINUOUS_CONV_: Number of discontinuous conversions.
bogdanm 0:9b334a45a8ff 2846 * @retval None
bogdanm 0:9b334a45a8ff 2847 */
bogdanm 0:9b334a45a8ff 2848 #define __HAL_ADC_CFGR_DISCONTINUOUS_NUM(_NBR_DISCONTINUOUS_CONV_) (((_NBR_DISCONTINUOUS_CONV_) - 1) << 17)
bogdanm 0:9b334a45a8ff 2849
bogdanm 0:9b334a45a8ff 2850 /**
bogdanm 0:9b334a45a8ff 2851 * @brief Enable the ADC auto delay mode.
bogdanm 0:9b334a45a8ff 2852 * @param _AUTOWAIT_: Auto delay bit enable or disable.
bogdanm 0:9b334a45a8ff 2853 * @retval None
bogdanm 0:9b334a45a8ff 2854 */
bogdanm 0:9b334a45a8ff 2855 #define __HAL_ADC_CFGR_AUTOWAIT(_AUTOWAIT_) ((_AUTOWAIT_) << 14)
bogdanm 0:9b334a45a8ff 2856
bogdanm 0:9b334a45a8ff 2857 /**
bogdanm 0:9b334a45a8ff 2858 * @brief Enable ADC continuous conversion mode.
bogdanm 0:9b334a45a8ff 2859 * @param _CONTINUOUS_MODE_: Continuous mode.
bogdanm 0:9b334a45a8ff 2860 * @retval None
bogdanm 0:9b334a45a8ff 2861 */
bogdanm 0:9b334a45a8ff 2862 #define __HAL_ADC_CFGR_CONTINUOUS(_CONTINUOUS_MODE_) ((_CONTINUOUS_MODE_) << 13)
bogdanm 0:9b334a45a8ff 2863
bogdanm 0:9b334a45a8ff 2864 /**
bogdanm 0:9b334a45a8ff 2865 * @brief Enable ADC overrun mode.
bogdanm 0:9b334a45a8ff 2866 * @param _OVERRUN_MODE_: Overrun mode.
bogdanm 0:9b334a45a8ff 2867 * @retval Overrun bit setting to be programmed into CFGR register
bogdanm 0:9b334a45a8ff 2868 */
bogdanm 0:9b334a45a8ff 2869 /* Note: Bit ADC_CFGR_OVRMOD not used directly in constant */
bogdanm 0:9b334a45a8ff 2870 /* "OVR_DATA_OVERWRITTEN" to have this case defined to 0x00, to set it as the */
bogdanm 0:9b334a45a8ff 2871 /* default case to be compliant with other STM32 devices. */
bogdanm 0:9b334a45a8ff 2872 #define __HAL_ADC_CFGR_OVERRUN(_OVERRUN_MODE_) \
bogdanm 0:9b334a45a8ff 2873 ( ( (_OVERRUN_MODE_) != (OVR_DATA_PRESERVED) \
bogdanm 0:9b334a45a8ff 2874 )? (ADC_CFGR_OVRMOD) : (0x00000000) \
bogdanm 0:9b334a45a8ff 2875 )
bogdanm 0:9b334a45a8ff 2876
bogdanm 0:9b334a45a8ff 2877 /**
bogdanm 0:9b334a45a8ff 2878 * @brief Enable the ADC DMA continuous request.
bogdanm 0:9b334a45a8ff 2879 * @param _DMACONTREQ_MODE_: DMA continuous request mode.
bogdanm 0:9b334a45a8ff 2880 * @retval None
bogdanm 0:9b334a45a8ff 2881 */
bogdanm 0:9b334a45a8ff 2882 #define __HAL_ADC_CFGR_DMACONTREQ(_DMACONTREQ_MODE_) ((_DMACONTREQ_MODE_) << 1)
bogdanm 0:9b334a45a8ff 2883
bogdanm 0:9b334a45a8ff 2884 /**
bogdanm 0:9b334a45a8ff 2885 * @brief For devices with 3 ADCs or more: Defines the external trigger source
bogdanm 0:9b334a45a8ff 2886 * for regular group according to ADC into common group ADC1&ADC2 or
bogdanm 0:9b334a45a8ff 2887 * ADC3&ADC4 (some triggers with same source have different value to
bogdanm 0:9b334a45a8ff 2888 * be programmed into ADC EXTSEL bits of CFGR register).
bogdanm 0:9b334a45a8ff 2889 * Note: No risk of trigger bits value of common group ADC1&ADC2
bogdanm 0:9b334a45a8ff 2890 * misleading to another trigger at same bits value, because the 3
bogdanm 0:9b334a45a8ff 2891 * exceptions below are circular and do not point to any other trigger
bogdanm 0:9b334a45a8ff 2892 * with direct treatment.
bogdanm 0:9b334a45a8ff 2893 * For devices with 2 ADCs or less: this macro makes no change.
bogdanm 0:9b334a45a8ff 2894 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2895 * @param __EXT_TRIG_CONV__: External trigger selected for regular group.
bogdanm 0:9b334a45a8ff 2896 * @retval External trigger to be programmed into EXTSEL bits of CFGR register
bogdanm 0:9b334a45a8ff 2897 */
bogdanm 0:9b334a45a8ff 2898 #if defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 2899 defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 2900
bogdanm 0:9b334a45a8ff 2901 #if defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 2902 #define __HAL_ADC_CFGR_EXTSEL(__HANDLE__, __EXT_TRIG_CONV__) \
bogdanm 0:9b334a45a8ff 2903 (( ((((__HANDLE__)->Instance) == ADC3) || (((__HANDLE__)->Instance) == ADC4)) \
bogdanm 0:9b334a45a8ff 2904 )? \
bogdanm 0:9b334a45a8ff 2905 ( ( (__EXT_TRIG_CONV__) == ADC_EXTERNALTRIGCONV_T2_TRGO \
bogdanm 0:9b334a45a8ff 2906 )? \
bogdanm 0:9b334a45a8ff 2907 (ADC3_4_EXTERNALTRIG_T2_TRGO) \
bogdanm 0:9b334a45a8ff 2908 : \
bogdanm 0:9b334a45a8ff 2909 ( ( (__EXT_TRIG_CONV__) == ADC_EXTERNALTRIGCONV_T3_TRGO \
bogdanm 0:9b334a45a8ff 2910 )? \
bogdanm 0:9b334a45a8ff 2911 (ADC3_4_EXTERNALTRIG_T3_TRGO) \
bogdanm 0:9b334a45a8ff 2912 : \
bogdanm 0:9b334a45a8ff 2913 ( ( (__EXT_TRIG_CONV__) == ADC_EXTERNALTRIGCONV_T8_TRGO \
bogdanm 0:9b334a45a8ff 2914 )? \
bogdanm 0:9b334a45a8ff 2915 (ADC3_4_EXTERNALTRIG_T8_TRGO) \
bogdanm 0:9b334a45a8ff 2916 : \
bogdanm 0:9b334a45a8ff 2917 (__EXT_TRIG_CONV__) \
bogdanm 0:9b334a45a8ff 2918 ) \
bogdanm 0:9b334a45a8ff 2919 ) \
bogdanm 0:9b334a45a8ff 2920 ) \
bogdanm 0:9b334a45a8ff 2921 : \
bogdanm 0:9b334a45a8ff 2922 (__EXT_TRIG_CONV__) \
bogdanm 0:9b334a45a8ff 2923 )
bogdanm 0:9b334a45a8ff 2924 #endif /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 2925
bogdanm 0:9b334a45a8ff 2926 #if defined(STM32F303xE) || defined(STM32F398xx)
bogdanm 0:9b334a45a8ff 2927 /* Note: Macro including external triggers specific to device STM303xE: using */
bogdanm 0:9b334a45a8ff 2928 /* Timer20 with ADC trigger input remap. */
bogdanm 0:9b334a45a8ff 2929 #define __HAL_ADC_CFGR_EXTSEL(__HANDLE__, __EXT_TRIG_CONV__) \
bogdanm 0:9b334a45a8ff 2930 (( ((((__HANDLE__)->Instance) == ADC3) || (((__HANDLE__)->Instance) == ADC4)) \
bogdanm 0:9b334a45a8ff 2931 )? \
bogdanm 0:9b334a45a8ff 2932 ( ( (__EXT_TRIG_CONV__) == ADC_EXTERNALTRIGCONV_T2_TRGO \
bogdanm 0:9b334a45a8ff 2933 )? \
bogdanm 0:9b334a45a8ff 2934 (ADC3_4_EXTERNALTRIG_T2_TRGO) \
bogdanm 0:9b334a45a8ff 2935 : \
bogdanm 0:9b334a45a8ff 2936 ( ( (__EXT_TRIG_CONV__) == ADC_EXTERNALTRIGCONV_T3_TRGO \
bogdanm 0:9b334a45a8ff 2937 )? \
bogdanm 0:9b334a45a8ff 2938 (ADC3_4_EXTERNALTRIG_T3_TRGO) \
bogdanm 0:9b334a45a8ff 2939 : \
bogdanm 0:9b334a45a8ff 2940 ( ( (__EXT_TRIG_CONV__) == ADC_EXTERNALTRIGCONV_T8_TRGO \
bogdanm 0:9b334a45a8ff 2941 )? \
bogdanm 0:9b334a45a8ff 2942 (ADC3_4_EXTERNALTRIG_T8_TRGO) \
bogdanm 0:9b334a45a8ff 2943 : \
bogdanm 0:9b334a45a8ff 2944 ( ( (__EXT_TRIG_CONV__) == ADC_EXTERNALTRIGCONV_T20_CC1 \
bogdanm 0:9b334a45a8ff 2945 )? \
bogdanm 0:9b334a45a8ff 2946 (ADC3_4_EXTERNALTRIG_T2_CC1) \
bogdanm 0:9b334a45a8ff 2947 : \
bogdanm 0:9b334a45a8ff 2948 ( ( (__EXT_TRIG_CONV__) == ADC_EXTERNALTRIGCONV_T20_TRGO \
bogdanm 0:9b334a45a8ff 2949 )? \
bogdanm 0:9b334a45a8ff 2950 (ADC3_4_EXTERNALTRIG_EXT_IT2) \
bogdanm 0:9b334a45a8ff 2951 : \
bogdanm 0:9b334a45a8ff 2952 ( ( (__EXT_TRIG_CONV__) == ADC_EXTERNALTRIGCONV_T20_TRGO2 \
bogdanm 0:9b334a45a8ff 2953 )? \
bogdanm 0:9b334a45a8ff 2954 (ADC3_4_EXTERNALTRIG_T4_CC1) \
bogdanm 0:9b334a45a8ff 2955 : \
bogdanm 0:9b334a45a8ff 2956 (__EXT_TRIG_CONV__) \
bogdanm 0:9b334a45a8ff 2957 ) \
bogdanm 0:9b334a45a8ff 2958 ) \
bogdanm 0:9b334a45a8ff 2959 ) \
bogdanm 0:9b334a45a8ff 2960 ) \
bogdanm 0:9b334a45a8ff 2961 ) \
bogdanm 0:9b334a45a8ff 2962 ) \
bogdanm 0:9b334a45a8ff 2963 : \
bogdanm 0:9b334a45a8ff 2964 (__EXT_TRIG_CONV__ & (~ADC_EXTERNALTRIGCONV_T20_MASK)) \
bogdanm 0:9b334a45a8ff 2965 )
bogdanm 0:9b334a45a8ff 2966 #endif /* STM32F303xE || STM32F398xx */
bogdanm 0:9b334a45a8ff 2967 #else
bogdanm 0:9b334a45a8ff 2968 #define __HAL_ADC_CFGR_EXTSEL(__HANDLE__, __EXT_TRIG_CONV__) \
bogdanm 0:9b334a45a8ff 2969 (__EXT_TRIG_CONV__)
bogdanm 0:9b334a45a8ff 2970 #endif /* STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 2971 /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 2972
bogdanm 0:9b334a45a8ff 2973 /**
bogdanm 0:9b334a45a8ff 2974 * @brief For devices with 3 ADCs or more: Defines the external trigger source
bogdanm 0:9b334a45a8ff 2975 * for injected group according to ADC into common group ADC1&ADC2 or
bogdanm 0:9b334a45a8ff 2976 * ADC3&ADC4 (some triggers with same source have different value to
bogdanm 0:9b334a45a8ff 2977 * be programmed into ADC JEXTSEL bits of JSQR register).
bogdanm 0:9b334a45a8ff 2978 * Note: No risk of trigger bits value of common group ADC1&ADC2
bogdanm 0:9b334a45a8ff 2979 * misleading to another trigger at same bits value, because the 3
bogdanm 0:9b334a45a8ff 2980 * exceptions below are circular and do not point to any other trigger
bogdanm 0:9b334a45a8ff 2981 * with direct treatment, except trigger
bogdanm 0:9b334a45a8ff 2982 * ADC_EXTERNALTRIGINJECCONV_T4_CC3 differentiated with SW offset.
bogdanm 0:9b334a45a8ff 2983 * For devices with 2 ADCs or less: this macro makes no change.
bogdanm 0:9b334a45a8ff 2984 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 2985 * @param __EXT_TRIG_INJECTCONV__: External trigger selected for injected group
bogdanm 0:9b334a45a8ff 2986 * @retval External trigger to be programmed into JEXTSEL bits of JSQR register
bogdanm 0:9b334a45a8ff 2987 */
bogdanm 0:9b334a45a8ff 2988 #if defined(STM32F303xC) || defined(STM32F303xE) || defined(STM32F398xx) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 2989 #if defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 2990 #define __HAL_ADC_JSQR_JEXTSEL(__HANDLE__, __EXT_TRIG_INJECTCONV__) \
bogdanm 0:9b334a45a8ff 2991 (( ((((__HANDLE__)->Instance) == ADC3) || (((__HANDLE__)->Instance) == ADC4)) \
bogdanm 0:9b334a45a8ff 2992 )? \
bogdanm 0:9b334a45a8ff 2993 ( ( (__EXT_TRIG_INJECTCONV__) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO \
bogdanm 0:9b334a45a8ff 2994 )? \
bogdanm 0:9b334a45a8ff 2995 (ADC3_4_EXTERNALTRIGINJEC_T2_TRGO) \
bogdanm 0:9b334a45a8ff 2996 : \
bogdanm 0:9b334a45a8ff 2997 ( ( (__EXT_TRIG_INJECTCONV__) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO \
bogdanm 0:9b334a45a8ff 2998 )? \
bogdanm 0:9b334a45a8ff 2999 (ADC3_4_EXTERNALTRIGINJEC_T4_TRGO) \
bogdanm 0:9b334a45a8ff 3000 : \
bogdanm 0:9b334a45a8ff 3001 ( ( (__EXT_TRIG_INJECTCONV__) == ADC_EXTERNALTRIGINJECCONV_T8_CC4 \
bogdanm 0:9b334a45a8ff 3002 )? \
bogdanm 0:9b334a45a8ff 3003 (ADC3_4_EXTERNALTRIGINJEC_T8_CC4) \
bogdanm 0:9b334a45a8ff 3004 : \
bogdanm 0:9b334a45a8ff 3005 ( ( (__EXT_TRIG_INJECTCONV__) == ADC_EXTERNALTRIGINJECCONV_T4_CC3 \
bogdanm 0:9b334a45a8ff 3006 )? \
bogdanm 0:9b334a45a8ff 3007 (ADC3_4_EXTERNALTRIGINJEC_T4_CC3) \
bogdanm 0:9b334a45a8ff 3008 : \
bogdanm 0:9b334a45a8ff 3009 (__EXT_TRIG_INJECTCONV__) \
bogdanm 0:9b334a45a8ff 3010 ) \
bogdanm 0:9b334a45a8ff 3011 ) \
bogdanm 0:9b334a45a8ff 3012 ) \
bogdanm 0:9b334a45a8ff 3013 ) \
bogdanm 0:9b334a45a8ff 3014 : \
bogdanm 0:9b334a45a8ff 3015 (__EXT_TRIG_INJECTCONV__) \
bogdanm 0:9b334a45a8ff 3016 )
bogdanm 0:9b334a45a8ff 3017 #endif /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 3018
bogdanm 0:9b334a45a8ff 3019 #if defined(STM32F303xE) || defined(STM32F398xx)
bogdanm 0:9b334a45a8ff 3020 /* Note: Macro including external triggers specific to device STM303xE: using */
bogdanm 0:9b334a45a8ff 3021 /* Timer20 with ADC trigger input remap. */
bogdanm 0:9b334a45a8ff 3022 #define __HAL_ADC_JSQR_JEXTSEL(__HANDLE__, __EXT_TRIG_INJECTCONV__) \
bogdanm 0:9b334a45a8ff 3023 (( ((((__HANDLE__)->Instance) == ADC3) || (((__HANDLE__)->Instance) == ADC4)) \
bogdanm 0:9b334a45a8ff 3024 )? \
bogdanm 0:9b334a45a8ff 3025 ( ( (__EXT_TRIG_INJECTCONV__) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO \
bogdanm 0:9b334a45a8ff 3026 )? \
bogdanm 0:9b334a45a8ff 3027 (ADC3_4_EXTERNALTRIGINJEC_T2_TRGO) \
bogdanm 0:9b334a45a8ff 3028 : \
bogdanm 0:9b334a45a8ff 3029 ( ( (__EXT_TRIG_INJECTCONV__) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO \
bogdanm 0:9b334a45a8ff 3030 )? \
bogdanm 0:9b334a45a8ff 3031 (ADC3_4_EXTERNALTRIGINJEC_T4_TRGO) \
bogdanm 0:9b334a45a8ff 3032 : \
bogdanm 0:9b334a45a8ff 3033 ( ( (__EXT_TRIG_INJECTCONV__) == ADC_EXTERNALTRIGINJECCONV_T8_CC4 \
bogdanm 0:9b334a45a8ff 3034 )? \
bogdanm 0:9b334a45a8ff 3035 (ADC3_4_EXTERNALTRIGINJEC_T8_CC4) \
bogdanm 0:9b334a45a8ff 3036 : \
bogdanm 0:9b334a45a8ff 3037 ( ( (__EXT_TRIG_INJECTCONV__) == ADC_EXTERNALTRIGINJECCONV_T4_CC3 \
bogdanm 0:9b334a45a8ff 3038 )? \
bogdanm 0:9b334a45a8ff 3039 (ADC3_4_EXTERNALTRIGINJEC_T4_CC3) \
bogdanm 0:9b334a45a8ff 3040 : \
bogdanm 0:9b334a45a8ff 3041 ( ( (__EXT_TRIG_INJECTCONV__) \
bogdanm 0:9b334a45a8ff 3042 == ADC_EXTERNALTRIGINJECCONV_T20_TRGO \
bogdanm 0:9b334a45a8ff 3043 )? \
bogdanm 0:9b334a45a8ff 3044 (ADC3_4_EXTERNALTRIGINJEC_T20_TRGO) \
bogdanm 0:9b334a45a8ff 3045 : \
bogdanm 0:9b334a45a8ff 3046 ( ( (__EXT_TRIG_INJECTCONV__) \
bogdanm 0:9b334a45a8ff 3047 == ADC_EXTERNALTRIGINJECCONV_T20_TRGO2 \
bogdanm 0:9b334a45a8ff 3048 )? \
bogdanm 0:9b334a45a8ff 3049 (ADC3_4_EXTERNALTRIGINJEC_T1_CC3) \
bogdanm 0:9b334a45a8ff 3050 : \
bogdanm 0:9b334a45a8ff 3051 (__EXT_TRIG_INJECTCONV__) \
bogdanm 0:9b334a45a8ff 3052 ) \
bogdanm 0:9b334a45a8ff 3053 ) \
bogdanm 0:9b334a45a8ff 3054 ) \
bogdanm 0:9b334a45a8ff 3055 ) \
bogdanm 0:9b334a45a8ff 3056 ) \
bogdanm 0:9b334a45a8ff 3057 ) \
bogdanm 0:9b334a45a8ff 3058 : \
bogdanm 0:9b334a45a8ff 3059 (__EXT_TRIG_INJECTCONV__ & (~ADC_EXTERNALTRIGCONV_T20_MASK)) \
bogdanm 0:9b334a45a8ff 3060 )
bogdanm 0:9b334a45a8ff 3061 #endif /* STM32F303xE || STM32F398xx */
bogdanm 0:9b334a45a8ff 3062 #else
bogdanm 0:9b334a45a8ff 3063 #define __HAL_ADC_JSQR_JEXTSEL(__HANDLE__, __EXT_TRIG_INJECTCONV__) \
bogdanm 0:9b334a45a8ff 3064 (__EXT_TRIG_INJECTCONV__)
bogdanm 0:9b334a45a8ff 3065 #endif /* STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3066 /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 3067
bogdanm 0:9b334a45a8ff 3068 /**
bogdanm 0:9b334a45a8ff 3069 * @brief Configure the channel number into offset OFRx register
bogdanm 0:9b334a45a8ff 3070 * @param _CHANNEL_: ADC Channel
bogdanm 0:9b334a45a8ff 3071 * @retval None
bogdanm 0:9b334a45a8ff 3072 */
bogdanm 0:9b334a45a8ff 3073 #define __HAL_ADC_OFR_CHANNEL(_CHANNEL_) ((_CHANNEL_) << 26)
bogdanm 0:9b334a45a8ff 3074
bogdanm 0:9b334a45a8ff 3075 /**
bogdanm 0:9b334a45a8ff 3076 * @brief Configure the channel number into differential mode selection register
bogdanm 0:9b334a45a8ff 3077 * @param _CHANNEL_: ADC Channel
bogdanm 0:9b334a45a8ff 3078 * @retval None
bogdanm 0:9b334a45a8ff 3079 */
bogdanm 0:9b334a45a8ff 3080 #define __HAL_ADC_DIFSEL_CHANNEL(_CHANNEL_) (1U << (_CHANNEL_))
bogdanm 0:9b334a45a8ff 3081
bogdanm 0:9b334a45a8ff 3082 /**
bogdanm 0:9b334a45a8ff 3083 * @brief Calibration factor in differential mode to be set into calibration register
bogdanm 0:9b334a45a8ff 3084 * @param _Calibration_Factor_: Calibration factor value
bogdanm 0:9b334a45a8ff 3085 * @retval None
bogdanm 0:9b334a45a8ff 3086 */
bogdanm 0:9b334a45a8ff 3087 #define __HAL_ADC_CALFACT_DIFF_SET(_Calibration_Factor_) ((_Calibration_Factor_) << 16)
bogdanm 0:9b334a45a8ff 3088
bogdanm 0:9b334a45a8ff 3089 /**
bogdanm 0:9b334a45a8ff 3090 * @brief Calibration factor in differential mode to be retrieved from calibration register
bogdanm 0:9b334a45a8ff 3091 * @param _Calibration_Factor_: Calibration factor value
bogdanm 0:9b334a45a8ff 3092 * @retval None
bogdanm 0:9b334a45a8ff 3093 */
bogdanm 0:9b334a45a8ff 3094 #define __HAL_ADC_CALFACT_DIFF_GET(_Calibration_Factor_) ((_Calibration_Factor_) >> 16)
bogdanm 0:9b334a45a8ff 3095
bogdanm 0:9b334a45a8ff 3096 /**
bogdanm 0:9b334a45a8ff 3097 * @brief Configure the analog watchdog high threshold into registers TR1, TR2 or TR3.
bogdanm 0:9b334a45a8ff 3098 * @param _Threshold_: Threshold value
bogdanm 0:9b334a45a8ff 3099 * @retval None
bogdanm 0:9b334a45a8ff 3100 */
bogdanm 0:9b334a45a8ff 3101 #define __HAL_ADC_TRX_HIGHTHRESHOLD(_Threshold_) ((_Threshold_) << 16)
bogdanm 0:9b334a45a8ff 3102
bogdanm 0:9b334a45a8ff 3103 /**
bogdanm 0:9b334a45a8ff 3104 * @brief Enable the ADC DMA continuous request for ADC multimode.
bogdanm 0:9b334a45a8ff 3105 * @param _DMAContReq_MODE_: DMA continuous request mode.
bogdanm 0:9b334a45a8ff 3106 * @retval None
bogdanm 0:9b334a45a8ff 3107 */
bogdanm 0:9b334a45a8ff 3108 #define __HAL_ADC_CCR_MULTI_DMACONTREQ(_DMAContReq_MODE_) ((_DMAContReq_MODE_) << 13)
bogdanm 0:9b334a45a8ff 3109
bogdanm 0:9b334a45a8ff 3110
bogdanm 0:9b334a45a8ff 3111 /**
bogdanm 0:9b334a45a8ff 3112 * @brief Enable the ADC peripheral
bogdanm 0:9b334a45a8ff 3113 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3114 * @retval None
bogdanm 0:9b334a45a8ff 3115 */
bogdanm 0:9b334a45a8ff 3116 #define __HAL_ADC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= ADC_CR_ADEN)
bogdanm 0:9b334a45a8ff 3117
bogdanm 0:9b334a45a8ff 3118 /**
bogdanm 0:9b334a45a8ff 3119 * @brief Verification of hardware constraints before ADC can be enabled
bogdanm 0:9b334a45a8ff 3120 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3121 * @retval SET (ADC can be enabled) or RESET (ADC cannot be enabled)
bogdanm 0:9b334a45a8ff 3122 */
bogdanm 0:9b334a45a8ff 3123 #define __HAL_ADC_ENABLING_CONDITIONS(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3124 (( ( ((__HANDLE__)->Instance->CR) & \
bogdanm 0:9b334a45a8ff 3125 (ADC_CR_ADCAL | ADC_CR_JADSTP | ADC_CR_ADSTP | ADC_CR_JADSTART | \
bogdanm 0:9b334a45a8ff 3126 ADC_CR_ADSTART | ADC_CR_ADDIS | ADC_CR_ADEN ) \
bogdanm 0:9b334a45a8ff 3127 ) == RESET \
bogdanm 0:9b334a45a8ff 3128 ) ? SET : RESET)
bogdanm 0:9b334a45a8ff 3129
bogdanm 0:9b334a45a8ff 3130 /**
bogdanm 0:9b334a45a8ff 3131 * @brief Disable the ADC peripheral
bogdanm 0:9b334a45a8ff 3132 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3133 * @retval None
bogdanm 0:9b334a45a8ff 3134 */
bogdanm 0:9b334a45a8ff 3135 #define __HAL_ADC_DISABLE(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3136 do{ \
bogdanm 0:9b334a45a8ff 3137 (__HANDLE__)->Instance->CR |= ADC_CR_ADDIS; \
bogdanm 0:9b334a45a8ff 3138 __HAL_ADC_CLEAR_FLAG((__HANDLE__), (ADC_FLAG_EOSMP | ADC_FLAG_RDY)); \
bogdanm 0:9b334a45a8ff 3139 } while(0)
bogdanm 0:9b334a45a8ff 3140
bogdanm 0:9b334a45a8ff 3141 /**
bogdanm 0:9b334a45a8ff 3142 * @brief Verification of hardware constraints before ADC can be disabled
bogdanm 0:9b334a45a8ff 3143 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3144 * @retval SET (ADC can be disabled) or RESET (ADC cannot be disabled)
bogdanm 0:9b334a45a8ff 3145 */
bogdanm 0:9b334a45a8ff 3146 #define __HAL_ADC_DISABLING_CONDITIONS(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3147 (( ( ((__HANDLE__)->Instance->CR) & \
bogdanm 0:9b334a45a8ff 3148 (ADC_CR_JADSTART | ADC_CR_ADSTART | ADC_CR_ADEN)) == ADC_CR_ADEN \
bogdanm 0:9b334a45a8ff 3149 ) ? SET : RESET)
bogdanm 0:9b334a45a8ff 3150
bogdanm 0:9b334a45a8ff 3151
bogdanm 0:9b334a45a8ff 3152 /**
bogdanm 0:9b334a45a8ff 3153 * @brief Shift the offset in function of the selected ADC resolution.
bogdanm 0:9b334a45a8ff 3154 * Offset has to be left-aligned on bit 11, the LSB (right bits) are set to 0
bogdanm 0:9b334a45a8ff 3155 * If resolution 12 bits, no shift.
bogdanm 0:9b334a45a8ff 3156 * If resolution 10 bits, shift of 2 ranks on the left.
bogdanm 0:9b334a45a8ff 3157 * If resolution 8 bits, shift of 4 ranks on the left.
bogdanm 0:9b334a45a8ff 3158 * If resolution 6 bits, shift of 6 ranks on the left.
bogdanm 0:9b334a45a8ff 3159 * therefore, shift = (12 - resolution) = 12 - (12- (((RES[1:0]) >> 3)*2))
bogdanm 0:9b334a45a8ff 3160 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3161 * @param _Offset_: Value to be shifted
bogdanm 0:9b334a45a8ff 3162 * @retval None
bogdanm 0:9b334a45a8ff 3163 */
bogdanm 0:9b334a45a8ff 3164 #define __HAL_ADC_OFFSET_SHIFT_RESOLUTION(__HANDLE__, _Offset_) \
bogdanm 0:9b334a45a8ff 3165 ((_Offset_) << ((((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) >> 3)*2))
bogdanm 0:9b334a45a8ff 3166
bogdanm 0:9b334a45a8ff 3167 /**
bogdanm 0:9b334a45a8ff 3168 * @brief Shift the AWD1 threshold in function of the selected ADC resolution.
bogdanm 0:9b334a45a8ff 3169 * Thresholds have to be left-aligned on bit 11, the LSB (right bits) are set to 0.
bogdanm 0:9b334a45a8ff 3170 * If resolution 12 bits, no shift.
bogdanm 0:9b334a45a8ff 3171 * If resolution 10 bits, shift of 2 ranks on the left.
bogdanm 0:9b334a45a8ff 3172 * If resolution 8 bits, shift of 4 ranks on the left.
bogdanm 0:9b334a45a8ff 3173 * If resolution 6 bits, shift of 6 ranks on the left.
bogdanm 0:9b334a45a8ff 3174 * therefore, shift = (12 - resolution) = 12 - (12- (((RES[1:0]) >> 3)*2))
bogdanm 0:9b334a45a8ff 3175 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3176 * @param _Threshold_: Value to be shifted
bogdanm 0:9b334a45a8ff 3177 * @retval None
bogdanm 0:9b334a45a8ff 3178 */
bogdanm 0:9b334a45a8ff 3179 #define __HAL_ADC_AWD1THRESHOLD_SHIFT_RESOLUTION(__HANDLE__, _Threshold_) \
bogdanm 0:9b334a45a8ff 3180 ((_Threshold_) << ((((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) >> 3)*2))
bogdanm 0:9b334a45a8ff 3181
bogdanm 0:9b334a45a8ff 3182 /**
bogdanm 0:9b334a45a8ff 3183 * @brief Shift the AWD2 and AWD3 threshold in function of the selected ADC resolution.
bogdanm 0:9b334a45a8ff 3184 * Thresholds have to be left-aligned on bit 7.
bogdanm 0:9b334a45a8ff 3185 * If resolution 12 bits, shift of 4 ranks on the right (the 4 LSB are discarded)
bogdanm 0:9b334a45a8ff 3186 * If resolution 10 bits, shift of 2 ranks on the right (the 2 LSB are discarded)
bogdanm 0:9b334a45a8ff 3187 * If resolution 8 bits, no shift.
bogdanm 0:9b334a45a8ff 3188 * If resolution 6 bits, shift of 2 ranks on the left (the 2 LSB are set to 0)
bogdanm 0:9b334a45a8ff 3189 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3190 * @param _Threshold_: Value to be shifted
bogdanm 0:9b334a45a8ff 3191 * @retval None
bogdanm 0:9b334a45a8ff 3192 */
bogdanm 0:9b334a45a8ff 3193 #define __HAL_ADC_AWD23THRESHOLD_SHIFT_RESOLUTION(__HANDLE__, _Threshold_) \
bogdanm 0:9b334a45a8ff 3194 ( ((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) != (ADC_CFGR_RES_1 | ADC_CFGR_RES_0) ? \
bogdanm 0:9b334a45a8ff 3195 ((_Threshold_) >> (4- ((((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) >> 3)*2))) : \
bogdanm 0:9b334a45a8ff 3196 (_Threshold_) << 2 )
bogdanm 0:9b334a45a8ff 3197
bogdanm 0:9b334a45a8ff 3198 /**
bogdanm 0:9b334a45a8ff 3199 * @brief Defines if the selected ADC is within ADC common register ADC1_2 or ADC3_4
bogdanm 0:9b334a45a8ff 3200 * if available (ADC2, ADC3, ADC4 availability depends on STM32 product)
bogdanm 0:9b334a45a8ff 3201 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3202 * @retval Common control register ADC1_2 or ADC3_4
bogdanm 0:9b334a45a8ff 3203 */
bogdanm 0:9b334a45a8ff 3204 #if defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 3205 defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 3206 #define __HAL_ADC_COMMON_REGISTER(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3207 ( ( ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC2)) \
bogdanm 0:9b334a45a8ff 3208 )? (ADC1_2_COMMON) : (ADC3_4_COMMON) \
bogdanm 0:9b334a45a8ff 3209 )
bogdanm 0:9b334a45a8ff 3210 #endif /* STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3211 /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 3212
bogdanm 0:9b334a45a8ff 3213 #if defined(STM32F302xE) || \
bogdanm 0:9b334a45a8ff 3214 defined(STM32F302xC) || \
bogdanm 0:9b334a45a8ff 3215 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 3216 #define __HAL_ADC_COMMON_REGISTER(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3217 (ADC1_2_COMMON)
bogdanm 0:9b334a45a8ff 3218 #endif /* STM32F302xE || */
bogdanm 0:9b334a45a8ff 3219 /* STM32F302xC || */
bogdanm 0:9b334a45a8ff 3220 /* STM32F303x8 || STM32F328xx || STM32F334x8 */
bogdanm 0:9b334a45a8ff 3221
bogdanm 0:9b334a45a8ff 3222 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 3223 #define __HAL_ADC_COMMON_REGISTER(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3224 (ADC1_COMMON)
bogdanm 0:9b334a45a8ff 3225 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 3226
bogdanm 0:9b334a45a8ff 3227 /**
bogdanm 0:9b334a45a8ff 3228 * @brief Selection of ADC common register CCR bits MULTI[4:0]corresponding to the selected ADC (applicable for devices with several ADCs)
bogdanm 0:9b334a45a8ff 3229 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3230 * @retval None
bogdanm 0:9b334a45a8ff 3231 */
bogdanm 0:9b334a45a8ff 3232 #if defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 3233 defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 3234 #define __HAL_ADC_COMMON_CCR_MULTI(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3235 ( ( ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC2)) \
bogdanm 0:9b334a45a8ff 3236 )? \
bogdanm 0:9b334a45a8ff 3237 (ADC1_2_COMMON->CCR & ADC12_CCR_MULTI) \
bogdanm 0:9b334a45a8ff 3238 : \
bogdanm 0:9b334a45a8ff 3239 (ADC3_4_COMMON->CCR & ADC34_CCR_MULTI) \
bogdanm 0:9b334a45a8ff 3240 )
bogdanm 0:9b334a45a8ff 3241 #endif /* STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3242 /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 3243
bogdanm 0:9b334a45a8ff 3244 #if defined(STM32F302xE) || \
bogdanm 0:9b334a45a8ff 3245 defined(STM32F302xC) || \
bogdanm 0:9b334a45a8ff 3246 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 3247 #define __HAL_ADC_COMMON_CCR_MULTI(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3248 (ADC1_2_COMMON->CCR & ADC12_CCR_MULTI)
bogdanm 0:9b334a45a8ff 3249 #endif /* STM32F302xE || */
bogdanm 0:9b334a45a8ff 3250 /* STM32F302xC || */
bogdanm 0:9b334a45a8ff 3251 /* STM32F303x8 || STM32F328xx || STM32F334x8 */
bogdanm 0:9b334a45a8ff 3252
bogdanm 0:9b334a45a8ff 3253 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 3254 #define __HAL_ADC_COMMON_CCR_MULTI(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3255 (RESET)
bogdanm 0:9b334a45a8ff 3256 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 3257
bogdanm 0:9b334a45a8ff 3258 /**
bogdanm 0:9b334a45a8ff 3259 * @brief Verification of condition for ADC start conversion: ADC must be in non-multimode, or multimode with handle of ADC master (applicable for devices with several ADCs)
bogdanm 0:9b334a45a8ff 3260 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3261 * @retval None
bogdanm 0:9b334a45a8ff 3262 */
bogdanm 0:9b334a45a8ff 3263 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 3264 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 3265 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 3266 #define __HAL_ADC_NONMULTIMODE_OR_MULTIMODEMASTER(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3267 ((__HAL_ADC_COMMON_CCR_MULTI(__HANDLE__) == RESET) || (IS_ADC_MULTIMODE_MASTER_INSTANCE((__HANDLE__)->Instance)))
bogdanm 0:9b334a45a8ff 3268 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3269 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 3270 /* STM32F303x8 || STM32F334x8 || STM32F328xx */
bogdanm 0:9b334a45a8ff 3271
bogdanm 0:9b334a45a8ff 3272 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 3273 #define __HAL_ADC_NONMULTIMODE_OR_MULTIMODEMASTER(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3274 (!RESET)
bogdanm 0:9b334a45a8ff 3275 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 3276
bogdanm 0:9b334a45a8ff 3277 /**
bogdanm 0:9b334a45a8ff 3278 * @brief Set handle of the other ADC sharing the same common register ADC1_2 or ADC3_4
bogdanm 0:9b334a45a8ff 3279 * if available (ADC2, ADC3, ADC4 availability depends on STM32 product)
bogdanm 0:9b334a45a8ff 3280 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3281 * @param __HANDLE_OTHER_ADC__: other ADC handle
bogdanm 0:9b334a45a8ff 3282 * @retval None
bogdanm 0:9b334a45a8ff 3283 */
bogdanm 0:9b334a45a8ff 3284 #if defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 3285 defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 3286 #define __HAL_ADC_COMMON_ADC_OTHER(__HANDLE__, __HANDLE_OTHER_ADC__) \
bogdanm 0:9b334a45a8ff 3287 ( ( ((__HANDLE__)->Instance == ADC1) \
bogdanm 0:9b334a45a8ff 3288 )? \
bogdanm 0:9b334a45a8ff 3289 ((__HANDLE_OTHER_ADC__)->Instance = ADC2) \
bogdanm 0:9b334a45a8ff 3290 : \
bogdanm 0:9b334a45a8ff 3291 ( ( ((__HANDLE__)->Instance == ADC2) \
bogdanm 0:9b334a45a8ff 3292 )? \
bogdanm 0:9b334a45a8ff 3293 ((__HANDLE_OTHER_ADC__)->Instance = ADC1) \
bogdanm 0:9b334a45a8ff 3294 : \
bogdanm 0:9b334a45a8ff 3295 ( ( ((__HANDLE__)->Instance == ADC3) \
bogdanm 0:9b334a45a8ff 3296 )? \
bogdanm 0:9b334a45a8ff 3297 ((__HANDLE_OTHER_ADC__)->Instance = ADC4) \
bogdanm 0:9b334a45a8ff 3298 : \
bogdanm 0:9b334a45a8ff 3299 ( ( ((__HANDLE__)->Instance == ADC4) \
bogdanm 0:9b334a45a8ff 3300 )? \
bogdanm 0:9b334a45a8ff 3301 ((__HANDLE_OTHER_ADC__)->Instance = ADC3) \
bogdanm 0:9b334a45a8ff 3302 : \
bogdanm 0:9b334a45a8ff 3303 ((__HANDLE_OTHER_ADC__)->Instance = HAL_NULL) \
bogdanm 0:9b334a45a8ff 3304 ) \
bogdanm 0:9b334a45a8ff 3305 ) \
bogdanm 0:9b334a45a8ff 3306 ) \
bogdanm 0:9b334a45a8ff 3307 )
bogdanm 0:9b334a45a8ff 3308 #endif /* STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3309 /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 3310
bogdanm 0:9b334a45a8ff 3311 #if defined(STM32F302xE) || \
bogdanm 0:9b334a45a8ff 3312 defined(STM32F302xC) || \
bogdanm 0:9b334a45a8ff 3313 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 3314 #define __HAL_ADC_COMMON_ADC_OTHER(__HANDLE__, __HANDLE_OTHER_ADC__) \
bogdanm 0:9b334a45a8ff 3315 ( ( ((__HANDLE__)->Instance == ADC1) \
bogdanm 0:9b334a45a8ff 3316 )? \
bogdanm 0:9b334a45a8ff 3317 ((__HANDLE_OTHER_ADC__)->Instance = ADC2) \
bogdanm 0:9b334a45a8ff 3318 : \
bogdanm 0:9b334a45a8ff 3319 ((__HANDLE_OTHER_ADC__)->Instance = ADC1) \
bogdanm 0:9b334a45a8ff 3320 )
bogdanm 0:9b334a45a8ff 3321 #endif /* STM32F302xE || */
bogdanm 0:9b334a45a8ff 3322 /* STM32F302xC || */
bogdanm 0:9b334a45a8ff 3323 /* STM32F303x8 || STM32F328xx || STM32F334x8 */
bogdanm 0:9b334a45a8ff 3324
bogdanm 0:9b334a45a8ff 3325 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 3326 #define __HAL_ADC_COMMON_ADC_OTHER(__HANDLE__, __HANDLE_OTHER_ADC__) \
bogdanm 0:9b334a45a8ff 3327 ((__HANDLE_OTHER_ADC__)->Instance = HAL_NULL)
bogdanm 0:9b334a45a8ff 3328 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 3329
bogdanm 0:9b334a45a8ff 3330 /**
bogdanm 0:9b334a45a8ff 3331 * @brief Set handle of the ADC slave associated to the ADC master
bogdanm 0:9b334a45a8ff 3332 * if available (ADC2, ADC3, ADC4 availability depends on STM32 product)
bogdanm 0:9b334a45a8ff 3333 * @param __HANDLE_MASTER__: ADC master handle
bogdanm 0:9b334a45a8ff 3334 * @param __HANDLE_SLAVE__: ADC slave handle
bogdanm 0:9b334a45a8ff 3335 * @retval None
bogdanm 0:9b334a45a8ff 3336 */
bogdanm 0:9b334a45a8ff 3337 #if defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 3338 defined(STM32F303xC) || defined(STM32F358xx)
bogdanm 0:9b334a45a8ff 3339 #define __HAL_ADC_MULTI_SLAVE(__HANDLE_MASTER__, __HANDLE_SLAVE__) \
bogdanm 0:9b334a45a8ff 3340 ( ( ((__HANDLE_MASTER__)->Instance == ADC1) \
bogdanm 0:9b334a45a8ff 3341 )? \
bogdanm 0:9b334a45a8ff 3342 ((__HANDLE_SLAVE__)->Instance = ADC2) \
bogdanm 0:9b334a45a8ff 3343 : \
bogdanm 0:9b334a45a8ff 3344 ( ( ((__HANDLE_MASTER__)->Instance == ADC3) \
bogdanm 0:9b334a45a8ff 3345 )? \
bogdanm 0:9b334a45a8ff 3346 ((__HANDLE_SLAVE__)->Instance = ADC4) \
bogdanm 0:9b334a45a8ff 3347 : \
bogdanm 0:9b334a45a8ff 3348 ((__HANDLE_SLAVE__)->Instance = HAL_NULL) \
bogdanm 0:9b334a45a8ff 3349 ) \
bogdanm 0:9b334a45a8ff 3350 )
bogdanm 0:9b334a45a8ff 3351 #endif /* STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3352 /* STM32F303xC || STM32F358xx */
bogdanm 0:9b334a45a8ff 3353
bogdanm 0:9b334a45a8ff 3354 #if defined(STM32F302xE) || \
bogdanm 0:9b334a45a8ff 3355 defined(STM32F302xC) || \
bogdanm 0:9b334a45a8ff 3356 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
bogdanm 0:9b334a45a8ff 3357 #define __HAL_ADC_MULTI_SLAVE(__HANDLE_MASTER__, __HANDLE_SLAVE__) \
bogdanm 0:9b334a45a8ff 3358 ( ( ((__HANDLE_MASTER__)->Instance == ADC1) \
bogdanm 0:9b334a45a8ff 3359 )? \
bogdanm 0:9b334a45a8ff 3360 ((__HANDLE_SLAVE__)->Instance = ADC2) \
bogdanm 0:9b334a45a8ff 3361 : \
bogdanm 0:9b334a45a8ff 3362 ( HAL_NULL ) \
bogdanm 0:9b334a45a8ff 3363 )
bogdanm 0:9b334a45a8ff 3364 #endif /* STM32F302xE || */
bogdanm 0:9b334a45a8ff 3365 /* STM32F302xC || */
bogdanm 0:9b334a45a8ff 3366 /* STM32F303x8 || STM32F328xx || STM32F334x8 */
bogdanm 0:9b334a45a8ff 3367
bogdanm 0:9b334a45a8ff 3368 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3369 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 3370 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
bogdanm 0:9b334a45a8ff 3371 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 3372
bogdanm 0:9b334a45a8ff 3373
bogdanm 0:9b334a45a8ff 3374 #if defined(STM32F373xC) || defined(STM32F378xx)
bogdanm 0:9b334a45a8ff 3375 /**
bogdanm 0:9b334a45a8ff 3376 * @brief Set ADC number of conversions into regular channel sequence length.
bogdanm 0:9b334a45a8ff 3377 * @param _NbrOfConversion_: Regular channel sequence length
bogdanm 0:9b334a45a8ff 3378 * @retval None
bogdanm 0:9b334a45a8ff 3379 */
bogdanm 0:9b334a45a8ff 3380 #define __HAL_ADC_SQR1_L(_NbrOfConversion_) (((_NbrOfConversion_) - (uint8_t)1) << 20)
bogdanm 0:9b334a45a8ff 3381
bogdanm 0:9b334a45a8ff 3382 /**
bogdanm 0:9b334a45a8ff 3383 * @brief Set the ADC's sample time for channel numbers between 10 and 18.
bogdanm 0:9b334a45a8ff 3384 * @param _SAMPLETIME_: Sample time parameter.
bogdanm 0:9b334a45a8ff 3385 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 3386 * @retval None
bogdanm 0:9b334a45a8ff 3387 */
bogdanm 0:9b334a45a8ff 3388 #define __HAL_ADC_SMPR1(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3 * ((_CHANNELNB_) - 10)))
bogdanm 0:9b334a45a8ff 3389
bogdanm 0:9b334a45a8ff 3390 /**
bogdanm 0:9b334a45a8ff 3391 * @brief Set the ADC's sample time for channel numbers between 0 and 9.
bogdanm 0:9b334a45a8ff 3392 * @param _SAMPLETIME_: Sample time parameter.
bogdanm 0:9b334a45a8ff 3393 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 3394 * @retval None
bogdanm 0:9b334a45a8ff 3395 */
bogdanm 0:9b334a45a8ff 3396 #define __HAL_ADC_SMPR2(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3 * (_CHANNELNB_)))
bogdanm 0:9b334a45a8ff 3397
bogdanm 0:9b334a45a8ff 3398 /**
bogdanm 0:9b334a45a8ff 3399 * @brief Set the selected regular channel rank for rank between 1 and 6.
bogdanm 0:9b334a45a8ff 3400 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 3401 * @param _RANKNB_: Rank number.
bogdanm 0:9b334a45a8ff 3402 * @retval None
bogdanm 0:9b334a45a8ff 3403 */
bogdanm 0:9b334a45a8ff 3404 #define __HAL_ADC_SQR3_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (5 * ((_RANKNB_) - 1)))
bogdanm 0:9b334a45a8ff 3405
bogdanm 0:9b334a45a8ff 3406 /**
bogdanm 0:9b334a45a8ff 3407 * @brief Set the selected regular channel rank for rank between 7 and 12.
bogdanm 0:9b334a45a8ff 3408 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 3409 * @param _RANKNB_: Rank number.
bogdanm 0:9b334a45a8ff 3410 * @retval None
bogdanm 0:9b334a45a8ff 3411 */
bogdanm 0:9b334a45a8ff 3412 #define __HAL_ADC_SQR2_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (5 * ((_RANKNB_) - 7)))
bogdanm 0:9b334a45a8ff 3413
bogdanm 0:9b334a45a8ff 3414 /**
bogdanm 0:9b334a45a8ff 3415 * @brief Set the selected regular channel rank for rank between 13 and 16.
bogdanm 0:9b334a45a8ff 3416 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 3417 * @param _RANKNB_: Rank number.
bogdanm 0:9b334a45a8ff 3418 * @retval None
bogdanm 0:9b334a45a8ff 3419 */
bogdanm 0:9b334a45a8ff 3420 #define __HAL_ADC_SQR1_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (5 * ((_RANKNB_) - 13)))
bogdanm 0:9b334a45a8ff 3421
bogdanm 0:9b334a45a8ff 3422 /**
bogdanm 0:9b334a45a8ff 3423 * @brief Set the injected sequence length.
bogdanm 0:9b334a45a8ff 3424 * @param _JSQR_JL_: Sequence length.
bogdanm 0:9b334a45a8ff 3425 * @retval None
bogdanm 0:9b334a45a8ff 3426 */
bogdanm 0:9b334a45a8ff 3427 #define __HAL_ADC_JSQR_JL(_JSQR_JL_) (((_JSQR_JL_) -1) << 20)
bogdanm 0:9b334a45a8ff 3428
bogdanm 0:9b334a45a8ff 3429 /**
bogdanm 0:9b334a45a8ff 3430 * @brief Set the selected injected Channel rank (channels sequence starting from 4-JL)
bogdanm 0:9b334a45a8ff 3431 * @param _CHANNELNB_: Channel number.
bogdanm 0:9b334a45a8ff 3432 * @param _RANKNB_: Rank number.
bogdanm 0:9b334a45a8ff 3433 * @param _JSQR_JL_: Sequence length.
bogdanm 0:9b334a45a8ff 3434 * @retval None
bogdanm 0:9b334a45a8ff 3435 */
bogdanm 0:9b334a45a8ff 3436 #define __HAL_ADC_JSQR_RK(_CHANNELNB_, _RANKNB_, _JSQR_JL_) \
bogdanm 0:9b334a45a8ff 3437 ((_CHANNELNB_) << (5 * ((4 - ((_JSQR_JL_) - (_RANKNB_))) - 1)))
bogdanm 0:9b334a45a8ff 3438
bogdanm 0:9b334a45a8ff 3439 /**
bogdanm 0:9b334a45a8ff 3440 * @brief Enable ADC continuous conversion mode.
bogdanm 0:9b334a45a8ff 3441 * @param _CONTINUOUS_MODE_: Continuous mode.
bogdanm 0:9b334a45a8ff 3442 * @retval None
bogdanm 0:9b334a45a8ff 3443 */
bogdanm 0:9b334a45a8ff 3444 #define __HAL_ADC_CR2_CONTINUOUS(_CONTINUOUS_MODE_) ((_CONTINUOUS_MODE_) << 1)
bogdanm 0:9b334a45a8ff 3445
bogdanm 0:9b334a45a8ff 3446 /**
bogdanm 0:9b334a45a8ff 3447 * @brief Configures the number of discontinuous conversions for the regular group channels.
bogdanm 0:9b334a45a8ff 3448 * @param _NBR_DISCONTINUOUS_CONV_: Number of discontinuous conversions.
bogdanm 0:9b334a45a8ff 3449 * @retval None
bogdanm 0:9b334a45a8ff 3450 */
bogdanm 0:9b334a45a8ff 3451 #define __HAL_ADC_CR1_DISCONTINUOUS_NUM(_NBR_DISCONTINUOUS_CONV_) (((_NBR_DISCONTINUOUS_CONV_) - 1) << 13)
bogdanm 0:9b334a45a8ff 3452
bogdanm 0:9b334a45a8ff 3453 /**
bogdanm 0:9b334a45a8ff 3454 * @brief Enable ADC scan mode to convert multiple ranks with sequencer.
bogdanm 0:9b334a45a8ff 3455 * @param _SCAN_MODE_: Scan conversion mode.
bogdanm 0:9b334a45a8ff 3456 * @retval None
bogdanm 0:9b334a45a8ff 3457 */
bogdanm 0:9b334a45a8ff 3458 #define __HAL_ADC_CR1_SCAN(_SCAN_MODE_) \
bogdanm 0:9b334a45a8ff 3459 ( ( (_SCAN_MODE_) == (ADC_SCAN_ENABLE) \
bogdanm 0:9b334a45a8ff 3460 )? (ADC_CR1_SCAN) : (0x00000000) \
bogdanm 0:9b334a45a8ff 3461 )
bogdanm 0:9b334a45a8ff 3462
bogdanm 0:9b334a45a8ff 3463 /**
bogdanm 0:9b334a45a8ff 3464 * @brief Calibration factor in differential mode to be set into calibration register
bogdanm 0:9b334a45a8ff 3465 * @param _Calibration_Factor_: Calibration factor value
bogdanm 0:9b334a45a8ff 3466 * @retval None
bogdanm 0:9b334a45a8ff 3467 */
bogdanm 0:9b334a45a8ff 3468 #define __HAL_ADC_CALFACT_DIFF_SET(_Calibration_Factor_) ((_Calibration_Factor_) << 16)
bogdanm 0:9b334a45a8ff 3469
bogdanm 0:9b334a45a8ff 3470 /**
bogdanm 0:9b334a45a8ff 3471 * @brief Calibration factor in differential mode to be retrieved from calibration register
bogdanm 0:9b334a45a8ff 3472 * @param _Calibration_Factor_: Calibration factor value
bogdanm 0:9b334a45a8ff 3473 * @retval None
bogdanm 0:9b334a45a8ff 3474 */
bogdanm 0:9b334a45a8ff 3475 #define __HAL_ADC_CALFACT_DIFF_GET(_Calibration_Factor_) ((_Calibration_Factor_) >> 16)
bogdanm 0:9b334a45a8ff 3476
bogdanm 0:9b334a45a8ff 3477
bogdanm 0:9b334a45a8ff 3478 /**
bogdanm 0:9b334a45a8ff 3479 * @brief Get the maximum ADC conversion cycles on all channels.
bogdanm 0:9b334a45a8ff 3480 * Returns the selected sampling time + conversion time (12.5 ADC clock cycles)
bogdanm 0:9b334a45a8ff 3481 * Approximation of sampling time within 4 ranges, returns the higher value:
bogdanm 0:9b334a45a8ff 3482 * below 7.5 cycles {1.5 cycle; 7.5 cycles},
bogdanm 0:9b334a45a8ff 3483 * between 13.5 cycles and 28.5 cycles {13.5 cycles; 28.5 cycles}
bogdanm 0:9b334a45a8ff 3484 * between 41.5 cycles and 71.5 cycles {41.5 cycles; 55.5 cycles; 71.5cycles}
bogdanm 0:9b334a45a8ff 3485 * equal to 239.5 cycles
bogdanm 0:9b334a45a8ff 3486 * Unit: ADC clock cycles
bogdanm 0:9b334a45a8ff 3487 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3488 * @retval ADC conversion cycles on all channels
bogdanm 0:9b334a45a8ff 3489 */
bogdanm 0:9b334a45a8ff 3490 #define __HAL_ADC_CONVCYCLES_MAX_RANGE(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3491 (( (((__HANDLE__)->Instance->SMPR2 & ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT2) == RESET) && \
bogdanm 0:9b334a45a8ff 3492 (((__HANDLE__)->Instance->SMPR1 & ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT2) == RESET) ) ? \
bogdanm 0:9b334a45a8ff 3493 \
bogdanm 0:9b334a45a8ff 3494 (( (((__HANDLE__)->Instance->SMPR2 & ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT1) == RESET) && \
bogdanm 0:9b334a45a8ff 3495 (((__HANDLE__)->Instance->SMPR1 & ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT1) == RESET) ) ? \
bogdanm 0:9b334a45a8ff 3496 ADC_CONVERSIONCLOCKCYCLES_SAMPLETIME_7CYCLES5 : ADC_CONVERSIONCLOCKCYCLES_SAMPLETIME_28CYCLES5) \
bogdanm 0:9b334a45a8ff 3497 : \
bogdanm 0:9b334a45a8ff 3498 ((((((__HANDLE__)->Instance->SMPR2 & ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT1) == RESET) && \
bogdanm 0:9b334a45a8ff 3499 (((__HANDLE__)->Instance->SMPR1 & ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT1) == RESET)) || \
bogdanm 0:9b334a45a8ff 3500 ((((__HANDLE__)->Instance->SMPR2 & ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT0) == RESET) && \
bogdanm 0:9b334a45a8ff 3501 (((__HANDLE__)->Instance->SMPR1 & ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT0) == RESET))) ? \
bogdanm 0:9b334a45a8ff 3502 ADC_CONVERSIONCLOCKCYCLES_SAMPLETIME_71CYCLES5 : ADC_CONVERSIONCLOCKCYCLES_SAMPLETIME_239CYCLES5) \
bogdanm 0:9b334a45a8ff 3503 )
bogdanm 0:9b334a45a8ff 3504
bogdanm 0:9b334a45a8ff 3505 /**
bogdanm 0:9b334a45a8ff 3506 * @brief Get the total ADC clock prescaler (APB2 prescaler x ADC prescaler)
bogdanm 0:9b334a45a8ff 3507 * from system clock configuration register.
bogdanm 0:9b334a45a8ff 3508 * Approximation within 3 ranges, returns the higher value:
bogdanm 0:9b334a45a8ff 3509 * total prescaler minimum: 2 (ADC presc 2, APB2 presc 0)
bogdanm 0:9b334a45a8ff 3510 * total prescaler 32 (ADC presc 0 and APB2 presc all, or
bogdanm 0:9b334a45a8ff 3511 * ADC presc {4, 6, 8} and APB2 presc {0, 2, 4})
bogdanm 0:9b334a45a8ff 3512 * total prescaler maximum: 128 (ADC presc {4, 6, 8} and APB2 presc {8, 16})
bogdanm 0:9b334a45a8ff 3513 * Unit: none (prescaler factor)
bogdanm 0:9b334a45a8ff 3514 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3515 * @retval ADC and APB2 prescaler factor
bogdanm 0:9b334a45a8ff 3516 */
bogdanm 0:9b334a45a8ff 3517 #define __HAL_ADC_CLOCK_PRECSALER_RANGE(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3518 (( (RCC->CFGR & (RCC_CFGR_ADCPRE_1 | RCC_CFGR_ADCPRE_0)) == RESET) ? \
bogdanm 0:9b334a45a8ff 3519 (( (RCC->CFGR & RCC_CFGR_PPRE2_2) == RESET) ? 2 : 32 ) \
bogdanm 0:9b334a45a8ff 3520 : \
bogdanm 0:9b334a45a8ff 3521 (( (RCC->CFGR & RCC_CFGR_PPRE2_1) == RESET) ? 32 : 128 ) \
bogdanm 0:9b334a45a8ff 3522 )
bogdanm 0:9b334a45a8ff 3523
bogdanm 0:9b334a45a8ff 3524 /**
bogdanm 0:9b334a45a8ff 3525 * @brief Get the ADC clock prescaler from system clock configuration register.
bogdanm 0:9b334a45a8ff 3526 * @retval None
bogdanm 0:9b334a45a8ff 3527 */
bogdanm 0:9b334a45a8ff 3528 #define __HAL_ADC_GET_CLOCK_PRESCALER() (((RCC->CFGR & RCC_CFGR_ADCPRE) >> 14) +1)
bogdanm 0:9b334a45a8ff 3529
bogdanm 0:9b334a45a8ff 3530 /**
bogdanm 0:9b334a45a8ff 3531 * @brief Enable the ADC peripheral (if not already enable to not trig a conversion)
bogdanm 0:9b334a45a8ff 3532 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3533 * @retval None
bogdanm 0:9b334a45a8ff 3534 */
bogdanm 0:9b334a45a8ff 3535 #define __HAL_ADC_ENABLE(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3536 (__HANDLE__)->Instance->CR2 |= ADC_CR2_ADON
bogdanm 0:9b334a45a8ff 3537
bogdanm 0:9b334a45a8ff 3538 /**
bogdanm 0:9b334a45a8ff 3539 * @brief Disable the ADC peripheral
bogdanm 0:9b334a45a8ff 3540 * @param __HANDLE__: ADC handle
bogdanm 0:9b334a45a8ff 3541 * @retval None
bogdanm 0:9b334a45a8ff 3542 */
bogdanm 0:9b334a45a8ff 3543 #define __HAL_ADC_DISABLE(__HANDLE__) \
bogdanm 0:9b334a45a8ff 3544 (__HANDLE__)->Instance->CR2 &= ~ADC_CR2_ADON
bogdanm 0:9b334a45a8ff 3545
bogdanm 0:9b334a45a8ff 3546 #endif /* STM32F373xC || STM32F378xx */
bogdanm 0:9b334a45a8ff 3547 /**
bogdanm 0:9b334a45a8ff 3548 * @}
bogdanm 0:9b334a45a8ff 3549 */
bogdanm 0:9b334a45a8ff 3550
bogdanm 0:9b334a45a8ff 3551
bogdanm 0:9b334a45a8ff 3552 /* Exported functions --------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 3553 /** @addtogroup ADCEx_Exported_Functions ADC Extended Exported Functions
bogdanm 0:9b334a45a8ff 3554 * @{
bogdanm 0:9b334a45a8ff 3555 */
bogdanm 0:9b334a45a8ff 3556
bogdanm 0:9b334a45a8ff 3557 /* Initialization/de-initialization functions *********************************/
bogdanm 0:9b334a45a8ff 3558
bogdanm 0:9b334a45a8ff 3559 /** @addtogroup ADCEx_Exported_Functions_Group2 Extended Input and Output operation functions
bogdanm 0:9b334a45a8ff 3560 * @brief Extended IO operation functions
bogdanm 0:9b334a45a8ff 3561 * @{
bogdanm 0:9b334a45a8ff 3562 */
bogdanm 0:9b334a45a8ff 3563 /* I/O operation functions ****************************************************/
bogdanm 0:9b334a45a8ff 3564
bogdanm 0:9b334a45a8ff 3565 /* ADC calibration */
bogdanm 0:9b334a45a8ff 3566 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 3567 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 3568 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
bogdanm 0:9b334a45a8ff 3569 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 3570 HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(struct __ADC_HandleTypeDef* hadc, uint32_t SingleDiff);
bogdanm 0:9b334a45a8ff 3571 uint32_t HAL_ADCEx_Calibration_GetValue(struct __ADC_HandleTypeDef *hadc, uint32_t SingleDiff);
bogdanm 0:9b334a45a8ff 3572 HAL_StatusTypeDef HAL_ADCEx_Calibration_SetValue(struct __ADC_HandleTypeDef *hadc, uint32_t SingleDiff, uint32_t CalibrationFactor);
bogdanm 0:9b334a45a8ff 3573 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3574 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 3575 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
bogdanm 0:9b334a45a8ff 3576 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 3577
bogdanm 0:9b334a45a8ff 3578 #if defined(STM32F373xC) || defined(STM32F378xx)
bogdanm 0:9b334a45a8ff 3579 HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(struct __ADC_HandleTypeDef* hadc);
bogdanm 0:9b334a45a8ff 3580 #endif /* STM32F373xC || STM32F378xx */
bogdanm 0:9b334a45a8ff 3581
bogdanm 0:9b334a45a8ff 3582 /* Blocking mode: Polling */
bogdanm 0:9b334a45a8ff 3583 HAL_StatusTypeDef HAL_ADCEx_InjectedStart(struct __ADC_HandleTypeDef* hadc);
bogdanm 0:9b334a45a8ff 3584 HAL_StatusTypeDef HAL_ADCEx_InjectedStop(struct __ADC_HandleTypeDef* hadc);
bogdanm 0:9b334a45a8ff 3585 HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(struct __ADC_HandleTypeDef* hadc, uint32_t Timeout);
bogdanm 0:9b334a45a8ff 3586
bogdanm 0:9b334a45a8ff 3587 /* Non-blocking mode: Interruption */
bogdanm 0:9b334a45a8ff 3588 HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(struct __ADC_HandleTypeDef* hadc);
bogdanm 0:9b334a45a8ff 3589 HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(struct __ADC_HandleTypeDef* hadc);
bogdanm 0:9b334a45a8ff 3590
bogdanm 0:9b334a45a8ff 3591 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 3592 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 3593 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
bogdanm 0:9b334a45a8ff 3594 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 3595 /* ADC multimode */
bogdanm 0:9b334a45a8ff 3596 HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(struct __ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length);
bogdanm 0:9b334a45a8ff 3597 HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(struct __ADC_HandleTypeDef *hadc);
bogdanm 0:9b334a45a8ff 3598 uint32_t HAL_ADCEx_MultiModeGetValue(struct __ADC_HandleTypeDef *hadc);
bogdanm 0:9b334a45a8ff 3599 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3600 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 3601 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
bogdanm 0:9b334a45a8ff 3602 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 3603
bogdanm 0:9b334a45a8ff 3604 /* ADC retrieve conversion value intended to be used with polling or interruption */
bogdanm 0:9b334a45a8ff 3605 uint32_t HAL_ADCEx_InjectedGetValue(struct __ADC_HandleTypeDef* hadc, uint32_t InjectedRank);
bogdanm 0:9b334a45a8ff 3606
bogdanm 0:9b334a45a8ff 3607 /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption) */
bogdanm 0:9b334a45a8ff 3608 void HAL_ADCEx_InjectedConvCpltCallback(struct __ADC_HandleTypeDef* hadc);
bogdanm 0:9b334a45a8ff 3609
bogdanm 0:9b334a45a8ff 3610 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 3611 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 3612 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
bogdanm 0:9b334a45a8ff 3613 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 3614 void HAL_ADCEx_InjectedQueueOverflowCallback(struct __ADC_HandleTypeDef* hadc);
bogdanm 0:9b334a45a8ff 3615 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3616 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 3617 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
bogdanm 0:9b334a45a8ff 3618 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 3619 /**
bogdanm 0:9b334a45a8ff 3620 * @}
bogdanm 0:9b334a45a8ff 3621 */
bogdanm 0:9b334a45a8ff 3622
bogdanm 0:9b334a45a8ff 3623 /** @addtogroup ADCEx_Exported_Functions_Group3 Extended Peripheral Control functions
bogdanm 0:9b334a45a8ff 3624 * @brief Extended Peripheral Control functions
bogdanm 0:9b334a45a8ff 3625 * @{
bogdanm 0:9b334a45a8ff 3626 */
bogdanm 0:9b334a45a8ff 3627 /* Peripheral Control functions ***********************************************/
bogdanm 0:9b334a45a8ff 3628 HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(struct __ADC_HandleTypeDef* hadc,ADC_InjectionConfTypeDef* sConfigInjected);
bogdanm 0:9b334a45a8ff 3629
bogdanm 0:9b334a45a8ff 3630 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
bogdanm 0:9b334a45a8ff 3631 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
bogdanm 0:9b334a45a8ff 3632 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
bogdanm 0:9b334a45a8ff 3633 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
bogdanm 0:9b334a45a8ff 3634 HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(struct __ADC_HandleTypeDef *hadc, ADC_MultiModeTypeDef *multimode);
bogdanm 0:9b334a45a8ff 3635 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
bogdanm 0:9b334a45a8ff 3636 /* STM32F302xC || STM32F303xC || STM32F358xx || */
bogdanm 0:9b334a45a8ff 3637 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
bogdanm 0:9b334a45a8ff 3638 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
bogdanm 0:9b334a45a8ff 3639 /**
bogdanm 0:9b334a45a8ff 3640 * @}
bogdanm 0:9b334a45a8ff 3641 */
bogdanm 0:9b334a45a8ff 3642
bogdanm 0:9b334a45a8ff 3643 /**
bogdanm 0:9b334a45a8ff 3644 * @}
bogdanm 0:9b334a45a8ff 3645 */
bogdanm 0:9b334a45a8ff 3646
bogdanm 0:9b334a45a8ff 3647 /**
bogdanm 0:9b334a45a8ff 3648 * @}
bogdanm 0:9b334a45a8ff 3649 */
bogdanm 0:9b334a45a8ff 3650
bogdanm 0:9b334a45a8ff 3651 /**
bogdanm 0:9b334a45a8ff 3652 * @}
bogdanm 0:9b334a45a8ff 3653 */
bogdanm 0:9b334a45a8ff 3654
bogdanm 0:9b334a45a8ff 3655 #ifdef __cplusplus
bogdanm 0:9b334a45a8ff 3656 }
bogdanm 0:9b334a45a8ff 3657 #endif
bogdanm 0:9b334a45a8ff 3658
bogdanm 0:9b334a45a8ff 3659 #endif /*__STM32F3xx_ADC_H */
bogdanm 0:9b334a45a8ff 3660
bogdanm 0:9b334a45a8ff 3661
bogdanm 0:9b334a45a8ff 3662 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/