SHIO

Fork of mbed-stm32l0/l1-src by lzbp li

Committer:
lzbpli
Date:
Thu Sep 08 02:46:37 2016 +0000
Revision:
638:56887a2974b9
Parent:
394:83f921546702
????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 354:e67efb2aab0e 1 /**
mbed_official 354:e67efb2aab0e 2 ******************************************************************************
mbed_official 354:e67efb2aab0e 3 * @file stm32l1xx_hal_adc.h
mbed_official 354:e67efb2aab0e 4 * @author MCD Application Team
mbed_official 354:e67efb2aab0e 5 * @version V1.0.0
mbed_official 354:e67efb2aab0e 6 * @date 5-September-2014
mbed_official 354:e67efb2aab0e 7 * @brief Header file containing functions prototypes of ADC HAL library.
mbed_official 354:e67efb2aab0e 8 ******************************************************************************
mbed_official 354:e67efb2aab0e 9 * @attention
mbed_official 354:e67efb2aab0e 10 *
mbed_official 354:e67efb2aab0e 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 354:e67efb2aab0e 12 *
mbed_official 354:e67efb2aab0e 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 354:e67efb2aab0e 14 * are permitted provided that the following conditions are met:
mbed_official 354:e67efb2aab0e 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 354:e67efb2aab0e 16 * this list of conditions and the following disclaimer.
mbed_official 354:e67efb2aab0e 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 354:e67efb2aab0e 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 354:e67efb2aab0e 19 * and/or other materials provided with the distribution.
mbed_official 354:e67efb2aab0e 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 354:e67efb2aab0e 21 * may be used to endorse or promote products derived from this software
mbed_official 354:e67efb2aab0e 22 * without specific prior written permission.
mbed_official 354:e67efb2aab0e 23 *
mbed_official 354:e67efb2aab0e 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 354:e67efb2aab0e 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 354:e67efb2aab0e 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 354:e67efb2aab0e 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 354:e67efb2aab0e 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 354:e67efb2aab0e 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 354:e67efb2aab0e 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 354:e67efb2aab0e 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 354:e67efb2aab0e 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 354:e67efb2aab0e 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 354:e67efb2aab0e 34 *
mbed_official 354:e67efb2aab0e 35 ******************************************************************************
mbed_official 354:e67efb2aab0e 36 */
mbed_official 354:e67efb2aab0e 37
mbed_official 354:e67efb2aab0e 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 354:e67efb2aab0e 39 #ifndef __STM32L1xx_HAL_ADC_H
mbed_official 354:e67efb2aab0e 40 #define __STM32L1xx_HAL_ADC_H
mbed_official 354:e67efb2aab0e 41
mbed_official 354:e67efb2aab0e 42 #ifdef __cplusplus
mbed_official 354:e67efb2aab0e 43 extern "C" {
mbed_official 354:e67efb2aab0e 44 #endif
mbed_official 354:e67efb2aab0e 45
mbed_official 354:e67efb2aab0e 46 /* Includes ------------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 47 #include "stm32l1xx_hal_def.h"
mbed_official 354:e67efb2aab0e 48 /** @addtogroup STM32L1xx_HAL_Driver
mbed_official 354:e67efb2aab0e 49 * @{
mbed_official 354:e67efb2aab0e 50 */
mbed_official 354:e67efb2aab0e 51
mbed_official 354:e67efb2aab0e 52 /** @addtogroup ADC
mbed_official 354:e67efb2aab0e 53 * @{
mbed_official 354:e67efb2aab0e 54 */
mbed_official 354:e67efb2aab0e 55
mbed_official 354:e67efb2aab0e 56 /* Exported types ------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 57 /** @defgroup ADC_Exported_Types ADC Exported Types
mbed_official 354:e67efb2aab0e 58 * @{
mbed_official 354:e67efb2aab0e 59 */
mbed_official 354:e67efb2aab0e 60
mbed_official 354:e67efb2aab0e 61 /**
mbed_official 354:e67efb2aab0e 62 * @brief Structure definition of ADC and regular group initialization
mbed_official 354:e67efb2aab0e 63 * @note Parameters of this structure are shared within 2 scopes:
mbed_official 354:e67efb2aab0e 64 * - Scope entire ADC (affects regular and injected groups): ClockPrescaler, Resolution, ScanConvMode, DataAlign, ScanConvMode, EOCSelection, LowPowerAutoWait, LowPowerAutoPowerOff, ChannelsBank.
mbed_official 354:e67efb2aab0e 65 * - Scope regular group: ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion, ExternalTrigConvEdge, ExternalTrigConv.
mbed_official 354:e67efb2aab0e 66 * @note The setting of these parameters with function HAL_ADC_Init() is conditioned to ADC state.
mbed_official 354:e67efb2aab0e 67 * ADC state can be either:
mbed_official 354:e67efb2aab0e 68 * - For all parameters: ADC disabled
mbed_official 354:e67efb2aab0e 69 * - For all parameters except 'Resolution', 'ScanConvMode', 'LowPowerAutoWait', 'LowPowerAutoPowerOff', 'DiscontinuousConvMode', 'NbrOfDiscConversion' : ADC enabled without conversion on going on regular group.
mbed_official 354:e67efb2aab0e 70 * - For parameters 'ExternalTrigConv' and 'ExternalTrigConvEdge': ADC enabled, even with conversion on going.
mbed_official 354:e67efb2aab0e 71 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
mbed_official 354:e67efb2aab0e 72 * 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).
mbed_official 354:e67efb2aab0e 73 */
mbed_official 354:e67efb2aab0e 74 typedef struct
mbed_official 354:e67efb2aab0e 75 {
mbed_official 354:e67efb2aab0e 76 uint32_t ClockPrescaler; /*!< Select ADC clock source (asynchronous clock derived from HSI RC oscillator) and clock prescaler.
mbed_official 354:e67efb2aab0e 77 This parameter can be a value of @ref ADC_ClockPrescaler
mbed_official 354:e67efb2aab0e 78 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,
mbed_official 354:e67efb2aab0e 79 AHB clock frequency /3 for resolution 8 bits, AHB clock frequency /2 for resolution 6 bits.
mbed_official 354:e67efb2aab0e 80 Note: HSI RC oscillator must be preliminarily enabled at RCC top level. */
mbed_official 354:e67efb2aab0e 81 uint32_t Resolution; /*!< Configures the ADC resolution.
mbed_official 354:e67efb2aab0e 82 This parameter can be a value of @ref ADC_Resolution */
mbed_official 354:e67efb2aab0e 83 uint32_t DataAlign; /*!< Specifies ADC data alignment to right (MSB on register bit 11 and LSB on register bit 0) (default setting)
mbed_official 354:e67efb2aab0e 84 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).
mbed_official 354:e67efb2aab0e 85 This parameter can be a value of @ref ADC_Data_align */
mbed_official 354:e67efb2aab0e 86 uint32_t ScanConvMode; /*!< Configures the sequencer of regular and injected groups.
mbed_official 354:e67efb2aab0e 87 This parameter can be associated to parameter 'DiscontinuousConvMode' to have main sequence subdivided in successive parts.
mbed_official 354:e67efb2aab0e 88 If disabled: Conversion is performed in single mode (one channel converted, the one defined in rank 1).
mbed_official 354:e67efb2aab0e 89 Parameters 'NbrOfConversion' and 'InjectedNbrOfConversion' are discarded (equivalent to set to 1).
mbed_official 354:e67efb2aab0e 90 If enabled: Conversions are performed in sequence mode (multiple ranks defined by 'NbrOfConversion'/'InjectedNbrOfConversion' and each channel rank).
mbed_official 354:e67efb2aab0e 91 Scan direction is upward: from rank1 to rank 'n'.
mbed_official 354:e67efb2aab0e 92 This parameter can be a value of @ref ADC_Scan_mode */
mbed_official 354:e67efb2aab0e 93 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.
mbed_official 354:e67efb2aab0e 94 This parameter can be a value of @ref ADC_EOCSelection.
mbed_official 354:e67efb2aab0e 95 Note: For injected group, end of conversion (flag&IT) is raised only at the end of the sequence.
mbed_official 354:e67efb2aab0e 96 Therefore, if end of conversion is set to end of each conversion, injected group should not be used with interruption (HAL_ADCEx_InjectedStart_IT)
mbed_official 354:e67efb2aab0e 97 or polling (HAL_ADCEx_InjectedStart and HAL_ADCEx_InjectedPollForConversion). By the way, polling is still possible since driver will use an estimated timing for end of injected conversion.
mbed_official 354:e67efb2aab0e 98 Note: If overrun feature is intending to be used in ADC mode 'interruption' (function HAL_ADC_Start_IT() ), parameter EOCSelection must be set to each conversion (this is not needed for ADC mode 'transfer by DMA', with function HAL_ADC_Start_DMA()) */
mbed_official 354:e67efb2aab0e 99 uint32_t LowPowerAutoWait; /*!< Selects the dynamic low power Auto Delay: new conversion start only when the previous
mbed_official 354:e67efb2aab0e 100 conversion (for regular group) or previous sequence (for injected group) has been treated by user software.
mbed_official 354:e67efb2aab0e 101 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.
mbed_official 354:e67efb2aab0e 102 This parameter can be a value of @ref ADC_LowPowerAutoWait.
mbed_official 354:e67efb2aab0e 103 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.
mbed_official 354:e67efb2aab0e 104 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
mbed_official 354:e67efb2aab0e 105 and use HAL_ADC_GetValue() to retrieve conversion result and trig another conversion.
mbed_official 354:e67efb2aab0e 106 Note: ADC clock latency and some timing constraints depending on clock prescaler have to be taken into account: refer to reference manual (register ADC_CR2 bit DELS description). */
mbed_official 354:e67efb2aab0e 107 uint32_t LowPowerAutoPowerOff; /*!< Selects the auto-off mode: the ADC automatically powers-off after a conversion and automatically wakes-up when a new conversion is triggered (with startup time between trigger and start of sampling).
mbed_official 354:e67efb2aab0e 108 This feature can be combined with automatic wait mode (parameter 'LowPowerAutoWait').
mbed_official 354:e67efb2aab0e 109 This parameter can be a value of @ref ADC_LowPowerAutoPowerOff. */
mbed_official 354:e67efb2aab0e 110 uint32_t ChannelsBank; /*!< Selects the ADC channels bank.
mbed_official 354:e67efb2aab0e 111 This parameter can be a value of @ref ADC_ChannelsBank.
mbed_official 354:e67efb2aab0e 112 Note: Banks availability depends on devices categories.
mbed_official 354:e67efb2aab0e 113 Note: To change bank selection on the fly, without going through execution of 'HAL_ADC_Init()', macro '__HAL_ADC_CHANNELS_BANK()' can be used directly. */
mbed_official 354:e67efb2aab0e 114 uint32_t ContinuousConvMode; /*!< Specifies whether the conversion is performed in single mode (one conversion) or continuous mode for regular group,
mbed_official 354:e67efb2aab0e 115 after the selected trigger occurred (software start or external trigger).
mbed_official 354:e67efb2aab0e 116 This parameter can be set to ENABLE or DISABLE. */
mbed_official 354:e67efb2aab0e 117 #if defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 118 uint32_t NbrOfConversion; /*!< Specifies the number of ranks that will be converted within the regular group sequencer.
mbed_official 354:e67efb2aab0e 119 To use regular group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
mbed_official 354:e67efb2aab0e 120 This parameter must be a number between Min_Data = 1 and Max_Data = 28. */
mbed_official 354:e67efb2aab0e 121 #else
mbed_official 354:e67efb2aab0e 122 uint32_t NbrOfConversion; /*!< Specifies the number of ranks that will be converted within the regular group sequencer.
mbed_official 354:e67efb2aab0e 123 To use regular group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
mbed_official 354:e67efb2aab0e 124 This parameter must be a number between Min_Data = 1 and Max_Data = 27. */
mbed_official 354:e67efb2aab0e 125 #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */
mbed_official 354:e67efb2aab0e 126 uint32_t DiscontinuousConvMode; /*!< Specifies whether the conversions sequence of regular group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts).
mbed_official 354:e67efb2aab0e 127 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
mbed_official 354:e67efb2aab0e 128 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
mbed_official 354:e67efb2aab0e 129 This parameter can be set to ENABLE or DISABLE. */
mbed_official 354:e67efb2aab0e 130 uint32_t NbrOfDiscConversion; /*!< Specifies the number of discontinuous conversions in which the main sequence of regular group (parameter NbrOfConversion) will be subdivided.
mbed_official 354:e67efb2aab0e 131 If parameter 'DiscontinuousConvMode' is disabled, this parameter is discarded.
mbed_official 354:e67efb2aab0e 132 This parameter must be a number between Min_Data = 1 and Max_Data = 8. */
mbed_official 354:e67efb2aab0e 133 uint32_t ExternalTrigConv; /*!< Selects the external event used to trigger the conversion start of regular group.
mbed_official 354:e67efb2aab0e 134 If set to ADC_SOFTWARE_START, external triggers are disabled.
mbed_official 354:e67efb2aab0e 135 If set to external trigger source, triggering is on event rising edge.
mbed_official 354:e67efb2aab0e 136 This parameter can be a value of @ref ADC_External_trigger_source_Regular */
mbed_official 354:e67efb2aab0e 137 uint32_t ExternalTrigConvEdge; /*!< Selects the external trigger edge of regular group.
mbed_official 354:e67efb2aab0e 138 If trigger is set to ADC_SOFTWARE_START, this parameter is discarded.
mbed_official 354:e67efb2aab0e 139 This parameter can be a value of @ref ADC_External_trigger_edge_Regular */
mbed_official 354:e67efb2aab0e 140 uint32_t DMAContinuousRequests; /*!< Specifies whether the DMA requests are performed in one shot mode (DMA transfer stop when number of conversions is reached)
mbed_official 354:e67efb2aab0e 141 or in Continuous mode (DMA transfer unlimited, whatever number of conversions).
mbed_official 354:e67efb2aab0e 142 Note: In continuous mode, DMA must be configured in circular mode. Otherwise an overrun will be triggered when DMA buffer maximum pointer is reached.
mbed_official 354:e67efb2aab0e 143 This parameter can be set to ENABLE or DISABLE.
mbed_official 354:e67efb2aab0e 144 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). */
mbed_official 354:e67efb2aab0e 145 }ADC_InitTypeDef;
mbed_official 354:e67efb2aab0e 146
mbed_official 354:e67efb2aab0e 147 /**
mbed_official 354:e67efb2aab0e 148 * @brief Structure definition of ADC channel for regular group
mbed_official 354:e67efb2aab0e 149 * @note The setting of these parameters with function HAL_ADC_ConfigChannel() is conditioned to ADC state.
mbed_official 354:e67efb2aab0e 150 * ADC can be either disabled or enabled without conversion on going on regular group.
mbed_official 354:e67efb2aab0e 151 */
mbed_official 354:e67efb2aab0e 152 typedef struct
mbed_official 354:e67efb2aab0e 153 {
mbed_official 354:e67efb2aab0e 154 uint32_t Channel; /*!< Specifies the channel to configure into ADC regular group.
mbed_official 354:e67efb2aab0e 155 This parameter can be a value of @ref ADC_channels
mbed_official 354:e67efb2aab0e 156 Note: Depending on devices, some channels may not be available on package pins. Refer to device datasheet for channels availability.
mbed_official 354:e67efb2aab0e 157 Maximum number of channels by device category (without taking in account each device package constraints):
mbed_official 354:e67efb2aab0e 158 STM32L1 category 1, 2: 24 channels on external pins + 3 channels on internal measurement paths (VrefInt, Temp sensor, Vcomp): Channel 0 to channel 26.
mbed_official 354:e67efb2aab0e 159 STM32L1 category 3: 25 channels on external pins + 3 channels on internal measurement paths (VrefInt, Temp sensor, Vcomp): Channel 0 to channel 26, 1 additional channel in bank B. Note: OPAMP1 and OPAMP2 are connected internally but not increasing internal channels number: they are sharing ADC input with external channels ADC_IN3 and ADC_IN8.
mbed_official 354:e67efb2aab0e 160 STM32L1 category 4, 5: 40 channels on external pins + 3 channels on internal measurement paths (VrefInt, Temp sensor, Vcomp): Channel 0 to channel 31, 11 additional channels in bank B. Note: OPAMP1 and OPAMP2 are connected internally but not increasing internal channels number: they are sharing ADC input with external channels ADC_IN3 and ADC_IN8.
mbed_official 354:e67efb2aab0e 161 Note: In case of peripherals OPAMPx not used: 3 channels (3, 8, 13) can be configured as direct channels (fast channels). Refer to macro ' __HAL_ADC_CHANNEL_SPEED_FAST() '.
mbed_official 354:e67efb2aab0e 162 Note: In case of peripheral OPAMP3 and ADC channel OPAMP3 used (OPAMP3 available on STM32L1 devices Cat.4 only): the analog switch COMP1_SW1 must be closed. Refer to macro: ' __HAL_OPAMP_OPAMP3OUT_CONNECT_ADC_COMP1() '. */
mbed_official 354:e67efb2aab0e 163 uint32_t Rank; /*!< Specifies the rank in the regular group sequencer
mbed_official 354:e67efb2aab0e 164 This parameter can be a value of @ref ADC_regular_rank
mbed_official 354:e67efb2aab0e 165 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) */
mbed_official 354:e67efb2aab0e 166 uint32_t SamplingTime; /*!< Sampling time value to be set for the selected channel.
mbed_official 354:e67efb2aab0e 167 Unit: ADC clock cycles
mbed_official 354:e67efb2aab0e 168 Conversion time is the addition of sampling time and processing time (12 ADC clock cycles at ADC resolution 12 bits, 11 cycles at 10 bits, 9 cycles at 8 bits, 7 cycles at 6 bits).
mbed_official 354:e67efb2aab0e 169 This parameter can be a value of @ref ADC_sampling_times
mbed_official 354:e67efb2aab0e 170 Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups.
mbed_official 354:e67efb2aab0e 171 If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting.
mbed_official 354:e67efb2aab0e 172 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
mbed_official 354:e67efb2aab0e 173 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
mbed_official 354:e67efb2aab0e 174 Refer to device datasheet for timings values, parameters TS_vrefint, TS_temp (values rough order: 4us min). */
mbed_official 354:e67efb2aab0e 175 }ADC_ChannelConfTypeDef;
mbed_official 354:e67efb2aab0e 176
mbed_official 354:e67efb2aab0e 177 /**
mbed_official 354:e67efb2aab0e 178 * @brief ADC Configuration analog watchdog definition
mbed_official 354:e67efb2aab0e 179 * @note The setting of these parameters with function is conditioned to ADC state.
mbed_official 354:e67efb2aab0e 180 * ADC state can be either disabled or enabled without conversion on going on regular and injected groups.
mbed_official 354:e67efb2aab0e 181 */
mbed_official 354:e67efb2aab0e 182 typedef struct
mbed_official 354:e67efb2aab0e 183 {
mbed_official 354:e67efb2aab0e 184 uint32_t WatchdogMode; /*!< Configures the ADC analog watchdog mode: single/all channels, regular/injected group.
mbed_official 354:e67efb2aab0e 185 This parameter can be a value of @ref ADC_analog_watchdog_mode. */
mbed_official 354:e67efb2aab0e 186 uint32_t Channel; /*!< Selects which ADC channel to monitor by analog watchdog.
mbed_official 354:e67efb2aab0e 187 This parameter has an effect only if watchdog mode is configured on single channel (parameter WatchdogMode)
mbed_official 354:e67efb2aab0e 188 This parameter can be a value of @ref ADC_channels. */
mbed_official 354:e67efb2aab0e 189 uint32_t ITMode; /*!< Specifies whether the analog watchdog is configured in interrupt or polling mode.
mbed_official 354:e67efb2aab0e 190 This parameter can be set to ENABLE or DISABLE */
mbed_official 354:e67efb2aab0e 191 uint32_t HighThreshold; /*!< Configures the ADC analog watchdog High threshold value.
mbed_official 354:e67efb2aab0e 192 This parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF. */
mbed_official 354:e67efb2aab0e 193 uint32_t LowThreshold; /*!< Configures the ADC analog watchdog High threshold value.
mbed_official 354:e67efb2aab0e 194 This parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF. */
mbed_official 354:e67efb2aab0e 195 uint32_t WatchdogNumber; /*!< Reserved for future use, can be set to 0 */
mbed_official 354:e67efb2aab0e 196 }ADC_AnalogWDGConfTypeDef;
mbed_official 354:e67efb2aab0e 197
mbed_official 354:e67efb2aab0e 198 /**
mbed_official 354:e67efb2aab0e 199 * @brief HAL ADC state machine: ADC States structure definition
mbed_official 354:e67efb2aab0e 200 */
mbed_official 354:e67efb2aab0e 201 typedef enum
mbed_official 354:e67efb2aab0e 202 {
mbed_official 354:e67efb2aab0e 203 HAL_ADC_STATE_RESET = 0x00, /*!< ADC not yet initialized or disabled */
mbed_official 354:e67efb2aab0e 204 HAL_ADC_STATE_READY = 0x01, /*!< ADC peripheral ready for use */
mbed_official 354:e67efb2aab0e 205 HAL_ADC_STATE_BUSY = 0x02, /*!< An internal process is ongoing */
mbed_official 354:e67efb2aab0e 206 HAL_ADC_STATE_BUSY_REG = 0x12, /*!< Regular conversion is ongoing */
mbed_official 354:e67efb2aab0e 207 HAL_ADC_STATE_BUSY_INJ = 0x22, /*!< Injected conversion is ongoing */
mbed_official 354:e67efb2aab0e 208 HAL_ADC_STATE_BUSY_INJ_REG = 0x32, /*!< Injected and regular conversion are ongoing */
mbed_official 354:e67efb2aab0e 209 HAL_ADC_STATE_TIMEOUT = 0x03, /*!< Timeout state */
mbed_official 354:e67efb2aab0e 210 HAL_ADC_STATE_ERROR = 0x04, /*!< ADC state error */
mbed_official 354:e67efb2aab0e 211 HAL_ADC_STATE_EOC = 0x05, /*!< Conversion is completed */
mbed_official 354:e67efb2aab0e 212 HAL_ADC_STATE_EOC_REG = 0x15, /*!< Regular conversion is completed */
mbed_official 354:e67efb2aab0e 213 HAL_ADC_STATE_EOC_INJ = 0x25, /*!< Injected conversion is completed */
mbed_official 354:e67efb2aab0e 214 HAL_ADC_STATE_EOC_INJ_REG = 0x35, /*!< Injected and regular conversion are completed */
mbed_official 354:e67efb2aab0e 215 HAL_ADC_STATE_AWD = 0x06, /*!< ADC state analog watchdog */
mbed_official 354:e67efb2aab0e 216 HAL_ADC_STATE_AWD2 = 0x07, /*!< Not used on STM32L1xx devices (kept for compatibility with other devices featuring several AWD) */
mbed_official 354:e67efb2aab0e 217 HAL_ADC_STATE_AWD3 = 0x08, /*!< Not used on STM32l1xx devices (kept for compatibility with other devices featuring several AWD) */
mbed_official 354:e67efb2aab0e 218 }HAL_ADC_StateTypeDef;
mbed_official 354:e67efb2aab0e 219
mbed_official 354:e67efb2aab0e 220 /**
mbed_official 354:e67efb2aab0e 221 * @brief ADC handle Structure definition
mbed_official 354:e67efb2aab0e 222 */
mbed_official 354:e67efb2aab0e 223 typedef struct
mbed_official 354:e67efb2aab0e 224 {
mbed_official 354:e67efb2aab0e 225 ADC_TypeDef *Instance; /*!< Register base address */
mbed_official 354:e67efb2aab0e 226
mbed_official 354:e67efb2aab0e 227 ADC_InitTypeDef Init; /*!< ADC required parameters */
mbed_official 354:e67efb2aab0e 228
mbed_official 354:e67efb2aab0e 229 __IO uint32_t NbrOfConversionRank ; /*!< ADC conversion rank counter */
mbed_official 354:e67efb2aab0e 230
mbed_official 354:e67efb2aab0e 231 DMA_HandleTypeDef *DMA_Handle; /*!< Pointer DMA Handler */
mbed_official 354:e67efb2aab0e 232
mbed_official 354:e67efb2aab0e 233 HAL_LockTypeDef Lock; /*!< ADC locking object */
mbed_official 354:e67efb2aab0e 234
mbed_official 354:e67efb2aab0e 235 __IO HAL_ADC_StateTypeDef State; /*!< ADC communication state */
mbed_official 354:e67efb2aab0e 236
mbed_official 354:e67efb2aab0e 237 __IO uint32_t ErrorCode; /*!< ADC Error code */
mbed_official 354:e67efb2aab0e 238 }ADC_HandleTypeDef;
mbed_official 354:e67efb2aab0e 239 /**
mbed_official 354:e67efb2aab0e 240 * @}
mbed_official 354:e67efb2aab0e 241 */
mbed_official 354:e67efb2aab0e 242
mbed_official 354:e67efb2aab0e 243
mbed_official 354:e67efb2aab0e 244
mbed_official 354:e67efb2aab0e 245 /* Exported constants --------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 246
mbed_official 354:e67efb2aab0e 247 /** @defgroup ADC_Exported_Constants ADC Exported Constants
mbed_official 354:e67efb2aab0e 248 * @{
mbed_official 354:e67efb2aab0e 249 */
mbed_official 354:e67efb2aab0e 250
mbed_official 354:e67efb2aab0e 251 /** @defgroup ADC_Error_Code ADC Error Code
mbed_official 354:e67efb2aab0e 252 * @{
mbed_official 354:e67efb2aab0e 253 */
mbed_official 354:e67efb2aab0e 254 #define HAL_ADC_ERROR_NONE ((uint32_t)0x00) /*!< No error */
mbed_official 354:e67efb2aab0e 255 #define HAL_ADC_ERROR_INTERNAL ((uint32_t)0x01) /*!< ADC IP internal error: if problem of clocking,
mbed_official 354:e67efb2aab0e 256 enable/disable, erroneous state */
mbed_official 354:e67efb2aab0e 257 #define HAL_ADC_ERROR_OVR ((uint32_t)0x02) /*!< Overrun error */
mbed_official 354:e67efb2aab0e 258 #define HAL_ADC_ERROR_DMA ((uint32_t)0x04) /*!< DMA transfer error */
mbed_official 354:e67efb2aab0e 259
mbed_official 354:e67efb2aab0e 260 /**
mbed_official 354:e67efb2aab0e 261 * @}
mbed_official 354:e67efb2aab0e 262 */
mbed_official 354:e67efb2aab0e 263
mbed_official 354:e67efb2aab0e 264 /** @defgroup ADC_ClockPrescaler ADC ClockPrescaler
mbed_official 354:e67efb2aab0e 265 * @{
mbed_official 354:e67efb2aab0e 266 */
mbed_official 354:e67efb2aab0e 267 #define ADC_CLOCK_ASYNC_DIV1 ((uint32_t)0x00000000) /*!< ADC asynchronous clock derived from ADC dedicated HSI without prescaler */
mbed_official 354:e67efb2aab0e 268 #define ADC_CLOCK_ASYNC_DIV2 ((uint32_t)ADC_CCR_ADCPRE_0) /*!< ADC asynchronous clock derived from ADC dedicated HSI divided by a prescaler of 2 */
mbed_official 354:e67efb2aab0e 269 #define ADC_CLOCK_ASYNC_DIV4 ((uint32_t)ADC_CCR_ADCPRE_1) /*!< ADC asynchronous clock derived from ADC dedicated HSI divided by a prescaler of 4 */
mbed_official 354:e67efb2aab0e 270
mbed_official 354:e67efb2aab0e 271 #define IS_ADC_CLOCKPRESCALER(ADC_CLOCK) (((ADC_CLOCK) == ADC_CLOCK_ASYNC_DIV1) || \
mbed_official 354:e67efb2aab0e 272 ((ADC_CLOCK) == ADC_CLOCK_ASYNC_DIV2) || \
mbed_official 354:e67efb2aab0e 273 ((ADC_CLOCK) == ADC_CLOCK_ASYNC_DIV4) )
mbed_official 354:e67efb2aab0e 274 /**
mbed_official 354:e67efb2aab0e 275 * @}
mbed_official 354:e67efb2aab0e 276 */
mbed_official 354:e67efb2aab0e 277
mbed_official 354:e67efb2aab0e 278 /** @defgroup ADC_Resolution ADC Resolution
mbed_official 354:e67efb2aab0e 279 * @{
mbed_official 354:e67efb2aab0e 280 */
mbed_official 354:e67efb2aab0e 281 #define ADC_RESOLUTION12b ((uint32_t)0x00000000) /*!< ADC 12-bit resolution */
mbed_official 354:e67efb2aab0e 282 #define ADC_RESOLUTION10b ((uint32_t)ADC_CR1_RES_0) /*!< ADC 10-bit resolution */
mbed_official 354:e67efb2aab0e 283 #define ADC_RESOLUTION8b ((uint32_t)ADC_CR1_RES_1) /*!< ADC 8-bit resolution */
mbed_official 354:e67efb2aab0e 284 #define ADC_RESOLUTION6b ((uint32_t)ADC_CR1_RES) /*!< ADC 6-bit resolution */
mbed_official 354:e67efb2aab0e 285
mbed_official 354:e67efb2aab0e 286 #define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_RESOLUTION12b) || \
mbed_official 354:e67efb2aab0e 287 ((RESOLUTION) == ADC_RESOLUTION10b) || \
mbed_official 354:e67efb2aab0e 288 ((RESOLUTION) == ADC_RESOLUTION8b) || \
mbed_official 354:e67efb2aab0e 289 ((RESOLUTION) == ADC_RESOLUTION6b) )
mbed_official 354:e67efb2aab0e 290
mbed_official 354:e67efb2aab0e 291 #define IS_ADC_RESOLUTION_8_6_BITS(RESOLUTION) (((RESOLUTION) == ADC_RESOLUTION8b) || \
mbed_official 354:e67efb2aab0e 292 ((RESOLUTION) == ADC_RESOLUTION6b) )
mbed_official 354:e67efb2aab0e 293 /**
mbed_official 354:e67efb2aab0e 294 * @}
mbed_official 354:e67efb2aab0e 295 */
mbed_official 354:e67efb2aab0e 296
mbed_official 354:e67efb2aab0e 297 /** @defgroup ADC_Data_align ADC Data_align
mbed_official 354:e67efb2aab0e 298 * @{
mbed_official 354:e67efb2aab0e 299 */
mbed_official 354:e67efb2aab0e 300 #define ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 301 #define ADC_DATAALIGN_LEFT ((uint32_t)ADC_CR2_ALIGN)
mbed_official 354:e67efb2aab0e 302
mbed_official 354:e67efb2aab0e 303 #define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DATAALIGN_RIGHT) || \
mbed_official 354:e67efb2aab0e 304 ((ALIGN) == ADC_DATAALIGN_LEFT) )
mbed_official 354:e67efb2aab0e 305 /**
mbed_official 354:e67efb2aab0e 306 * @}
mbed_official 354:e67efb2aab0e 307 */
mbed_official 354:e67efb2aab0e 308
mbed_official 354:e67efb2aab0e 309 /** @defgroup ADC_Scan_mode ADC Scan mode
mbed_official 354:e67efb2aab0e 310 * @{
mbed_official 354:e67efb2aab0e 311 */
mbed_official 354:e67efb2aab0e 312 #define ADC_SCAN_DISABLE ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 313 #define ADC_SCAN_ENABLE ((uint32_t)0x00000001)
mbed_official 354:e67efb2aab0e 314
mbed_official 354:e67efb2aab0e 315 #define IS_ADC_SCAN_MODE(SCAN_MODE) (((SCAN_MODE) == ADC_SCAN_DISABLE) || \
mbed_official 354:e67efb2aab0e 316 ((SCAN_MODE) == ADC_SCAN_ENABLE) )
mbed_official 354:e67efb2aab0e 317 /**
mbed_official 354:e67efb2aab0e 318 * @}
mbed_official 354:e67efb2aab0e 319 */
mbed_official 354:e67efb2aab0e 320
mbed_official 354:e67efb2aab0e 321 /** @defgroup ADC_External_trigger_edge_Regular ADC External trigger edge Regular
mbed_official 354:e67efb2aab0e 322 * @{
mbed_official 354:e67efb2aab0e 323 */
mbed_official 354:e67efb2aab0e 324 #define ADC_EXTERNALTRIGCONVEDGE_NONE ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 325 #define ADC_EXTERNALTRIGCONVEDGE_RISING ((uint32_t)ADC_CR2_EXTEN_0)
mbed_official 354:e67efb2aab0e 326 #define ADC_EXTERNALTRIGCONVEDGE_FALLING ((uint32_t)ADC_CR2_EXTEN_1)
mbed_official 354:e67efb2aab0e 327 #define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING ((uint32_t)ADC_CR2_EXTEN)
mbed_official 354:e67efb2aab0e 328
mbed_official 354:e67efb2aab0e 329 #define IS_ADC_EXTTRIG_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \
mbed_official 354:e67efb2aab0e 330 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISING) || \
mbed_official 354:e67efb2aab0e 331 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \
mbed_official 354:e67efb2aab0e 332 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING) )
mbed_official 354:e67efb2aab0e 333 /**
mbed_official 354:e67efb2aab0e 334 * @}
mbed_official 354:e67efb2aab0e 335 */
mbed_official 354:e67efb2aab0e 336
mbed_official 354:e67efb2aab0e 337 /** @defgroup ADC_External_trigger_source_Regular ADC External trigger source Regular
mbed_official 354:e67efb2aab0e 338 * @{
mbed_official 354:e67efb2aab0e 339 */
mbed_official 354:e67efb2aab0e 340 /* List of external triggers with generic trigger name, sorted by trigger */
mbed_official 354:e67efb2aab0e 341 /* name: */
mbed_official 354:e67efb2aab0e 342
mbed_official 354:e67efb2aab0e 343 /* External triggers of regular group for ADC1 */
mbed_official 354:e67efb2aab0e 344 #define ADC_EXTERNALTRIGCONV_T2_CC3 ADC_EXTERNALTRIG_T2_CC3
mbed_official 354:e67efb2aab0e 345 #define ADC_EXTERNALTRIGCONV_T2_CC2 ADC_EXTERNALTRIG_T2_CC2
mbed_official 354:e67efb2aab0e 346 #define ADC_EXTERNALTRIGCONV_T2_TRGO ADC_EXTERNALTRIG_T2_TRGO
mbed_official 354:e67efb2aab0e 347 #define ADC_EXTERNALTRIGCONV_T3_CC1 ADC_EXTERNALTRIG_T3_CC1
mbed_official 354:e67efb2aab0e 348 #define ADC_EXTERNALTRIGCONV_T3_CC3 ADC_EXTERNALTRIG_T3_CC3
mbed_official 354:e67efb2aab0e 349 #define ADC_EXTERNALTRIGCONV_T3_TRGO ADC_EXTERNALTRIG_T3_TRGO
mbed_official 354:e67efb2aab0e 350 #define ADC_EXTERNALTRIGCONV_T4_CC4 ADC_EXTERNALTRIG_T4_CC4
mbed_official 354:e67efb2aab0e 351 #define ADC_EXTERNALTRIGCONV_T4_TRGO ADC_EXTERNALTRIG_T4_TRGO
mbed_official 354:e67efb2aab0e 352 #define ADC_EXTERNALTRIGCONV_T6_TRGO ADC_EXTERNALTRIG_T6_TRGO
mbed_official 354:e67efb2aab0e 353 #define ADC_EXTERNALTRIGCONV_T9_CC2 ADC_EXTERNALTRIG_T9_CC2
mbed_official 354:e67efb2aab0e 354 #define ADC_EXTERNALTRIGCONV_T9_TRGO ADC_EXTERNALTRIG_T9_TRGO
mbed_official 354:e67efb2aab0e 355 #define ADC_EXTERNALTRIGCONV_EXT_IT11 ADC_EXTERNALTRIG_EXT_IT11
mbed_official 354:e67efb2aab0e 356
mbed_official 354:e67efb2aab0e 357 #define ADC_SOFTWARE_START ((uint32_t)0x00000010)
mbed_official 354:e67efb2aab0e 358
mbed_official 354:e67efb2aab0e 359 #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC3) || \
mbed_official 354:e67efb2aab0e 360 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
mbed_official 354:e67efb2aab0e 361 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
mbed_official 354:e67efb2aab0e 362 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC1) || \
mbed_official 354:e67efb2aab0e 363 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC3) || \
mbed_official 354:e67efb2aab0e 364 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
mbed_official 354:e67efb2aab0e 365 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC4) || \
mbed_official 354:e67efb2aab0e 366 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_TRGO) || \
mbed_official 354:e67efb2aab0e 367 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T6_TRGO) || \
mbed_official 354:e67efb2aab0e 368 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T9_CC2) || \
mbed_official 354:e67efb2aab0e 369 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T9_TRGO) || \
mbed_official 354:e67efb2aab0e 370 ((REGTRIG) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \
mbed_official 354:e67efb2aab0e 371 ((REGTRIG) == ADC_SOFTWARE_START) )
mbed_official 354:e67efb2aab0e 372 /**
mbed_official 354:e67efb2aab0e 373 * @}
mbed_official 354:e67efb2aab0e 374 */
mbed_official 354:e67efb2aab0e 375
mbed_official 354:e67efb2aab0e 376 /** @defgroup ADC_Internal_HAL_driver_Ext_trig_src_Regular ADC Internal HAL driver Ext trig src Regular
mbed_official 354:e67efb2aab0e 377 * @{
mbed_official 354:e67efb2aab0e 378 */
mbed_official 354:e67efb2aab0e 379
mbed_official 354:e67efb2aab0e 380 /* List of external triggers of regular group for ADC1: */
mbed_official 354:e67efb2aab0e 381 /* (used internally by HAL driver. To not use into HAL structure parameters) */
mbed_official 354:e67efb2aab0e 382
mbed_official 354:e67efb2aab0e 383 /* External triggers of regular group for ADC1 */
mbed_official 354:e67efb2aab0e 384 #define ADC_EXTERNALTRIG_T9_CC2 ((uint32_t) 0x00000000)
mbed_official 354:e67efb2aab0e 385 #define ADC_EXTERNALTRIG_T9_TRGO ((uint32_t)( ADC_CR2_EXTSEL_0))
mbed_official 354:e67efb2aab0e 386 #define ADC_EXTERNALTRIG_T2_CC3 ((uint32_t)( ADC_CR2_EXTSEL_1 ))
mbed_official 354:e67efb2aab0e 387 #define ADC_EXTERNALTRIG_T2_CC2 ((uint32_t)( ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
mbed_official 354:e67efb2aab0e 388 #define ADC_EXTERNALTRIG_T3_TRGO ((uint32_t)( ADC_CR2_EXTSEL_2 ))
mbed_official 354:e67efb2aab0e 389 #define ADC_EXTERNALTRIG_T4_CC4 ((uint32_t)( ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))
mbed_official 354:e67efb2aab0e 390 #define ADC_EXTERNALTRIG_T2_TRGO ((uint32_t)( ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 ))
mbed_official 354:e67efb2aab0e 391 #define ADC_EXTERNALTRIG_T3_CC1 ((uint32_t)( ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
mbed_official 354:e67efb2aab0e 392 #define ADC_EXTERNALTRIG_T3_CC3 ((uint32_t)(ADC_CR2_EXTSEL_3 ))
mbed_official 354:e67efb2aab0e 393 #define ADC_EXTERNALTRIG_T4_TRGO ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_0))
mbed_official 354:e67efb2aab0e 394 #define ADC_EXTERNALTRIG_T6_TRGO ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 ))
mbed_official 354:e67efb2aab0e 395 #define ADC_EXTERNALTRIG_EXT_IT11 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
mbed_official 354:e67efb2aab0e 396
mbed_official 354:e67efb2aab0e 397 /**
mbed_official 354:e67efb2aab0e 398 * @}
mbed_official 354:e67efb2aab0e 399 */
mbed_official 354:e67efb2aab0e 400
mbed_official 354:e67efb2aab0e 401 /** @defgroup ADC_EOCSelection ADC EOCSelection
mbed_official 354:e67efb2aab0e 402 * @{
mbed_official 354:e67efb2aab0e 403 */
mbed_official 354:e67efb2aab0e 404 #define EOC_SEQ_CONV ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 405 #define EOC_SINGLE_CONV ((uint32_t)ADC_CR2_EOCS)
mbed_official 354:e67efb2aab0e 406
mbed_official 354:e67efb2aab0e 407 #define IS_ADC_EOC_SELECTION(EOC_SELECTION) (((EOC_SELECTION) == EOC_SINGLE_CONV) || \
mbed_official 354:e67efb2aab0e 408 ((EOC_SELECTION) == EOC_SEQ_CONV) )
mbed_official 354:e67efb2aab0e 409 /**
mbed_official 354:e67efb2aab0e 410 * @}
mbed_official 354:e67efb2aab0e 411 */
mbed_official 354:e67efb2aab0e 412
mbed_official 354:e67efb2aab0e 413 /** @defgroup ADC_LowPowerAutoWait ADC LowPowerAutoWait
mbed_official 354:e67efb2aab0e 414 * @{
mbed_official 354:e67efb2aab0e 415 */
mbed_official 354:e67efb2aab0e 416 /*!< Note : For compatibility with other STM32 devices with ADC autowait */
mbed_official 354:e67efb2aab0e 417 /* feature limited to enable or disable settings: */
mbed_official 354:e67efb2aab0e 418 /* Setting "ADC_AUTOWAIT_UNTIL_DATA_READ" is equivalent to "ENABLE". */
mbed_official 354:e67efb2aab0e 419
mbed_official 354:e67efb2aab0e 420 #define ADC_AUTOWAIT_DISABLE ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 421 #define ADC_AUTOWAIT_UNTIL_DATA_READ ((uint32_t)( ADC_CR2_DELS_0)) /*!< Insert a delay between ADC conversions: infinite delay, until the result of previous conversion is read */
mbed_official 354:e67efb2aab0e 422 #define ADC_AUTOWAIT_7_APBCLOCKCYCLES ((uint32_t)( ADC_CR2_DELS_1 )) /*!< Insert a delay between ADC conversions: 7 APB clock cycles */
mbed_official 354:e67efb2aab0e 423 #define ADC_AUTOWAIT_15_APBCLOCKCYCLES ((uint32_t)( ADC_CR2_DELS_1 | ADC_CR2_DELS_0)) /*!< Insert a delay between ADC conversions: 15 APB clock cycles */
mbed_official 354:e67efb2aab0e 424 #define ADC_AUTOWAIT_31_APBCLOCKCYCLES ((uint32_t)(ADC_CR2_DELS_2 )) /*!< Insert a delay between ADC conversions: 31 APB clock cycles */
mbed_official 354:e67efb2aab0e 425 #define ADC_AUTOWAIT_63_APBCLOCKCYCLES ((uint32_t)(ADC_CR2_DELS_2 | ADC_CR2_DELS_0)) /*!< Insert a delay between ADC conversions: 63 APB clock cycles */
mbed_official 354:e67efb2aab0e 426 #define ADC_AUTOWAIT_127_APBCLOCKCYCLES ((uint32_t)(ADC_CR2_DELS_2 | ADC_CR2_DELS_1 )) /*!< Insert a delay between ADC conversions: 127 APB clock cycles */
mbed_official 354:e67efb2aab0e 427 #define ADC_AUTOWAIT_255_APBCLOCKCYCLES ((uint32_t)(ADC_CR2_DELS_2 | ADC_CR2_DELS_1 | ADC_CR2_DELS_0)) /*!< Insert a delay between ADC conversions: 255 APB clock cycles */
mbed_official 354:e67efb2aab0e 428
mbed_official 354:e67efb2aab0e 429 #define IS_ADC_AUTOWAIT(AUTOWAIT) (((AUTOWAIT) == ADC_AUTOWAIT_DISABLE) || \
mbed_official 354:e67efb2aab0e 430 ((AUTOWAIT) == ADC_AUTOWAIT_UNTIL_DATA_READ) || \
mbed_official 354:e67efb2aab0e 431 ((AUTOWAIT) == ADC_AUTOWAIT_7_APBCLOCKCYCLES) || \
mbed_official 354:e67efb2aab0e 432 ((AUTOWAIT) == ADC_AUTOWAIT_15_APBCLOCKCYCLES) || \
mbed_official 354:e67efb2aab0e 433 ((AUTOWAIT) == ADC_AUTOWAIT_31_APBCLOCKCYCLES) || \
mbed_official 354:e67efb2aab0e 434 ((AUTOWAIT) == ADC_AUTOWAIT_63_APBCLOCKCYCLES) || \
mbed_official 354:e67efb2aab0e 435 ((AUTOWAIT) == ADC_AUTOWAIT_127_APBCLOCKCYCLES) || \
mbed_official 354:e67efb2aab0e 436 ((AUTOWAIT) == ADC_AUTOWAIT_255_APBCLOCKCYCLES) )
mbed_official 354:e67efb2aab0e 437 /**
mbed_official 354:e67efb2aab0e 438 * @}
mbed_official 354:e67efb2aab0e 439 */
mbed_official 354:e67efb2aab0e 440
mbed_official 354:e67efb2aab0e 441 /** @defgroup ADC_LowPowerAutoPowerOff ADC LowPowerAutoPowerOff
mbed_official 354:e67efb2aab0e 442 * @{
mbed_official 354:e67efb2aab0e 443 */
mbed_official 354:e67efb2aab0e 444 #define ADC_AUTOPOWEROFF_DISABLE ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 445 #define ADC_AUTOPOWEROFF_IDLE_PHASE ((uint32_t)ADC_CR1_PDI) /*!< ADC power off when ADC is not converting (idle phase) */
mbed_official 354:e67efb2aab0e 446 #define ADC_AUTOPOWEROFF_DELAY_PHASE ((uint32_t)ADC_CR1_PDD) /*!< ADC power off when a delay is inserted between conversions (see parameter ADC_LowPowerAutoWait) */
mbed_official 354:e67efb2aab0e 447 #define ADC_AUTOPOWEROFF_IDLE_DELAY_PHASES ((uint32_t)(ADC_CR1_PDI | ADC_CR1_PDD)) /*!< ADC power off when ADC is not converting (idle phase) and when a delay is inserted between conversions */
mbed_official 354:e67efb2aab0e 448
mbed_official 354:e67efb2aab0e 449 #define IS_ADC_AUTOPOWEROFF(AUTOPOWEROFF) (((AUTOPOWEROFF) == ADC_AUTOPOWEROFF_DISABLE) || \
mbed_official 354:e67efb2aab0e 450 ((AUTOPOWEROFF) == ADC_AUTOPOWEROFF_IDLE_PHASE) || \
mbed_official 354:e67efb2aab0e 451 ((AUTOPOWEROFF) == ADC_AUTOPOWEROFF_DELAY_PHASE) || \
mbed_official 354:e67efb2aab0e 452 ((AUTOPOWEROFF) == ADC_AUTOPOWEROFF_IDLE_DELAY_PHASES) )
mbed_official 354:e67efb2aab0e 453 /**
mbed_official 354:e67efb2aab0e 454 * @}
mbed_official 354:e67efb2aab0e 455 */
mbed_official 354:e67efb2aab0e 456
mbed_official 354:e67efb2aab0e 457
mbed_official 354:e67efb2aab0e 458 /** @defgroup ADC_ChannelsBank ADC ChannelsBank
mbed_official 354:e67efb2aab0e 459 * @{
mbed_official 354:e67efb2aab0e 460 */
mbed_official 354:e67efb2aab0e 461 #if defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 462 #define ADC_CHANNELS_BANK_A ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 463 #define ADC_CHANNELS_BANK_B ((uint32_t)ADC_CR2_CFG)
mbed_official 354:e67efb2aab0e 464
mbed_official 354:e67efb2aab0e 465 #define IS_ADC_CHANNELSBANK(BANK) (((BANK) == ADC_CHANNELS_BANK_A) || \
mbed_official 354:e67efb2aab0e 466 ((BANK) == ADC_CHANNELS_BANK_B) )
mbed_official 354:e67efb2aab0e 467 #else
mbed_official 354:e67efb2aab0e 468 #define ADC_CHANNELS_BANK_A ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 469
mbed_official 354:e67efb2aab0e 470 #define IS_ADC_CHANNELSBANK(BANK) (((BANK) == ADC_CHANNELS_BANK_A))
mbed_official 354:e67efb2aab0e 471 #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */
mbed_official 354:e67efb2aab0e 472 /**
mbed_official 354:e67efb2aab0e 473 * @}
mbed_official 354:e67efb2aab0e 474 */
mbed_official 354:e67efb2aab0e 475
mbed_official 354:e67efb2aab0e 476 /** @defgroup ADC_channels ADC channels
mbed_official 354:e67efb2aab0e 477 * @{
mbed_official 354:e67efb2aab0e 478 */
mbed_official 354:e67efb2aab0e 479 /* Note: Depending on devices, some channels may not be available on package */
mbed_official 354:e67efb2aab0e 480 /* pins. Refer to device datasheet for channels availability. */
mbed_official 354:e67efb2aab0e 481 #define ADC_CHANNEL_0 ((uint32_t)0x00000000) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 482 #define ADC_CHANNEL_1 ((uint32_t)( ADC_SQR5_SQ1_0)) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 483 #define ADC_CHANNEL_2 ((uint32_t)( ADC_SQR5_SQ1_1 )) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 484 #define ADC_CHANNEL_3 ((uint32_t)( ADC_SQR5_SQ1_1 | ADC_SQR5_SQ1_0)) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 485 #define ADC_CHANNEL_4 ((uint32_t)( ADC_SQR5_SQ1_2 )) /* Direct (fast) channel */
mbed_official 354:e67efb2aab0e 486 #define ADC_CHANNEL_5 ((uint32_t)( ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_0)) /* Direct (fast) channel */
mbed_official 354:e67efb2aab0e 487 #define ADC_CHANNEL_6 ((uint32_t)( ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_1 )) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 488 #define ADC_CHANNEL_7 ((uint32_t)( ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_1 | ADC_SQR5_SQ1_0)) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 489 #define ADC_CHANNEL_8 ((uint32_t)( ADC_SQR5_SQ1_3 )) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 490 #define ADC_CHANNEL_9 ((uint32_t)( ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_0)) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 491 #define ADC_CHANNEL_10 ((uint32_t)( ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_1 )) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 492 #define ADC_CHANNEL_11 ((uint32_t)( ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_1 | ADC_SQR5_SQ1_0)) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 493 #define ADC_CHANNEL_12 ((uint32_t)( ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_2 )) /* Channel different in bank A and bank B */
mbed_official 354:e67efb2aab0e 494 #define ADC_CHANNEL_13 ((uint32_t)( ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_0)) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 495 #define ADC_CHANNEL_14 ((uint32_t)( ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_1 )) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 496 #define ADC_CHANNEL_15 ((uint32_t)( ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_1 | ADC_SQR5_SQ1_0)) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 497 #define ADC_CHANNEL_16 ((uint32_t)(ADC_SQR5_SQ1_4 )) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 498 #define ADC_CHANNEL_17 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_0)) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 499 #define ADC_CHANNEL_18 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_1 )) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 500 #define ADC_CHANNEL_19 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_1 | ADC_SQR5_SQ1_0)) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 501 #define ADC_CHANNEL_20 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_2 )) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 502 #define ADC_CHANNEL_21 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_0)) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 503 #define ADC_CHANNEL_22 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_1 )) /* Direct (fast) channel */
mbed_official 354:e67efb2aab0e 504 #define ADC_CHANNEL_23 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_1 | ADC_SQR5_SQ1_0)) /* Direct (fast) channel */
mbed_official 354:e67efb2aab0e 505 #define ADC_CHANNEL_24 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_3 )) /* Direct (fast) channel */
mbed_official 354:e67efb2aab0e 506 #define ADC_CHANNEL_25 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_0)) /* Direct (fast) channel */
mbed_official 354:e67efb2aab0e 507 #define ADC_CHANNEL_26 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_1 )) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 508 #if defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 509 #define ADC_CHANNEL_27 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_1 | ADC_SQR5_SQ1_0)) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 510 #define ADC_CHANNEL_28 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_2 )) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 511 #define ADC_CHANNEL_29 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_0)) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 512 #define ADC_CHANNEL_30 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_1 )) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 513 #define ADC_CHANNEL_31 ((uint32_t)(ADC_SQR5_SQ1_4 | ADC_SQR5_SQ1_3 | ADC_SQR5_SQ1_2 | ADC_SQR5_SQ1_1 | ADC_SQR5_SQ1_0)) /* Channel common to both bank A and bank B */
mbed_official 354:e67efb2aab0e 514 #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */
mbed_official 354:e67efb2aab0e 515
mbed_official 354:e67efb2aab0e 516 #define ADC_CHANNEL_TEMPSENSOR ADC_CHANNEL_16 /* ADC internal channel (no connection on device pin). Channel common to both bank A and bank B. */
mbed_official 354:e67efb2aab0e 517 #define ADC_CHANNEL_VREFINT ADC_CHANNEL_17 /* ADC internal channel (no connection on device pin). Channel common to both bank A and bank B. */
mbed_official 354:e67efb2aab0e 518 #define ADC_CHANNEL_VCOMP ADC_CHANNEL_26 /* ADC internal channel (no connection on device pin). Channel common to both bank A and bank B. */
mbed_official 354:e67efb2aab0e 519
mbed_official 354:e67efb2aab0e 520 #if defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 521 #define ADC_CHANNEL_VOPAMP1 ADC_CHANNEL_3 /* Internal connection from OPAMP1 output to ADC switch matrix */
mbed_official 354:e67efb2aab0e 522 #define ADC_CHANNEL_VOPAMP2 ADC_CHANNEL_8 /* Internal connection from OPAMP2 output to ADC switch matrix */
mbed_official 354:e67efb2aab0e 523 #if defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD)
mbed_official 354:e67efb2aab0e 524 #define ADC_CHANNEL_VOPAMP3 ADC_CHANNEL_13 /* Internal connection from OPAMP3 output to ADC switch matrix */
mbed_official 354:e67efb2aab0e 525 #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD */
mbed_official 354:e67efb2aab0e 526 #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */
mbed_official 354:e67efb2aab0e 527
mbed_official 354:e67efb2aab0e 528 #if defined(STM32L100xB) || defined (STM32L151xB) || defined (STM32L152xB) || defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC)
mbed_official 354:e67efb2aab0e 529 #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_CHANNEL_0) || \
mbed_official 354:e67efb2aab0e 530 ((CHANNEL) == ADC_CHANNEL_1) || \
mbed_official 354:e67efb2aab0e 531 ((CHANNEL) == ADC_CHANNEL_2) || \
mbed_official 354:e67efb2aab0e 532 ((CHANNEL) == ADC_CHANNEL_3) || \
mbed_official 354:e67efb2aab0e 533 ((CHANNEL) == ADC_CHANNEL_4) || \
mbed_official 354:e67efb2aab0e 534 ((CHANNEL) == ADC_CHANNEL_5) || \
mbed_official 354:e67efb2aab0e 535 ((CHANNEL) == ADC_CHANNEL_6) || \
mbed_official 354:e67efb2aab0e 536 ((CHANNEL) == ADC_CHANNEL_7) || \
mbed_official 354:e67efb2aab0e 537 ((CHANNEL) == ADC_CHANNEL_8) || \
mbed_official 354:e67efb2aab0e 538 ((CHANNEL) == ADC_CHANNEL_9) || \
mbed_official 354:e67efb2aab0e 539 ((CHANNEL) == ADC_CHANNEL_10) || \
mbed_official 354:e67efb2aab0e 540 ((CHANNEL) == ADC_CHANNEL_11) || \
mbed_official 354:e67efb2aab0e 541 ((CHANNEL) == ADC_CHANNEL_12) || \
mbed_official 354:e67efb2aab0e 542 ((CHANNEL) == ADC_CHANNEL_13) || \
mbed_official 354:e67efb2aab0e 543 ((CHANNEL) == ADC_CHANNEL_14) || \
mbed_official 354:e67efb2aab0e 544 ((CHANNEL) == ADC_CHANNEL_15) || \
mbed_official 354:e67efb2aab0e 545 ((CHANNEL) == ADC_CHANNEL_16) || \
mbed_official 354:e67efb2aab0e 546 ((CHANNEL) == ADC_CHANNEL_17) || \
mbed_official 354:e67efb2aab0e 547 ((CHANNEL) == ADC_CHANNEL_18) || \
mbed_official 354:e67efb2aab0e 548 ((CHANNEL) == ADC_CHANNEL_19) || \
mbed_official 354:e67efb2aab0e 549 ((CHANNEL) == ADC_CHANNEL_20) || \
mbed_official 354:e67efb2aab0e 550 ((CHANNEL) == ADC_CHANNEL_21) || \
mbed_official 354:e67efb2aab0e 551 ((CHANNEL) == ADC_CHANNEL_22) || \
mbed_official 354:e67efb2aab0e 552 ((CHANNEL) == ADC_CHANNEL_23) || \
mbed_official 354:e67efb2aab0e 553 ((CHANNEL) == ADC_CHANNEL_24) || \
mbed_official 354:e67efb2aab0e 554 ((CHANNEL) == ADC_CHANNEL_25) || \
mbed_official 354:e67efb2aab0e 555 ((CHANNEL) == ADC_CHANNEL_26) )
mbed_official 354:e67efb2aab0e 556 #endif /* STM32L100xB || STM32L151xB || STM32L152xB || STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC */
mbed_official 354:e67efb2aab0e 557 #if defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 558 #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_CHANNEL_0) || \
mbed_official 354:e67efb2aab0e 559 ((CHANNEL) == ADC_CHANNEL_1) || \
mbed_official 354:e67efb2aab0e 560 ((CHANNEL) == ADC_CHANNEL_2) || \
mbed_official 354:e67efb2aab0e 561 ((CHANNEL) == ADC_CHANNEL_3) || \
mbed_official 354:e67efb2aab0e 562 ((CHANNEL) == ADC_CHANNEL_4) || \
mbed_official 354:e67efb2aab0e 563 ((CHANNEL) == ADC_CHANNEL_5) || \
mbed_official 354:e67efb2aab0e 564 ((CHANNEL) == ADC_CHANNEL_6) || \
mbed_official 354:e67efb2aab0e 565 ((CHANNEL) == ADC_CHANNEL_7) || \
mbed_official 354:e67efb2aab0e 566 ((CHANNEL) == ADC_CHANNEL_8) || \
mbed_official 354:e67efb2aab0e 567 ((CHANNEL) == ADC_CHANNEL_9) || \
mbed_official 354:e67efb2aab0e 568 ((CHANNEL) == ADC_CHANNEL_10) || \
mbed_official 354:e67efb2aab0e 569 ((CHANNEL) == ADC_CHANNEL_11) || \
mbed_official 354:e67efb2aab0e 570 ((CHANNEL) == ADC_CHANNEL_12) || \
mbed_official 354:e67efb2aab0e 571 ((CHANNEL) == ADC_CHANNEL_13) || \
mbed_official 354:e67efb2aab0e 572 ((CHANNEL) == ADC_CHANNEL_14) || \
mbed_official 354:e67efb2aab0e 573 ((CHANNEL) == ADC_CHANNEL_15) || \
mbed_official 354:e67efb2aab0e 574 ((CHANNEL) == ADC_CHANNEL_16) || \
mbed_official 354:e67efb2aab0e 575 ((CHANNEL) == ADC_CHANNEL_17) || \
mbed_official 354:e67efb2aab0e 576 ((CHANNEL) == ADC_CHANNEL_18) || \
mbed_official 354:e67efb2aab0e 577 ((CHANNEL) == ADC_CHANNEL_19) || \
mbed_official 354:e67efb2aab0e 578 ((CHANNEL) == ADC_CHANNEL_20) || \
mbed_official 354:e67efb2aab0e 579 ((CHANNEL) == ADC_CHANNEL_21) || \
mbed_official 354:e67efb2aab0e 580 ((CHANNEL) == ADC_CHANNEL_22) || \
mbed_official 354:e67efb2aab0e 581 ((CHANNEL) == ADC_CHANNEL_23) || \
mbed_official 354:e67efb2aab0e 582 ((CHANNEL) == ADC_CHANNEL_24) || \
mbed_official 354:e67efb2aab0e 583 ((CHANNEL) == ADC_CHANNEL_25) || \
mbed_official 354:e67efb2aab0e 584 ((CHANNEL) == ADC_CHANNEL_26) || \
mbed_official 354:e67efb2aab0e 585 ((CHANNEL) == ADC_CHANNEL_27) || \
mbed_official 354:e67efb2aab0e 586 ((CHANNEL) == ADC_CHANNEL_28) || \
mbed_official 354:e67efb2aab0e 587 ((CHANNEL) == ADC_CHANNEL_29) || \
mbed_official 354:e67efb2aab0e 588 ((CHANNEL) == ADC_CHANNEL_30) || \
mbed_official 354:e67efb2aab0e 589 ((CHANNEL) == ADC_CHANNEL_31) )
mbed_official 354:e67efb2aab0e 590 #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */
mbed_official 354:e67efb2aab0e 591 /**
mbed_official 354:e67efb2aab0e 592 * @}
mbed_official 354:e67efb2aab0e 593 */
mbed_official 354:e67efb2aab0e 594
mbed_official 354:e67efb2aab0e 595 /** @defgroup ADC_sampling_times ADC sampling times
mbed_official 354:e67efb2aab0e 596 * @{
mbed_official 354:e67efb2aab0e 597 */
mbed_official 354:e67efb2aab0e 598 #define ADC_SAMPLETIME_4CYCLES ((uint32_t)0x00000000) /*!< Sampling time 4 ADC clock cycles */
mbed_official 354:e67efb2aab0e 599 #define ADC_SAMPLETIME_9CYCLES ((uint32_t) ADC_SMPR3_SMP0_0) /*!< Sampling time 9 ADC clock cycles */
mbed_official 354:e67efb2aab0e 600 #define ADC_SAMPLETIME_16CYCLES ((uint32_t) ADC_SMPR3_SMP0_1) /*!< Sampling time 16 ADC clock cycles */
mbed_official 354:e67efb2aab0e 601 #define ADC_SAMPLETIME_24CYCLES ((uint32_t)(ADC_SMPR3_SMP0_1 | ADC_SMPR3_SMP0_0)) /*!< Sampling time 24 ADC clock cycles */
mbed_official 354:e67efb2aab0e 602 #define ADC_SAMPLETIME_48CYCLES ((uint32_t) ADC_SMPR3_SMP0_2) /*!< Sampling time 48 ADC clock cycles */
mbed_official 354:e67efb2aab0e 603 #define ADC_SAMPLETIME_96CYCLES ((uint32_t)(ADC_SMPR3_SMP0_2 | ADC_SMPR3_SMP0_0)) /*!< Sampling time 96 ADC clock cycles */
mbed_official 354:e67efb2aab0e 604 #define ADC_SAMPLETIME_192CYCLES ((uint32_t)(ADC_SMPR3_SMP0_2 | ADC_SMPR3_SMP0_1)) /*!< Sampling time 192 ADC clock cycles */
mbed_official 354:e67efb2aab0e 605 #define ADC_SAMPLETIME_384CYCLES ((uint32_t) ADC_SMPR3_SMP0) /*!< Sampling time 384 ADC clock cycles */
mbed_official 354:e67efb2aab0e 606
mbed_official 354:e67efb2aab0e 607 #define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SAMPLETIME_4CYCLES) || \
mbed_official 354:e67efb2aab0e 608 ((TIME) == ADC_SAMPLETIME_9CYCLES) || \
mbed_official 354:e67efb2aab0e 609 ((TIME) == ADC_SAMPLETIME_16CYCLES) || \
mbed_official 354:e67efb2aab0e 610 ((TIME) == ADC_SAMPLETIME_24CYCLES) || \
mbed_official 354:e67efb2aab0e 611 ((TIME) == ADC_SAMPLETIME_48CYCLES) || \
mbed_official 354:e67efb2aab0e 612 ((TIME) == ADC_SAMPLETIME_96CYCLES) || \
mbed_official 354:e67efb2aab0e 613 ((TIME) == ADC_SAMPLETIME_192CYCLES) || \
mbed_official 354:e67efb2aab0e 614 ((TIME) == ADC_SAMPLETIME_384CYCLES) )
mbed_official 354:e67efb2aab0e 615 /**
mbed_official 354:e67efb2aab0e 616 * @}
mbed_official 354:e67efb2aab0e 617 */
mbed_official 354:e67efb2aab0e 618
mbed_official 354:e67efb2aab0e 619 /** @defgroup ADC_sampling_times_all_channels ADC sampling times all channels
mbed_official 354:e67efb2aab0e 620 * @{
mbed_official 354:e67efb2aab0e 621 */
mbed_official 354:e67efb2aab0e 622 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR3BIT2 \
mbed_official 354:e67efb2aab0e 623 (ADC_SMPR3_SMP9_2 | ADC_SMPR3_SMP8_2 | ADC_SMPR3_SMP7_2 | ADC_SMPR3_SMP6_2 | \
mbed_official 354:e67efb2aab0e 624 ADC_SMPR3_SMP5_2 | ADC_SMPR3_SMP4_2 | ADC_SMPR3_SMP3_2 | ADC_SMPR3_SMP2_2 | \
mbed_official 354:e67efb2aab0e 625 ADC_SMPR3_SMP1_2 | ADC_SMPR3_SMP0_2)
mbed_official 354:e67efb2aab0e 626 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT2 \
mbed_official 354:e67efb2aab0e 627 (ADC_SMPR2_SMP19_2 | ADC_SMPR2_SMP18_2 | ADC_SMPR2_SMP17_2 | ADC_SMPR2_SMP16_2 | \
mbed_official 354:e67efb2aab0e 628 ADC_SMPR2_SMP15_2 | ADC_SMPR2_SMP14_2 | ADC_SMPR2_SMP13_2 | ADC_SMPR2_SMP12_2 | \
mbed_official 354:e67efb2aab0e 629 ADC_SMPR2_SMP11_2 | ADC_SMPR2_SMP10_2)
mbed_official 354:e67efb2aab0e 630 #if defined(STM32L100xB) || defined (STM32L151xB) || defined (STM32L152xB) || defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC)
mbed_official 354:e67efb2aab0e 631 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT2 \
mbed_official 354:e67efb2aab0e 632 (ADC_SMPR1_SMP26_2 | ADC_SMPR1_SMP25_2 | ADC_SMPR1_SMP24_2 | ADC_SMPR1_SMP23_2 | \
mbed_official 354:e67efb2aab0e 633 ADC_SMPR1_SMP22_2 | ADC_SMPR1_SMP21_2 | ADC_SMPR1_SMP20_2)
mbed_official 354:e67efb2aab0e 634 #endif /* STM32L100xB || STM32L151xB || STM32L152xB || STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC */
mbed_official 354:e67efb2aab0e 635 #if defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 636 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT2 \
mbed_official 354:e67efb2aab0e 637 (ADC_SMPR1_SMP29_2 | ADC_SMPR1_SMP28_2 | ADC_SMPR1_SMP27_2 | ADC_SMPR1_SMP26_2 | \
mbed_official 354:e67efb2aab0e 638 ADC_SMPR1_SMP25_2 | ADC_SMPR1_SMP24_2 | ADC_SMPR1_SMP23_2 | ADC_SMPR1_SMP22_2 | \
mbed_official 354:e67efb2aab0e 639 ADC_SMPR1_SMP21_2 | ADC_SMPR1_SMP20_2)
mbed_official 354:e67efb2aab0e 640 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR0BIT2 \
mbed_official 354:e67efb2aab0e 641 (ADC_SMPR0_SMP31_2 | ADC_SMPR0_SMP30_2 )
mbed_official 354:e67efb2aab0e 642 #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */
mbed_official 354:e67efb2aab0e 643
mbed_official 354:e67efb2aab0e 644 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR3BIT1 \
mbed_official 354:e67efb2aab0e 645 (ADC_SMPR3_SMP9_1 | ADC_SMPR3_SMP8_1 | ADC_SMPR3_SMP7_1 | ADC_SMPR3_SMP6_1 | \
mbed_official 354:e67efb2aab0e 646 ADC_SMPR3_SMP5_1 | ADC_SMPR3_SMP4_1 | ADC_SMPR3_SMP3_1 | ADC_SMPR3_SMP2_1 | \
mbed_official 354:e67efb2aab0e 647 ADC_SMPR3_SMP1_1 | ADC_SMPR3_SMP0_1)
mbed_official 354:e67efb2aab0e 648 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT1 \
mbed_official 354:e67efb2aab0e 649 (ADC_SMPR2_SMP19_1 | ADC_SMPR2_SMP18_1 | ADC_SMPR2_SMP17_1 | ADC_SMPR2_SMP16_1 | \
mbed_official 354:e67efb2aab0e 650 ADC_SMPR2_SMP15_1 | ADC_SMPR2_SMP14_1 | ADC_SMPR2_SMP13_1 | ADC_SMPR2_SMP12_1 | \
mbed_official 354:e67efb2aab0e 651 ADC_SMPR2_SMP11_1 | ADC_SMPR2_SMP10_1)
mbed_official 354:e67efb2aab0e 652 #if defined(STM32L100xB) || defined (STM32L151xB) || defined (STM32L152xB) || defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC)
mbed_official 354:e67efb2aab0e 653 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT1 \
mbed_official 354:e67efb2aab0e 654 (ADC_SMPR1_SMP26_1 | ADC_SMPR1_SMP25_1 | ADC_SMPR1_SMP24_1 | ADC_SMPR1_SMP23_1 | \
mbed_official 354:e67efb2aab0e 655 ADC_SMPR1_SMP22_1 | ADC_SMPR1_SMP21_1 | ADC_SMPR1_SMP20_1)
mbed_official 354:e67efb2aab0e 656 #endif /* STM32L100xB || STM32L151xB || STM32L152xB || STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC */
mbed_official 354:e67efb2aab0e 657 #if defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 658 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT1 \
mbed_official 354:e67efb2aab0e 659 (ADC_SMPR1_SMP29_1 | ADC_SMPR1_SMP28_1 | ADC_SMPR1_SMP27_1 | ADC_SMPR1_SMP26_1 | \
mbed_official 354:e67efb2aab0e 660 ADC_SMPR1_SMP25_1 | ADC_SMPR1_SMP24_1 | ADC_SMPR1_SMP23_1 | ADC_SMPR1_SMP22_1 | \
mbed_official 354:e67efb2aab0e 661 ADC_SMPR1_SMP21_1 | ADC_SMPR1_SMP20_1)
mbed_official 354:e67efb2aab0e 662 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR0BIT1 \
mbed_official 354:e67efb2aab0e 663 (ADC_SMPR0_SMP31_1 | ADC_SMPR0_SMP30_1 )
mbed_official 354:e67efb2aab0e 664 #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */
mbed_official 354:e67efb2aab0e 665
mbed_official 354:e67efb2aab0e 666 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR3BIT0 \
mbed_official 354:e67efb2aab0e 667 (ADC_SMPR3_SMP9_0 | ADC_SMPR3_SMP8_0 | ADC_SMPR3_SMP7_0 | ADC_SMPR3_SMP6_0 | \
mbed_official 354:e67efb2aab0e 668 ADC_SMPR3_SMP5_0 | ADC_SMPR3_SMP4_0 | ADC_SMPR3_SMP3_0 | ADC_SMPR3_SMP2_0 | \
mbed_official 354:e67efb2aab0e 669 ADC_SMPR3_SMP1_0 | ADC_SMPR3_SMP0_0)
mbed_official 354:e67efb2aab0e 670 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR2BIT0 \
mbed_official 354:e67efb2aab0e 671 (ADC_SMPR2_SMP19_0 | ADC_SMPR2_SMP18_0 | ADC_SMPR2_SMP17_0 | ADC_SMPR2_SMP16_0 | \
mbed_official 354:e67efb2aab0e 672 ADC_SMPR2_SMP15_0 | ADC_SMPR2_SMP14_0 | ADC_SMPR2_SMP13_0 | ADC_SMPR2_SMP12_0 | \
mbed_official 354:e67efb2aab0e 673 ADC_SMPR2_SMP11_0 | ADC_SMPR2_SMP10_0)
mbed_official 354:e67efb2aab0e 674 #if defined(STM32L100xB) || defined (STM32L151xB) || defined (STM32L152xB) || defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC)
mbed_official 354:e67efb2aab0e 675 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT0 \
mbed_official 354:e67efb2aab0e 676 (ADC_SMPR1_SMP26_0 | ADC_SMPR1_SMP25_0 | ADC_SMPR1_SMP24_0 | ADC_SMPR1_SMP23_0 | \
mbed_official 354:e67efb2aab0e 677 ADC_SMPR1_SMP22_0 | ADC_SMPR1_SMP21_0 | ADC_SMPR1_SMP20_0)
mbed_official 354:e67efb2aab0e 678 #endif /* STM32L100xB || STM32L151xB || STM32L152xB || STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC */
mbed_official 354:e67efb2aab0e 679 #if defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 680 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR1BIT0 \
mbed_official 354:e67efb2aab0e 681 (ADC_SMPR1_SMP29_0 | ADC_SMPR1_SMP28_0 | ADC_SMPR1_SMP27_0 | ADC_SMPR1_SMP26_0 | \
mbed_official 354:e67efb2aab0e 682 ADC_SMPR1_SMP25_0 | ADC_SMPR1_SMP24_0 | ADC_SMPR1_SMP23_0 | ADC_SMPR1_SMP22_0 | \
mbed_official 354:e67efb2aab0e 683 ADC_SMPR1_SMP21_0 | ADC_SMPR1_SMP20_0)
mbed_official 354:e67efb2aab0e 684 #define ADC_SAMPLETIME_ALLCHANNELS_SMPR0BIT0 \
mbed_official 354:e67efb2aab0e 685 (ADC_SMPR0_SMP31_0 | ADC_SMPR0_SMP30_0 )
mbed_official 354:e67efb2aab0e 686 #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */
mbed_official 354:e67efb2aab0e 687 /**
mbed_official 354:e67efb2aab0e 688 * @}
mbed_official 354:e67efb2aab0e 689 */
mbed_official 354:e67efb2aab0e 690
mbed_official 354:e67efb2aab0e 691 /** @defgroup ADC_regular_rank ADC regular rank
mbed_official 354:e67efb2aab0e 692 * @{
mbed_official 354:e67efb2aab0e 693 */
mbed_official 354:e67efb2aab0e 694 #define ADC_REGULAR_RANK_1 ((uint32_t)0x00000001)
mbed_official 354:e67efb2aab0e 695 #define ADC_REGULAR_RANK_2 ((uint32_t)0x00000002)
mbed_official 354:e67efb2aab0e 696 #define ADC_REGULAR_RANK_3 ((uint32_t)0x00000003)
mbed_official 354:e67efb2aab0e 697 #define ADC_REGULAR_RANK_4 ((uint32_t)0x00000004)
mbed_official 354:e67efb2aab0e 698 #define ADC_REGULAR_RANK_5 ((uint32_t)0x00000005)
mbed_official 354:e67efb2aab0e 699 #define ADC_REGULAR_RANK_6 ((uint32_t)0x00000006)
mbed_official 354:e67efb2aab0e 700 #define ADC_REGULAR_RANK_7 ((uint32_t)0x00000007)
mbed_official 354:e67efb2aab0e 701 #define ADC_REGULAR_RANK_8 ((uint32_t)0x00000008)
mbed_official 354:e67efb2aab0e 702 #define ADC_REGULAR_RANK_9 ((uint32_t)0x00000009)
mbed_official 354:e67efb2aab0e 703 #define ADC_REGULAR_RANK_10 ((uint32_t)0x0000000A)
mbed_official 354:e67efb2aab0e 704 #define ADC_REGULAR_RANK_11 ((uint32_t)0x0000000B)
mbed_official 354:e67efb2aab0e 705 #define ADC_REGULAR_RANK_12 ((uint32_t)0x0000000C)
mbed_official 354:e67efb2aab0e 706 #define ADC_REGULAR_RANK_13 ((uint32_t)0x0000000D)
mbed_official 354:e67efb2aab0e 707 #define ADC_REGULAR_RANK_14 ((uint32_t)0x0000000E)
mbed_official 354:e67efb2aab0e 708 #define ADC_REGULAR_RANK_15 ((uint32_t)0x0000000F)
mbed_official 354:e67efb2aab0e 709 #define ADC_REGULAR_RANK_16 ((uint32_t)0x00000010)
mbed_official 354:e67efb2aab0e 710 #define ADC_REGULAR_RANK_17 ((uint32_t)0x00000011)
mbed_official 354:e67efb2aab0e 711 #define ADC_REGULAR_RANK_18 ((uint32_t)0x00000012)
mbed_official 354:e67efb2aab0e 712 #define ADC_REGULAR_RANK_19 ((uint32_t)0x00000013)
mbed_official 354:e67efb2aab0e 713 #define ADC_REGULAR_RANK_20 ((uint32_t)0x00000014)
mbed_official 354:e67efb2aab0e 714 #define ADC_REGULAR_RANK_21 ((uint32_t)0x00000015)
mbed_official 354:e67efb2aab0e 715 #define ADC_REGULAR_RANK_22 ((uint32_t)0x00000016)
mbed_official 354:e67efb2aab0e 716 #define ADC_REGULAR_RANK_23 ((uint32_t)0x00000017)
mbed_official 354:e67efb2aab0e 717 #define ADC_REGULAR_RANK_24 ((uint32_t)0x00000018)
mbed_official 354:e67efb2aab0e 718 #define ADC_REGULAR_RANK_25 ((uint32_t)0x00000019)
mbed_official 354:e67efb2aab0e 719 #define ADC_REGULAR_RANK_26 ((uint32_t)0x0000001A)
mbed_official 354:e67efb2aab0e 720 #define ADC_REGULAR_RANK_27 ((uint32_t)0x0000001B)
mbed_official 354:e67efb2aab0e 721 #if defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 722 #define ADC_REGULAR_RANK_28 ((uint32_t)0x0000001C)
mbed_official 354:e67efb2aab0e 723
mbed_official 354:e67efb2aab0e 724 #define IS_ADC_REGULAR_RANK(CHANNEL) (((CHANNEL) == ADC_REGULAR_RANK_1 ) || \
mbed_official 354:e67efb2aab0e 725 ((CHANNEL) == ADC_REGULAR_RANK_2 ) || \
mbed_official 354:e67efb2aab0e 726 ((CHANNEL) == ADC_REGULAR_RANK_3 ) || \
mbed_official 354:e67efb2aab0e 727 ((CHANNEL) == ADC_REGULAR_RANK_4 ) || \
mbed_official 354:e67efb2aab0e 728 ((CHANNEL) == ADC_REGULAR_RANK_5 ) || \
mbed_official 354:e67efb2aab0e 729 ((CHANNEL) == ADC_REGULAR_RANK_6 ) || \
mbed_official 354:e67efb2aab0e 730 ((CHANNEL) == ADC_REGULAR_RANK_7 ) || \
mbed_official 354:e67efb2aab0e 731 ((CHANNEL) == ADC_REGULAR_RANK_8 ) || \
mbed_official 354:e67efb2aab0e 732 ((CHANNEL) == ADC_REGULAR_RANK_9 ) || \
mbed_official 354:e67efb2aab0e 733 ((CHANNEL) == ADC_REGULAR_RANK_10) || \
mbed_official 354:e67efb2aab0e 734 ((CHANNEL) == ADC_REGULAR_RANK_11) || \
mbed_official 354:e67efb2aab0e 735 ((CHANNEL) == ADC_REGULAR_RANK_12) || \
mbed_official 354:e67efb2aab0e 736 ((CHANNEL) == ADC_REGULAR_RANK_13) || \
mbed_official 354:e67efb2aab0e 737 ((CHANNEL) == ADC_REGULAR_RANK_14) || \
mbed_official 354:e67efb2aab0e 738 ((CHANNEL) == ADC_REGULAR_RANK_15) || \
mbed_official 354:e67efb2aab0e 739 ((CHANNEL) == ADC_REGULAR_RANK_16) || \
mbed_official 354:e67efb2aab0e 740 ((CHANNEL) == ADC_REGULAR_RANK_17) || \
mbed_official 354:e67efb2aab0e 741 ((CHANNEL) == ADC_REGULAR_RANK_18) || \
mbed_official 354:e67efb2aab0e 742 ((CHANNEL) == ADC_REGULAR_RANK_19) || \
mbed_official 354:e67efb2aab0e 743 ((CHANNEL) == ADC_REGULAR_RANK_20) || \
mbed_official 354:e67efb2aab0e 744 ((CHANNEL) == ADC_REGULAR_RANK_21) || \
mbed_official 354:e67efb2aab0e 745 ((CHANNEL) == ADC_REGULAR_RANK_22) || \
mbed_official 354:e67efb2aab0e 746 ((CHANNEL) == ADC_REGULAR_RANK_23) || \
mbed_official 354:e67efb2aab0e 747 ((CHANNEL) == ADC_REGULAR_RANK_24) || \
mbed_official 354:e67efb2aab0e 748 ((CHANNEL) == ADC_REGULAR_RANK_25) || \
mbed_official 354:e67efb2aab0e 749 ((CHANNEL) == ADC_REGULAR_RANK_26) || \
mbed_official 354:e67efb2aab0e 750 ((CHANNEL) == ADC_REGULAR_RANK_27) || \
mbed_official 354:e67efb2aab0e 751 ((CHANNEL) == ADC_REGULAR_RANK_28) )
mbed_official 354:e67efb2aab0e 752 #else
mbed_official 354:e67efb2aab0e 753
mbed_official 354:e67efb2aab0e 754 #define IS_ADC_REGULAR_RANK(CHANNEL) (((CHANNEL) == ADC_REGULAR_RANK_1 ) || \
mbed_official 354:e67efb2aab0e 755 ((CHANNEL) == ADC_REGULAR_RANK_2 ) || \
mbed_official 354:e67efb2aab0e 756 ((CHANNEL) == ADC_REGULAR_RANK_3 ) || \
mbed_official 354:e67efb2aab0e 757 ((CHANNEL) == ADC_REGULAR_RANK_4 ) || \
mbed_official 354:e67efb2aab0e 758 ((CHANNEL) == ADC_REGULAR_RANK_5 ) || \
mbed_official 354:e67efb2aab0e 759 ((CHANNEL) == ADC_REGULAR_RANK_6 ) || \
mbed_official 354:e67efb2aab0e 760 ((CHANNEL) == ADC_REGULAR_RANK_7 ) || \
mbed_official 354:e67efb2aab0e 761 ((CHANNEL) == ADC_REGULAR_RANK_8 ) || \
mbed_official 354:e67efb2aab0e 762 ((CHANNEL) == ADC_REGULAR_RANK_9 ) || \
mbed_official 354:e67efb2aab0e 763 ((CHANNEL) == ADC_REGULAR_RANK_10) || \
mbed_official 354:e67efb2aab0e 764 ((CHANNEL) == ADC_REGULAR_RANK_11) || \
mbed_official 354:e67efb2aab0e 765 ((CHANNEL) == ADC_REGULAR_RANK_12) || \
mbed_official 354:e67efb2aab0e 766 ((CHANNEL) == ADC_REGULAR_RANK_13) || \
mbed_official 354:e67efb2aab0e 767 ((CHANNEL) == ADC_REGULAR_RANK_14) || \
mbed_official 354:e67efb2aab0e 768 ((CHANNEL) == ADC_REGULAR_RANK_15) || \
mbed_official 354:e67efb2aab0e 769 ((CHANNEL) == ADC_REGULAR_RANK_16) || \
mbed_official 354:e67efb2aab0e 770 ((CHANNEL) == ADC_REGULAR_RANK_17) || \
mbed_official 354:e67efb2aab0e 771 ((CHANNEL) == ADC_REGULAR_RANK_18) || \
mbed_official 354:e67efb2aab0e 772 ((CHANNEL) == ADC_REGULAR_RANK_19) || \
mbed_official 354:e67efb2aab0e 773 ((CHANNEL) == ADC_REGULAR_RANK_20) || \
mbed_official 354:e67efb2aab0e 774 ((CHANNEL) == ADC_REGULAR_RANK_21) || \
mbed_official 354:e67efb2aab0e 775 ((CHANNEL) == ADC_REGULAR_RANK_22) || \
mbed_official 354:e67efb2aab0e 776 ((CHANNEL) == ADC_REGULAR_RANK_23) || \
mbed_official 354:e67efb2aab0e 777 ((CHANNEL) == ADC_REGULAR_RANK_24) || \
mbed_official 354:e67efb2aab0e 778 ((CHANNEL) == ADC_REGULAR_RANK_25) || \
mbed_official 354:e67efb2aab0e 779 ((CHANNEL) == ADC_REGULAR_RANK_26) || \
mbed_official 354:e67efb2aab0e 780 ((CHANNEL) == ADC_REGULAR_RANK_27) )
mbed_official 354:e67efb2aab0e 781 #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */
mbed_official 354:e67efb2aab0e 782 /**
mbed_official 354:e67efb2aab0e 783 * @}
mbed_official 354:e67efb2aab0e 784 */
mbed_official 354:e67efb2aab0e 785
mbed_official 354:e67efb2aab0e 786 /** @defgroup ADC_analog_watchdog_mode ADC analog watchdog mode
mbed_official 354:e67efb2aab0e 787 * @{
mbed_official 354:e67efb2aab0e 788 */
mbed_official 354:e67efb2aab0e 789 #define ADC_ANALOGWATCHDOG_NONE ((uint32_t)0x00000000)
mbed_official 354:e67efb2aab0e 790 #define ADC_ANALOGWATCHDOG_SINGLE_REG ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN))
mbed_official 354:e67efb2aab0e 791 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN))
mbed_official 354:e67efb2aab0e 792 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN | ADC_CR1_JAWDEN))
mbed_official 354:e67efb2aab0e 793 #define ADC_ANALOGWATCHDOG_ALL_REG ((uint32_t) ADC_CR1_AWDEN)
mbed_official 354:e67efb2aab0e 794 #define ADC_ANALOGWATCHDOG_ALL_INJEC ((uint32_t) ADC_CR1_JAWDEN)
mbed_official 354:e67efb2aab0e 795 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC ((uint32_t)(ADC_CR1_AWDEN | ADC_CR1_JAWDEN))
mbed_official 354:e67efb2aab0e 796
mbed_official 354:e67efb2aab0e 797 #define IS_ADC_ANALOG_WATCHDOG_MODE(WATCHDOG) (((WATCHDOG) == ADC_ANALOGWATCHDOG_NONE) || \
mbed_official 354:e67efb2aab0e 798 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \
mbed_official 354:e67efb2aab0e 799 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_INJEC) || \
mbed_official 354:e67efb2aab0e 800 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC) || \
mbed_official 354:e67efb2aab0e 801 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REG) || \
mbed_official 354:e67efb2aab0e 802 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_INJEC) || \
mbed_official 354:e67efb2aab0e 803 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REGINJEC) )
mbed_official 354:e67efb2aab0e 804 /**
mbed_official 354:e67efb2aab0e 805 * @}
mbed_official 354:e67efb2aab0e 806 */
mbed_official 354:e67efb2aab0e 807
mbed_official 354:e67efb2aab0e 808 /** @defgroup ADC_conversion_group ADC conversion group
mbed_official 354:e67efb2aab0e 809 * @{
mbed_official 354:e67efb2aab0e 810 */
mbed_official 354:e67efb2aab0e 811 #define REGULAR_GROUP ((uint32_t)(ADC_FLAG_EOC))
mbed_official 354:e67efb2aab0e 812 #define INJECTED_GROUP ((uint32_t)(ADC_FLAG_JEOC))
mbed_official 354:e67efb2aab0e 813 #define REGULAR_INJECTED_GROUP ((uint32_t)(ADC_FLAG_EOC | ADC_FLAG_JEOC))
mbed_official 354:e67efb2aab0e 814
mbed_official 354:e67efb2aab0e 815 #define IS_ADC_CONVERSION_GROUP(CONVERSION) (((CONVERSION) == REGULAR_GROUP) || \
mbed_official 354:e67efb2aab0e 816 ((CONVERSION) == INJECTED_GROUP) || \
mbed_official 354:e67efb2aab0e 817 ((CONVERSION) == REGULAR_INJECTED_GROUP) )
mbed_official 354:e67efb2aab0e 818 /**
mbed_official 354:e67efb2aab0e 819 * @}
mbed_official 354:e67efb2aab0e 820 */
mbed_official 354:e67efb2aab0e 821
mbed_official 354:e67efb2aab0e 822 /** @defgroup ADC_Event_type ADC Event type
mbed_official 354:e67efb2aab0e 823 * @{
mbed_official 354:e67efb2aab0e 824 */
mbed_official 354:e67efb2aab0e 825 #define AWD_EVENT ((uint32_t)ADC_FLAG_AWD) /*!< ADC Analog watchdog event */
mbed_official 354:e67efb2aab0e 826 #define OVR_EVENT ((uint32_t)ADC_FLAG_OVR) /*!< ADC overrun event */
mbed_official 354:e67efb2aab0e 827
mbed_official 354:e67efb2aab0e 828 #define IS_ADC_EVENT_TYPE(EVENT) (((EVENT) == AWD_EVENT) || \
mbed_official 354:e67efb2aab0e 829 ((EVENT) == ADC_FLAG_OVR) )
mbed_official 354:e67efb2aab0e 830 /**
mbed_official 354:e67efb2aab0e 831 * @}
mbed_official 354:e67efb2aab0e 832 */
mbed_official 354:e67efb2aab0e 833
mbed_official 354:e67efb2aab0e 834 /** @defgroup ADC_interrupts_definition ADC interrupts definition
mbed_official 354:e67efb2aab0e 835 * @{
mbed_official 354:e67efb2aab0e 836 */
mbed_official 354:e67efb2aab0e 837 #define ADC_IT_EOC ADC_CR1_EOCIE /*!< ADC End of Regular Conversion interrupt source */
mbed_official 354:e67efb2aab0e 838 #define ADC_IT_JEOC ADC_CR1_JEOCIE /*!< ADC End of Injected Conversion interrupt source */
mbed_official 354:e67efb2aab0e 839 #define ADC_IT_AWD ADC_CR1_AWDIE /*!< ADC Analog watchdog interrupt source */
mbed_official 354:e67efb2aab0e 840 #define ADC_IT_OVR ADC_CR1_OVRIE /*!< ADC overrun interrupt source */
mbed_official 354:e67efb2aab0e 841 /**
mbed_official 354:e67efb2aab0e 842 * @}
mbed_official 354:e67efb2aab0e 843 */
mbed_official 354:e67efb2aab0e 844
mbed_official 354:e67efb2aab0e 845 /** @defgroup ADC_flags_definition ADC flags definition
mbed_official 354:e67efb2aab0e 846 * @{
mbed_official 354:e67efb2aab0e 847 */
mbed_official 354:e67efb2aab0e 848 #define ADC_FLAG_AWD ADC_SR_AWD /*!< ADC Analog watchdog flag */
mbed_official 354:e67efb2aab0e 849 #define ADC_FLAG_EOC ADC_SR_EOC /*!< ADC End of Regular conversion flag */
mbed_official 354:e67efb2aab0e 850 #define ADC_FLAG_JEOC ADC_SR_JEOC /*!< ADC End of Injected conversion flag */
mbed_official 354:e67efb2aab0e 851 #define ADC_FLAG_JSTRT ADC_SR_JSTRT /*!< ADC Injected group start flag */
mbed_official 354:e67efb2aab0e 852 #define ADC_FLAG_STRT ADC_SR_STRT /*!< ADC Regular group start flag */
mbed_official 354:e67efb2aab0e 853 #define ADC_FLAG_OVR ADC_SR_OVR /*!< ADC overrun flag */
mbed_official 354:e67efb2aab0e 854 #define ADC_FLAG_ADONS ADC_SR_ADONS /*!< ADC ready status flag */
mbed_official 354:e67efb2aab0e 855 #define ADC_FLAG_RCNR ADC_SR_RCNR /*!< ADC Regular group ready status flag */
mbed_official 354:e67efb2aab0e 856 #define ADC_FLAG_JCNR ADC_SR_JCNR /*!< ADC Regular group ready status flag */
mbed_official 354:e67efb2aab0e 857
mbed_official 354:e67efb2aab0e 858 /* Combination of all post-conversion flags bits: EOC/EOS, JEOC/JEOS, OVR, AWDx */
mbed_official 354:e67efb2aab0e 859 #define ADC_FLAG_POSTCONV_ALL (ADC_FLAG_EOC | ADC_FLAG_JEOC | ADC_FLAG_AWD | \
mbed_official 354:e67efb2aab0e 860 ADC_FLAG_OVR)
mbed_official 354:e67efb2aab0e 861 /**
mbed_official 354:e67efb2aab0e 862 * @}
mbed_official 354:e67efb2aab0e 863 */
mbed_official 354:e67efb2aab0e 864
mbed_official 354:e67efb2aab0e 865 /** @defgroup ADC_range_verification ADC range verification
mbed_official 354:e67efb2aab0e 866 * For a unique ADC resolution: 12 bits
mbed_official 354:e67efb2aab0e 867 * @{
mbed_official 354:e67efb2aab0e 868 */
mbed_official 354:e67efb2aab0e 869 #define IS_ADC_RANGE(ADC_VALUE) ((ADC_VALUE) <= ((uint32_t)0x0FFF))
mbed_official 354:e67efb2aab0e 870 /**
mbed_official 354:e67efb2aab0e 871 * @}
mbed_official 354:e67efb2aab0e 872 */
mbed_official 354:e67efb2aab0e 873
mbed_official 354:e67efb2aab0e 874 /** @defgroup ADC_regular_nb_conv_verification ADC regular nb conv verification
mbed_official 354:e67efb2aab0e 875 * @{
mbed_official 354:e67efb2aab0e 876 */
mbed_official 354:e67efb2aab0e 877 #if defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 878 #define IS_ADC_REGULAR_NB_CONV(LENGTH) (((LENGTH) >= ((uint32_t)1)) && ((LENGTH) <= ((uint32_t)28)))
mbed_official 354:e67efb2aab0e 879 #else
mbed_official 354:e67efb2aab0e 880 #define IS_ADC_REGULAR_NB_CONV(LENGTH) (((LENGTH) >= ((uint32_t)1)) && ((LENGTH) <= ((uint32_t)27)))
mbed_official 354:e67efb2aab0e 881 #endif
mbed_official 354:e67efb2aab0e 882 /**
mbed_official 354:e67efb2aab0e 883 * @}
mbed_official 354:e67efb2aab0e 884 */
mbed_official 354:e67efb2aab0e 885
mbed_official 354:e67efb2aab0e 886 /** @defgroup ADC_regular_discontinuous_mode_number_verification ADC regular discontinuous mode number verification
mbed_official 354:e67efb2aab0e 887 * @{
mbed_official 354:e67efb2aab0e 888 */
mbed_official 354:e67efb2aab0e 889 #define IS_ADC_REGULAR_DISCONT_NUMBER(NUMBER) (((NUMBER) >= ((uint32_t)1)) && ((NUMBER) <= ((uint32_t)8)))
mbed_official 354:e67efb2aab0e 890 /**
mbed_official 354:e67efb2aab0e 891 * @}
mbed_official 354:e67efb2aab0e 892 */
mbed_official 354:e67efb2aab0e 893
mbed_official 354:e67efb2aab0e 894 /**
mbed_official 354:e67efb2aab0e 895 * @}
mbed_official 354:e67efb2aab0e 896 */
mbed_official 354:e67efb2aab0e 897
mbed_official 354:e67efb2aab0e 898 /* Exported macro ------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 899
mbed_official 354:e67efb2aab0e 900 /** @defgroup ADC_Exported_Macros ADC Exported Macros
mbed_official 354:e67efb2aab0e 901 * @{
mbed_official 354:e67efb2aab0e 902 */
mbed_official 354:e67efb2aab0e 903 /* Macro for internal HAL driver usage, and possibly can be used into code of */
mbed_official 354:e67efb2aab0e 904 /* final user. */
mbed_official 354:e67efb2aab0e 905
mbed_official 354:e67efb2aab0e 906 /**
mbed_official 354:e67efb2aab0e 907 * @brief Verification of ADC state: enabled or disabled
mbed_official 354:e67efb2aab0e 908 * @param __HANDLE__: ADC handle
mbed_official 354:e67efb2aab0e 909 * @retval SET (ADC enabled) or RESET (ADC disabled)
mbed_official 354:e67efb2aab0e 910 */
mbed_official 354:e67efb2aab0e 911 #define __HAL_ADC_IS_ENABLED(__HANDLE__) \
mbed_official 354:e67efb2aab0e 912 ((( ((__HANDLE__)->Instance->SR & ADC_SR_ADONS) == ADC_SR_ADONS ) \
mbed_official 354:e67efb2aab0e 913 ) ? SET : RESET)
mbed_official 354:e67efb2aab0e 914
mbed_official 354:e67efb2aab0e 915 /**
mbed_official 354:e67efb2aab0e 916 * @brief Test if conversion trigger of regular group is software start
mbed_official 354:e67efb2aab0e 917 * or external trigger.
mbed_official 354:e67efb2aab0e 918 * @param __HANDLE__: ADC handle
mbed_official 354:e67efb2aab0e 919 * @retval SET (software start) or RESET (external trigger)
mbed_official 354:e67efb2aab0e 920 */
mbed_official 354:e67efb2aab0e 921 #define __HAL_ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \
mbed_official 354:e67efb2aab0e 922 (((__HANDLE__)->Instance->CR2 & ADC_CR2_EXTEN) == RESET)
mbed_official 354:e67efb2aab0e 923
mbed_official 354:e67efb2aab0e 924 /**
mbed_official 354:e67efb2aab0e 925 * @brief Test if conversion trigger of injected group is software start
mbed_official 354:e67efb2aab0e 926 * or external trigger.
mbed_official 354:e67efb2aab0e 927 * @param __HANDLE__: ADC handle
mbed_official 354:e67efb2aab0e 928 * @retval SET (software start) or RESET (external trigger)
mbed_official 354:e67efb2aab0e 929 */
mbed_official 354:e67efb2aab0e 930 #define __HAL_ADC_IS_SOFTWARE_START_INJECTED(__HANDLE__) \
mbed_official 354:e67efb2aab0e 931 (((__HANDLE__)->Instance->CR2 & ADC_CR2_JEXTEN) == RESET)
mbed_official 354:e67efb2aab0e 932
mbed_official 354:e67efb2aab0e 933 /** @brief Checks if the specified ADC interrupt source is enabled or disabled.
mbed_official 354:e67efb2aab0e 934 * @param __HANDLE__: ADC handle
mbed_official 354:e67efb2aab0e 935 * @param __INTERRUPT__: ADC interrupt source to check
mbed_official 354:e67efb2aab0e 936 * @retval State of interruption (SET or RESET)
mbed_official 354:e67efb2aab0e 937 */
mbed_official 354:e67efb2aab0e 938 #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \
mbed_official 354:e67efb2aab0e 939 (( ((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__) \
mbed_official 354:e67efb2aab0e 940 )? SET : RESET \
mbed_official 354:e67efb2aab0e 941 )
mbed_official 354:e67efb2aab0e 942
mbed_official 354:e67efb2aab0e 943 /**
mbed_official 354:e67efb2aab0e 944 * @brief Enable the ADC end of conversion interrupt.
mbed_official 354:e67efb2aab0e 945 * @param __HANDLE__: ADC handle
mbed_official 354:e67efb2aab0e 946 * @param __INTERRUPT__: ADC Interrupt
mbed_official 354:e67efb2aab0e 947 * @retval None
mbed_official 354:e67efb2aab0e 948 */
mbed_official 354:e67efb2aab0e 949 #define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) \
mbed_official 354:e67efb2aab0e 950 (SET_BIT((__HANDLE__)->Instance->CR1, (__INTERRUPT__)))
mbed_official 354:e67efb2aab0e 951
mbed_official 354:e67efb2aab0e 952 /**
mbed_official 354:e67efb2aab0e 953 * @brief Disable the ADC end of conversion interrupt.
mbed_official 354:e67efb2aab0e 954 * @param __HANDLE__: ADC handle
mbed_official 354:e67efb2aab0e 955 * @param __INTERRUPT__: ADC Interrupt
mbed_official 354:e67efb2aab0e 956 * @retval None
mbed_official 354:e67efb2aab0e 957 */
mbed_official 354:e67efb2aab0e 958 #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) \
mbed_official 354:e67efb2aab0e 959 (CLEAR_BIT((__HANDLE__)->Instance->CR1, (__INTERRUPT__)))
mbed_official 354:e67efb2aab0e 960
mbed_official 354:e67efb2aab0e 961 /**
mbed_official 354:e67efb2aab0e 962 * @brief Get the selected ADC's flag status.
mbed_official 354:e67efb2aab0e 963 * @param __HANDLE__: ADC handle
mbed_official 354:e67efb2aab0e 964 * @param __FLAG__: ADC flag
mbed_official 354:e67efb2aab0e 965 * @retval None
mbed_official 354:e67efb2aab0e 966 */
mbed_official 354:e67efb2aab0e 967 #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) \
mbed_official 354:e67efb2aab0e 968 ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
mbed_official 354:e67efb2aab0e 969
mbed_official 354:e67efb2aab0e 970 /**
mbed_official 354:e67efb2aab0e 971 * @brief Clear the ADC's pending flags
mbed_official 354:e67efb2aab0e 972 * @param __HANDLE__: ADC handle
mbed_official 354:e67efb2aab0e 973 * @param __FLAG__: ADC flag
mbed_official 354:e67efb2aab0e 974 * @retval None
mbed_official 354:e67efb2aab0e 975 */
mbed_official 354:e67efb2aab0e 976 #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = ~(__FLAG__))
mbed_official 354:e67efb2aab0e 977
mbed_official 354:e67efb2aab0e 978 /**
mbed_official 354:e67efb2aab0e 979 * @brief Clear ADC error code (set it to error code: "no error")
mbed_official 354:e67efb2aab0e 980 * @param __HANDLE__: ADC handle
mbed_official 354:e67efb2aab0e 981 * @retval None
mbed_official 354:e67efb2aab0e 982 */
mbed_official 354:e67efb2aab0e 983 #define __HAL_ADC_CLEAR_ERRORCODE(__HANDLE__) \
mbed_official 354:e67efb2aab0e 984 ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)
mbed_official 354:e67efb2aab0e 985
mbed_official 354:e67efb2aab0e 986 /** @brief Reset ADC handle state
mbed_official 354:e67efb2aab0e 987 * @param __HANDLE__: ADC handle
mbed_official 354:e67efb2aab0e 988 * @retval None
mbed_official 354:e67efb2aab0e 989 */
mbed_official 354:e67efb2aab0e 990 #define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_ADC_STATE_RESET)
mbed_official 354:e67efb2aab0e 991
mbed_official 354:e67efb2aab0e 992 /**
mbed_official 354:e67efb2aab0e 993 * @}
mbed_official 354:e67efb2aab0e 994 */
mbed_official 354:e67efb2aab0e 995
mbed_official 354:e67efb2aab0e 996 /* Include ADC HAL Extension module */
mbed_official 354:e67efb2aab0e 997 #include "stm32l1xx_hal_adc_ex.h"
mbed_official 354:e67efb2aab0e 998
mbed_official 354:e67efb2aab0e 999 /* Exported functions --------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 1000 /** @addtogroup ADC_Exported_Functions
mbed_official 354:e67efb2aab0e 1001 * @{
mbed_official 354:e67efb2aab0e 1002 */
mbed_official 354:e67efb2aab0e 1003
mbed_official 354:e67efb2aab0e 1004 /** @addtogroup ADC_Exported_Functions_Group1
mbed_official 354:e67efb2aab0e 1005 * @{
mbed_official 354:e67efb2aab0e 1006 */
mbed_official 354:e67efb2aab0e 1007
mbed_official 354:e67efb2aab0e 1008
mbed_official 354:e67efb2aab0e 1009 /* Initialization and de-initialization functions **********************************/
mbed_official 354:e67efb2aab0e 1010 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1011 HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc);
mbed_official 354:e67efb2aab0e 1012 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1013 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1014 /**
mbed_official 354:e67efb2aab0e 1015 * @}
mbed_official 354:e67efb2aab0e 1016 */
mbed_official 354:e67efb2aab0e 1017
mbed_official 354:e67efb2aab0e 1018 /* IO operation functions *****************************************************/
mbed_official 354:e67efb2aab0e 1019
mbed_official 354:e67efb2aab0e 1020 /** @addtogroup ADC_Exported_Functions_Group2
mbed_official 354:e67efb2aab0e 1021 * @{
mbed_official 354:e67efb2aab0e 1022 */
mbed_official 354:e67efb2aab0e 1023
mbed_official 354:e67efb2aab0e 1024
mbed_official 354:e67efb2aab0e 1025 /* Blocking mode: Polling */
mbed_official 354:e67efb2aab0e 1026 HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1027 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1028 HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
mbed_official 354:e67efb2aab0e 1029 HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout);
mbed_official 354:e67efb2aab0e 1030
mbed_official 354:e67efb2aab0e 1031 /* Non-blocking mode: Interruption */
mbed_official 354:e67efb2aab0e 1032 HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1033 HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1034
mbed_official 354:e67efb2aab0e 1035 /* Non-blocking mode: DMA */
mbed_official 354:e67efb2aab0e 1036 HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);
mbed_official 354:e67efb2aab0e 1037 HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1038
mbed_official 354:e67efb2aab0e 1039 /* ADC retrieve conversion value intended to be used with polling or interruption */
mbed_official 354:e67efb2aab0e 1040 uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1041
mbed_official 354:e67efb2aab0e 1042 /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption and DMA) */
mbed_official 354:e67efb2aab0e 1043 void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1044 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1045 void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1046 void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1047 void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc);
mbed_official 354:e67efb2aab0e 1048 /**
mbed_official 354:e67efb2aab0e 1049 * @}
mbed_official 354:e67efb2aab0e 1050 */
mbed_official 354:e67efb2aab0e 1051
mbed_official 354:e67efb2aab0e 1052
mbed_official 354:e67efb2aab0e 1053 /* Peripheral Control functions ***********************************************/
mbed_official 354:e67efb2aab0e 1054 /** @addtogroup ADC_Exported_Functions_Group3
mbed_official 354:e67efb2aab0e 1055 * @{
mbed_official 354:e67efb2aab0e 1056 */
mbed_official 354:e67efb2aab0e 1057 HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig);
mbed_official 354:e67efb2aab0e 1058 HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig);
mbed_official 354:e67efb2aab0e 1059 /**
mbed_official 354:e67efb2aab0e 1060 * @}
mbed_official 354:e67efb2aab0e 1061 */
mbed_official 354:e67efb2aab0e 1062
mbed_official 354:e67efb2aab0e 1063
mbed_official 354:e67efb2aab0e 1064 /* Peripheral State functions *************************************************/
mbed_official 354:e67efb2aab0e 1065 /** @addtogroup ADC_Exported_Functions_Group4
mbed_official 354:e67efb2aab0e 1066 * @{
mbed_official 354:e67efb2aab0e 1067 */
mbed_official 354:e67efb2aab0e 1068 HAL_ADC_StateTypeDef HAL_ADC_GetState(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1069 uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc);
mbed_official 354:e67efb2aab0e 1070 /**
mbed_official 354:e67efb2aab0e 1071 * @}
mbed_official 354:e67efb2aab0e 1072 */
mbed_official 354:e67efb2aab0e 1073
mbed_official 354:e67efb2aab0e 1074
mbed_official 354:e67efb2aab0e 1075 /**
mbed_official 354:e67efb2aab0e 1076 * @}
mbed_official 354:e67efb2aab0e 1077 */
mbed_official 354:e67efb2aab0e 1078
mbed_official 354:e67efb2aab0e 1079
mbed_official 354:e67efb2aab0e 1080 /* Internal HAL driver functions **********************************************/
mbed_official 354:e67efb2aab0e 1081 /** @addtogroup ADC_Private_Functions
mbed_official 354:e67efb2aab0e 1082 * @{
mbed_official 354:e67efb2aab0e 1083 */
mbed_official 354:e67efb2aab0e 1084
mbed_official 354:e67efb2aab0e 1085 HAL_StatusTypeDef ADC_Enable(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1086 HAL_StatusTypeDef ADC_ConversionStop_Disable(ADC_HandleTypeDef* hadc);
mbed_official 354:e67efb2aab0e 1087 /**
mbed_official 354:e67efb2aab0e 1088 * @}
mbed_official 354:e67efb2aab0e 1089 */
mbed_official 354:e67efb2aab0e 1090
mbed_official 354:e67efb2aab0e 1091
mbed_official 354:e67efb2aab0e 1092 /**
mbed_official 354:e67efb2aab0e 1093 * @}
mbed_official 354:e67efb2aab0e 1094 */
mbed_official 354:e67efb2aab0e 1095
mbed_official 354:e67efb2aab0e 1096 /**
mbed_official 354:e67efb2aab0e 1097 * @}
mbed_official 354:e67efb2aab0e 1098 */
mbed_official 354:e67efb2aab0e 1099
mbed_official 354:e67efb2aab0e 1100 #ifdef __cplusplus
mbed_official 354:e67efb2aab0e 1101 }
mbed_official 354:e67efb2aab0e 1102 #endif
mbed_official 354:e67efb2aab0e 1103
mbed_official 354:e67efb2aab0e 1104
mbed_official 354:e67efb2aab0e 1105 #endif /* __STM32L1xx_HAL_ADC_H */
mbed_official 354:e67efb2aab0e 1106
mbed_official 354:e67efb2aab0e 1107 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/