mbed official / mbed

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

Committer:
Kojto
Date:
Fri Aug 12 13:04:35 2016 +0200
Revision:
123:b0220dba8be7
Release 123 of the mbed library

Changes:
- new targets: nucleo_f207zg, beetle, nrf51_dk, hexiwear,
nuvoton nuc472, vk rz a1h
- ST - fix timer interrupt handler, sleep api fix
- NXP - lpc15xx us ticker fix
- Nordic - analogin fixes, LF clock init addition, enable i2c async

Who changed what in which revision?

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