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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

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

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_DISCO_F303VC/TARGET_STM/TARGET_STM32F3/device/stm32f3xx_hal_adc_ex.h@168:b9e159c1930a
mbed library. Release version 164

Who changed what in which revision?

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