Initial commit

Dependencies:   FastPWM

Committer:
lypinator
Date:
Wed Sep 16 01:11:49 2020 +0000
Revision:
0:bb348c97df44
Added PWM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lypinator 0:bb348c97df44 1 /**
lypinator 0:bb348c97df44 2 ******************************************************************************
lypinator 0:bb348c97df44 3 * @file stm32f4xx_hal_adc.h
lypinator 0:bb348c97df44 4 * @author MCD Application Team
lypinator 0:bb348c97df44 5 * @brief Header file containing functions prototypes of ADC HAL library.
lypinator 0:bb348c97df44 6 ******************************************************************************
lypinator 0:bb348c97df44 7 * @attention
lypinator 0:bb348c97df44 8 *
lypinator 0:bb348c97df44 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
lypinator 0:bb348c97df44 10 *
lypinator 0:bb348c97df44 11 * Redistribution and use in source and binary forms, with or without modification,
lypinator 0:bb348c97df44 12 * are permitted provided that the following conditions are met:
lypinator 0:bb348c97df44 13 * 1. Redistributions of source code must retain the above copyright notice,
lypinator 0:bb348c97df44 14 * this list of conditions and the following disclaimer.
lypinator 0:bb348c97df44 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
lypinator 0:bb348c97df44 16 * this list of conditions and the following disclaimer in the documentation
lypinator 0:bb348c97df44 17 * and/or other materials provided with the distribution.
lypinator 0:bb348c97df44 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
lypinator 0:bb348c97df44 19 * may be used to endorse or promote products derived from this software
lypinator 0:bb348c97df44 20 * without specific prior written permission.
lypinator 0:bb348c97df44 21 *
lypinator 0:bb348c97df44 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
lypinator 0:bb348c97df44 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
lypinator 0:bb348c97df44 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
lypinator 0:bb348c97df44 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
lypinator 0:bb348c97df44 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
lypinator 0:bb348c97df44 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
lypinator 0:bb348c97df44 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
lypinator 0:bb348c97df44 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
lypinator 0:bb348c97df44 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
lypinator 0:bb348c97df44 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
lypinator 0:bb348c97df44 32 *
lypinator 0:bb348c97df44 33 ******************************************************************************
lypinator 0:bb348c97df44 34 */
lypinator 0:bb348c97df44 35
lypinator 0:bb348c97df44 36 /* Define to prevent recursive inclusion -------------------------------------*/
lypinator 0:bb348c97df44 37 #ifndef __STM32F4xx_ADC_H
lypinator 0:bb348c97df44 38 #define __STM32F4xx_ADC_H
lypinator 0:bb348c97df44 39
lypinator 0:bb348c97df44 40 #ifdef __cplusplus
lypinator 0:bb348c97df44 41 extern "C" {
lypinator 0:bb348c97df44 42 #endif
lypinator 0:bb348c97df44 43
lypinator 0:bb348c97df44 44 /* Includes ------------------------------------------------------------------*/
lypinator 0:bb348c97df44 45 #include "stm32f4xx_hal_def.h"
lypinator 0:bb348c97df44 46
lypinator 0:bb348c97df44 47 /* Include low level driver */
lypinator 0:bb348c97df44 48 #include "stm32f4xx_ll_adc.h"
lypinator 0:bb348c97df44 49
lypinator 0:bb348c97df44 50 /** @addtogroup STM32F4xx_HAL_Driver
lypinator 0:bb348c97df44 51 * @{
lypinator 0:bb348c97df44 52 */
lypinator 0:bb348c97df44 53
lypinator 0:bb348c97df44 54 /** @addtogroup ADC
lypinator 0:bb348c97df44 55 * @{
lypinator 0:bb348c97df44 56 */
lypinator 0:bb348c97df44 57
lypinator 0:bb348c97df44 58 /* Exported types ------------------------------------------------------------*/
lypinator 0:bb348c97df44 59 /** @defgroup ADC_Exported_Types ADC Exported Types
lypinator 0:bb348c97df44 60 * @{
lypinator 0:bb348c97df44 61 */
lypinator 0:bb348c97df44 62
lypinator 0:bb348c97df44 63 /**
lypinator 0:bb348c97df44 64 * @brief Structure definition of ADC and regular group initialization
lypinator 0:bb348c97df44 65 * @note Parameters of this structure are shared within 2 scopes:
lypinator 0:bb348c97df44 66 * - Scope entire ADC (affects regular and injected groups): ClockPrescaler, Resolution, ScanConvMode, DataAlign, ScanConvMode, EOCSelection, LowPowerAutoWait, LowPowerAutoPowerOff, ChannelsBank.
lypinator 0:bb348c97df44 67 * - Scope regular group: ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion, ExternalTrigConvEdge, ExternalTrigConv.
lypinator 0:bb348c97df44 68 * @note The setting of these parameters with function HAL_ADC_Init() is conditioned to ADC state.
lypinator 0:bb348c97df44 69 * ADC state can be either:
lypinator 0:bb348c97df44 70 * - For all parameters: ADC disabled
lypinator 0:bb348c97df44 71 * - For all parameters except 'Resolution', 'ScanConvMode', 'DiscontinuousConvMode', 'NbrOfDiscConversion' : ADC enabled without conversion on going on regular group.
lypinator 0:bb348c97df44 72 * - For parameters 'ExternalTrigConv' and 'ExternalTrigConvEdge': ADC enabled, even with conversion on going.
lypinator 0:bb348c97df44 73 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
lypinator 0:bb348c97df44 74 * 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).
lypinator 0:bb348c97df44 75 */
lypinator 0:bb348c97df44 76 typedef struct
lypinator 0:bb348c97df44 77 {
lypinator 0:bb348c97df44 78 uint32_t ClockPrescaler; /*!< Select ADC clock prescaler. The clock is common for
lypinator 0:bb348c97df44 79 all the ADCs.
lypinator 0:bb348c97df44 80 This parameter can be a value of @ref ADC_ClockPrescaler */
lypinator 0:bb348c97df44 81 uint32_t Resolution; /*!< Configures the ADC resolution.
lypinator 0:bb348c97df44 82 This parameter can be a value of @ref ADC_Resolution */
lypinator 0:bb348c97df44 83 uint32_t DataAlign; /*!< Specifies ADC data alignment to right (MSB on register bit 11 and LSB on register bit 0) (default setting)
lypinator 0:bb348c97df44 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).
lypinator 0:bb348c97df44 85 This parameter can be a value of @ref ADC_Data_align */
lypinator 0:bb348c97df44 86 uint32_t ScanConvMode; /*!< Configures the sequencer of regular and injected groups.
lypinator 0:bb348c97df44 87 This parameter can be associated to parameter 'DiscontinuousConvMode' to have main sequence subdivided in successive parts.
lypinator 0:bb348c97df44 88 If disabled: Conversion is performed in single mode (one channel converted, the one defined in rank 1).
lypinator 0:bb348c97df44 89 Parameters 'NbrOfConversion' and 'InjectedNbrOfConversion' are discarded (equivalent to set to 1).
lypinator 0:bb348c97df44 90 If enabled: Conversions are performed in sequence mode (multiple ranks defined by 'NbrOfConversion'/'InjectedNbrOfConversion' and each channel rank).
lypinator 0:bb348c97df44 91 Scan direction is upward: from rank1 to rank 'n'.
lypinator 0:bb348c97df44 92 This parameter can be set to ENABLE or DISABLE */
lypinator 0:bb348c97df44 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.
lypinator 0:bb348c97df44 94 This parameter can be a value of @ref ADC_EOCSelection.
lypinator 0:bb348c97df44 95 Note: For injected group, end of conversion (flag&IT) is raised only at the end of the sequence.
lypinator 0:bb348c97df44 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)
lypinator 0:bb348c97df44 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.
lypinator 0:bb348c97df44 98 Note: If overrun feature is intended to be used, use ADC in mode 'interruption' (function HAL_ADC_Start_IT() ) with parameter EOCSelection set to end of each conversion or in mode 'transfer by DMA' (function HAL_ADC_Start_DMA()).
lypinator 0:bb348c97df44 99 If overrun feature is intended to be bypassed, use ADC in mode 'polling' or 'interruption' with parameter EOCSelection must be set to end of sequence */
lypinator 0:bb348c97df44 100 uint32_t ContinuousConvMode; /*!< Specifies whether the conversion is performed in single mode (one conversion) or continuous mode for regular group,
lypinator 0:bb348c97df44 101 after the selected trigger occurred (software start or external trigger).
lypinator 0:bb348c97df44 102 This parameter can be set to ENABLE or DISABLE. */
lypinator 0:bb348c97df44 103 uint32_t NbrOfConversion; /*!< Specifies the number of ranks that will be converted within the regular group sequencer.
lypinator 0:bb348c97df44 104 To use regular group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
lypinator 0:bb348c97df44 105 This parameter must be a number between Min_Data = 1 and Max_Data = 16. */
lypinator 0:bb348c97df44 106 uint32_t DiscontinuousConvMode; /*!< Specifies whether the conversions sequence of regular group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts).
lypinator 0:bb348c97df44 107 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
lypinator 0:bb348c97df44 108 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
lypinator 0:bb348c97df44 109 This parameter can be set to ENABLE or DISABLE. */
lypinator 0:bb348c97df44 110 uint32_t NbrOfDiscConversion; /*!< Specifies the number of discontinuous conversions in which the main sequence of regular group (parameter NbrOfConversion) will be subdivided.
lypinator 0:bb348c97df44 111 If parameter 'DiscontinuousConvMode' is disabled, this parameter is discarded.
lypinator 0:bb348c97df44 112 This parameter must be a number between Min_Data = 1 and Max_Data = 8. */
lypinator 0:bb348c97df44 113 uint32_t ExternalTrigConv; /*!< Selects the external event used to trigger the conversion start of regular group.
lypinator 0:bb348c97df44 114 If set to ADC_SOFTWARE_START, external triggers are disabled.
lypinator 0:bb348c97df44 115 If set to external trigger source, triggering is on event rising edge by default.
lypinator 0:bb348c97df44 116 This parameter can be a value of @ref ADC_External_trigger_Source_Regular */
lypinator 0:bb348c97df44 117 uint32_t ExternalTrigConvEdge; /*!< Selects the external trigger edge of regular group.
lypinator 0:bb348c97df44 118 If trigger is set to ADC_SOFTWARE_START, this parameter is discarded.
lypinator 0:bb348c97df44 119 This parameter can be a value of @ref ADC_External_trigger_edge_Regular */
lypinator 0:bb348c97df44 120 uint32_t DMAContinuousRequests; /*!< Specifies whether the DMA requests are performed in one shot mode (DMA transfer stop when number of conversions is reached)
lypinator 0:bb348c97df44 121 or in Continuous mode (DMA transfer unlimited, whatever number of conversions).
lypinator 0:bb348c97df44 122 Note: In continuous mode, DMA must be configured in circular mode. Otherwise an overrun will be triggered when DMA buffer maximum pointer is reached.
lypinator 0:bb348c97df44 123 Note: This parameter must be modified when no conversion is on going on both regular and injected groups (ADC disabled, or ADC enabled without continuous mode or external trigger that could launch a conversion).
lypinator 0:bb348c97df44 124 This parameter can be set to ENABLE or DISABLE. */
lypinator 0:bb348c97df44 125 }ADC_InitTypeDef;
lypinator 0:bb348c97df44 126
lypinator 0:bb348c97df44 127
lypinator 0:bb348c97df44 128
lypinator 0:bb348c97df44 129 /**
lypinator 0:bb348c97df44 130 * @brief Structure definition of ADC channel for regular group
lypinator 0:bb348c97df44 131 * @note The setting of these parameters with function HAL_ADC_ConfigChannel() is conditioned to ADC state.
lypinator 0:bb348c97df44 132 * ADC can be either disabled or enabled without conversion on going on regular group.
lypinator 0:bb348c97df44 133 */
lypinator 0:bb348c97df44 134 typedef struct
lypinator 0:bb348c97df44 135 {
lypinator 0:bb348c97df44 136 uint32_t Channel; /*!< Specifies the channel to configure into ADC regular group.
lypinator 0:bb348c97df44 137 This parameter can be a value of @ref ADC_channels */
lypinator 0:bb348c97df44 138 uint32_t Rank; /*!< Specifies the rank in the regular group sequencer.
lypinator 0:bb348c97df44 139 This parameter must be a number between Min_Data = 1 and Max_Data = 16 */
lypinator 0:bb348c97df44 140 uint32_t SamplingTime; /*!< Sampling time value to be set for the selected channel.
lypinator 0:bb348c97df44 141 Unit: ADC clock cycles
lypinator 0:bb348c97df44 142 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).
lypinator 0:bb348c97df44 143 This parameter can be a value of @ref ADC_sampling_times
lypinator 0:bb348c97df44 144 Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups.
lypinator 0:bb348c97df44 145 If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting.
lypinator 0:bb348c97df44 146 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
lypinator 0:bb348c97df44 147 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
lypinator 0:bb348c97df44 148 Refer to device datasheet for timings values, parameters TS_vrefint, TS_temp (values rough order: 4us min). */
lypinator 0:bb348c97df44 149 uint32_t Offset; /*!< Reserved for future use, can be set to 0 */
lypinator 0:bb348c97df44 150 }ADC_ChannelConfTypeDef;
lypinator 0:bb348c97df44 151
lypinator 0:bb348c97df44 152 /**
lypinator 0:bb348c97df44 153 * @brief ADC Configuration multi-mode structure definition
lypinator 0:bb348c97df44 154 */
lypinator 0:bb348c97df44 155 typedef struct
lypinator 0:bb348c97df44 156 {
lypinator 0:bb348c97df44 157 uint32_t WatchdogMode; /*!< Configures the ADC analog watchdog mode.
lypinator 0:bb348c97df44 158 This parameter can be a value of @ref ADC_analog_watchdog_selection */
lypinator 0:bb348c97df44 159 uint32_t HighThreshold; /*!< Configures the ADC analog watchdog High threshold value.
lypinator 0:bb348c97df44 160 This parameter must be a 12-bit value. */
lypinator 0:bb348c97df44 161 uint32_t LowThreshold; /*!< Configures the ADC analog watchdog High threshold value.
lypinator 0:bb348c97df44 162 This parameter must be a 12-bit value. */
lypinator 0:bb348c97df44 163 uint32_t Channel; /*!< Configures ADC channel for the analog watchdog.
lypinator 0:bb348c97df44 164 This parameter has an effect only if watchdog mode is configured on single channel
lypinator 0:bb348c97df44 165 This parameter can be a value of @ref ADC_channels */
lypinator 0:bb348c97df44 166 uint32_t ITMode; /*!< Specifies whether the analog watchdog is configured
lypinator 0:bb348c97df44 167 is interrupt mode or in polling mode.
lypinator 0:bb348c97df44 168 This parameter can be set to ENABLE or DISABLE */
lypinator 0:bb348c97df44 169 uint32_t WatchdogNumber; /*!< Reserved for future use, can be set to 0 */
lypinator 0:bb348c97df44 170 }ADC_AnalogWDGConfTypeDef;
lypinator 0:bb348c97df44 171
lypinator 0:bb348c97df44 172 /**
lypinator 0:bb348c97df44 173 * @brief HAL ADC state machine: ADC states definition (bitfields)
lypinator 0:bb348c97df44 174 */
lypinator 0:bb348c97df44 175 /* States of ADC global scope */
lypinator 0:bb348c97df44 176 #define HAL_ADC_STATE_RESET 0x00000000U /*!< ADC not yet initialized or disabled */
lypinator 0:bb348c97df44 177 #define HAL_ADC_STATE_READY 0x00000001U /*!< ADC peripheral ready for use */
lypinator 0:bb348c97df44 178 #define HAL_ADC_STATE_BUSY_INTERNAL 0x00000002U /*!< ADC is busy to internal process (initialization, calibration) */
lypinator 0:bb348c97df44 179 #define HAL_ADC_STATE_TIMEOUT 0x00000004U /*!< TimeOut occurrence */
lypinator 0:bb348c97df44 180
lypinator 0:bb348c97df44 181 /* States of ADC errors */
lypinator 0:bb348c97df44 182 #define HAL_ADC_STATE_ERROR_INTERNAL 0x00000010U /*!< Internal error occurrence */
lypinator 0:bb348c97df44 183 #define HAL_ADC_STATE_ERROR_CONFIG 0x00000020U /*!< Configuration error occurrence */
lypinator 0:bb348c97df44 184 #define HAL_ADC_STATE_ERROR_DMA 0x00000040U /*!< DMA error occurrence */
lypinator 0:bb348c97df44 185
lypinator 0:bb348c97df44 186 /* States of ADC group regular */
lypinator 0:bb348c97df44 187 #define HAL_ADC_STATE_REG_BUSY 0x00000100U /*!< A conversion on group regular is ongoing or can occur (either by continuous mode,
lypinator 0:bb348c97df44 188 external trigger, low power auto power-on (if feature available), multimode ADC master control (if feature available)) */
lypinator 0:bb348c97df44 189 #define HAL_ADC_STATE_REG_EOC 0x00000200U /*!< Conversion data available on group regular */
lypinator 0:bb348c97df44 190 #define HAL_ADC_STATE_REG_OVR 0x00000400U /*!< Overrun occurrence */
lypinator 0:bb348c97df44 191
lypinator 0:bb348c97df44 192 /* States of ADC group injected */
lypinator 0:bb348c97df44 193 #define HAL_ADC_STATE_INJ_BUSY 0x00001000U /*!< A conversion on group injected is ongoing or can occur (either by auto-injection mode,
lypinator 0:bb348c97df44 194 external trigger, low power auto power-on (if feature available), multimode ADC master control (if feature available)) */
lypinator 0:bb348c97df44 195 #define HAL_ADC_STATE_INJ_EOC 0x00002000U /*!< Conversion data available on group injected */
lypinator 0:bb348c97df44 196
lypinator 0:bb348c97df44 197 /* States of ADC analog watchdogs */
lypinator 0:bb348c97df44 198 #define HAL_ADC_STATE_AWD1 0x00010000U /*!< Out-of-window occurrence of analog watchdog 1 */
lypinator 0:bb348c97df44 199 #define HAL_ADC_STATE_AWD2 0x00020000U /*!< Not available on STM32F4 device: Out-of-window occurrence of analog watchdog 2 */
lypinator 0:bb348c97df44 200 #define HAL_ADC_STATE_AWD3 0x00040000U /*!< Not available on STM32F4 device: Out-of-window occurrence of analog watchdog 3 */
lypinator 0:bb348c97df44 201
lypinator 0:bb348c97df44 202 /* States of ADC multi-mode */
lypinator 0:bb348c97df44 203 #define HAL_ADC_STATE_MULTIMODE_SLAVE 0x00100000U /*!< Not available on STM32F4 device: ADC in multimode slave state, controlled by another ADC master ( */
lypinator 0:bb348c97df44 204
lypinator 0:bb348c97df44 205
lypinator 0:bb348c97df44 206 /**
lypinator 0:bb348c97df44 207 * @brief ADC handle Structure definition
lypinator 0:bb348c97df44 208 */
lypinator 0:bb348c97df44 209 typedef struct
lypinator 0:bb348c97df44 210 {
lypinator 0:bb348c97df44 211 ADC_TypeDef *Instance; /*!< Register base address */
lypinator 0:bb348c97df44 212
lypinator 0:bb348c97df44 213 ADC_InitTypeDef Init; /*!< ADC required parameters */
lypinator 0:bb348c97df44 214
lypinator 0:bb348c97df44 215 __IO uint32_t NbrOfCurrentConversionRank; /*!< ADC number of current conversion rank */
lypinator 0:bb348c97df44 216
lypinator 0:bb348c97df44 217 DMA_HandleTypeDef *DMA_Handle; /*!< Pointer DMA Handler */
lypinator 0:bb348c97df44 218
lypinator 0:bb348c97df44 219 HAL_LockTypeDef Lock; /*!< ADC locking object */
lypinator 0:bb348c97df44 220
lypinator 0:bb348c97df44 221 __IO uint32_t State; /*!< ADC communication state */
lypinator 0:bb348c97df44 222
lypinator 0:bb348c97df44 223 __IO uint32_t ErrorCode; /*!< ADC Error code */
lypinator 0:bb348c97df44 224 }ADC_HandleTypeDef;
lypinator 0:bb348c97df44 225 /**
lypinator 0:bb348c97df44 226 * @}
lypinator 0:bb348c97df44 227 */
lypinator 0:bb348c97df44 228
lypinator 0:bb348c97df44 229 /* Exported constants --------------------------------------------------------*/
lypinator 0:bb348c97df44 230 /** @defgroup ADC_Exported_Constants ADC Exported Constants
lypinator 0:bb348c97df44 231 * @{
lypinator 0:bb348c97df44 232 */
lypinator 0:bb348c97df44 233
lypinator 0:bb348c97df44 234 /** @defgroup ADC_Error_Code ADC Error Code
lypinator 0:bb348c97df44 235 * @{
lypinator 0:bb348c97df44 236 */
lypinator 0:bb348c97df44 237 #define HAL_ADC_ERROR_NONE 0x00U /*!< No error */
lypinator 0:bb348c97df44 238 #define HAL_ADC_ERROR_INTERNAL 0x01U /*!< ADC IP internal error: if problem of clocking,
lypinator 0:bb348c97df44 239 enable/disable, erroneous state */
lypinator 0:bb348c97df44 240 #define HAL_ADC_ERROR_OVR 0x02U /*!< Overrun error */
lypinator 0:bb348c97df44 241 #define HAL_ADC_ERROR_DMA 0x04U /*!< DMA transfer error */
lypinator 0:bb348c97df44 242 /**
lypinator 0:bb348c97df44 243 * @}
lypinator 0:bb348c97df44 244 */
lypinator 0:bb348c97df44 245
lypinator 0:bb348c97df44 246
lypinator 0:bb348c97df44 247 /** @defgroup ADC_ClockPrescaler ADC Clock Prescaler
lypinator 0:bb348c97df44 248 * @{
lypinator 0:bb348c97df44 249 */
lypinator 0:bb348c97df44 250 #define ADC_CLOCK_SYNC_PCLK_DIV2 0x00000000U
lypinator 0:bb348c97df44 251 #define ADC_CLOCK_SYNC_PCLK_DIV4 ((uint32_t)ADC_CCR_ADCPRE_0)
lypinator 0:bb348c97df44 252 #define ADC_CLOCK_SYNC_PCLK_DIV6 ((uint32_t)ADC_CCR_ADCPRE_1)
lypinator 0:bb348c97df44 253 #define ADC_CLOCK_SYNC_PCLK_DIV8 ((uint32_t)ADC_CCR_ADCPRE)
lypinator 0:bb348c97df44 254 /**
lypinator 0:bb348c97df44 255 * @}
lypinator 0:bb348c97df44 256 */
lypinator 0:bb348c97df44 257
lypinator 0:bb348c97df44 258 /** @defgroup ADC_delay_between_2_sampling_phases ADC Delay Between 2 Sampling Phases
lypinator 0:bb348c97df44 259 * @{
lypinator 0:bb348c97df44 260 */
lypinator 0:bb348c97df44 261 #define ADC_TWOSAMPLINGDELAY_5CYCLES 0x00000000U
lypinator 0:bb348c97df44 262 #define ADC_TWOSAMPLINGDELAY_6CYCLES ((uint32_t)ADC_CCR_DELAY_0)
lypinator 0:bb348c97df44 263 #define ADC_TWOSAMPLINGDELAY_7CYCLES ((uint32_t)ADC_CCR_DELAY_1)
lypinator 0:bb348c97df44 264 #define ADC_TWOSAMPLINGDELAY_8CYCLES ((uint32_t)(ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))
lypinator 0:bb348c97df44 265 #define ADC_TWOSAMPLINGDELAY_9CYCLES ((uint32_t)ADC_CCR_DELAY_2)
lypinator 0:bb348c97df44 266 #define ADC_TWOSAMPLINGDELAY_10CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0))
lypinator 0:bb348c97df44 267 #define ADC_TWOSAMPLINGDELAY_11CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1))
lypinator 0:bb348c97df44 268 #define ADC_TWOSAMPLINGDELAY_12CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))
lypinator 0:bb348c97df44 269 #define ADC_TWOSAMPLINGDELAY_13CYCLES ((uint32_t)ADC_CCR_DELAY_3)
lypinator 0:bb348c97df44 270 #define ADC_TWOSAMPLINGDELAY_14CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0))
lypinator 0:bb348c97df44 271 #define ADC_TWOSAMPLINGDELAY_15CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1))
lypinator 0:bb348c97df44 272 #define ADC_TWOSAMPLINGDELAY_16CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))
lypinator 0:bb348c97df44 273 #define ADC_TWOSAMPLINGDELAY_17CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2))
lypinator 0:bb348c97df44 274 #define ADC_TWOSAMPLINGDELAY_18CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0))
lypinator 0:bb348c97df44 275 #define ADC_TWOSAMPLINGDELAY_19CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1))
lypinator 0:bb348c97df44 276 #define ADC_TWOSAMPLINGDELAY_20CYCLES ((uint32_t)ADC_CCR_DELAY)
lypinator 0:bb348c97df44 277 /**
lypinator 0:bb348c97df44 278 * @}
lypinator 0:bb348c97df44 279 */
lypinator 0:bb348c97df44 280
lypinator 0:bb348c97df44 281 /** @defgroup ADC_Resolution ADC Resolution
lypinator 0:bb348c97df44 282 * @{
lypinator 0:bb348c97df44 283 */
lypinator 0:bb348c97df44 284 #define ADC_RESOLUTION_12B 0x00000000U
lypinator 0:bb348c97df44 285 #define ADC_RESOLUTION_10B ((uint32_t)ADC_CR1_RES_0)
lypinator 0:bb348c97df44 286 #define ADC_RESOLUTION_8B ((uint32_t)ADC_CR1_RES_1)
lypinator 0:bb348c97df44 287 #define ADC_RESOLUTION_6B ((uint32_t)ADC_CR1_RES)
lypinator 0:bb348c97df44 288 /**
lypinator 0:bb348c97df44 289 * @}
lypinator 0:bb348c97df44 290 */
lypinator 0:bb348c97df44 291
lypinator 0:bb348c97df44 292 /** @defgroup ADC_External_trigger_edge_Regular ADC External Trigger Edge Regular
lypinator 0:bb348c97df44 293 * @{
lypinator 0:bb348c97df44 294 */
lypinator 0:bb348c97df44 295 #define ADC_EXTERNALTRIGCONVEDGE_NONE 0x00000000U
lypinator 0:bb348c97df44 296 #define ADC_EXTERNALTRIGCONVEDGE_RISING ((uint32_t)ADC_CR2_EXTEN_0)
lypinator 0:bb348c97df44 297 #define ADC_EXTERNALTRIGCONVEDGE_FALLING ((uint32_t)ADC_CR2_EXTEN_1)
lypinator 0:bb348c97df44 298 #define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING ((uint32_t)ADC_CR2_EXTEN)
lypinator 0:bb348c97df44 299 /**
lypinator 0:bb348c97df44 300 * @}
lypinator 0:bb348c97df44 301 */
lypinator 0:bb348c97df44 302
lypinator 0:bb348c97df44 303 /** @defgroup ADC_External_trigger_Source_Regular ADC External Trigger Source Regular
lypinator 0:bb348c97df44 304 * @{
lypinator 0:bb348c97df44 305 */
lypinator 0:bb348c97df44 306 /* Note: Parameter ADC_SOFTWARE_START is a software parameter used for */
lypinator 0:bb348c97df44 307 /* compatibility with other STM32 devices. */
lypinator 0:bb348c97df44 308 #define ADC_EXTERNALTRIGCONV_T1_CC1 0x00000000U
lypinator 0:bb348c97df44 309 #define ADC_EXTERNALTRIGCONV_T1_CC2 ((uint32_t)ADC_CR2_EXTSEL_0)
lypinator 0:bb348c97df44 310 #define ADC_EXTERNALTRIGCONV_T1_CC3 ((uint32_t)ADC_CR2_EXTSEL_1)
lypinator 0:bb348c97df44 311 #define ADC_EXTERNALTRIGCONV_T2_CC2 ((uint32_t)(ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
lypinator 0:bb348c97df44 312 #define ADC_EXTERNALTRIGCONV_T2_CC3 ((uint32_t)ADC_CR2_EXTSEL_2)
lypinator 0:bb348c97df44 313 #define ADC_EXTERNALTRIGCONV_T2_CC4 ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))
lypinator 0:bb348c97df44 314 #define ADC_EXTERNALTRIGCONV_T2_TRGO ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))
lypinator 0:bb348c97df44 315 #define ADC_EXTERNALTRIGCONV_T3_CC1 ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
lypinator 0:bb348c97df44 316 #define ADC_EXTERNALTRIGCONV_T3_TRGO ((uint32_t)ADC_CR2_EXTSEL_3)
lypinator 0:bb348c97df44 317 #define ADC_EXTERNALTRIGCONV_T4_CC4 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_0))
lypinator 0:bb348c97df44 318 #define ADC_EXTERNALTRIGCONV_T5_CC1 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1))
lypinator 0:bb348c97df44 319 #define ADC_EXTERNALTRIGCONV_T5_CC2 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
lypinator 0:bb348c97df44 320 #define ADC_EXTERNALTRIGCONV_T5_CC3 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2))
lypinator 0:bb348c97df44 321 #define ADC_EXTERNALTRIGCONV_T8_CC1 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))
lypinator 0:bb348c97df44 322 #define ADC_EXTERNALTRIGCONV_T8_TRGO ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))
lypinator 0:bb348c97df44 323 #define ADC_EXTERNALTRIGCONV_Ext_IT11 ((uint32_t)ADC_CR2_EXTSEL)
lypinator 0:bb348c97df44 324 #define ADC_SOFTWARE_START ((uint32_t)ADC_CR2_EXTSEL + 1U)
lypinator 0:bb348c97df44 325 /**
lypinator 0:bb348c97df44 326 * @}
lypinator 0:bb348c97df44 327 */
lypinator 0:bb348c97df44 328
lypinator 0:bb348c97df44 329 /** @defgroup ADC_Data_align ADC Data Align
lypinator 0:bb348c97df44 330 * @{
lypinator 0:bb348c97df44 331 */
lypinator 0:bb348c97df44 332 #define ADC_DATAALIGN_RIGHT 0x00000000U
lypinator 0:bb348c97df44 333 #define ADC_DATAALIGN_LEFT ((uint32_t)ADC_CR2_ALIGN)
lypinator 0:bb348c97df44 334 /**
lypinator 0:bb348c97df44 335 * @}
lypinator 0:bb348c97df44 336 */
lypinator 0:bb348c97df44 337
lypinator 0:bb348c97df44 338 /** @defgroup ADC_channels ADC Common Channels
lypinator 0:bb348c97df44 339 * @{
lypinator 0:bb348c97df44 340 */
lypinator 0:bb348c97df44 341 #define ADC_CHANNEL_0 0x00000000U
lypinator 0:bb348c97df44 342 #define ADC_CHANNEL_1 ((uint32_t)ADC_CR1_AWDCH_0)
lypinator 0:bb348c97df44 343 #define ADC_CHANNEL_2 ((uint32_t)ADC_CR1_AWDCH_1)
lypinator 0:bb348c97df44 344 #define ADC_CHANNEL_3 ((uint32_t)(ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
lypinator 0:bb348c97df44 345 #define ADC_CHANNEL_4 ((uint32_t)ADC_CR1_AWDCH_2)
lypinator 0:bb348c97df44 346 #define ADC_CHANNEL_5 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0))
lypinator 0:bb348c97df44 347 #define ADC_CHANNEL_6 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1))
lypinator 0:bb348c97df44 348 #define ADC_CHANNEL_7 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
lypinator 0:bb348c97df44 349 #define ADC_CHANNEL_8 ((uint32_t)ADC_CR1_AWDCH_3)
lypinator 0:bb348c97df44 350 #define ADC_CHANNEL_9 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_0))
lypinator 0:bb348c97df44 351 #define ADC_CHANNEL_10 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1))
lypinator 0:bb348c97df44 352 #define ADC_CHANNEL_11 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
lypinator 0:bb348c97df44 353 #define ADC_CHANNEL_12 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2))
lypinator 0:bb348c97df44 354 #define ADC_CHANNEL_13 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0))
lypinator 0:bb348c97df44 355 #define ADC_CHANNEL_14 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1))
lypinator 0:bb348c97df44 356 #define ADC_CHANNEL_15 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))
lypinator 0:bb348c97df44 357 #define ADC_CHANNEL_16 ((uint32_t)ADC_CR1_AWDCH_4)
lypinator 0:bb348c97df44 358 #define ADC_CHANNEL_17 ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_0))
lypinator 0:bb348c97df44 359 #define ADC_CHANNEL_18 ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_1))
lypinator 0:bb348c97df44 360
lypinator 0:bb348c97df44 361 #define ADC_CHANNEL_VREFINT ((uint32_t)ADC_CHANNEL_17)
lypinator 0:bb348c97df44 362 #define ADC_CHANNEL_VBAT ((uint32_t)ADC_CHANNEL_18)
lypinator 0:bb348c97df44 363 /**
lypinator 0:bb348c97df44 364 * @}
lypinator 0:bb348c97df44 365 */
lypinator 0:bb348c97df44 366
lypinator 0:bb348c97df44 367 /** @defgroup ADC_sampling_times ADC Sampling Times
lypinator 0:bb348c97df44 368 * @{
lypinator 0:bb348c97df44 369 */
lypinator 0:bb348c97df44 370 #define ADC_SAMPLETIME_3CYCLES 0x00000000U
lypinator 0:bb348c97df44 371 #define ADC_SAMPLETIME_15CYCLES ((uint32_t)ADC_SMPR1_SMP10_0)
lypinator 0:bb348c97df44 372 #define ADC_SAMPLETIME_28CYCLES ((uint32_t)ADC_SMPR1_SMP10_1)
lypinator 0:bb348c97df44 373 #define ADC_SAMPLETIME_56CYCLES ((uint32_t)(ADC_SMPR1_SMP10_1 | ADC_SMPR1_SMP10_0))
lypinator 0:bb348c97df44 374 #define ADC_SAMPLETIME_84CYCLES ((uint32_t)ADC_SMPR1_SMP10_2)
lypinator 0:bb348c97df44 375 #define ADC_SAMPLETIME_112CYCLES ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_0))
lypinator 0:bb348c97df44 376 #define ADC_SAMPLETIME_144CYCLES ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_1))
lypinator 0:bb348c97df44 377 #define ADC_SAMPLETIME_480CYCLES ((uint32_t)ADC_SMPR1_SMP10)
lypinator 0:bb348c97df44 378 /**
lypinator 0:bb348c97df44 379 * @}
lypinator 0:bb348c97df44 380 */
lypinator 0:bb348c97df44 381
lypinator 0:bb348c97df44 382 /** @defgroup ADC_EOCSelection ADC EOC Selection
lypinator 0:bb348c97df44 383 * @{
lypinator 0:bb348c97df44 384 */
lypinator 0:bb348c97df44 385 #define ADC_EOC_SEQ_CONV 0x00000000U
lypinator 0:bb348c97df44 386 #define ADC_EOC_SINGLE_CONV 0x00000001U
lypinator 0:bb348c97df44 387 #define ADC_EOC_SINGLE_SEQ_CONV 0x00000002U /*!< reserved for future use */
lypinator 0:bb348c97df44 388 /**
lypinator 0:bb348c97df44 389 * @}
lypinator 0:bb348c97df44 390 */
lypinator 0:bb348c97df44 391
lypinator 0:bb348c97df44 392 /** @defgroup ADC_Event_type ADC Event Type
lypinator 0:bb348c97df44 393 * @{
lypinator 0:bb348c97df44 394 */
lypinator 0:bb348c97df44 395 #define ADC_AWD_EVENT ((uint32_t)ADC_FLAG_AWD)
lypinator 0:bb348c97df44 396 #define ADC_OVR_EVENT ((uint32_t)ADC_FLAG_OVR)
lypinator 0:bb348c97df44 397 /**
lypinator 0:bb348c97df44 398 * @}
lypinator 0:bb348c97df44 399 */
lypinator 0:bb348c97df44 400
lypinator 0:bb348c97df44 401 /** @defgroup ADC_analog_watchdog_selection ADC Analog Watchdog Selection
lypinator 0:bb348c97df44 402 * @{
lypinator 0:bb348c97df44 403 */
lypinator 0:bb348c97df44 404 #define ADC_ANALOGWATCHDOG_SINGLE_REG ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN))
lypinator 0:bb348c97df44 405 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN))
lypinator 0:bb348c97df44 406 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN | ADC_CR1_JAWDEN))
lypinator 0:bb348c97df44 407 #define ADC_ANALOGWATCHDOG_ALL_REG ((uint32_t)ADC_CR1_AWDEN)
lypinator 0:bb348c97df44 408 #define ADC_ANALOGWATCHDOG_ALL_INJEC ((uint32_t)ADC_CR1_JAWDEN)
lypinator 0:bb348c97df44 409 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC ((uint32_t)(ADC_CR1_AWDEN | ADC_CR1_JAWDEN))
lypinator 0:bb348c97df44 410 #define ADC_ANALOGWATCHDOG_NONE 0x00000000U
lypinator 0:bb348c97df44 411 /**
lypinator 0:bb348c97df44 412 * @}
lypinator 0:bb348c97df44 413 */
lypinator 0:bb348c97df44 414
lypinator 0:bb348c97df44 415 /** @defgroup ADC_interrupts_definition ADC Interrupts Definition
lypinator 0:bb348c97df44 416 * @{
lypinator 0:bb348c97df44 417 */
lypinator 0:bb348c97df44 418 #define ADC_IT_EOC ((uint32_t)ADC_CR1_EOCIE)
lypinator 0:bb348c97df44 419 #define ADC_IT_AWD ((uint32_t)ADC_CR1_AWDIE)
lypinator 0:bb348c97df44 420 #define ADC_IT_JEOC ((uint32_t)ADC_CR1_JEOCIE)
lypinator 0:bb348c97df44 421 #define ADC_IT_OVR ((uint32_t)ADC_CR1_OVRIE)
lypinator 0:bb348c97df44 422 /**
lypinator 0:bb348c97df44 423 * @}
lypinator 0:bb348c97df44 424 */
lypinator 0:bb348c97df44 425
lypinator 0:bb348c97df44 426 /** @defgroup ADC_flags_definition ADC Flags Definition
lypinator 0:bb348c97df44 427 * @{
lypinator 0:bb348c97df44 428 */
lypinator 0:bb348c97df44 429 #define ADC_FLAG_AWD ((uint32_t)ADC_SR_AWD)
lypinator 0:bb348c97df44 430 #define ADC_FLAG_EOC ((uint32_t)ADC_SR_EOC)
lypinator 0:bb348c97df44 431 #define ADC_FLAG_JEOC ((uint32_t)ADC_SR_JEOC)
lypinator 0:bb348c97df44 432 #define ADC_FLAG_JSTRT ((uint32_t)ADC_SR_JSTRT)
lypinator 0:bb348c97df44 433 #define ADC_FLAG_STRT ((uint32_t)ADC_SR_STRT)
lypinator 0:bb348c97df44 434 #define ADC_FLAG_OVR ((uint32_t)ADC_SR_OVR)
lypinator 0:bb348c97df44 435 /**
lypinator 0:bb348c97df44 436 * @}
lypinator 0:bb348c97df44 437 */
lypinator 0:bb348c97df44 438
lypinator 0:bb348c97df44 439 /** @defgroup ADC_channels_type ADC Channels Type
lypinator 0:bb348c97df44 440 * @{
lypinator 0:bb348c97df44 441 */
lypinator 0:bb348c97df44 442 #define ADC_ALL_CHANNELS 0x00000001U
lypinator 0:bb348c97df44 443 #define ADC_REGULAR_CHANNELS 0x00000002U /*!< reserved for future use */
lypinator 0:bb348c97df44 444 #define ADC_INJECTED_CHANNELS 0x00000003U /*!< reserved for future use */
lypinator 0:bb348c97df44 445 /**
lypinator 0:bb348c97df44 446 * @}
lypinator 0:bb348c97df44 447 */
lypinator 0:bb348c97df44 448
lypinator 0:bb348c97df44 449 /**
lypinator 0:bb348c97df44 450 * @}
lypinator 0:bb348c97df44 451 */
lypinator 0:bb348c97df44 452
lypinator 0:bb348c97df44 453 /* Exported macro ------------------------------------------------------------*/
lypinator 0:bb348c97df44 454 /** @defgroup ADC_Exported_Macros ADC Exported Macros
lypinator 0:bb348c97df44 455 * @{
lypinator 0:bb348c97df44 456 */
lypinator 0:bb348c97df44 457
lypinator 0:bb348c97df44 458 /** @brief Reset ADC handle state
lypinator 0:bb348c97df44 459 * @param __HANDLE__ ADC handle
lypinator 0:bb348c97df44 460 * @retval None
lypinator 0:bb348c97df44 461 */
lypinator 0:bb348c97df44 462 #define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_ADC_STATE_RESET)
lypinator 0:bb348c97df44 463
lypinator 0:bb348c97df44 464 /**
lypinator 0:bb348c97df44 465 * @brief Enable the ADC peripheral.
lypinator 0:bb348c97df44 466 * @param __HANDLE__ ADC handle
lypinator 0:bb348c97df44 467 * @retval None
lypinator 0:bb348c97df44 468 */
lypinator 0:bb348c97df44 469 #define __HAL_ADC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 |= ADC_CR2_ADON)
lypinator 0:bb348c97df44 470
lypinator 0:bb348c97df44 471 /**
lypinator 0:bb348c97df44 472 * @brief Disable the ADC peripheral.
lypinator 0:bb348c97df44 473 * @param __HANDLE__ ADC handle
lypinator 0:bb348c97df44 474 * @retval None
lypinator 0:bb348c97df44 475 */
lypinator 0:bb348c97df44 476 #define __HAL_ADC_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 &= ~ADC_CR2_ADON)
lypinator 0:bb348c97df44 477
lypinator 0:bb348c97df44 478 /**
lypinator 0:bb348c97df44 479 * @brief Enable the ADC end of conversion interrupt.
lypinator 0:bb348c97df44 480 * @param __HANDLE__ specifies the ADC Handle.
lypinator 0:bb348c97df44 481 * @param __INTERRUPT__ ADC Interrupt.
lypinator 0:bb348c97df44 482 * @retval None
lypinator 0:bb348c97df44 483 */
lypinator 0:bb348c97df44 484 #define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) |= (__INTERRUPT__))
lypinator 0:bb348c97df44 485
lypinator 0:bb348c97df44 486 /**
lypinator 0:bb348c97df44 487 * @brief Disable the ADC end of conversion interrupt.
lypinator 0:bb348c97df44 488 * @param __HANDLE__ specifies the ADC Handle.
lypinator 0:bb348c97df44 489 * @param __INTERRUPT__ ADC interrupt.
lypinator 0:bb348c97df44 490 * @retval None
lypinator 0:bb348c97df44 491 */
lypinator 0:bb348c97df44 492 #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) &= ~(__INTERRUPT__))
lypinator 0:bb348c97df44 493
lypinator 0:bb348c97df44 494 /** @brief Check if the specified ADC interrupt source is enabled or disabled.
lypinator 0:bb348c97df44 495 * @param __HANDLE__ specifies the ADC Handle.
lypinator 0:bb348c97df44 496 * @param __INTERRUPT__ specifies the ADC interrupt source to check.
lypinator 0:bb348c97df44 497 * @retval The new state of __IT__ (TRUE or FALSE).
lypinator 0:bb348c97df44 498 */
lypinator 0:bb348c97df44 499 #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__))
lypinator 0:bb348c97df44 500
lypinator 0:bb348c97df44 501 /**
lypinator 0:bb348c97df44 502 * @brief Clear the ADC's pending flags.
lypinator 0:bb348c97df44 503 * @param __HANDLE__ specifies the ADC Handle.
lypinator 0:bb348c97df44 504 * @param __FLAG__ ADC flag.
lypinator 0:bb348c97df44 505 * @retval None
lypinator 0:bb348c97df44 506 */
lypinator 0:bb348c97df44 507 #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = ~(__FLAG__))
lypinator 0:bb348c97df44 508
lypinator 0:bb348c97df44 509 /**
lypinator 0:bb348c97df44 510 * @brief Get the selected ADC's flag status.
lypinator 0:bb348c97df44 511 * @param __HANDLE__ specifies the ADC Handle.
lypinator 0:bb348c97df44 512 * @param __FLAG__ ADC flag.
lypinator 0:bb348c97df44 513 * @retval None
lypinator 0:bb348c97df44 514 */
lypinator 0:bb348c97df44 515 #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
lypinator 0:bb348c97df44 516
lypinator 0:bb348c97df44 517 /**
lypinator 0:bb348c97df44 518 * @}
lypinator 0:bb348c97df44 519 */
lypinator 0:bb348c97df44 520
lypinator 0:bb348c97df44 521 /* Include ADC HAL Extension module */
lypinator 0:bb348c97df44 522 #include "stm32f4xx_hal_adc_ex.h"
lypinator 0:bb348c97df44 523
lypinator 0:bb348c97df44 524 /* Exported functions --------------------------------------------------------*/
lypinator 0:bb348c97df44 525 /** @addtogroup ADC_Exported_Functions
lypinator 0:bb348c97df44 526 * @{
lypinator 0:bb348c97df44 527 */
lypinator 0:bb348c97df44 528
lypinator 0:bb348c97df44 529 /** @addtogroup ADC_Exported_Functions_Group1
lypinator 0:bb348c97df44 530 * @{
lypinator 0:bb348c97df44 531 */
lypinator 0:bb348c97df44 532 /* Initialization/de-initialization functions ***********************************/
lypinator 0:bb348c97df44 533 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 534 HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc);
lypinator 0:bb348c97df44 535 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 536 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 537 /**
lypinator 0:bb348c97df44 538 * @}
lypinator 0:bb348c97df44 539 */
lypinator 0:bb348c97df44 540
lypinator 0:bb348c97df44 541 /** @addtogroup ADC_Exported_Functions_Group2
lypinator 0:bb348c97df44 542 * @{
lypinator 0:bb348c97df44 543 */
lypinator 0:bb348c97df44 544 /* I/O operation functions ******************************************************/
lypinator 0:bb348c97df44 545 HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 546 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 547 HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
lypinator 0:bb348c97df44 548
lypinator 0:bb348c97df44 549 HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout);
lypinator 0:bb348c97df44 550
lypinator 0:bb348c97df44 551 HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 552 HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 553
lypinator 0:bb348c97df44 554 void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 555
lypinator 0:bb348c97df44 556 HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);
lypinator 0:bb348c97df44 557 HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 558
lypinator 0:bb348c97df44 559 uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 560
lypinator 0:bb348c97df44 561 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 562 void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 563 void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 564 void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc);
lypinator 0:bb348c97df44 565 /**
lypinator 0:bb348c97df44 566 * @}
lypinator 0:bb348c97df44 567 */
lypinator 0:bb348c97df44 568
lypinator 0:bb348c97df44 569 /** @addtogroup ADC_Exported_Functions_Group3
lypinator 0:bb348c97df44 570 * @{
lypinator 0:bb348c97df44 571 */
lypinator 0:bb348c97df44 572 /* Peripheral Control functions *************************************************/
lypinator 0:bb348c97df44 573 HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig);
lypinator 0:bb348c97df44 574 HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig);
lypinator 0:bb348c97df44 575 /**
lypinator 0:bb348c97df44 576 * @}
lypinator 0:bb348c97df44 577 */
lypinator 0:bb348c97df44 578
lypinator 0:bb348c97df44 579 /** @addtogroup ADC_Exported_Functions_Group4
lypinator 0:bb348c97df44 580 * @{
lypinator 0:bb348c97df44 581 */
lypinator 0:bb348c97df44 582 /* Peripheral State functions ***************************************************/
lypinator 0:bb348c97df44 583 uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc);
lypinator 0:bb348c97df44 584 uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc);
lypinator 0:bb348c97df44 585 /**
lypinator 0:bb348c97df44 586 * @}
lypinator 0:bb348c97df44 587 */
lypinator 0:bb348c97df44 588
lypinator 0:bb348c97df44 589 /**
lypinator 0:bb348c97df44 590 * @}
lypinator 0:bb348c97df44 591 */
lypinator 0:bb348c97df44 592 /* Private types -------------------------------------------------------------*/
lypinator 0:bb348c97df44 593 /* Private variables ---------------------------------------------------------*/
lypinator 0:bb348c97df44 594 /* Private constants ---------------------------------------------------------*/
lypinator 0:bb348c97df44 595 /** @defgroup ADC_Private_Constants ADC Private Constants
lypinator 0:bb348c97df44 596 * @{
lypinator 0:bb348c97df44 597 */
lypinator 0:bb348c97df44 598 /* Delay for ADC stabilization time. */
lypinator 0:bb348c97df44 599 /* Maximum delay is 1us (refer to device datasheet, parameter tSTAB). */
lypinator 0:bb348c97df44 600 /* Unit: us */
lypinator 0:bb348c97df44 601 #define ADC_STAB_DELAY_US 3U
lypinator 0:bb348c97df44 602 /* Delay for temperature sensor stabilization time. */
lypinator 0:bb348c97df44 603 /* Maximum delay is 10us (refer to device datasheet, parameter tSTART). */
lypinator 0:bb348c97df44 604 /* Unit: us */
lypinator 0:bb348c97df44 605 #define ADC_TEMPSENSOR_DELAY_US 10U
lypinator 0:bb348c97df44 606 /**
lypinator 0:bb348c97df44 607 * @}
lypinator 0:bb348c97df44 608 */
lypinator 0:bb348c97df44 609
lypinator 0:bb348c97df44 610 /* Private macro ------------------------------------------------------------*/
lypinator 0:bb348c97df44 611
lypinator 0:bb348c97df44 612 /** @defgroup ADC_Private_Macros ADC Private Macros
lypinator 0:bb348c97df44 613 * @{
lypinator 0:bb348c97df44 614 */
lypinator 0:bb348c97df44 615 /* Macro reserved for internal HAL driver usage, not intended to be used in
lypinator 0:bb348c97df44 616 code of final user */
lypinator 0:bb348c97df44 617
lypinator 0:bb348c97df44 618 /**
lypinator 0:bb348c97df44 619 * @brief Verification of ADC state: enabled or disabled
lypinator 0:bb348c97df44 620 * @param __HANDLE__ ADC handle
lypinator 0:bb348c97df44 621 * @retval SET (ADC enabled) or RESET (ADC disabled)
lypinator 0:bb348c97df44 622 */
lypinator 0:bb348c97df44 623 #define ADC_IS_ENABLE(__HANDLE__) \
lypinator 0:bb348c97df44 624 ((( ((__HANDLE__)->Instance->SR & ADC_SR_ADONS) == ADC_SR_ADONS ) \
lypinator 0:bb348c97df44 625 ) ? SET : RESET)
lypinator 0:bb348c97df44 626
lypinator 0:bb348c97df44 627 /**
lypinator 0:bb348c97df44 628 * @brief Test if conversion trigger of regular group is software start
lypinator 0:bb348c97df44 629 * or external trigger.
lypinator 0:bb348c97df44 630 * @param __HANDLE__ ADC handle
lypinator 0:bb348c97df44 631 * @retval SET (software start) or RESET (external trigger)
lypinator 0:bb348c97df44 632 */
lypinator 0:bb348c97df44 633 #define ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \
lypinator 0:bb348c97df44 634 (((__HANDLE__)->Instance->CR2 & ADC_CR2_EXTEN) == RESET)
lypinator 0:bb348c97df44 635
lypinator 0:bb348c97df44 636 /**
lypinator 0:bb348c97df44 637 * @brief Test if conversion trigger of injected group is software start
lypinator 0:bb348c97df44 638 * or external trigger.
lypinator 0:bb348c97df44 639 * @param __HANDLE__ ADC handle
lypinator 0:bb348c97df44 640 * @retval SET (software start) or RESET (external trigger)
lypinator 0:bb348c97df44 641 */
lypinator 0:bb348c97df44 642 #define ADC_IS_SOFTWARE_START_INJECTED(__HANDLE__) \
lypinator 0:bb348c97df44 643 (((__HANDLE__)->Instance->CR2 & ADC_CR2_JEXTEN) == RESET)
lypinator 0:bb348c97df44 644
lypinator 0:bb348c97df44 645 /**
lypinator 0:bb348c97df44 646 * @brief Simultaneously clears and sets specific bits of the handle State
lypinator 0:bb348c97df44 647 * @note: ADC_STATE_CLR_SET() macro is merely aliased to generic macro MODIFY_REG(),
lypinator 0:bb348c97df44 648 * the first parameter is the ADC handle State, the second parameter is the
lypinator 0:bb348c97df44 649 * bit field to clear, the third and last parameter is the bit field to set.
lypinator 0:bb348c97df44 650 * @retval None
lypinator 0:bb348c97df44 651 */
lypinator 0:bb348c97df44 652 #define ADC_STATE_CLR_SET MODIFY_REG
lypinator 0:bb348c97df44 653
lypinator 0:bb348c97df44 654 /**
lypinator 0:bb348c97df44 655 * @brief Clear ADC error code (set it to error code: "no error")
lypinator 0:bb348c97df44 656 * @param __HANDLE__ ADC handle
lypinator 0:bb348c97df44 657 * @retval None
lypinator 0:bb348c97df44 658 */
lypinator 0:bb348c97df44 659 #define ADC_CLEAR_ERRORCODE(__HANDLE__) \
lypinator 0:bb348c97df44 660 ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)
lypinator 0:bb348c97df44 661
lypinator 0:bb348c97df44 662
lypinator 0:bb348c97df44 663 #define IS_ADC_CLOCKPRESCALER(ADC_CLOCK) (((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV2) || \
lypinator 0:bb348c97df44 664 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV4) || \
lypinator 0:bb348c97df44 665 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV6) || \
lypinator 0:bb348c97df44 666 ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV8))
lypinator 0:bb348c97df44 667 #define IS_ADC_SAMPLING_DELAY(DELAY) (((DELAY) == ADC_TWOSAMPLINGDELAY_5CYCLES) || \
lypinator 0:bb348c97df44 668 ((DELAY) == ADC_TWOSAMPLINGDELAY_6CYCLES) || \
lypinator 0:bb348c97df44 669 ((DELAY) == ADC_TWOSAMPLINGDELAY_7CYCLES) || \
lypinator 0:bb348c97df44 670 ((DELAY) == ADC_TWOSAMPLINGDELAY_8CYCLES) || \
lypinator 0:bb348c97df44 671 ((DELAY) == ADC_TWOSAMPLINGDELAY_9CYCLES) || \
lypinator 0:bb348c97df44 672 ((DELAY) == ADC_TWOSAMPLINGDELAY_10CYCLES) || \
lypinator 0:bb348c97df44 673 ((DELAY) == ADC_TWOSAMPLINGDELAY_11CYCLES) || \
lypinator 0:bb348c97df44 674 ((DELAY) == ADC_TWOSAMPLINGDELAY_12CYCLES) || \
lypinator 0:bb348c97df44 675 ((DELAY) == ADC_TWOSAMPLINGDELAY_13CYCLES) || \
lypinator 0:bb348c97df44 676 ((DELAY) == ADC_TWOSAMPLINGDELAY_14CYCLES) || \
lypinator 0:bb348c97df44 677 ((DELAY) == ADC_TWOSAMPLINGDELAY_15CYCLES) || \
lypinator 0:bb348c97df44 678 ((DELAY) == ADC_TWOSAMPLINGDELAY_16CYCLES) || \
lypinator 0:bb348c97df44 679 ((DELAY) == ADC_TWOSAMPLINGDELAY_17CYCLES) || \
lypinator 0:bb348c97df44 680 ((DELAY) == ADC_TWOSAMPLINGDELAY_18CYCLES) || \
lypinator 0:bb348c97df44 681 ((DELAY) == ADC_TWOSAMPLINGDELAY_19CYCLES) || \
lypinator 0:bb348c97df44 682 ((DELAY) == ADC_TWOSAMPLINGDELAY_20CYCLES))
lypinator 0:bb348c97df44 683 #define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_RESOLUTION_12B) || \
lypinator 0:bb348c97df44 684 ((RESOLUTION) == ADC_RESOLUTION_10B) || \
lypinator 0:bb348c97df44 685 ((RESOLUTION) == ADC_RESOLUTION_8B) || \
lypinator 0:bb348c97df44 686 ((RESOLUTION) == ADC_RESOLUTION_6B))
lypinator 0:bb348c97df44 687 #define IS_ADC_EXT_TRIG_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \
lypinator 0:bb348c97df44 688 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISING) || \
lypinator 0:bb348c97df44 689 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \
lypinator 0:bb348c97df44 690 ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING))
lypinator 0:bb348c97df44 691 #define IS_ADC_EXT_TRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1) || \
lypinator 0:bb348c97df44 692 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2) || \
lypinator 0:bb348c97df44 693 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3) || \
lypinator 0:bb348c97df44 694 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2) || \
lypinator 0:bb348c97df44 695 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC3) || \
lypinator 0:bb348c97df44 696 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC4) || \
lypinator 0:bb348c97df44 697 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \
lypinator 0:bb348c97df44 698 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC1) || \
lypinator 0:bb348c97df44 699 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \
lypinator 0:bb348c97df44 700 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC4) || \
lypinator 0:bb348c97df44 701 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC1) || \
lypinator 0:bb348c97df44 702 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC2) || \
lypinator 0:bb348c97df44 703 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC3) || \
lypinator 0:bb348c97df44 704 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_CC1) || \
lypinator 0:bb348c97df44 705 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_TRGO) || \
lypinator 0:bb348c97df44 706 ((REGTRIG) == ADC_EXTERNALTRIGCONV_Ext_IT11)|| \
lypinator 0:bb348c97df44 707 ((REGTRIG) == ADC_SOFTWARE_START))
lypinator 0:bb348c97df44 708 #define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DATAALIGN_RIGHT) || \
lypinator 0:bb348c97df44 709 ((ALIGN) == ADC_DATAALIGN_LEFT))
lypinator 0:bb348c97df44 710 #define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SAMPLETIME_3CYCLES) || \
lypinator 0:bb348c97df44 711 ((TIME) == ADC_SAMPLETIME_15CYCLES) || \
lypinator 0:bb348c97df44 712 ((TIME) == ADC_SAMPLETIME_28CYCLES) || \
lypinator 0:bb348c97df44 713 ((TIME) == ADC_SAMPLETIME_56CYCLES) || \
lypinator 0:bb348c97df44 714 ((TIME) == ADC_SAMPLETIME_84CYCLES) || \
lypinator 0:bb348c97df44 715 ((TIME) == ADC_SAMPLETIME_112CYCLES) || \
lypinator 0:bb348c97df44 716 ((TIME) == ADC_SAMPLETIME_144CYCLES) || \
lypinator 0:bb348c97df44 717 ((TIME) == ADC_SAMPLETIME_480CYCLES))
lypinator 0:bb348c97df44 718 #define IS_ADC_EOCSelection(EOCSelection) (((EOCSelection) == ADC_EOC_SINGLE_CONV) || \
lypinator 0:bb348c97df44 719 ((EOCSelection) == ADC_EOC_SEQ_CONV) || \
lypinator 0:bb348c97df44 720 ((EOCSelection) == ADC_EOC_SINGLE_SEQ_CONV))
lypinator 0:bb348c97df44 721 #define IS_ADC_EVENT_TYPE(EVENT) (((EVENT) == ADC_AWD_EVENT) || \
lypinator 0:bb348c97df44 722 ((EVENT) == ADC_OVR_EVENT))
lypinator 0:bb348c97df44 723 #define IS_ADC_ANALOG_WATCHDOG(WATCHDOG) (((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \
lypinator 0:bb348c97df44 724 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_INJEC) || \
lypinator 0:bb348c97df44 725 ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC) || \
lypinator 0:bb348c97df44 726 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REG) || \
lypinator 0:bb348c97df44 727 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_INJEC) || \
lypinator 0:bb348c97df44 728 ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REGINJEC) || \
lypinator 0:bb348c97df44 729 ((WATCHDOG) == ADC_ANALOGWATCHDOG_NONE))
lypinator 0:bb348c97df44 730 #define IS_ADC_CHANNELS_TYPE(CHANNEL_TYPE) (((CHANNEL_TYPE) == ADC_ALL_CHANNELS) || \
lypinator 0:bb348c97df44 731 ((CHANNEL_TYPE) == ADC_REGULAR_CHANNELS) || \
lypinator 0:bb348c97df44 732 ((CHANNEL_TYPE) == ADC_INJECTED_CHANNELS))
lypinator 0:bb348c97df44 733 #define IS_ADC_THRESHOLD(THRESHOLD) ((THRESHOLD) <= 0xFFFU)
lypinator 0:bb348c97df44 734
lypinator 0:bb348c97df44 735 #define IS_ADC_REGULAR_LENGTH(LENGTH) (((LENGTH) >= 1U) && ((LENGTH) <= 16U))
lypinator 0:bb348c97df44 736 #define IS_ADC_REGULAR_RANK(RANK) (((RANK) >= 1U) && ((RANK) <= (16U)))
lypinator 0:bb348c97df44 737 #define IS_ADC_REGULAR_DISC_NUMBER(NUMBER) (((NUMBER) >= 1U) && ((NUMBER) <= 8U))
lypinator 0:bb348c97df44 738 #define IS_ADC_RANGE(RESOLUTION, ADC_VALUE) \
lypinator 0:bb348c97df44 739 ((((RESOLUTION) == ADC_RESOLUTION_12B) && ((ADC_VALUE) <= 0x0FFFU)) || \
lypinator 0:bb348c97df44 740 (((RESOLUTION) == ADC_RESOLUTION_10B) && ((ADC_VALUE) <= 0x03FFU)) || \
lypinator 0:bb348c97df44 741 (((RESOLUTION) == ADC_RESOLUTION_8B) && ((ADC_VALUE) <= 0x00FFU)) || \
lypinator 0:bb348c97df44 742 (((RESOLUTION) == ADC_RESOLUTION_6B) && ((ADC_VALUE) <= 0x003FU)))
lypinator 0:bb348c97df44 743
lypinator 0:bb348c97df44 744 /**
lypinator 0:bb348c97df44 745 * @brief Set ADC Regular channel sequence length.
lypinator 0:bb348c97df44 746 * @param _NbrOfConversion_ Regular channel sequence length.
lypinator 0:bb348c97df44 747 * @retval None
lypinator 0:bb348c97df44 748 */
lypinator 0:bb348c97df44 749 #define ADC_SQR1(_NbrOfConversion_) (((_NbrOfConversion_) - (uint8_t)1U) << 20U)
lypinator 0:bb348c97df44 750
lypinator 0:bb348c97df44 751 /**
lypinator 0:bb348c97df44 752 * @brief Set the ADC's sample time for channel numbers between 10 and 18.
lypinator 0:bb348c97df44 753 * @param _SAMPLETIME_ Sample time parameter.
lypinator 0:bb348c97df44 754 * @param _CHANNELNB_ Channel number.
lypinator 0:bb348c97df44 755 * @retval None
lypinator 0:bb348c97df44 756 */
lypinator 0:bb348c97df44 757 #define ADC_SMPR1(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3U * (((uint32_t)((uint16_t)(_CHANNELNB_))) - 10U)))
lypinator 0:bb348c97df44 758
lypinator 0:bb348c97df44 759 /**
lypinator 0:bb348c97df44 760 * @brief Set the ADC's sample time for channel numbers between 0 and 9.
lypinator 0:bb348c97df44 761 * @param _SAMPLETIME_ Sample time parameter.
lypinator 0:bb348c97df44 762 * @param _CHANNELNB_ Channel number.
lypinator 0:bb348c97df44 763 * @retval None
lypinator 0:bb348c97df44 764 */
lypinator 0:bb348c97df44 765 #define ADC_SMPR2(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3U * ((uint32_t)((uint16_t)(_CHANNELNB_)))))
lypinator 0:bb348c97df44 766
lypinator 0:bb348c97df44 767 /**
lypinator 0:bb348c97df44 768 * @brief Set the selected regular channel rank for rank between 1 and 6.
lypinator 0:bb348c97df44 769 * @param _CHANNELNB_ Channel number.
lypinator 0:bb348c97df44 770 * @param _RANKNB_ Rank number.
lypinator 0:bb348c97df44 771 * @retval None
lypinator 0:bb348c97df44 772 */
lypinator 0:bb348c97df44 773 #define ADC_SQR3_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5U * ((_RANKNB_) - 1U)))
lypinator 0:bb348c97df44 774
lypinator 0:bb348c97df44 775 /**
lypinator 0:bb348c97df44 776 * @brief Set the selected regular channel rank for rank between 7 and 12.
lypinator 0:bb348c97df44 777 * @param _CHANNELNB_ Channel number.
lypinator 0:bb348c97df44 778 * @param _RANKNB_ Rank number.
lypinator 0:bb348c97df44 779 * @retval None
lypinator 0:bb348c97df44 780 */
lypinator 0:bb348c97df44 781 #define ADC_SQR2_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5U * ((_RANKNB_) - 7U)))
lypinator 0:bb348c97df44 782
lypinator 0:bb348c97df44 783 /**
lypinator 0:bb348c97df44 784 * @brief Set the selected regular channel rank for rank between 13 and 16.
lypinator 0:bb348c97df44 785 * @param _CHANNELNB_ Channel number.
lypinator 0:bb348c97df44 786 * @param _RANKNB_ Rank number.
lypinator 0:bb348c97df44 787 * @retval None
lypinator 0:bb348c97df44 788 */
lypinator 0:bb348c97df44 789 #define ADC_SQR1_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5U * ((_RANKNB_) - 13U)))
lypinator 0:bb348c97df44 790
lypinator 0:bb348c97df44 791 /**
lypinator 0:bb348c97df44 792 * @brief Enable ADC continuous conversion mode.
lypinator 0:bb348c97df44 793 * @param _CONTINUOUS_MODE_ Continuous mode.
lypinator 0:bb348c97df44 794 * @retval None
lypinator 0:bb348c97df44 795 */
lypinator 0:bb348c97df44 796 #define ADC_CR2_CONTINUOUS(_CONTINUOUS_MODE_) ((_CONTINUOUS_MODE_) << 1U)
lypinator 0:bb348c97df44 797
lypinator 0:bb348c97df44 798 /**
lypinator 0:bb348c97df44 799 * @brief Configures the number of discontinuous conversions for the regular group channels.
lypinator 0:bb348c97df44 800 * @param _NBR_DISCONTINUOUSCONV_ Number of discontinuous conversions.
lypinator 0:bb348c97df44 801 * @retval None
lypinator 0:bb348c97df44 802 */
lypinator 0:bb348c97df44 803 #define ADC_CR1_DISCONTINUOUS(_NBR_DISCONTINUOUSCONV_) (((_NBR_DISCONTINUOUSCONV_) - 1U) << ADC_CR1_DISCNUM_Pos)
lypinator 0:bb348c97df44 804
lypinator 0:bb348c97df44 805 /**
lypinator 0:bb348c97df44 806 * @brief Enable ADC scan mode.
lypinator 0:bb348c97df44 807 * @param _SCANCONV_MODE_ Scan conversion mode.
lypinator 0:bb348c97df44 808 * @retval None
lypinator 0:bb348c97df44 809 */
lypinator 0:bb348c97df44 810 #define ADC_CR1_SCANCONV(_SCANCONV_MODE_) ((_SCANCONV_MODE_) << 8U)
lypinator 0:bb348c97df44 811
lypinator 0:bb348c97df44 812 /**
lypinator 0:bb348c97df44 813 * @brief Enable the ADC end of conversion selection.
lypinator 0:bb348c97df44 814 * @param _EOCSelection_MODE_ End of conversion selection mode.
lypinator 0:bb348c97df44 815 * @retval None
lypinator 0:bb348c97df44 816 */
lypinator 0:bb348c97df44 817 #define ADC_CR2_EOCSelection(_EOCSelection_MODE_) ((_EOCSelection_MODE_) << 10U)
lypinator 0:bb348c97df44 818
lypinator 0:bb348c97df44 819 /**
lypinator 0:bb348c97df44 820 * @brief Enable the ADC DMA continuous request.
lypinator 0:bb348c97df44 821 * @param _DMAContReq_MODE_ DMA continuous request mode.
lypinator 0:bb348c97df44 822 * @retval None
lypinator 0:bb348c97df44 823 */
lypinator 0:bb348c97df44 824 #define ADC_CR2_DMAContReq(_DMAContReq_MODE_) ((_DMAContReq_MODE_) << 9U)
lypinator 0:bb348c97df44 825
lypinator 0:bb348c97df44 826 /**
lypinator 0:bb348c97df44 827 * @brief Return resolution bits in CR1 register.
lypinator 0:bb348c97df44 828 * @param __HANDLE__ ADC handle
lypinator 0:bb348c97df44 829 * @retval None
lypinator 0:bb348c97df44 830 */
lypinator 0:bb348c97df44 831 #define ADC_GET_RESOLUTION(__HANDLE__) (((__HANDLE__)->Instance->CR1) & ADC_CR1_RES)
lypinator 0:bb348c97df44 832
lypinator 0:bb348c97df44 833 /**
lypinator 0:bb348c97df44 834 * @}
lypinator 0:bb348c97df44 835 */
lypinator 0:bb348c97df44 836
lypinator 0:bb348c97df44 837 /* Private functions ---------------------------------------------------------*/
lypinator 0:bb348c97df44 838 /** @defgroup ADC_Private_Functions ADC Private Functions
lypinator 0:bb348c97df44 839 * @{
lypinator 0:bb348c97df44 840 */
lypinator 0:bb348c97df44 841
lypinator 0:bb348c97df44 842 /**
lypinator 0:bb348c97df44 843 * @}
lypinator 0:bb348c97df44 844 */
lypinator 0:bb348c97df44 845
lypinator 0:bb348c97df44 846 /**
lypinator 0:bb348c97df44 847 * @}
lypinator 0:bb348c97df44 848 */
lypinator 0:bb348c97df44 849
lypinator 0:bb348c97df44 850 /**
lypinator 0:bb348c97df44 851 * @}
lypinator 0:bb348c97df44 852 */
lypinator 0:bb348c97df44 853
lypinator 0:bb348c97df44 854 #ifdef __cplusplus
lypinator 0:bb348c97df44 855 }
lypinator 0:bb348c97df44 856 #endif
lypinator 0:bb348c97df44 857
lypinator 0:bb348c97df44 858 #endif /*__STM32F4xx_ADC_H */
lypinator 0:bb348c97df44 859
lypinator 0:bb348c97df44 860
lypinator 0:bb348c97df44 861 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/