Fork of the official mbed C/C SDK provides the software platform and libraries to build your applications for RenBED.

Dependents:   1-RenBuggyTimed RenBED_RGB RenBED_RGB_PWM RenBED_RGB

Fork of mbed by mbed official

Committer:
elijahorr
Date:
Thu Apr 14 07:28:54 2016 +0000
Revision:
121:672067c3ada4
Parent:
108:34e6b704fe68
.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 93:e188a91d3eaa 1 /**
Kojto 93:e188a91d3eaa 2 ******************************************************************************
Kojto 93:e188a91d3eaa 3 * @file stm32f0xx_hal_adc.h
Kojto 93:e188a91d3eaa 4 * @author MCD Application Team
Kojto 108:34e6b704fe68 5 * @version V1.3.0
Kojto 108:34e6b704fe68 6 * @date 26-June-2015
Kojto 93:e188a91d3eaa 7 * @brief Header file containing functions prototypes of ADC HAL library.
Kojto 93:e188a91d3eaa 8 ******************************************************************************
Kojto 93:e188a91d3eaa 9 * @attention
Kojto 93:e188a91d3eaa 10 *
Kojto 108:34e6b704fe68 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
Kojto 93:e188a91d3eaa 12 *
Kojto 93:e188a91d3eaa 13 * Redistribution and use in source and binary forms, with or without modification,
Kojto 93:e188a91d3eaa 14 * are permitted provided that the following conditions are met:
Kojto 93:e188a91d3eaa 15 * 1. Redistributions of source code must retain the above copyright notice,
Kojto 93:e188a91d3eaa 16 * this list of conditions and the following disclaimer.
Kojto 93:e188a91d3eaa 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
Kojto 93:e188a91d3eaa 18 * this list of conditions and the following disclaimer in the documentation
Kojto 93:e188a91d3eaa 19 * and/or other materials provided with the distribution.
Kojto 93:e188a91d3eaa 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Kojto 93:e188a91d3eaa 21 * may be used to endorse or promote products derived from this software
Kojto 93:e188a91d3eaa 22 * without specific prior written permission.
Kojto 93:e188a91d3eaa 23 *
Kojto 93:e188a91d3eaa 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Kojto 93:e188a91d3eaa 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Kojto 93:e188a91d3eaa 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Kojto 93:e188a91d3eaa 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Kojto 93:e188a91d3eaa 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Kojto 93:e188a91d3eaa 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Kojto 93:e188a91d3eaa 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Kojto 93:e188a91d3eaa 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Kojto 93:e188a91d3eaa 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Kojto 93:e188a91d3eaa 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Kojto 93:e188a91d3eaa 34 *
Kojto 93:e188a91d3eaa 35 ******************************************************************************
Kojto 93:e188a91d3eaa 36 */
Kojto 93:e188a91d3eaa 37
Kojto 93:e188a91d3eaa 38 /* Define to prevent recursive inclusion -------------------------------------*/
Kojto 93:e188a91d3eaa 39 #ifndef __STM32F0xx_HAL_ADC_H
Kojto 93:e188a91d3eaa 40 #define __STM32F0xx_HAL_ADC_H
Kojto 93:e188a91d3eaa 41
Kojto 93:e188a91d3eaa 42 #ifdef __cplusplus
Kojto 93:e188a91d3eaa 43 extern "C" {
Kojto 93:e188a91d3eaa 44 #endif
Kojto 93:e188a91d3eaa 45
Kojto 93:e188a91d3eaa 46 /* Includes ------------------------------------------------------------------*/
Kojto 93:e188a91d3eaa 47 #include "stm32f0xx_hal_def.h"
Kojto 93:e188a91d3eaa 48
Kojto 93:e188a91d3eaa 49 /** @addtogroup STM32F0xx_HAL_Driver
Kojto 93:e188a91d3eaa 50 * @{
Kojto 93:e188a91d3eaa 51 */
Kojto 93:e188a91d3eaa 52
Kojto 93:e188a91d3eaa 53 /** @addtogroup ADC
Kojto 93:e188a91d3eaa 54 * @{
Kojto 93:e188a91d3eaa 55 */
Kojto 93:e188a91d3eaa 56
Kojto 93:e188a91d3eaa 57 /* Exported types ------------------------------------------------------------*/
Kojto 93:e188a91d3eaa 58 /** @defgroup ADC_Exported_Types ADC Exported Types
Kojto 93:e188a91d3eaa 59 * @{
Kojto 93:e188a91d3eaa 60 */
Kojto 93:e188a91d3eaa 61
Kojto 93:e188a91d3eaa 62 /**
Kojto 93:e188a91d3eaa 63 * @brief Structure definition of ADC initialization and regular group
Kojto 93:e188a91d3eaa 64 * @note The setting of these parameters with function HAL_ADC_Init() is conditioned to ADC state.
Kojto 93:e188a91d3eaa 65 * ADC state can be either:
Kojto 93:e188a91d3eaa 66 * - For all parameters: ADC disabled (this is the only possible ADC state to modify parameter 'ClockPrescaler')
Kojto 108:34e6b704fe68 67 * - For all parameters except 'ClockPrescaler' and 'resolution': ADC enabled without conversion on going on regular group.
Kojto 93:e188a91d3eaa 68 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
Kojto 93:e188a91d3eaa 69 * without error reporting (as it can be the expected behaviour in case of intended action to update another parameter (which fulfills the ADC state condition) on the fly).
Kojto 93:e188a91d3eaa 70 */
Kojto 93:e188a91d3eaa 71 typedef struct
Kojto 93:e188a91d3eaa 72 {
Kojto 93:e188a91d3eaa 73 uint32_t ClockPrescaler; /*!< Select ADC clock source (synchronous clock derived from APB clock or asynchronous clock derived from ADC dedicated HSI RC oscillator 14MHz) and clock prescaler.
Kojto 93:e188a91d3eaa 74 This parameter can be a value of @ref ADC_ClockPrescaler
Kojto 93:e188a91d3eaa 75 Note: In case of usage of the ADC dedicated HSI RC oscillator, it must be preliminarily enabled at RCC top level.
Kojto 93:e188a91d3eaa 76 Note: This parameter can be modified only if the ADC is disabled */
Kojto 93:e188a91d3eaa 77 uint32_t Resolution; /*!< Configures the ADC resolution.
Kojto 93:e188a91d3eaa 78 This parameter can be a value of @ref ADC_Resolution */
Kojto 93:e188a91d3eaa 79 uint32_t DataAlign; /*!< Specifies whether the ADC data alignment is left or right.
Kojto 93:e188a91d3eaa 80 This parameter can be a value of @ref ADC_Data_align */
Kojto 93:e188a91d3eaa 81 uint32_t ScanConvMode; /*!< Configures the sequencer of regular group.
Kojto 93:e188a91d3eaa 82 This parameter can be associated to parameter 'DiscontinuousConvMode' to have main sequence subdivided in successive parts.
Kojto 93:e188a91d3eaa 83 Sequencer is automatically enabled if several channels are set (sequencer cannot be disabled, as it can be the case on other STM32 devices):
Kojto 93:e188a91d3eaa 84 If only 1 channel is set: Conversion is performed in single mode.
Kojto 93:e188a91d3eaa 85 If several channels are set: Conversions are performed in sequence mode (ranks defined by each channel number: channel 0 fixed on rank 0, channel 1 fixed on rank1, ...).
Kojto 93:e188a91d3eaa 86 Scan direction can be set to forward (from channel 0 to channel 18) or backward (from channel 18 to channel 0).
Kojto 93:e188a91d3eaa 87 This parameter can be a value of @ref ADC_Scan_mode */
Kojto 93:e188a91d3eaa 88 uint32_t EOCSelection; /*!< Specifies what EOC (End Of Conversion) flag is used for conversion by polling and interruption: end of conversion of each rank or complete sequence.
Kojto 93:e188a91d3eaa 89 This parameter can be a value of @ref ADC_EOCSelection. */
Kojto 93:e188a91d3eaa 90 uint32_t LowPowerAutoWait; /*!< Selects the dynamic low power Auto Delay: new conversion start only when the previous
Kojto 108:34e6b704fe68 91 conversion (for regular group) has been treated by user software, using function HAL_ADC_GetValue().
Kojto 108:34e6b704fe68 92 This feature automatically adapts the ADC conversions trigs to the speed of the system that reads the data. Moreover, this avoids risk of overrun for low frequency applications.
Kojto 93:e188a91d3eaa 93 This parameter can be set to ENABLE or DISABLE.
Kojto 93:e188a91d3eaa 94 Note: Do not use with interruption or DMA (HAL_ADC_Start_IT(), HAL_ADC_Start_DMA()) since they have to clear immediately the EOC flag to free the IRQ vector sequencer.
Kojto 93:e188a91d3eaa 95 Do use with polling: 1. Start conversion with HAL_ADC_Start(), 2. Later on, when conversion data is needed: use HAL_ADC_PollForConversion() to ensure that conversion is completed
Kojto 93:e188a91d3eaa 96 and use HAL_ADC_GetValue() to retrieve conversion result and trig another conversion. */
Kojto 93:e188a91d3eaa 97 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).
Kojto 93:e188a91d3eaa 98 This feature can be combined with automatic wait mode (parameter 'LowPowerAutoWait').
Kojto 93:e188a91d3eaa 99 This parameter can be set to ENABLE or DISABLE.
Kojto 93:e188a91d3eaa 100 Note: If enabled, this feature also turns off the ADC dedicated 14 MHz RC oscillator (HSI14) */
Kojto 93:e188a91d3eaa 101 uint32_t ContinuousConvMode; /*!< Specifies whether the conversion is performed in single mode (one conversion) or continuous mode for regular group,
Kojto 93:e188a91d3eaa 102 after the selected trigger occurred (software start or external trigger).
Kojto 93:e188a91d3eaa 103 This parameter can be set to ENABLE or DISABLE. */
Kojto 93:e188a91d3eaa 104 uint32_t DiscontinuousConvMode; /*!< Specifies whether the conversions sequence of regular group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts).
Kojto 93:e188a91d3eaa 105 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
Kojto 93:e188a91d3eaa 106 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
Kojto 93:e188a91d3eaa 107 This parameter can be set to ENABLE or DISABLE
Kojto 93:e188a91d3eaa 108 Note: Number of discontinuous ranks increment is fixed to one-by-one. */
Kojto 93:e188a91d3eaa 109 uint32_t ExternalTrigConv; /*!< Selects the external event used to trigger the conversion start of regular group.
Kojto 93:e188a91d3eaa 110 If set to ADC_SOFTWARE_START, external triggers are disabled.
Kojto 93:e188a91d3eaa 111 This parameter can be a value of @ref ADC_External_trigger_source_Regular */
Kojto 93:e188a91d3eaa 112 uint32_t ExternalTrigConvEdge; /*!< Selects the external trigger edge of regular group.
Kojto 93:e188a91d3eaa 113 If trigger is set to ADC_SOFTWARE_START, this parameter is discarded.
Kojto 93:e188a91d3eaa 114 This parameter can be a value of @ref ADC_External_trigger_edge_Regular */
Kojto 93:e188a91d3eaa 115 uint32_t DMAContinuousRequests; /*!< Specifies whether the DMA requests are performed in one shot mode (DMA transfer stop when number of conversions is reached)
Kojto 93:e188a91d3eaa 116 or in Continuous mode (DMA transfer unlimited, whatever number of conversions).
Kojto 93:e188a91d3eaa 117 Note: In continuous mode, DMA must be configured in circular mode. Otherwise an overrun will be triggered when DMA buffer maximum pointer is reached.
Kojto 93:e188a91d3eaa 118 This parameter can be set to ENABLE or DISABLE. */
Kojto 93:e188a91d3eaa 119 uint32_t Overrun; /*!< Select the behaviour in case of overrun: data preserved or overwritten
Kojto 93:e188a91d3eaa 120 This parameter has an effect on regular group only, including in DMA mode.
Kojto 93:e188a91d3eaa 121 This parameter can be a value of @ref ADC_Overrun */
Kojto 108:34e6b704fe68 122 uint32_t SamplingTimeCommon; /*!< Sampling time value to be set for the selected channel.
Kojto 108:34e6b704fe68 123 Unit: ADC clock cycles
Kojto 108:34e6b704fe68 124 Conversion time is the addition of sampling time and processing time (12.5 ADC clock cycles at ADC resolution 12 bits, 10.5 cycles at 10 bits, 8.5 cycles at 8 bits, 6.5 cycles at 6 bits).
Kojto 108:34e6b704fe68 125 Note: On STM32F0 devices, the sampling time setting is common to all channels. On some other STM32 devices, this parameter in channel wise and is located into ADC channel initialization structure.
Kojto 108:34e6b704fe68 126 This parameter can be a value of @ref ADC_sampling_times
Kojto 108:34e6b704fe68 127 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
Kojto 108:34e6b704fe68 128 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
Kojto 108:34e6b704fe68 129 Refer to device datasheet for timings values, parameters TS_vrefint, TS_vbat, TS_temp (values rough order: 5us to 17us). */
Kojto 93:e188a91d3eaa 130 }ADC_InitTypeDef;
Kojto 93:e188a91d3eaa 131
Kojto 93:e188a91d3eaa 132 /**
Kojto 93:e188a91d3eaa 133 * @brief Structure definition of ADC channel for regular group
Kojto 93:e188a91d3eaa 134 * @note The setting of these parameters with function HAL_ADC_ConfigChannel() is conditioned to ADC state.
Kojto 93:e188a91d3eaa 135 * ADC state can be either:
Kojto 93:e188a91d3eaa 136 * - For all parameters: ADC disabled or enabled without conversion on going on regular group.
Kojto 93:e188a91d3eaa 137 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
Kojto 93:e188a91d3eaa 138 * without error reporting (as it can be the expected behaviour in case of intended action to update another parameter (which fulfills the ADC state condition) on the fly).
Kojto 93:e188a91d3eaa 139 */
Kojto 93:e188a91d3eaa 140 typedef struct
Kojto 93:e188a91d3eaa 141 {
Kojto 93:e188a91d3eaa 142 uint32_t Channel; /*!< Specifies the channel to configure into ADC regular group.
Kojto 93:e188a91d3eaa 143 This parameter can be a value of @ref ADC_channels
Kojto 93:e188a91d3eaa 144 Note: Depending on devices, some channels may not be available on package pins. Refer to device datasheet for channels availability. */
Kojto 93:e188a91d3eaa 145 uint32_t Rank; /*!< Add or remove the channel from ADC regular group sequencer.
Kojto 108:34e6b704fe68 146 On STM32F0 devices, number of ranks in the sequence is defined by number of channels enabled, rank of each channel is defined by channel number (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...)..
Kojto 93:e188a91d3eaa 147 Despite the channel rank is fixed, this parameter allow an additional possibility: to remove the selected rank (selected channel) from sequencer.
Kojto 93:e188a91d3eaa 148 This parameter can be a value of @ref ADC_rank */
Kojto 93:e188a91d3eaa 149 uint32_t SamplingTime; /*!< Sampling time value to be set for the selected channel.
Kojto 93:e188a91d3eaa 150 Unit: ADC clock cycles
Kojto 93:e188a91d3eaa 151 Conversion time is the addition of sampling time and processing time (12.5 ADC clock cycles at ADC resolution 12 bits, 10.5 cycles at 10 bits, 8.5 cycles at 8 bits, 6.5 cycles at 6 bits).
Kojto 93:e188a91d3eaa 152 This parameter can be a value of @ref ADC_sampling_times
Kojto 93:e188a91d3eaa 153 Caution: this setting impacts the entire regular group. Therefore, call of HAL_ADC_ConfigChannel() to configure a channel can impact the configuration of other channels previously set.
Kojto 108:34e6b704fe68 154 Caution: Obsolete parameter. Use parameter "SamplingTimeCommon" in ADC initialization structure.
Kojto 108:34e6b704fe68 155 If parameter "SamplingTimeCommon" is set to a valid sampling time, parameter "SamplingTime" is discarded.
Kojto 93:e188a91d3eaa 156 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
Kojto 93:e188a91d3eaa 157 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
Kojto 93:e188a91d3eaa 158 Refer to device datasheet for timings values, parameters TS_vrefint, TS_vbat, TS_temp (values rough order: 5us to 17us). */
Kojto 93:e188a91d3eaa 159 }ADC_ChannelConfTypeDef;
Kojto 93:e188a91d3eaa 160
Kojto 93:e188a91d3eaa 161 /**
Kojto 93:e188a91d3eaa 162 * @brief Structure definition of ADC analog watchdog
Kojto 93:e188a91d3eaa 163 * @note The setting of these parameters with function HAL_ADC_AnalogWDGConfig() is conditioned to ADC state.
Kojto 93:e188a91d3eaa 164 * ADC state can be either: ADC disabled or ADC enabled without conversion on going on regular group.
Kojto 93:e188a91d3eaa 165 */
Kojto 93:e188a91d3eaa 166 typedef struct
Kojto 93:e188a91d3eaa 167 {
Kojto 93:e188a91d3eaa 168 uint32_t WatchdogMode; /*!< Configures the ADC analog watchdog mode: single/all/none channels.
Kojto 93:e188a91d3eaa 169 This parameter can be a value of @ref ADC_analog_watchdog_mode. */
Kojto 93:e188a91d3eaa 170 uint32_t Channel; /*!< Selects which ADC channel to monitor by analog watchdog.
Kojto 93:e188a91d3eaa 171 This parameter has an effect only if parameter 'WatchdogMode' is configured on single channel. Only 1 channel can be monitored.
Kojto 93:e188a91d3eaa 172 This parameter can be a value of @ref ADC_channels. */
Kojto 93:e188a91d3eaa 173 uint32_t ITMode; /*!< Specifies whether the analog watchdog is configured in interrupt or polling mode.
Kojto 93:e188a91d3eaa 174 This parameter can be set to ENABLE or DISABLE */
Kojto 93:e188a91d3eaa 175 uint32_t HighThreshold; /*!< Configures the ADC analog watchdog High threshold value.
Kojto 93:e188a91d3eaa 176 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively. */
Kojto 93:e188a91d3eaa 177 uint32_t LowThreshold; /*!< Configures the ADC analog watchdog High threshold value.
Kojto 93:e188a91d3eaa 178 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively. */
Kojto 93:e188a91d3eaa 179 }ADC_AnalogWDGConfTypeDef;
Kojto 93:e188a91d3eaa 180
Kojto 93:e188a91d3eaa 181 /**
Kojto 108:34e6b704fe68 182 * @brief HAL ADC state machine: ADC states definition (bitfields)
Kojto 93:e188a91d3eaa 183 */
Kojto 108:34e6b704fe68 184 /* States of ADC global scope */
Kojto 108:34e6b704fe68 185 #define HAL_ADC_STATE_RESET ((uint32_t)0x00000000) /*!< ADC not yet initialized or disabled */
Kojto 108:34e6b704fe68 186 #define HAL_ADC_STATE_READY ((uint32_t)0x00000001) /*!< ADC peripheral ready for use */
Kojto 108:34e6b704fe68 187 #define HAL_ADC_STATE_BUSY_INTERNAL ((uint32_t)0x00000002) /*!< ADC is busy to internal process (initialization, calibration) */
Kojto 108:34e6b704fe68 188 #define HAL_ADC_STATE_TIMEOUT ((uint32_t)0x00000004) /*!< TimeOut occurrence */
Kojto 108:34e6b704fe68 189
Kojto 108:34e6b704fe68 190 /* States of ADC errors */
Kojto 108:34e6b704fe68 191 #define HAL_ADC_STATE_ERROR_INTERNAL ((uint32_t)0x00000010) /*!< Internal error occurrence */
Kojto 108:34e6b704fe68 192 #define HAL_ADC_STATE_ERROR_CONFIG ((uint32_t)0x00000020) /*!< Configuration error occurrence */
Kojto 108:34e6b704fe68 193 #define HAL_ADC_STATE_ERROR_DMA ((uint32_t)0x00000040) /*!< DMA error occurrence */
Kojto 108:34e6b704fe68 194
Kojto 108:34e6b704fe68 195 /* States of ADC group regular */
Kojto 108:34e6b704fe68 196 #define HAL_ADC_STATE_REG_BUSY ((uint32_t)0x00000100) /*!< A conversion on group regular is ongoing or can occur (either by continuous mode,
Kojto 108:34e6b704fe68 197 external trigger, low power auto power-on, multimode ADC master control) */
Kojto 108:34e6b704fe68 198 #define HAL_ADC_STATE_REG_EOC ((uint32_t)0x00000200) /*!< Conversion data available on group regular */
Kojto 108:34e6b704fe68 199 #define HAL_ADC_STATE_REG_OVR ((uint32_t)0x00000400) /*!< Overrun occurrence */
Kojto 108:34e6b704fe68 200 #define HAL_ADC_STATE_REG_EOSMP ((uint32_t)0x00000800) /*!< Not available on STM32F0 device: End Of Sampling flag raised */
Kojto 108:34e6b704fe68 201
Kojto 108:34e6b704fe68 202 /* States of ADC group injected */
Kojto 108:34e6b704fe68 203 #define HAL_ADC_STATE_INJ_BUSY ((uint32_t)0x00001000) /*!< Not available on STM32F0 device: A conversion on group injected is ongoing or can occur (either by auto-injection mode,
Kojto 108:34e6b704fe68 204 external trigger, low power auto power-on, multimode ADC master control) */
Kojto 108:34e6b704fe68 205 #define HAL_ADC_STATE_INJ_EOC ((uint32_t)0x00002000) /*!< Not available on STM32F0 device: Conversion data available on group injected */
Kojto 108:34e6b704fe68 206 #define HAL_ADC_STATE_INJ_JQOVF ((uint32_t)0x00004000) /*!< Not available on STM32F0 device: Not available on STM32F0 device: Injected queue overflow occurrence */
Kojto 108:34e6b704fe68 207
Kojto 108:34e6b704fe68 208 /* States of ADC analog watchdogs */
Kojto 108:34e6b704fe68 209 #define HAL_ADC_STATE_AWD1 ((uint32_t)0x00010000) /*!< Out-of-window occurrence of analog watchdog 1 */
Kojto 108:34e6b704fe68 210 #define HAL_ADC_STATE_AWD2 ((uint32_t)0x00020000) /*!< Not available on STM32F0 device: Out-of-window occurrence of analog watchdog 2 */
Kojto 108:34e6b704fe68 211 #define HAL_ADC_STATE_AWD3 ((uint32_t)0x00040000) /*!< Not available on STM32F0 device: Out-of-window occurrence of analog watchdog 3 */
Kojto 108:34e6b704fe68 212
Kojto 108:34e6b704fe68 213 /* States of ADC multi-mode */
Kojto 108:34e6b704fe68 214 #define HAL_ADC_STATE_MULTIMODE_SLAVE ((uint32_t)0x00100000) /*!< Not available on STM32F0 device: ADC in multimode slave state, controlled by another ADC master ( */
Kojto 108:34e6b704fe68 215
Kojto 93:e188a91d3eaa 216
Kojto 93:e188a91d3eaa 217 /**
Kojto 93:e188a91d3eaa 218 * @brief ADC handle Structure definition
Kojto 93:e188a91d3eaa 219 */
Kojto 93:e188a91d3eaa 220 typedef struct
Kojto 93:e188a91d3eaa 221 {
Kojto 93:e188a91d3eaa 222 ADC_TypeDef *Instance; /*!< Register base address */
Kojto 93:e188a91d3eaa 223
Kojto 93:e188a91d3eaa 224 ADC_InitTypeDef Init; /*!< ADC required parameters */
Kojto 93:e188a91d3eaa 225
Kojto 93:e188a91d3eaa 226 DMA_HandleTypeDef *DMA_Handle; /*!< Pointer DMA Handler */
Kojto 93:e188a91d3eaa 227
Kojto 93:e188a91d3eaa 228 HAL_LockTypeDef Lock; /*!< ADC locking object */
Kojto 93:e188a91d3eaa 229
Kojto 108:34e6b704fe68 230 __IO uint32_t State; /*!< ADC communication state (bitmap of ADC states) */
Kojto 93:e188a91d3eaa 231
Kojto 93:e188a91d3eaa 232 __IO uint32_t ErrorCode; /*!< ADC Error code */
Kojto 93:e188a91d3eaa 233 }ADC_HandleTypeDef;
Kojto 93:e188a91d3eaa 234 /**
Kojto 93:e188a91d3eaa 235 * @}
Kojto 93:e188a91d3eaa 236 */
Kojto 93:e188a91d3eaa 237
Kojto 93:e188a91d3eaa 238
Kojto 93:e188a91d3eaa 239
Kojto 93:e188a91d3eaa 240 /* Exported constants --------------------------------------------------------*/
Kojto 93:e188a91d3eaa 241
Kojto 93:e188a91d3eaa 242 /** @defgroup ADC_Exported_Constants ADC Exported Constants
Kojto 93:e188a91d3eaa 243 * @{
Kojto 93:e188a91d3eaa 244 */
Kojto 93:e188a91d3eaa 245
Kojto 93:e188a91d3eaa 246 /** @defgroup ADC_Error_Code ADC Error Code
Kojto 93:e188a91d3eaa 247 * @{
Kojto 93:e188a91d3eaa 248 */
Kojto 93:e188a91d3eaa 249 #define HAL_ADC_ERROR_NONE ((uint32_t)0x00) /*!< No error */
Kojto 93:e188a91d3eaa 250 #define HAL_ADC_ERROR_INTERNAL ((uint32_t)0x01) /*!< ADC IP internal error: if problem of clocking,
Kojto 93:e188a91d3eaa 251 enable/disable, erroneous state */
Kojto 93:e188a91d3eaa 252 #define HAL_ADC_ERROR_OVR ((uint32_t)0x02) /*!< Overrun error */
Kojto 93:e188a91d3eaa 253 #define HAL_ADC_ERROR_DMA ((uint32_t)0x04) /*!< DMA transfer error */
Kojto 93:e188a91d3eaa 254
Kojto 93:e188a91d3eaa 255 /**
Kojto 93:e188a91d3eaa 256 * @}
Kojto 93:e188a91d3eaa 257 */
Kojto 93:e188a91d3eaa 258
Kojto 93:e188a91d3eaa 259 /** @defgroup ADC_ClockPrescaler ADC ClockPrescaler
Kojto 93:e188a91d3eaa 260 * @{
Kojto 93:e188a91d3eaa 261 */
Kojto 108:34e6b704fe68 262 #define ADC_CLOCK_ASYNC_DIV1 ((uint32_t)0x00000000) /*!< ADC asynchronous clock derived from ADC dedicated HSI */
Kojto 93:e188a91d3eaa 263
Kojto 93:e188a91d3eaa 264 #define ADC_CLOCK_SYNC_PCLK_DIV2 ((uint32_t)ADC_CFGR2_CKMODE_0) /*!< ADC synchronous clock derived from AHB clock divided by a prescaler of 2 */
Kojto 93:e188a91d3eaa 265 #define ADC_CLOCK_SYNC_PCLK_DIV4 ((uint32_t)ADC_CFGR2_CKMODE_1) /*!< ADC synchronous clock derived from AHB clock divided by a prescaler of 4 */
Kojto 93:e188a91d3eaa 266
Kojto 93:e188a91d3eaa 267 /**
Kojto 93:e188a91d3eaa 268 * @}
Kojto 93:e188a91d3eaa 269 */
Kojto 93:e188a91d3eaa 270
Kojto 93:e188a91d3eaa 271 /** @defgroup ADC_Resolution ADC Resolution
Kojto 93:e188a91d3eaa 272 * @{
Kojto 93:e188a91d3eaa 273 */
Kojto 108:34e6b704fe68 274 #define ADC_RESOLUTION_12B ((uint32_t)0x00000000) /*!< ADC 12-bit resolution */
Kojto 108:34e6b704fe68 275 #define ADC_RESOLUTION_10B ((uint32_t)ADC_CFGR1_RES_0) /*!< ADC 10-bit resolution */
Kojto 108:34e6b704fe68 276 #define ADC_RESOLUTION_8B ((uint32_t)ADC_CFGR1_RES_1) /*!< ADC 8-bit resolution */
Kojto 108:34e6b704fe68 277 #define ADC_RESOLUTION_6B ((uint32_t)ADC_CFGR1_RES) /*!< ADC 6-bit resolution */
Kojto 93:e188a91d3eaa 278 /**
Kojto 93:e188a91d3eaa 279 * @}
Kojto 93:e188a91d3eaa 280 */
Kojto 93:e188a91d3eaa 281
Kojto 93:e188a91d3eaa 282 /** @defgroup ADC_Data_align ADC Data_align
Kojto 93:e188a91d3eaa 283 * @{
Kojto 93:e188a91d3eaa 284 */
Kojto 93:e188a91d3eaa 285 #define ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 286 #define ADC_DATAALIGN_LEFT ((uint32_t)ADC_CFGR1_ALIGN)
Kojto 93:e188a91d3eaa 287 /**
Kojto 93:e188a91d3eaa 288 * @}
Kojto 93:e188a91d3eaa 289 */
Kojto 93:e188a91d3eaa 290
Kojto 93:e188a91d3eaa 291 /** @defgroup ADC_Scan_mode ADC Scan mode
Kojto 93:e188a91d3eaa 292 * @{
Kojto 93:e188a91d3eaa 293 */
Kojto 93:e188a91d3eaa 294 /* Note: Scan mode values must be compatible with other STM32 devices having */
Kojto 93:e188a91d3eaa 295 /* a configurable sequencer. */
Kojto 93:e188a91d3eaa 296 /* Scan direction setting values are defined by taking in account */
Kojto 93:e188a91d3eaa 297 /* already defined values for other STM32 devices: */
Kojto 93:e188a91d3eaa 298 /* ADC_SCAN_DISABLE ((uint32_t)0x00000000) */
Kojto 93:e188a91d3eaa 299 /* ADC_SCAN_ENABLE ((uint32_t)0x00000001) */
Kojto 93:e188a91d3eaa 300 /* Scan direction forward is considered as default setting equivalent */
Kojto 93:e188a91d3eaa 301 /* to scan enable. */
Kojto 93:e188a91d3eaa 302 /* Scan direction backward is considered as additional setting. */
Kojto 93:e188a91d3eaa 303 /* In case of migration from another STM32 device, the user will be */
Kojto 93:e188a91d3eaa 304 /* warned of change of setting choices with assert check. */
Kojto 93:e188a91d3eaa 305 #define ADC_SCAN_DIRECTION_FORWARD ((uint32_t)0x00000001) /*!< Scan direction forward: from channel 0 to channel 18 */
Kojto 93:e188a91d3eaa 306 #define ADC_SCAN_DIRECTION_BACKWARD ((uint32_t)0x00000002) /*!< Scan direction backward: from channel 18 to channel 0 */
Kojto 93:e188a91d3eaa 307
Kojto 93:e188a91d3eaa 308 #define ADC_SCAN_ENABLE ADC_SCAN_DIRECTION_FORWARD /* For compatibility with other STM32 devices */
Kojto 93:e188a91d3eaa 309
Kojto 93:e188a91d3eaa 310 /**
Kojto 93:e188a91d3eaa 311 * @}
Kojto 93:e188a91d3eaa 312 */
Kojto 93:e188a91d3eaa 313
Kojto 93:e188a91d3eaa 314 /** @defgroup ADC_External_trigger_edge_Regular ADC External trigger edge Regular
Kojto 93:e188a91d3eaa 315 * @{
Kojto 93:e188a91d3eaa 316 */
Kojto 93:e188a91d3eaa 317 #define ADC_EXTERNALTRIGCONVEDGE_NONE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 318 #define ADC_EXTERNALTRIGCONVEDGE_RISING ((uint32_t)ADC_CFGR1_EXTEN_0)
Kojto 93:e188a91d3eaa 319 #define ADC_EXTERNALTRIGCONVEDGE_FALLING ((uint32_t)ADC_CFGR1_EXTEN_1)
Kojto 93:e188a91d3eaa 320 #define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING ((uint32_t)ADC_CFGR1_EXTEN)
Kojto 93:e188a91d3eaa 321 /**
Kojto 93:e188a91d3eaa 322 * @}
Kojto 93:e188a91d3eaa 323 */
Kojto 93:e188a91d3eaa 324
Kojto 93:e188a91d3eaa 325 /** @defgroup ADC_EOCSelection ADC EOCSelection
Kojto 93:e188a91d3eaa 326 * @{
Kojto 93:e188a91d3eaa 327 */
Kojto 108:34e6b704fe68 328 #define ADC_EOC_SINGLE_CONV ((uint32_t) ADC_ISR_EOC)
Kojto 108:34e6b704fe68 329 #define ADC_EOC_SEQ_CONV ((uint32_t) ADC_ISR_EOS)
Kojto 108:34e6b704fe68 330 #define ADC_EOC_SINGLE_SEQ_CONV ((uint32_t)(ADC_ISR_EOC | ADC_ISR_EOS)) /*!< reserved for future use */
Kojto 93:e188a91d3eaa 331 /**
Kojto 93:e188a91d3eaa 332 * @}
Kojto 93:e188a91d3eaa 333 */
Kojto 93:e188a91d3eaa 334
Kojto 93:e188a91d3eaa 335 /** @defgroup ADC_Overrun ADC Overrun
Kojto 93:e188a91d3eaa 336 * @{
Kojto 93:e188a91d3eaa 337 */
Kojto 108:34e6b704fe68 338 #define ADC_OVR_DATA_OVERWRITTEN ((uint32_t)0x00000000)
Kojto 108:34e6b704fe68 339 #define ADC_OVR_DATA_PRESERVED ((uint32_t)0x00000001)
Kojto 93:e188a91d3eaa 340 /**
Kojto 93:e188a91d3eaa 341 * @}
Kojto 93:e188a91d3eaa 342 */
Kojto 93:e188a91d3eaa 343
Kojto 93:e188a91d3eaa 344 /** @defgroup ADC_rank ADC rank
Kojto 93:e188a91d3eaa 345 * @{
Kojto 93:e188a91d3eaa 346 */
Kojto 108:34e6b704fe68 347 #define ADC_RANK_CHANNEL_NUMBER ((uint32_t)0x00001000) /*!< Enable the rank of the selected channels. Number of ranks in the sequence is defined by number of channels enabled, rank of each channel is defined by channel number (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...) */
Kojto 93:e188a91d3eaa 348 #define ADC_RANK_NONE ((uint32_t)0x00001001) /*!< Disable the selected rank (selected channel) from sequencer */
Kojto 93:e188a91d3eaa 349 /**
Kojto 93:e188a91d3eaa 350 * @}
Kojto 93:e188a91d3eaa 351 */
Kojto 93:e188a91d3eaa 352
Kojto 93:e188a91d3eaa 353 /** @defgroup ADC_sampling_times ADC sampling times
Kojto 93:e188a91d3eaa 354 * @{
Kojto 108:34e6b704fe68 355 */
Kojto 108:34e6b704fe68 356 /* Note: Parameter "ADC_SAMPLETIME_1CYCLE_5" defined with a dummy bit */
Kojto 108:34e6b704fe68 357 /* to distinguish this parameter versus reset value 0x00000000, */
Kojto 108:34e6b704fe68 358 /* in the context of management of parameters "SamplingTimeCommon" */
Kojto 108:34e6b704fe68 359 /* and "SamplingTime" (obsolete)). */
Kojto 108:34e6b704fe68 360 #define ADC_SAMPLETIME_1CYCLE_5 ((uint32_t)0x10000000) /*!< Sampling time 1.5 ADC clock cycle */
Kojto 93:e188a91d3eaa 361 #define ADC_SAMPLETIME_7CYCLES_5 ((uint32_t) ADC_SMPR_SMP_0) /*!< Sampling time 7.5 ADC clock cycles */
Kojto 93:e188a91d3eaa 362 #define ADC_SAMPLETIME_13CYCLES_5 ((uint32_t) ADC_SMPR_SMP_1) /*!< Sampling time 13.5 ADC clock cycles */
Kojto 93:e188a91d3eaa 363 #define ADC_SAMPLETIME_28CYCLES_5 ((uint32_t)(ADC_SMPR_SMP_1 | ADC_SMPR_SMP_0)) /*!< Sampling time 28.5 ADC clock cycles */
Kojto 93:e188a91d3eaa 364 #define ADC_SAMPLETIME_41CYCLES_5 ((uint32_t) ADC_SMPR_SMP_2) /*!< Sampling time 41.5 ADC clock cycles */
Kojto 93:e188a91d3eaa 365 #define ADC_SAMPLETIME_55CYCLES_5 ((uint32_t)(ADC_SMPR_SMP_2 | ADC_SMPR_SMP_0)) /*!< Sampling time 55.5 ADC clock cycles */
Kojto 93:e188a91d3eaa 366 #define ADC_SAMPLETIME_71CYCLES_5 ((uint32_t)(ADC_SMPR_SMP_2 | ADC_SMPR_SMP_1)) /*!< Sampling time 71.5 ADC clock cycles */
Kojto 93:e188a91d3eaa 367 #define ADC_SAMPLETIME_239CYCLES_5 ((uint32_t) ADC_SMPR_SMP) /*!< Sampling time 239.5 ADC clock cycles */
Kojto 93:e188a91d3eaa 368 /**
Kojto 93:e188a91d3eaa 369 * @}
Kojto 93:e188a91d3eaa 370 */
Kojto 93:e188a91d3eaa 371
Kojto 93:e188a91d3eaa 372 /** @defgroup ADC_analog_watchdog_mode ADC analog watchdog mode
Kojto 93:e188a91d3eaa 373 * @{
Kojto 93:e188a91d3eaa 374 */
Kojto 93:e188a91d3eaa 375 #define ADC_ANALOGWATCHDOG_NONE ((uint32_t) 0x00000000)
Kojto 93:e188a91d3eaa 376 #define ADC_ANALOGWATCHDOG_SINGLE_REG ((uint32_t)(ADC_CFGR1_AWDSGL | ADC_CFGR1_AWDEN))
Kojto 93:e188a91d3eaa 377 #define ADC_ANALOGWATCHDOG_ALL_REG ((uint32_t) ADC_CFGR1_AWDEN)
Kojto 93:e188a91d3eaa 378 /**
Kojto 93:e188a91d3eaa 379 * @}
Kojto 93:e188a91d3eaa 380 */
Kojto 93:e188a91d3eaa 381
Kojto 93:e188a91d3eaa 382 /** @defgroup ADC_Event_type ADC Event type
Kojto 93:e188a91d3eaa 383 * @{
Kojto 93:e188a91d3eaa 384 */
Kojto 108:34e6b704fe68 385 #define ADC_AWD_EVENT ((uint32_t)ADC_FLAG_AWD) /*!< ADC Analog watchdog 1 event */
Kojto 108:34e6b704fe68 386 #define ADC_OVR_EVENT ((uint32_t)ADC_FLAG_OVR) /*!< ADC overrun event */
Kojto 93:e188a91d3eaa 387 /**
Kojto 93:e188a91d3eaa 388 * @}
Kojto 93:e188a91d3eaa 389 */
Kojto 93:e188a91d3eaa 390
Kojto 93:e188a91d3eaa 391 /** @defgroup ADC_interrupts_definition ADC interrupts definition
Kojto 93:e188a91d3eaa 392 * @{
Kojto 93:e188a91d3eaa 393 */
Kojto 93:e188a91d3eaa 394 #define ADC_IT_AWD ADC_IER_AWDIE /*!< ADC Analog watchdog interrupt source */
Kojto 93:e188a91d3eaa 395 #define ADC_IT_OVR ADC_IER_OVRIE /*!< ADC overrun interrupt source */
Kojto 93:e188a91d3eaa 396 #define ADC_IT_EOS ADC_IER_EOSEQIE /*!< ADC End of Regular sequence of Conversions interrupt source */
Kojto 93:e188a91d3eaa 397 #define ADC_IT_EOC ADC_IER_EOCIE /*!< ADC End of Regular Conversion interrupt source */
Kojto 93:e188a91d3eaa 398 #define ADC_IT_EOSMP ADC_IER_EOSMPIE /*!< ADC End of Sampling interrupt source */
Kojto 93:e188a91d3eaa 399 #define ADC_IT_RDY ADC_IER_ADRDYIE /*!< ADC Ready interrupt source */
Kojto 93:e188a91d3eaa 400 /**
Kojto 93:e188a91d3eaa 401 * @}
Kojto 93:e188a91d3eaa 402 */
Kojto 93:e188a91d3eaa 403
Kojto 93:e188a91d3eaa 404 /** @defgroup ADC_flags_definition ADC flags definition
Kojto 93:e188a91d3eaa 405 * @{
Kojto 93:e188a91d3eaa 406 */
Kojto 93:e188a91d3eaa 407 #define ADC_FLAG_AWD ADC_ISR_AWD /*!< ADC Analog watchdog flag */
Kojto 93:e188a91d3eaa 408 #define ADC_FLAG_OVR ADC_ISR_OVR /*!< ADC overrun flag */
Kojto 93:e188a91d3eaa 409 #define ADC_FLAG_EOS ADC_ISR_EOSEQ /*!< ADC End of Regular sequence of Conversions flag */
Kojto 93:e188a91d3eaa 410 #define ADC_FLAG_EOC ADC_ISR_EOC /*!< ADC End of Regular Conversion flag */
Kojto 93:e188a91d3eaa 411 #define ADC_FLAG_EOSMP ADC_ISR_EOSMP /*!< ADC End of Sampling flag */
Kojto 93:e188a91d3eaa 412 #define ADC_FLAG_RDY ADC_ISR_ADRDY /*!< ADC Ready flag */
Kojto 93:e188a91d3eaa 413 /**
Kojto 93:e188a91d3eaa 414 * @}
Kojto 93:e188a91d3eaa 415 */
Kojto 93:e188a91d3eaa 416
Kojto 108:34e6b704fe68 417 /**
Kojto 108:34e6b704fe68 418 * @}
Kojto 93:e188a91d3eaa 419 */
Kojto 108:34e6b704fe68 420
Kojto 108:34e6b704fe68 421
Kojto 108:34e6b704fe68 422 /* Private constants ---------------------------------------------------------*/
Kojto 108:34e6b704fe68 423
Kojto 108:34e6b704fe68 424 /** @addtogroup ADC_Private_Constants ADC Private Constants
Kojto 108:34e6b704fe68 425 * @{
Kojto 108:34e6b704fe68 426 */
Kojto 108:34e6b704fe68 427
Kojto 108:34e6b704fe68 428 /** @defgroup ADC_Internal_HAL_driver_Ext_trig_src_Regular ADC Internal HAL driver Ext trig src Regular
Kojto 108:34e6b704fe68 429 * @{
Kojto 108:34e6b704fe68 430 */
Kojto 108:34e6b704fe68 431
Kojto 108:34e6b704fe68 432 /* List of external triggers of regular group for ADC1: */
Kojto 108:34e6b704fe68 433 /* (used internally by HAL driver. To not use into HAL structure parameters) */
Kojto 108:34e6b704fe68 434 #define ADC1_2_EXTERNALTRIG_T1_TRGO ((uint32_t)0x00000000)
Kojto 108:34e6b704fe68 435 #define ADC1_2_EXTERNALTRIG_T1_CC4 ((uint32_t)ADC_CFGR1_EXTSEL_0)
Kojto 108:34e6b704fe68 436 #define ADC1_2_EXTERNALTRIG_T2_TRGO ((uint32_t)ADC_CFGR1_EXTSEL_1)
Kojto 108:34e6b704fe68 437 #define ADC1_2_EXTERNALTRIG_T3_TRGO ((uint32_t)(ADC_CFGR1_EXTSEL_1 | ADC_CFGR1_EXTSEL_0))
Kojto 108:34e6b704fe68 438 #define ADC1_2_EXTERNALTRIG_T15_TRGO ((uint32_t)ADC_CFGR1_EXTSEL_2)
Kojto 93:e188a91d3eaa 439 /**
Kojto 93:e188a91d3eaa 440 * @}
Kojto 93:e188a91d3eaa 441 */
Kojto 93:e188a91d3eaa 442
Kojto 108:34e6b704fe68 443 /* Combination of all post-conversion flags bits: EOC/EOS, OVR, AWD */
Kojto 108:34e6b704fe68 444 #define ADC_FLAG_POSTCONV_ALL (ADC_FLAG_AWD | ADC_FLAG_OVR | ADC_FLAG_EOS | ADC_FLAG_EOC)
Kojto 93:e188a91d3eaa 445
Kojto 93:e188a91d3eaa 446 /**
Kojto 93:e188a91d3eaa 447 * @}
Kojto 108:34e6b704fe68 448 */
Kojto 108:34e6b704fe68 449
Kojto 108:34e6b704fe68 450
Kojto 108:34e6b704fe68 451 /* Exported macro ------------------------------------------------------------*/
Kojto 93:e188a91d3eaa 452
Kojto 93:e188a91d3eaa 453 /** @defgroup ADC_Exported_Macros ADC Exported Macros
Kojto 93:e188a91d3eaa 454 * @{
Kojto 93:e188a91d3eaa 455 */
Kojto 108:34e6b704fe68 456 /* Macro for internal HAL driver usage, and possibly can be used into code of */
Kojto 108:34e6b704fe68 457 /* final user. */
Kojto 108:34e6b704fe68 458
Kojto 108:34e6b704fe68 459 /**
Kojto 108:34e6b704fe68 460 * @brief Enable the ADC peripheral
Kojto 108:34e6b704fe68 461 * @param __HANDLE__: ADC handle
Kojto 108:34e6b704fe68 462 * @retval None
Kojto 108:34e6b704fe68 463 */
Kojto 108:34e6b704fe68 464 #define __HAL_ADC_ENABLE(__HANDLE__) \
Kojto 108:34e6b704fe68 465 ((__HANDLE__)->Instance->CR |= ADC_CR_ADEN)
Kojto 108:34e6b704fe68 466
Kojto 108:34e6b704fe68 467 /**
Kojto 108:34e6b704fe68 468 * @brief Disable the ADC peripheral
Kojto 108:34e6b704fe68 469 * @param __HANDLE__: ADC handle
Kojto 108:34e6b704fe68 470 * @retval None
Kojto 108:34e6b704fe68 471 */
Kojto 108:34e6b704fe68 472 #define __HAL_ADC_DISABLE(__HANDLE__) \
Kojto 108:34e6b704fe68 473 do{ \
Kojto 108:34e6b704fe68 474 (__HANDLE__)->Instance->CR |= ADC_CR_ADDIS; \
Kojto 108:34e6b704fe68 475 __HAL_ADC_CLEAR_FLAG((__HANDLE__), (ADC_FLAG_EOSMP | ADC_FLAG_RDY)); \
Kojto 108:34e6b704fe68 476 } while(0)
Kojto 108:34e6b704fe68 477
Kojto 108:34e6b704fe68 478 /**
Kojto 108:34e6b704fe68 479 * @brief Enable the ADC end of conversion interrupt.
Kojto 108:34e6b704fe68 480 * @param __HANDLE__: ADC handle
Kojto 108:34e6b704fe68 481 * @param __INTERRUPT__: ADC Interrupt
Kojto 108:34e6b704fe68 482 * This parameter can be any combination of the following values:
Kojto 108:34e6b704fe68 483 * @arg ADC_IT_EOC: ADC End of Regular Conversion interrupt source
Kojto 108:34e6b704fe68 484 * @arg ADC_IT_EOS: ADC End of Regular sequence of Conversions interrupt source
Kojto 108:34e6b704fe68 485 * @arg ADC_IT_AWD: ADC Analog watchdog interrupt source
Kojto 108:34e6b704fe68 486 * @arg ADC_IT_OVR: ADC overrun interrupt source
Kojto 108:34e6b704fe68 487 * @arg ADC_IT_EOSMP: ADC End of Sampling interrupt source
Kojto 108:34e6b704fe68 488 * @arg ADC_IT_RDY: ADC Ready interrupt source
Kojto 108:34e6b704fe68 489 * @retval None
Kojto 108:34e6b704fe68 490 */
Kojto 108:34e6b704fe68 491 #define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) \
Kojto 108:34e6b704fe68 492 (((__HANDLE__)->Instance->IER) |= (__INTERRUPT__))
Kojto 108:34e6b704fe68 493
Kojto 108:34e6b704fe68 494 /**
Kojto 108:34e6b704fe68 495 * @brief Disable the ADC end of conversion interrupt.
Kojto 108:34e6b704fe68 496 * @param __HANDLE__: ADC handle
Kojto 108:34e6b704fe68 497 * @param __INTERRUPT__: ADC Interrupt
Kojto 108:34e6b704fe68 498 * This parameter can be any combination of the following values:
Kojto 108:34e6b704fe68 499 * @arg ADC_IT_EOC: ADC End of Regular Conversion interrupt source
Kojto 108:34e6b704fe68 500 * @arg ADC_IT_EOS: ADC End of Regular sequence of Conversions interrupt source
Kojto 108:34e6b704fe68 501 * @arg ADC_IT_AWD: ADC Analog watchdog interrupt source
Kojto 108:34e6b704fe68 502 * @arg ADC_IT_OVR: ADC overrun interrupt source
Kojto 108:34e6b704fe68 503 * @arg ADC_IT_EOSMP: ADC End of Sampling interrupt source
Kojto 108:34e6b704fe68 504 * @arg ADC_IT_RDY: ADC Ready interrupt source
Kojto 108:34e6b704fe68 505 * @retval None
Kojto 108:34e6b704fe68 506 */
Kojto 108:34e6b704fe68 507 #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) \
Kojto 108:34e6b704fe68 508 (((__HANDLE__)->Instance->IER) &= ~(__INTERRUPT__))
Kojto 108:34e6b704fe68 509
Kojto 108:34e6b704fe68 510 /** @brief Checks if the specified ADC interrupt source is enabled or disabled.
Kojto 108:34e6b704fe68 511 * @param __HANDLE__: ADC handle
Kojto 108:34e6b704fe68 512 * @param __INTERRUPT__: ADC interrupt source to check
Kojto 108:34e6b704fe68 513 * This parameter can be any combination of the following values:
Kojto 108:34e6b704fe68 514 * @arg ADC_IT_EOC: ADC End of Regular Conversion interrupt source
Kojto 108:34e6b704fe68 515 * @arg ADC_IT_EOS: ADC End of Regular sequence of Conversions interrupt source
Kojto 108:34e6b704fe68 516 * @arg ADC_IT_AWD: ADC Analog watchdog interrupt source
Kojto 108:34e6b704fe68 517 * @arg ADC_IT_OVR: ADC overrun interrupt source
Kojto 108:34e6b704fe68 518 * @arg ADC_IT_EOSMP: ADC End of Sampling interrupt source
Kojto 108:34e6b704fe68 519 * @arg ADC_IT_RDY: ADC Ready interrupt source
Kojto 108:34e6b704fe68 520 * @retval State ofinterruption (SET or RESET)
Kojto 108:34e6b704fe68 521 */
Kojto 108:34e6b704fe68 522 #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \
Kojto 108:34e6b704fe68 523 (((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__))
Kojto 108:34e6b704fe68 524
Kojto 108:34e6b704fe68 525 /**
Kojto 108:34e6b704fe68 526 * @brief Get the selected ADC's flag status.
Kojto 108:34e6b704fe68 527 * @param __HANDLE__: ADC handle
Kojto 108:34e6b704fe68 528 * @param __FLAG__: ADC flag
Kojto 108:34e6b704fe68 529 * This parameter can be any combination of the following values:
Kojto 108:34e6b704fe68 530 * @arg ADC_FLAG_EOC: ADC End of Regular conversion flag
Kojto 108:34e6b704fe68 531 * @arg ADC_FLAG_EOS: ADC End of Regular sequence of Conversions flag
Kojto 108:34e6b704fe68 532 * @arg ADC_FLAG_AWD: ADC Analog watchdog flag
Kojto 108:34e6b704fe68 533 * @arg ADC_FLAG_OVR: ADC overrun flag
Kojto 108:34e6b704fe68 534 * @arg ADC_FLAG_EOSMP: ADC End of Sampling flag
Kojto 108:34e6b704fe68 535 * @arg ADC_FLAG_RDY: ADC Ready flag
Kojto 108:34e6b704fe68 536 * @retval None
Kojto 108:34e6b704fe68 537 */
Kojto 108:34e6b704fe68 538 #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) \
Kojto 108:34e6b704fe68 539 ((((__HANDLE__)->Instance->ISR) & (__FLAG__)) == (__FLAG__))
Kojto 108:34e6b704fe68 540
Kojto 108:34e6b704fe68 541 /**
Kojto 108:34e6b704fe68 542 * @brief Clear the ADC's pending flags
Kojto 108:34e6b704fe68 543 * @param __HANDLE__: ADC handle
Kojto 108:34e6b704fe68 544 * @param __FLAG__: ADC flag
Kojto 108:34e6b704fe68 545 * This parameter can be any combination of the following values:
Kojto 108:34e6b704fe68 546 * @arg ADC_FLAG_EOC: ADC End of Regular conversion flag
Kojto 108:34e6b704fe68 547 * @arg ADC_FLAG_EOS: ADC End of Regular sequence of Conversions flag
Kojto 108:34e6b704fe68 548 * @arg ADC_FLAG_AWD: ADC Analog watchdog flag
Kojto 108:34e6b704fe68 549 * @arg ADC_FLAG_OVR: ADC overrun flag
Kojto 108:34e6b704fe68 550 * @arg ADC_FLAG_EOSMP: ADC End of Sampling flag
Kojto 108:34e6b704fe68 551 * @arg ADC_FLAG_RDY: ADC Ready flag
Kojto 108:34e6b704fe68 552 * @retval None
Kojto 108:34e6b704fe68 553 */
Kojto 108:34e6b704fe68 554 /* Note: bit cleared bit by writing 1 (writing 0 has no effect on any bit of register ISR) */
Kojto 108:34e6b704fe68 555 #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) \
Kojto 108:34e6b704fe68 556 (((__HANDLE__)->Instance->ISR) = (__FLAG__))
Kojto 108:34e6b704fe68 557
Kojto 93:e188a91d3eaa 558 /** @brief Reset ADC handle state
Kojto 93:e188a91d3eaa 559 * @param __HANDLE__: ADC handle
Kojto 93:e188a91d3eaa 560 * @retval None
Kojto 93:e188a91d3eaa 561 */
Kojto 108:34e6b704fe68 562 #define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) \
Kojto 108:34e6b704fe68 563 ((__HANDLE__)->State = HAL_ADC_STATE_RESET)
Kojto 108:34e6b704fe68 564
Kojto 108:34e6b704fe68 565 /**
Kojto 108:34e6b704fe68 566 * @}
Kojto 108:34e6b704fe68 567 */
Kojto 108:34e6b704fe68 568
Kojto 108:34e6b704fe68 569
Kojto 108:34e6b704fe68 570 /* Private macro -------------------------------------------------------------*/
Kojto 108:34e6b704fe68 571
Kojto 108:34e6b704fe68 572 /** @defgroup ADC_Private_Macros ADC Private Macros
Kojto 108:34e6b704fe68 573 * @{
Kojto 108:34e6b704fe68 574 */
Kojto 108:34e6b704fe68 575 /* Macro reserved for internal HAL driver usage, not intended to be used in */
Kojto 108:34e6b704fe68 576 /* code of final user. */
Kojto 108:34e6b704fe68 577
Kojto 93:e188a91d3eaa 578
Kojto 108:34e6b704fe68 579 /**
Kojto 108:34e6b704fe68 580 * @brief Verification of hardware constraints before ADC can be enabled
Kojto 108:34e6b704fe68 581 * @param __HANDLE__: ADC handle
Kojto 108:34e6b704fe68 582 * @retval SET (ADC can be enabled) or RESET (ADC cannot be enabled)
Kojto 108:34e6b704fe68 583 */
Kojto 108:34e6b704fe68 584 #define ADC_ENABLING_CONDITIONS(__HANDLE__) \
Kojto 108:34e6b704fe68 585 (( ( ((__HANDLE__)->Instance->CR) & \
Kojto 108:34e6b704fe68 586 (ADC_CR_ADCAL | ADC_CR_ADSTP | ADC_CR_ADSTART | ADC_CR_ADDIS | ADC_CR_ADEN) \
Kojto 108:34e6b704fe68 587 ) == RESET \
Kojto 108:34e6b704fe68 588 ) ? SET : RESET)
Kojto 108:34e6b704fe68 589
Kojto 108:34e6b704fe68 590 /**
Kojto 108:34e6b704fe68 591 * @brief Verification of hardware constraints before ADC can be disabled
Kojto 108:34e6b704fe68 592 * @param __HANDLE__: ADC handle
Kojto 108:34e6b704fe68 593 * @retval SET (ADC can be disabled) or RESET (ADC cannot be disabled)
Kojto 108:34e6b704fe68 594 */
Kojto 108:34e6b704fe68 595 #define ADC_DISABLING_CONDITIONS(__HANDLE__) \
Kojto 108:34e6b704fe68 596 (( ( ((__HANDLE__)->Instance->CR) & \
Kojto 108:34e6b704fe68 597 (ADC_CR_ADSTART | ADC_CR_ADEN)) == ADC_CR_ADEN \
Kojto 108:34e6b704fe68 598 ) ? SET : RESET)
Kojto 93:e188a91d3eaa 599
Kojto 93:e188a91d3eaa 600 /**
Kojto 93:e188a91d3eaa 601 * @brief Verification of ADC state: enabled or disabled
Kojto 93:e188a91d3eaa 602 * @param __HANDLE__: ADC handle
Kojto 93:e188a91d3eaa 603 * @retval SET (ADC enabled) or RESET (ADC disabled)
Kojto 93:e188a91d3eaa 604 */
Kojto 93:e188a91d3eaa 605 /* Note: If low power mode AutoPowerOff is enabled, power-on/off phases are */
Kojto 93:e188a91d3eaa 606 /* performed automatically by hardware and flag ADC_FLAG_RDY is not */
Kojto 93:e188a91d3eaa 607 /* set. */
Kojto 108:34e6b704fe68 608 #define ADC_IS_ENABLE(__HANDLE__) \
Kojto 108:34e6b704fe68 609 (( ((((__HANDLE__)->Instance->CR) & (ADC_CR_ADEN | ADC_CR_ADDIS)) == ADC_CR_ADEN) && \
Kojto 108:34e6b704fe68 610 (((((__HANDLE__)->Instance->ISR) & ADC_FLAG_RDY) == ADC_FLAG_RDY) || \
Kojto 108:34e6b704fe68 611 ((((__HANDLE__)->Instance->CFGR1) & ADC_CFGR1_AUTOFF) == ADC_CFGR1_AUTOFF) ) \
Kojto 108:34e6b704fe68 612 ) ? SET : RESET)
Kojto 93:e188a91d3eaa 613
Kojto 93:e188a91d3eaa 614 /**
Kojto 93:e188a91d3eaa 615 * @brief Test if conversion trigger of regular group is software start
Kojto 93:e188a91d3eaa 616 * or external trigger.
Kojto 93:e188a91d3eaa 617 * @param __HANDLE__: ADC handle
Kojto 93:e188a91d3eaa 618 * @retval SET (software start) or RESET (external trigger)
Kojto 93:e188a91d3eaa 619 */
Kojto 108:34e6b704fe68 620 #define ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \
Kojto 108:34e6b704fe68 621 (((__HANDLE__)->Instance->CFGR1 & ADC_CFGR1_EXTEN) == RESET)
Kojto 93:e188a91d3eaa 622
Kojto 93:e188a91d3eaa 623 /**
Kojto 93:e188a91d3eaa 624 * @brief Check if no conversion on going on regular group
Kojto 93:e188a91d3eaa 625 * @param __HANDLE__: ADC handle
Kojto 93:e188a91d3eaa 626 * @retval SET (conversion is on going) or RESET (no conversion is on going)
Kojto 93:e188a91d3eaa 627 */
Kojto 108:34e6b704fe68 628 #define ADC_IS_CONVERSION_ONGOING_REGULAR(__HANDLE__) \
Kojto 108:34e6b704fe68 629 (( (((__HANDLE__)->Instance->CR) & ADC_CR_ADSTART) == RESET \
Kojto 108:34e6b704fe68 630 ) ? RESET : SET)
Kojto 93:e188a91d3eaa 631
Kojto 93:e188a91d3eaa 632 /**
Kojto 93:e188a91d3eaa 633 * @brief Returns resolution bits in CFGR1 register: RES[1:0].
Kojto 93:e188a91d3eaa 634 * Returned value is among parameters to @ref ADC_Resolution.
Kojto 93:e188a91d3eaa 635 * @param __HANDLE__: ADC handle
Kojto 93:e188a91d3eaa 636 * @retval None
Kojto 93:e188a91d3eaa 637 */
Kojto 108:34e6b704fe68 638 #define ADC_GET_RESOLUTION(__HANDLE__) \
Kojto 108:34e6b704fe68 639 (((__HANDLE__)->Instance->CFGR1) & ADC_CFGR1_RES)
Kojto 93:e188a91d3eaa 640
Kojto 93:e188a91d3eaa 641 /**
Kojto 93:e188a91d3eaa 642 * @brief Returns ADC sample time bits in SMPR register: SMP[2:0].
Kojto 93:e188a91d3eaa 643 * Returned value is among parameters to @ref ADC_Resolution.
Kojto 93:e188a91d3eaa 644 * @param __HANDLE__: ADC handle
Kojto 93:e188a91d3eaa 645 * @retval None
Kojto 93:e188a91d3eaa 646 */
Kojto 108:34e6b704fe68 647 #define ADC_GET_SAMPLINGTIME(__HANDLE__) \
Kojto 108:34e6b704fe68 648 (((__HANDLE__)->Instance->SMPR) & ADC_SMPR_SMP)
Kojto 93:e188a91d3eaa 649
Kojto 93:e188a91d3eaa 650 /**
Kojto 108:34e6b704fe68 651 * @brief Simultaneously clears and sets specific bits of the handle State
Kojto 108:34e6b704fe68 652 * @note: ADC_STATE_CLR_SET() macro is merely aliased to generic macro MODIFY_REG(),
Kojto 108:34e6b704fe68 653 * the first parameter is the ADC handle State, the second parameter is the
Kojto 108:34e6b704fe68 654 * bit field to clear, the third and last parameter is the bit field to set.
Kojto 93:e188a91d3eaa 655 * @retval None
Kojto 93:e188a91d3eaa 656 */
Kojto 108:34e6b704fe68 657 #define ADC_STATE_CLR_SET MODIFY_REG
Kojto 93:e188a91d3eaa 658
Kojto 93:e188a91d3eaa 659 /**
Kojto 93:e188a91d3eaa 660 * @brief Clear ADC error code (set it to error code: "no error")
Kojto 93:e188a91d3eaa 661 * @param __HANDLE__: ADC handle
Kojto 93:e188a91d3eaa 662 * @retval None
Kojto 93:e188a91d3eaa 663 */
Kojto 108:34e6b704fe68 664 #define ADC_CLEAR_ERRORCODE(__HANDLE__) \
Kojto 108:34e6b704fe68 665 ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)
Kojto 93:e188a91d3eaa 666
Kojto 93:e188a91d3eaa 667
Kojto 93:e188a91d3eaa 668 /**
Kojto 93:e188a91d3eaa 669 * @brief Configure the channel number into channel selection register
Kojto 93:e188a91d3eaa 670 * @param _CHANNEL_: ADC Channel
Kojto 93:e188a91d3eaa 671 * @retval None
Kojto 93:e188a91d3eaa 672 */
Kojto 93:e188a91d3eaa 673 /* This function converts ADC channels from numbers (see defgroup ADC_channels)
Kojto 93:e188a91d3eaa 674 to bitfields, to get the equivalence of CMSIS channels:
Kojto 93:e188a91d3eaa 675 ADC_CHANNEL_0 ((uint32_t) ADC_CHSELR_CHSEL0)
Kojto 93:e188a91d3eaa 676 ADC_CHANNEL_1 ((uint32_t) ADC_CHSELR_CHSEL1)
Kojto 93:e188a91d3eaa 677 ADC_CHANNEL_2 ((uint32_t) ADC_CHSELR_CHSEL2)
Kojto 93:e188a91d3eaa 678 ADC_CHANNEL_3 ((uint32_t) ADC_CHSELR_CHSEL3)
Kojto 93:e188a91d3eaa 679 ADC_CHANNEL_4 ((uint32_t) ADC_CHSELR_CHSEL4)
Kojto 93:e188a91d3eaa 680 ADC_CHANNEL_5 ((uint32_t) ADC_CHSELR_CHSEL5)
Kojto 93:e188a91d3eaa 681 ADC_CHANNEL_6 ((uint32_t) ADC_CHSELR_CHSEL6)
Kojto 93:e188a91d3eaa 682 ADC_CHANNEL_7 ((uint32_t) ADC_CHSELR_CHSEL7)
Kojto 93:e188a91d3eaa 683 ADC_CHANNEL_8 ((uint32_t) ADC_CHSELR_CHSEL8)
Kojto 93:e188a91d3eaa 684 ADC_CHANNEL_9 ((uint32_t) ADC_CHSELR_CHSEL9)
Kojto 93:e188a91d3eaa 685 ADC_CHANNEL_10 ((uint32_t) ADC_CHSELR_CHSEL10)
Kojto 93:e188a91d3eaa 686 ADC_CHANNEL_11 ((uint32_t) ADC_CHSELR_CHSEL11)
Kojto 93:e188a91d3eaa 687 ADC_CHANNEL_12 ((uint32_t) ADC_CHSELR_CHSEL12)
Kojto 93:e188a91d3eaa 688 ADC_CHANNEL_13 ((uint32_t) ADC_CHSELR_CHSEL13)
Kojto 93:e188a91d3eaa 689 ADC_CHANNEL_14 ((uint32_t) ADC_CHSELR_CHSEL14)
Kojto 93:e188a91d3eaa 690 ADC_CHANNEL_15 ((uint32_t) ADC_CHSELR_CHSEL15)
Kojto 93:e188a91d3eaa 691 ADC_CHANNEL_16 ((uint32_t) ADC_CHSELR_CHSEL16)
Kojto 93:e188a91d3eaa 692 ADC_CHANNEL_17 ((uint32_t) ADC_CHSELR_CHSEL17)
Kojto 93:e188a91d3eaa 693 ADC_CHANNEL_18 ((uint32_t) ADC_CHSELR_CHSEL18)
Kojto 93:e188a91d3eaa 694 */
Kojto 108:34e6b704fe68 695 #define ADC_CHSELR_CHANNEL(_CHANNEL_) \
Kojto 108:34e6b704fe68 696 ( 1U << (_CHANNEL_))
Kojto 93:e188a91d3eaa 697
Kojto 108:34e6b704fe68 698 /**
Kojto 108:34e6b704fe68 699 * @brief Set the ADC's sample time
Kojto 108:34e6b704fe68 700 * @param _SAMPLETIME_: Sample time parameter.
Kojto 108:34e6b704fe68 701 * @retval None
Kojto 93:e188a91d3eaa 702 */
Kojto 108:34e6b704fe68 703 /* Note: ADC sampling time set using mask ADC_SMPR_SMP due to parameter */
Kojto 108:34e6b704fe68 704 /* "ADC_SAMPLETIME_1CYCLE_5" defined with a dummy bit (bit used to */
Kojto 108:34e6b704fe68 705 /* distinguish this parameter versus reset value 0x00000000, */
Kojto 108:34e6b704fe68 706 /* in the context of management of parameters "SamplingTimeCommon" */
Kojto 108:34e6b704fe68 707 /* and "SamplingTime" (obsolete)). */
Kojto 108:34e6b704fe68 708 #define ADC_SMPR_SET(_SAMPLETIME_) \
Kojto 108:34e6b704fe68 709 ((_SAMPLETIME_) & (ADC_SMPR_SMP))
Kojto 93:e188a91d3eaa 710
Kojto 93:e188a91d3eaa 711 /**
Kojto 93:e188a91d3eaa 712 * @brief Set the Analog Watchdog 1 channel.
Kojto 93:e188a91d3eaa 713 * @param _CHANNEL_: channel to be monitored by Analog Watchdog 1.
Kojto 93:e188a91d3eaa 714 * @retval None
Kojto 93:e188a91d3eaa 715 */
Kojto 108:34e6b704fe68 716 #define ADC_CFGR_AWDCH(_CHANNEL_) \
Kojto 108:34e6b704fe68 717 ((_CHANNEL_) << 26)
Kojto 93:e188a91d3eaa 718
Kojto 93:e188a91d3eaa 719 /**
Kojto 93:e188a91d3eaa 720 * @brief Enable ADC discontinuous conversion mode for regular group
Kojto 93:e188a91d3eaa 721 * @param _REG_DISCONTINUOUS_MODE_: Regular discontinuous mode.
Kojto 93:e188a91d3eaa 722 * @retval None
Kojto 93:e188a91d3eaa 723 */
Kojto 108:34e6b704fe68 724 #define ADC_CFGR1_REG_DISCCONTINUOUS(_REG_DISCONTINUOUS_MODE_) \
Kojto 108:34e6b704fe68 725 ((_REG_DISCONTINUOUS_MODE_) << 16)
Kojto 93:e188a91d3eaa 726
Kojto 93:e188a91d3eaa 727 /**
Kojto 93:e188a91d3eaa 728 * @brief Enable the ADC auto off mode.
Kojto 93:e188a91d3eaa 729 * @param _AUTOOFF_: Auto off bit enable or disable.
Kojto 93:e188a91d3eaa 730 * @retval None
Kojto 93:e188a91d3eaa 731 */
Kojto 108:34e6b704fe68 732 #define ADC_CFGR1_AUTOOFF(_AUTOOFF_) \
Kojto 108:34e6b704fe68 733 ((_AUTOOFF_) << 15)
Kojto 93:e188a91d3eaa 734
Kojto 93:e188a91d3eaa 735 /**
Kojto 93:e188a91d3eaa 736 * @brief Enable the ADC auto delay mode.
Kojto 93:e188a91d3eaa 737 * @param _AUTOWAIT_: Auto delay bit enable or disable.
Kojto 93:e188a91d3eaa 738 * @retval None
Kojto 93:e188a91d3eaa 739 */
Kojto 108:34e6b704fe68 740 #define ADC_CFGR1_AUTOWAIT(_AUTOWAIT_) \
Kojto 108:34e6b704fe68 741 ((_AUTOWAIT_) << 14)
Kojto 93:e188a91d3eaa 742
Kojto 93:e188a91d3eaa 743 /**
Kojto 93:e188a91d3eaa 744 * @brief Enable ADC continuous conversion mode.
Kojto 93:e188a91d3eaa 745 * @param _CONTINUOUS_MODE_: Continuous mode.
Kojto 93:e188a91d3eaa 746 * @retval None
Kojto 93:e188a91d3eaa 747 */
Kojto 108:34e6b704fe68 748 #define ADC_CFGR1_CONTINUOUS(_CONTINUOUS_MODE_) \
Kojto 108:34e6b704fe68 749 ((_CONTINUOUS_MODE_) << 13)
Kojto 93:e188a91d3eaa 750
Kojto 93:e188a91d3eaa 751 /**
Kojto 93:e188a91d3eaa 752 * @brief Enable ADC overrun mode.
Kojto 93:e188a91d3eaa 753 * @param _OVERRUN_MODE_: Overrun mode.
Kojto 93:e188a91d3eaa 754 * @retval Overun bit setting to be programmed into CFGR register
Kojto 93:e188a91d3eaa 755 */
Kojto 93:e188a91d3eaa 756 /* Note: Bit ADC_CFGR1_OVRMOD not used directly in constant */
Kojto 108:34e6b704fe68 757 /* "ADC_OVR_DATA_OVERWRITTEN" to have this case defined to 0x00, to set it */
Kojto 108:34e6b704fe68 758 /* as the default case to be compliant with other STM32 devices. */
Kojto 108:34e6b704fe68 759 #define ADC_CFGR1_OVERRUN(_OVERRUN_MODE_) \
Kojto 108:34e6b704fe68 760 ( ( (_OVERRUN_MODE_) != (ADC_OVR_DATA_PRESERVED) \
Kojto 93:e188a91d3eaa 761 )? (ADC_CFGR1_OVRMOD) : (0x00000000) \
Kojto 93:e188a91d3eaa 762 )
Kojto 93:e188a91d3eaa 763
Kojto 93:e188a91d3eaa 764 /**
Kojto 93:e188a91d3eaa 765 * @brief Enable ADC scan mode to convert multiple ranks with sequencer.
Kojto 93:e188a91d3eaa 766 * @param _SCAN_MODE_: Scan conversion mode.
Kojto 93:e188a91d3eaa 767 * @retval None
Kojto 93:e188a91d3eaa 768 */
Kojto 108:34e6b704fe68 769 /* Note: Scan mode set using this macro (instead of parameter direct set) */
Kojto 108:34e6b704fe68 770 /* due to different modes on other STM32 devices: to avoid any */
Kojto 108:34e6b704fe68 771 /* unwanted setting, the exact parameter corresponding to the device */
Kojto 108:34e6b704fe68 772 /* must be passed to this macro. */
Kojto 108:34e6b704fe68 773 #define ADC_SCANDIR(_SCAN_MODE_) \
Kojto 93:e188a91d3eaa 774 ( ( (_SCAN_MODE_) == (ADC_SCAN_DIRECTION_BACKWARD) \
Kojto 93:e188a91d3eaa 775 )? (ADC_CFGR1_SCANDIR) : (0x00000000) \
Kojto 93:e188a91d3eaa 776 )
Kojto 108:34e6b704fe68 777
Kojto 93:e188a91d3eaa 778 /**
Kojto 93:e188a91d3eaa 779 * @brief Enable the ADC DMA continuous request.
Kojto 93:e188a91d3eaa 780 * @param _DMACONTREQ_MODE_: DMA continuous request mode.
Kojto 93:e188a91d3eaa 781 * @retval None
Kojto 93:e188a91d3eaa 782 */
Kojto 108:34e6b704fe68 783 #define ADC_CFGR1_DMACONTREQ(_DMACONTREQ_MODE_) \
Kojto 108:34e6b704fe68 784 ((_DMACONTREQ_MODE_) << 1)
Kojto 93:e188a91d3eaa 785
Kojto 93:e188a91d3eaa 786 /**
Kojto 93:e188a91d3eaa 787 * @brief Configure the analog watchdog high threshold into register TR.
Kojto 93:e188a91d3eaa 788 * @param _Threshold_: Threshold value
Kojto 93:e188a91d3eaa 789 * @retval None
Kojto 93:e188a91d3eaa 790 */
Kojto 108:34e6b704fe68 791 #define ADC_TRX_HIGHTHRESHOLD(_Threshold_) \
Kojto 108:34e6b704fe68 792 ((_Threshold_) << 16)
Kojto 108:34e6b704fe68 793
Kojto 93:e188a91d3eaa 794 /**
Kojto 93:e188a91d3eaa 795 * @brief Shift the AWD threshold in function of the selected ADC resolution.
Kojto 93:e188a91d3eaa 796 * Thresholds have to be left-aligned on bit 11, the LSB (right bits) are set to 0.
Kojto 93:e188a91d3eaa 797 * If resolution 12 bits, no shift.
Kojto 93:e188a91d3eaa 798 * If resolution 10 bits, shift of 2 ranks on the left.
Kojto 93:e188a91d3eaa 799 * If resolution 8 bits, shift of 4 ranks on the left.
Kojto 93:e188a91d3eaa 800 * If resolution 6 bits, shift of 6 ranks on the left.
Kojto 93:e188a91d3eaa 801 * therefore, shift = (12 - resolution) = 12 - (12- (((RES[1:0]) >> 3)*2))
Kojto 93:e188a91d3eaa 802 * @param __HANDLE__: ADC handle
Kojto 93:e188a91d3eaa 803 * @param _Threshold_: Value to be shifted
Kojto 93:e188a91d3eaa 804 * @retval None
Kojto 93:e188a91d3eaa 805 */
Kojto 108:34e6b704fe68 806 #define ADC_AWD1THRESHOLD_SHIFT_RESOLUTION(__HANDLE__, _Threshold_) \
Kojto 108:34e6b704fe68 807 ((_Threshold_) << ((((__HANDLE__)->Instance->CFGR1 & ADC_CFGR1_RES) >> 3)*2))
Kojto 108:34e6b704fe68 808
Kojto 108:34e6b704fe68 809
Kojto 108:34e6b704fe68 810 #define IS_ADC_CLOCKPRESCALER(ADC_CLOCK) (((ADC_CLOCK) == ADC_CLOCK_ASYNC_DIV1) || \
Kojto 108:34e6b704fe68 811 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV2) || \
Kojto 108:34e6b704fe68 812 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV4) )
Kojto 108:34e6b704fe68 813
Kojto 108:34e6b704fe68 814 #define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_RESOLUTION_12B) || \
Kojto 108:34e6b704fe68 815 ((RESOLUTION) == ADC_RESOLUTION_10B) || \
Kojto 108:34e6b704fe68 816 ((RESOLUTION) == ADC_RESOLUTION_8B) || \
Kojto 108:34e6b704fe68 817 ((RESOLUTION) == ADC_RESOLUTION_6B) )
Kojto 108:34e6b704fe68 818
Kojto 108:34e6b704fe68 819 #define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DATAALIGN_RIGHT) || \
Kojto 108:34e6b704fe68 820 ((ALIGN) == ADC_DATAALIGN_LEFT) )
Kojto 108:34e6b704fe68 821
Kojto 108:34e6b704fe68 822 #define IS_ADC_SCAN_MODE(SCAN_MODE) (((SCAN_MODE) == ADC_SCAN_DIRECTION_FORWARD) || \
Kojto 108:34e6b704fe68 823 ((SCAN_MODE) == ADC_SCAN_DIRECTION_BACKWARD) )
Kojto 108:34e6b704fe68 824
Kojto 108:34e6b704fe68 825 #define IS_ADC_EXTTRIG_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \
Kojto 108:34e6b704fe68 826 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISING) || \
Kojto 108:34e6b704fe68 827 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \
Kojto 108:34e6b704fe68 828 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING) )
Kojto 108:34e6b704fe68 829
Kojto 108:34e6b704fe68 830 #define IS_ADC_EOC_SELECTION(EOC_SELECTION) (((EOC_SELECTION) == ADC_EOC_SINGLE_CONV) || \
Kojto 108:34e6b704fe68 831 ((EOC_SELECTION) == ADC_EOC_SEQ_CONV) || \
Kojto 108:34e6b704fe68 832 ((EOC_SELECTION) == ADC_EOC_SINGLE_SEQ_CONV) )
Kojto 108:34e6b704fe68 833
Kojto 108:34e6b704fe68 834 #define IS_ADC_OVERRUN(OVR) (((OVR) == ADC_OVR_DATA_PRESERVED) || \
Kojto 108:34e6b704fe68 835 ((OVR) == ADC_OVR_DATA_OVERWRITTEN) )
Kojto 108:34e6b704fe68 836
Kojto 108:34e6b704fe68 837 #define IS_ADC_RANK(WATCHDOG) (((WATCHDOG) == ADC_RANK_CHANNEL_NUMBER) || \
Kojto 108:34e6b704fe68 838 ((WATCHDOG) == ADC_RANK_NONE) )
Kojto 108:34e6b704fe68 839
Kojto 108:34e6b704fe68 840 #define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SAMPLETIME_1CYCLE_5) || \
Kojto 108:34e6b704fe68 841 ((TIME) == ADC_SAMPLETIME_7CYCLES_5) || \
Kojto 108:34e6b704fe68 842 ((TIME) == ADC_SAMPLETIME_13CYCLES_5) || \
Kojto 108:34e6b704fe68 843 ((TIME) == ADC_SAMPLETIME_28CYCLES_5) || \
Kojto 108:34e6b704fe68 844 ((TIME) == ADC_SAMPLETIME_41CYCLES_5) || \
Kojto 108:34e6b704fe68 845 ((TIME) == ADC_SAMPLETIME_55CYCLES_5) || \
Kojto 108:34e6b704fe68 846 ((TIME) == ADC_SAMPLETIME_71CYCLES_5) || \
Kojto 108:34e6b704fe68 847 ((TIME) == ADC_SAMPLETIME_239CYCLES_5) )
Kojto 108:34e6b704fe68 848
Kojto 108:34e6b704fe68 849 #define IS_ADC_ANALOG_WATCHDOG_MODE(WATCHDOG) (((WATCHDOG) == ADC_ANALOGWATCHDOG_NONE) || \
Kojto 108:34e6b704fe68 850 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \
Kojto 108:34e6b704fe68 851 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REG) )
Kojto 108:34e6b704fe68 852
Kojto 108:34e6b704fe68 853 #define IS_ADC_EVENT_TYPE(EVENT) (((EVENT) == ADC_AWD_EVENT) || \
Kojto 108:34e6b704fe68 854 ((EVENT) == ADC_OVR_EVENT) )
Kojto 108:34e6b704fe68 855
Kojto 108:34e6b704fe68 856 /** @defgroup ADC_range_verification ADC range verification
Kojto 108:34e6b704fe68 857 * in function of ADC resolution selected (12, 10, 8 or 6 bits)
Kojto 108:34e6b704fe68 858 * @{
Kojto 108:34e6b704fe68 859 */
Kojto 108:34e6b704fe68 860 #define IS_ADC_RANGE(RESOLUTION, ADC_VALUE) \
Kojto 108:34e6b704fe68 861 ((((RESOLUTION) == ADC_RESOLUTION_12B) && ((ADC_VALUE) <= ((uint32_t)0x0FFF))) || \
Kojto 108:34e6b704fe68 862 (((RESOLUTION) == ADC_RESOLUTION_10B) && ((ADC_VALUE) <= ((uint32_t)0x03FF))) || \
Kojto 108:34e6b704fe68 863 (((RESOLUTION) == ADC_RESOLUTION_8B) && ((ADC_VALUE) <= ((uint32_t)0x00FF))) || \
Kojto 108:34e6b704fe68 864 (((RESOLUTION) == ADC_RESOLUTION_6B) && ((ADC_VALUE) <= ((uint32_t)0x003F))) )
Kojto 108:34e6b704fe68 865 /**
Kojto 108:34e6b704fe68 866 * @}
Kojto 108:34e6b704fe68 867 */
Kojto 108:34e6b704fe68 868
Kojto 108:34e6b704fe68 869 /** @defgroup ADC_regular_rank_verification ADC regular rank verification
Kojto 108:34e6b704fe68 870 * @{
Kojto 108:34e6b704fe68 871 */
Kojto 108:34e6b704fe68 872 #define IS_ADC_REGULAR_RANK(RANK) (((RANK) >= ((uint32_t)1)) && ((RANK) <= ((uint32_t)16)))
Kojto 108:34e6b704fe68 873 /**
Kojto 108:34e6b704fe68 874 * @}
Kojto 108:34e6b704fe68 875 */
Kojto 93:e188a91d3eaa 876
Kojto 93:e188a91d3eaa 877 /**
Kojto 93:e188a91d3eaa 878 * @}
Kojto 93:e188a91d3eaa 879 */
Kojto 93:e188a91d3eaa 880
Kojto 93:e188a91d3eaa 881 /* Include ADC HAL Extension module */
Kojto 93:e188a91d3eaa 882 #include "stm32f0xx_hal_adc_ex.h"
Kojto 93:e188a91d3eaa 883
Kojto 93:e188a91d3eaa 884 /* Exported functions --------------------------------------------------------*/
Kojto 93:e188a91d3eaa 885 /** @addtogroup ADC_Exported_Functions
Kojto 93:e188a91d3eaa 886 * @{
Kojto 93:e188a91d3eaa 887 */
Kojto 93:e188a91d3eaa 888
Kojto 93:e188a91d3eaa 889 /** @addtogroup ADC_Exported_Functions_Group1
Kojto 93:e188a91d3eaa 890 * @{
Kojto 93:e188a91d3eaa 891 */
Kojto 93:e188a91d3eaa 892
Kojto 93:e188a91d3eaa 893
Kojto 93:e188a91d3eaa 894 /* Initialization and de-initialization functions **********************************/
Kojto 93:e188a91d3eaa 895 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 896 HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc);
Kojto 93:e188a91d3eaa 897 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 898 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 899 /**
Kojto 93:e188a91d3eaa 900 * @}
Kojto 93:e188a91d3eaa 901 */
Kojto 93:e188a91d3eaa 902
Kojto 93:e188a91d3eaa 903 /* IO operation functions *****************************************************/
Kojto 93:e188a91d3eaa 904
Kojto 93:e188a91d3eaa 905 /** @addtogroup ADC_Exported_Functions_Group2
Kojto 93:e188a91d3eaa 906 * @{
Kojto 93:e188a91d3eaa 907 */
Kojto 93:e188a91d3eaa 908
Kojto 93:e188a91d3eaa 909
Kojto 93:e188a91d3eaa 910 /* Blocking mode: Polling */
Kojto 93:e188a91d3eaa 911 HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 912 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 913 HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
Kojto 93:e188a91d3eaa 914 HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout);
Kojto 93:e188a91d3eaa 915
Kojto 93:e188a91d3eaa 916 /* Non-blocking mode: Interruption */
Kojto 93:e188a91d3eaa 917 HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 918 HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 919
Kojto 93:e188a91d3eaa 920 /* Non-blocking mode: DMA */
Kojto 93:e188a91d3eaa 921 HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);
Kojto 93:e188a91d3eaa 922 HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 923
Kojto 93:e188a91d3eaa 924 /* ADC retrieve conversion value intended to be used with polling or interruption */
Kojto 93:e188a91d3eaa 925 uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 926
Kojto 93:e188a91d3eaa 927 /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption and DMA) */
Kojto 93:e188a91d3eaa 928 void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 929 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 930 void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 931 void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 932 void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc);
Kojto 93:e188a91d3eaa 933 /**
Kojto 93:e188a91d3eaa 934 * @}
Kojto 93:e188a91d3eaa 935 */
Kojto 93:e188a91d3eaa 936
Kojto 93:e188a91d3eaa 937
Kojto 93:e188a91d3eaa 938 /* Peripheral Control functions ***********************************************/
Kojto 93:e188a91d3eaa 939 /** @addtogroup ADC_Exported_Functions_Group3
Kojto 93:e188a91d3eaa 940 * @{
Kojto 93:e188a91d3eaa 941 */
Kojto 93:e188a91d3eaa 942 HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig);
Kojto 93:e188a91d3eaa 943 HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig);
Kojto 93:e188a91d3eaa 944 /**
Kojto 93:e188a91d3eaa 945 * @}
Kojto 93:e188a91d3eaa 946 */
Kojto 93:e188a91d3eaa 947
Kojto 93:e188a91d3eaa 948
Kojto 93:e188a91d3eaa 949 /* Peripheral State functions *************************************************/
Kojto 93:e188a91d3eaa 950 /** @addtogroup ADC_Exported_Functions_Group4
Kojto 93:e188a91d3eaa 951 * @{
Kojto 93:e188a91d3eaa 952 */
Kojto 108:34e6b704fe68 953 uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc);
Kojto 93:e188a91d3eaa 954 uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc);
Kojto 93:e188a91d3eaa 955 /**
Kojto 93:e188a91d3eaa 956 * @}
Kojto 93:e188a91d3eaa 957 */
Kojto 93:e188a91d3eaa 958
Kojto 93:e188a91d3eaa 959
Kojto 93:e188a91d3eaa 960 /**
Kojto 93:e188a91d3eaa 961 * @}
Kojto 93:e188a91d3eaa 962 */
Kojto 93:e188a91d3eaa 963
Kojto 93:e188a91d3eaa 964
Kojto 93:e188a91d3eaa 965 /**
Kojto 93:e188a91d3eaa 966 * @}
Kojto 93:e188a91d3eaa 967 */
Kojto 93:e188a91d3eaa 968
Kojto 93:e188a91d3eaa 969 /**
Kojto 93:e188a91d3eaa 970 * @}
Kojto 93:e188a91d3eaa 971 */
Kojto 93:e188a91d3eaa 972
Kojto 93:e188a91d3eaa 973 #ifdef __cplusplus
Kojto 93:e188a91d3eaa 974 }
Kojto 93:e188a91d3eaa 975 #endif
Kojto 93:e188a91d3eaa 976
Kojto 93:e188a91d3eaa 977
Kojto 93:e188a91d3eaa 978 #endif /* __STM32F0xx_HAL_ADC_H */
Kojto 93:e188a91d3eaa 979
Kojto 93:e188a91d3eaa 980 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Kojto 93:e188a91d3eaa 981