mbed(SerialHalfDuplex入り)

Fork of mbed by mbed official

Committer:
yusuke_kyo
Date:
Wed Apr 08 08:04:18 2015 +0000
Revision:
98:01a414ca7d6d
Parent:
93:e188a91d3eaa
remove SerialHalfDuplex.h

Who changed what in which revision?

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