The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /**
AnnaBridge 171:3a7713b1edbc 2 ******************************************************************************
AnnaBridge 171:3a7713b1edbc 3 * @file stm32f7xx_hal_adc.h
AnnaBridge 171:3a7713b1edbc 4 * @author MCD Application Team
AnnaBridge 171:3a7713b1edbc 5 * @brief Header file of ADC HAL module.
AnnaBridge 171:3a7713b1edbc 6 ******************************************************************************
AnnaBridge 171:3a7713b1edbc 7 * @attention
AnnaBridge 171:3a7713b1edbc 8 *
AnnaBridge 171:3a7713b1edbc 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
AnnaBridge 171:3a7713b1edbc 10 *
AnnaBridge 171:3a7713b1edbc 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 171:3a7713b1edbc 12 * are permitted provided that the following conditions are met:
AnnaBridge 171:3a7713b1edbc 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 171:3a7713b1edbc 14 * this list of conditions and the following disclaimer.
AnnaBridge 171:3a7713b1edbc 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 171:3a7713b1edbc 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 171:3a7713b1edbc 17 * and/or other materials provided with the distribution.
AnnaBridge 171:3a7713b1edbc 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 171:3a7713b1edbc 19 * may be used to endorse or promote products derived from this software
AnnaBridge 171:3a7713b1edbc 20 * without specific prior written permission.
AnnaBridge 171:3a7713b1edbc 21 *
AnnaBridge 171:3a7713b1edbc 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 171:3a7713b1edbc 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 171:3a7713b1edbc 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 171:3a7713b1edbc 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 171:3a7713b1edbc 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 171:3a7713b1edbc 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 171:3a7713b1edbc 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 171:3a7713b1edbc 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 171:3a7713b1edbc 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 171:3a7713b1edbc 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 171:3a7713b1edbc 32 *
AnnaBridge 171:3a7713b1edbc 33 ******************************************************************************
AnnaBridge 171:3a7713b1edbc 34 */
AnnaBridge 171:3a7713b1edbc 35
AnnaBridge 171:3a7713b1edbc 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 171:3a7713b1edbc 37 #ifndef __STM32F7xx_ADC_EX_H
AnnaBridge 171:3a7713b1edbc 38 #define __STM32F7xx_ADC_EX_H
AnnaBridge 171:3a7713b1edbc 39
AnnaBridge 171:3a7713b1edbc 40 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 41 extern "C" {
AnnaBridge 171:3a7713b1edbc 42 #endif
AnnaBridge 171:3a7713b1edbc 43
AnnaBridge 171:3a7713b1edbc 44 /* Includes ------------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 45 #include "stm32f7xx_hal_def.h"
AnnaBridge 171:3a7713b1edbc 46
AnnaBridge 171:3a7713b1edbc 47 /** @addtogroup STM32F7xx_HAL_Driver
AnnaBridge 171:3a7713b1edbc 48 * @{
AnnaBridge 171:3a7713b1edbc 49 */
AnnaBridge 171:3a7713b1edbc 50
AnnaBridge 171:3a7713b1edbc 51 /** @addtogroup ADCEx
AnnaBridge 171:3a7713b1edbc 52 * @{
AnnaBridge 171:3a7713b1edbc 53 */
AnnaBridge 171:3a7713b1edbc 54
AnnaBridge 171:3a7713b1edbc 55 /* Exported types ------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 56 /** @defgroup ADCEx_Exported_Types ADC Exported Types
AnnaBridge 171:3a7713b1edbc 57 * @{
AnnaBridge 171:3a7713b1edbc 58 */
AnnaBridge 171:3a7713b1edbc 59
AnnaBridge 171:3a7713b1edbc 60 /**
AnnaBridge 171:3a7713b1edbc 61 * @brief ADC Configuration injected Channel structure definition
AnnaBridge 171:3a7713b1edbc 62 * @note Parameters of this structure are shared within 2 scopes:
AnnaBridge 171:3a7713b1edbc 63 * - Scope channel: InjectedChannel, InjectedRank, InjectedSamplingTime, InjectedOffset
AnnaBridge 171:3a7713b1edbc 64 * - Scope injected group (affects all channels of injected group): InjectedNbrOfConversion, InjectedDiscontinuousConvMode,
AnnaBridge 171:3a7713b1edbc 65 * AutoInjectedConv, ExternalTrigInjecConvEdge, ExternalTrigInjecConv.
AnnaBridge 171:3a7713b1edbc 66 * @note The setting of these parameters with function HAL_ADCEx_InjectedConfigChannel() is conditioned to ADC state.
AnnaBridge 171:3a7713b1edbc 67 * ADC state can be either:
AnnaBridge 171:3a7713b1edbc 68 * - For all parameters: ADC disabled
AnnaBridge 171:3a7713b1edbc 69 * - For all except parameters 'InjectedDiscontinuousConvMode' and 'AutoInjectedConv': ADC enabled without conversion on going on injected group.
AnnaBridge 171:3a7713b1edbc 70 * - For parameters 'ExternalTrigInjecConv' and 'ExternalTrigInjecConvEdge': ADC enabled, even with conversion on going on injected group.
AnnaBridge 171:3a7713b1edbc 71 */
AnnaBridge 171:3a7713b1edbc 72 typedef struct
AnnaBridge 171:3a7713b1edbc 73 {
AnnaBridge 171:3a7713b1edbc 74 uint32_t InjectedChannel; /*!< Selection of ADC channel to configure
AnnaBridge 171:3a7713b1edbc 75 This parameter can be a value of @ref ADC_channels
AnnaBridge 171:3a7713b1edbc 76 Note: Depending on devices, some channels may not be available on package pins. Refer to device datasheet for channels availability. */
AnnaBridge 171:3a7713b1edbc 77 uint32_t InjectedRank; /*!< Rank in the injected group sequencer
AnnaBridge 171:3a7713b1edbc 78 This parameter must be a value of @ref ADCEx_injected_rank
AnnaBridge 171:3a7713b1edbc 79 Note: In case of need to disable a channel or change order of conversion sequencer, rank containing a previous channel setting can be overwritten by the new channel setting (or parameter number of conversions can be adjusted) */
AnnaBridge 171:3a7713b1edbc 80 uint32_t InjectedSamplingTime; /*!< Sampling time value to be set for the selected channel.
AnnaBridge 171:3a7713b1edbc 81 Unit: ADC clock cycles
AnnaBridge 171:3a7713b1edbc 82 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).
AnnaBridge 171:3a7713b1edbc 83 This parameter can be a value of @ref ADC_sampling_times
AnnaBridge 171:3a7713b1edbc 84 Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups.
AnnaBridge 171:3a7713b1edbc 85 If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting.
AnnaBridge 171:3a7713b1edbc 86 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
AnnaBridge 171:3a7713b1edbc 87 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
AnnaBridge 171:3a7713b1edbc 88 Refer to device datasheet for timings values, parameters TS_vrefint, TS_temp (values rough order: 4us min). */
AnnaBridge 171:3a7713b1edbc 89 uint32_t InjectedOffset; /*!< Defines the offset to be subtracted from the raw converted data (for channels set on injected group only).
AnnaBridge 171:3a7713b1edbc 90 Offset value must be a positive number.
AnnaBridge 171:3a7713b1edbc 91 Depending of ADC resolution selected (12, 10, 8 or 6 bits),
AnnaBridge 171:3a7713b1edbc 92 this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively. */
AnnaBridge 171:3a7713b1edbc 93 uint32_t InjectedNbrOfConversion; /*!< Specifies the number of ranks that will be converted within the injected group sequencer.
AnnaBridge 171:3a7713b1edbc 94 To use the injected group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
AnnaBridge 171:3a7713b1edbc 95 This parameter must be a number between Min_Data = 1 and Max_Data = 4.
AnnaBridge 171:3a7713b1edbc 96 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
AnnaBridge 171:3a7713b1edbc 97 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 171:3a7713b1edbc 98 uint32_t InjectedDiscontinuousConvMode; /*!< Specifies whether the conversions sequence of injected group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts).
AnnaBridge 171:3a7713b1edbc 99 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
AnnaBridge 171:3a7713b1edbc 100 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
AnnaBridge 171:3a7713b1edbc 101 This parameter can be set to ENABLE or DISABLE.
AnnaBridge 171:3a7713b1edbc 102 Note: For injected group, number of discontinuous ranks increment is fixed to one-by-one.
AnnaBridge 171:3a7713b1edbc 103 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
AnnaBridge 171:3a7713b1edbc 104 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 171:3a7713b1edbc 105 uint32_t AutoInjectedConv; /*!< Enables or disables the selected ADC automatic injected group conversion after regular one
AnnaBridge 171:3a7713b1edbc 106 This parameter can be set to ENABLE or DISABLE.
AnnaBridge 171:3a7713b1edbc 107 Note: To use Automatic injected conversion, discontinuous mode must be disabled ('DiscontinuousConvMode' and 'InjectedDiscontinuousConvMode' set to DISABLE)
AnnaBridge 171:3a7713b1edbc 108 Note: To use Automatic injected conversion, injected group external triggers must be disabled ('ExternalTrigInjecConv' set to ADC_SOFTWARE_START)
AnnaBridge 171:3a7713b1edbc 109 Note: In case of DMA used with regular group: if DMA configured in normal mode (single shot) JAUTO will be stopped upon DMA transfer complete.
AnnaBridge 171:3a7713b1edbc 110 To maintain JAUTO always enabled, DMA must be configured in circular mode.
AnnaBridge 171:3a7713b1edbc 111 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
AnnaBridge 171:3a7713b1edbc 112 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 171:3a7713b1edbc 113 uint32_t ExternalTrigInjecConv; /*!< Selects the external event used to trigger the conversion start of injected group.
AnnaBridge 171:3a7713b1edbc 114 If set to ADC_INJECTED_SOFTWARE_START, external triggers are disabled.
AnnaBridge 171:3a7713b1edbc 115 If set to external trigger source, triggering is on event rising edge.
AnnaBridge 171:3a7713b1edbc 116 This parameter can be a value of @ref ADCEx_External_trigger_Source_Injected
AnnaBridge 171:3a7713b1edbc 117 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
AnnaBridge 171:3a7713b1edbc 118 If ADC is enabled, this parameter setting is bypassed without error reporting (as it can be the expected behaviour in case of another parameter update on the fly)
AnnaBridge 171:3a7713b1edbc 119 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
AnnaBridge 171:3a7713b1edbc 120 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 171:3a7713b1edbc 121 uint32_t ExternalTrigInjecConvEdge; /*!< Selects the external trigger edge of injected group.
AnnaBridge 171:3a7713b1edbc 122 This parameter can be a value of @ref ADCEx_External_trigger_edge_Injected.
AnnaBridge 171:3a7713b1edbc 123 If trigger is set to ADC_INJECTED_SOFTWARE_START, this parameter is discarded.
AnnaBridge 171:3a7713b1edbc 124 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
AnnaBridge 171:3a7713b1edbc 125 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 171:3a7713b1edbc 126 }ADC_InjectionConfTypeDef;
AnnaBridge 171:3a7713b1edbc 127
AnnaBridge 171:3a7713b1edbc 128 /**
AnnaBridge 171:3a7713b1edbc 129 * @brief ADC Configuration multi-mode structure definition
AnnaBridge 171:3a7713b1edbc 130 */
AnnaBridge 171:3a7713b1edbc 131 typedef struct
AnnaBridge 171:3a7713b1edbc 132 {
AnnaBridge 171:3a7713b1edbc 133 uint32_t Mode; /*!< Configures the ADC to operate in independent or multi mode.
AnnaBridge 171:3a7713b1edbc 134 This parameter can be a value of @ref ADCEx_Common_mode */
AnnaBridge 171:3a7713b1edbc 135 uint32_t DMAAccessMode; /*!< Configures the Direct memory access mode for multi ADC mode.
AnnaBridge 171:3a7713b1edbc 136 This parameter can be a value of @ref ADCEx_Direct_memory_access_mode_for_multi_mode */
AnnaBridge 171:3a7713b1edbc 137 uint32_t TwoSamplingDelay; /*!< Configures the Delay between 2 sampling phases.
AnnaBridge 171:3a7713b1edbc 138 This parameter can be a value of @ref ADC_delay_between_2_sampling_phases */
AnnaBridge 171:3a7713b1edbc 139 }ADC_MultiModeTypeDef;
AnnaBridge 171:3a7713b1edbc 140
AnnaBridge 171:3a7713b1edbc 141 /**
AnnaBridge 171:3a7713b1edbc 142 * @}
AnnaBridge 171:3a7713b1edbc 143 */
AnnaBridge 171:3a7713b1edbc 144
AnnaBridge 171:3a7713b1edbc 145 /* Exported constants --------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 146 /** @defgroup ADCEx_Exported_Constants ADC Exported Constants
AnnaBridge 171:3a7713b1edbc 147 * @{
AnnaBridge 171:3a7713b1edbc 148 */
AnnaBridge 171:3a7713b1edbc 149
AnnaBridge 171:3a7713b1edbc 150 /** @defgroup ADCEx_Common_mode ADC Common Mode
AnnaBridge 171:3a7713b1edbc 151 * @{
AnnaBridge 171:3a7713b1edbc 152 */
AnnaBridge 171:3a7713b1edbc 153 #define ADC_MODE_INDEPENDENT ((uint32_t)0x00000000U)
AnnaBridge 171:3a7713b1edbc 154 #define ADC_DUALMODE_REGSIMULT_INJECSIMULT ((uint32_t)ADC_CCR_MULTI_0)
AnnaBridge 171:3a7713b1edbc 155 #define ADC_DUALMODE_REGSIMULT_ALTERTRIG ((uint32_t)ADC_CCR_MULTI_1)
AnnaBridge 171:3a7713b1edbc 156 #define ADC_DUALMODE_INJECSIMULT ((uint32_t)(ADC_CCR_MULTI_2 | ADC_CCR_MULTI_0))
AnnaBridge 171:3a7713b1edbc 157 #define ADC_DUALMODE_REGSIMULT ((uint32_t)(ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1))
AnnaBridge 171:3a7713b1edbc 158 #define ADC_DUALMODE_INTERL ((uint32_t)(ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0))
AnnaBridge 171:3a7713b1edbc 159 #define ADC_DUALMODE_ALTERTRIG ((uint32_t)(ADC_CCR_MULTI_3 | ADC_CCR_MULTI_0))
AnnaBridge 171:3a7713b1edbc 160 #define ADC_TRIPLEMODE_REGSIMULT_INJECSIMULT ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_0))
AnnaBridge 171:3a7713b1edbc 161 #define ADC_TRIPLEMODE_REGSIMULT_AlterTrig ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_1))
AnnaBridge 171:3a7713b1edbc 162 #define ADC_TRIPLEMODE_INJECSIMULT ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_0))
AnnaBridge 171:3a7713b1edbc 163 #define ADC_TRIPLEMODE_REGSIMULT ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1))
AnnaBridge 171:3a7713b1edbc 164 #define ADC_TRIPLEMODE_INTERL ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0))
AnnaBridge 171:3a7713b1edbc 165 #define ADC_TRIPLEMODE_ALTERTRIG ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_3 | ADC_CCR_MULTI_0))
AnnaBridge 171:3a7713b1edbc 166 /**
AnnaBridge 171:3a7713b1edbc 167 * @}
AnnaBridge 171:3a7713b1edbc 168 */
AnnaBridge 171:3a7713b1edbc 169
AnnaBridge 171:3a7713b1edbc 170 /** @defgroup ADCEx_Direct_memory_access_mode_for_multi_mode ADC Direct Memory Access Mode For Multi Mode
AnnaBridge 171:3a7713b1edbc 171 * @{
AnnaBridge 171:3a7713b1edbc 172 */
AnnaBridge 171:3a7713b1edbc 173 #define ADC_DMAACCESSMODE_DISABLED ((uint32_t)0x00000000U) /*!< DMA mode disabled */
AnnaBridge 171:3a7713b1edbc 174 #define ADC_DMAACCESSMODE_1 ((uint32_t)ADC_CCR_DMA_0) /*!< DMA mode 1 enabled (2 / 3 half-words one by one - 1 then 2 then 3)*/
AnnaBridge 171:3a7713b1edbc 175 #define ADC_DMAACCESSMODE_2 ((uint32_t)ADC_CCR_DMA_1) /*!< DMA mode 2 enabled (2 / 3 half-words by pairs - 2&1 then 1&3 then 3&2)*/
AnnaBridge 171:3a7713b1edbc 176 #define ADC_DMAACCESSMODE_3 ((uint32_t)ADC_CCR_DMA) /*!< DMA mode 3 enabled (2 / 3 bytes by pairs - 2&1 then 1&3 then 3&2) */
AnnaBridge 171:3a7713b1edbc 177 /**
AnnaBridge 171:3a7713b1edbc 178 * @}
AnnaBridge 171:3a7713b1edbc 179 */
AnnaBridge 171:3a7713b1edbc 180
AnnaBridge 171:3a7713b1edbc 181 /** @defgroup ADCEx_External_trigger_edge_Injected ADC External Trigger Edge Injected
AnnaBridge 171:3a7713b1edbc 182 * @{
AnnaBridge 171:3a7713b1edbc 183 */
AnnaBridge 171:3a7713b1edbc 184 #define ADC_EXTERNALTRIGINJECCONVEDGE_NONE ((uint32_t)0x00000000U)
AnnaBridge 171:3a7713b1edbc 185 #define ADC_EXTERNALTRIGINJECCONVEDGE_RISING ((uint32_t)ADC_CR2_JEXTEN_0)
AnnaBridge 171:3a7713b1edbc 186 #define ADC_EXTERNALTRIGINJECCONVEDGE_FALLING ((uint32_t)ADC_CR2_JEXTEN_1)
AnnaBridge 171:3a7713b1edbc 187 #define ADC_EXTERNALTRIGINJECCONVEDGE_RISINGFALLING ((uint32_t)ADC_CR2_JEXTEN)
AnnaBridge 171:3a7713b1edbc 188 /**
AnnaBridge 171:3a7713b1edbc 189 * @}
AnnaBridge 171:3a7713b1edbc 190 */
AnnaBridge 171:3a7713b1edbc 191
AnnaBridge 171:3a7713b1edbc 192 /** @defgroup ADCEx_External_trigger_Source_Injected ADC External Trigger Source Injected
AnnaBridge 171:3a7713b1edbc 193 * @{
AnnaBridge 171:3a7713b1edbc 194 */
AnnaBridge 171:3a7713b1edbc 195 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO ((uint32_t)0x00000000U)
AnnaBridge 171:3a7713b1edbc 196 #define ADC_EXTERNALTRIGINJECCONV_T1_CC4 ((uint32_t)ADC_CR2_JEXTSEL_0)
AnnaBridge 171:3a7713b1edbc 197 #define ADC_EXTERNALTRIGINJECCONV_T2_TRGO ((uint32_t)ADC_CR2_JEXTSEL_1)
AnnaBridge 171:3a7713b1edbc 198 #define ADC_EXTERNALTRIGINJECCONV_T2_CC1 ((uint32_t)(ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0))
AnnaBridge 171:3a7713b1edbc 199 #define ADC_EXTERNALTRIGINJECCONV_T3_CC4 ((uint32_t)ADC_CR2_JEXTSEL_2)
AnnaBridge 171:3a7713b1edbc 200 #define ADC_EXTERNALTRIGINJECCONV_T4_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0))
AnnaBridge 171:3a7713b1edbc 201
AnnaBridge 171:3a7713b1edbc 202 #define ADC_EXTERNALTRIGINJECCONV_T8_CC4 ((uint32_t)(ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0))
AnnaBridge 171:3a7713b1edbc 203 #define ADC_EXTERNALTRIGINJECCONV_T1_TRGO2 ((uint32_t)ADC_CR2_JEXTSEL_3)
AnnaBridge 171:3a7713b1edbc 204 #define ADC_EXTERNALTRIGINJECCONV_T8_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_0))
AnnaBridge 171:3a7713b1edbc 205 #define ADC_EXTERNALTRIGINJECCONV_T8_TRGO2 ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_1))
AnnaBridge 171:3a7713b1edbc 206 #define ADC_EXTERNALTRIGINJECCONV_T3_CC3 ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0))
AnnaBridge 171:3a7713b1edbc 207 #define ADC_EXTERNALTRIGINJECCONV_T5_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2))
AnnaBridge 171:3a7713b1edbc 208 #define ADC_EXTERNALTRIGINJECCONV_T3_CC1 ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0))
AnnaBridge 171:3a7713b1edbc 209 #define ADC_EXTERNALTRIGINJECCONV_T6_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1))
AnnaBridge 171:3a7713b1edbc 210 #define ADC_INJECTED_SOFTWARE_START ((uint32_t)ADC_CR2_JEXTSEL + 1)
AnnaBridge 171:3a7713b1edbc 211 /**
AnnaBridge 171:3a7713b1edbc 212 * @}
AnnaBridge 171:3a7713b1edbc 213 */
AnnaBridge 171:3a7713b1edbc 214
AnnaBridge 171:3a7713b1edbc 215 /** @defgroup ADCEx_injected_rank ADC Injected Channel Rank
AnnaBridge 171:3a7713b1edbc 216 * @{
AnnaBridge 171:3a7713b1edbc 217 */
AnnaBridge 171:3a7713b1edbc 218 #define ADC_INJECTED_RANK_1 ((uint32_t)0x00000001U)
AnnaBridge 171:3a7713b1edbc 219 #define ADC_INJECTED_RANK_2 ((uint32_t)0x00000002U)
AnnaBridge 171:3a7713b1edbc 220 #define ADC_INJECTED_RANK_3 ((uint32_t)0x00000003U)
AnnaBridge 171:3a7713b1edbc 221 #define ADC_INJECTED_RANK_4 ((uint32_t)0x00000004U)
AnnaBridge 171:3a7713b1edbc 222 /**
AnnaBridge 171:3a7713b1edbc 223 * @}
AnnaBridge 171:3a7713b1edbc 224 */
AnnaBridge 171:3a7713b1edbc 225
AnnaBridge 171:3a7713b1edbc 226 /** @defgroup ADCEx_channels ADC Specific Channels
AnnaBridge 171:3a7713b1edbc 227 * @{
AnnaBridge 171:3a7713b1edbc 228 */
AnnaBridge 171:3a7713b1edbc 229 #define ADC_CHANNEL_TEMPSENSOR ((uint32_t)ADC_CHANNEL_18 | 0x10000000U)
AnnaBridge 171:3a7713b1edbc 230 /**
AnnaBridge 171:3a7713b1edbc 231 * @}
AnnaBridge 171:3a7713b1edbc 232 */
AnnaBridge 171:3a7713b1edbc 233
AnnaBridge 171:3a7713b1edbc 234 /**
AnnaBridge 171:3a7713b1edbc 235 * @}
AnnaBridge 171:3a7713b1edbc 236 */
AnnaBridge 171:3a7713b1edbc 237
AnnaBridge 171:3a7713b1edbc 238 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 239 /** @defgroup ADC_Exported_Macros ADC Exported Macros
AnnaBridge 171:3a7713b1edbc 240 * @{
AnnaBridge 171:3a7713b1edbc 241 */
AnnaBridge 171:3a7713b1edbc 242 /**
AnnaBridge 171:3a7713b1edbc 243 * @}
AnnaBridge 171:3a7713b1edbc 244 */
AnnaBridge 171:3a7713b1edbc 245
AnnaBridge 171:3a7713b1edbc 246 /* Exported functions --------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 247 /** @addtogroup ADCEx_Exported_Functions
AnnaBridge 171:3a7713b1edbc 248 * @{
AnnaBridge 171:3a7713b1edbc 249 */
AnnaBridge 171:3a7713b1edbc 250
AnnaBridge 171:3a7713b1edbc 251 /** @addtogroup ADCEx_Exported_Functions_Group1
AnnaBridge 171:3a7713b1edbc 252 * @{
AnnaBridge 171:3a7713b1edbc 253 */
AnnaBridge 171:3a7713b1edbc 254
AnnaBridge 171:3a7713b1edbc 255 /* I/O operation functions ******************************************************/
AnnaBridge 171:3a7713b1edbc 256 HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef* hadc);
AnnaBridge 171:3a7713b1edbc 257 HAL_StatusTypeDef HAL_ADCEx_InjectedStop(ADC_HandleTypeDef* hadc);
AnnaBridge 171:3a7713b1edbc 258 HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
AnnaBridge 171:3a7713b1edbc 259 HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef* hadc);
AnnaBridge 171:3a7713b1edbc 260 HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(ADC_HandleTypeDef* hadc);
AnnaBridge 171:3a7713b1edbc 261 uint32_t HAL_ADCEx_InjectedGetValue(ADC_HandleTypeDef* hadc, uint32_t InjectedRank);
AnnaBridge 171:3a7713b1edbc 262 HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);
AnnaBridge 171:3a7713b1edbc 263 HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef* hadc);
AnnaBridge 171:3a7713b1edbc 264 uint32_t HAL_ADCEx_MultiModeGetValue(ADC_HandleTypeDef* hadc);
AnnaBridge 171:3a7713b1edbc 265 void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc);
AnnaBridge 171:3a7713b1edbc 266
AnnaBridge 171:3a7713b1edbc 267 /* Peripheral Control functions *************************************************/
AnnaBridge 171:3a7713b1edbc 268 HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef* hadc,ADC_InjectionConfTypeDef* sConfigInjected);
AnnaBridge 171:3a7713b1edbc 269 HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef* hadc, ADC_MultiModeTypeDef* multimode);
AnnaBridge 171:3a7713b1edbc 270
AnnaBridge 171:3a7713b1edbc 271 /**
AnnaBridge 171:3a7713b1edbc 272 * @}
AnnaBridge 171:3a7713b1edbc 273 */
AnnaBridge 171:3a7713b1edbc 274
AnnaBridge 171:3a7713b1edbc 275 /**
AnnaBridge 171:3a7713b1edbc 276 * @}
AnnaBridge 171:3a7713b1edbc 277 */
AnnaBridge 171:3a7713b1edbc 278 /* Private types -------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 279 /* Private variables ---------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 280 /* Private constants ---------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 281 /** @defgroup ADCEx_Private_Constants ADC Private Constants
AnnaBridge 171:3a7713b1edbc 282 * @{
AnnaBridge 171:3a7713b1edbc 283 */
AnnaBridge 171:3a7713b1edbc 284
AnnaBridge 171:3a7713b1edbc 285 /**
AnnaBridge 171:3a7713b1edbc 286 * @}
AnnaBridge 171:3a7713b1edbc 287 */
AnnaBridge 171:3a7713b1edbc 288
AnnaBridge 171:3a7713b1edbc 289 /* Private macros ------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 290 /** @defgroup ADCEx_Private_Macros ADC Private Macros
AnnaBridge 171:3a7713b1edbc 291 * @{
AnnaBridge 171:3a7713b1edbc 292 */
AnnaBridge 171:3a7713b1edbc 293 #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) <= ADC_CHANNEL_18) || \
AnnaBridge 171:3a7713b1edbc 294 ((CHANNEL) == ADC_CHANNEL_TEMPSENSOR))
AnnaBridge 171:3a7713b1edbc 295
AnnaBridge 171:3a7713b1edbc 296 #define IS_ADC_MODE(__MODE__) (((__MODE__) == ADC_MODE_INDEPENDENT) || \
AnnaBridge 171:3a7713b1edbc 297 ((__MODE__) == ADC_DUALMODE_REGSIMULT_INJECSIMULT) || \
AnnaBridge 171:3a7713b1edbc 298 ((__MODE__) == ADC_DUALMODE_REGSIMULT_ALTERTRIG) || \
AnnaBridge 171:3a7713b1edbc 299 ((__MODE__) == ADC_DUALMODE_INJECSIMULT) || \
AnnaBridge 171:3a7713b1edbc 300 ((__MODE__) == ADC_DUALMODE_REGSIMULT) || \
AnnaBridge 171:3a7713b1edbc 301 ((__MODE__) == ADC_DUALMODE_INTERL) || \
AnnaBridge 171:3a7713b1edbc 302 ((__MODE__) == ADC_DUALMODE_ALTERTRIG) || \
AnnaBridge 171:3a7713b1edbc 303 ((__MODE__) == ADC_TRIPLEMODE_REGSIMULT_INJECSIMULT) || \
AnnaBridge 171:3a7713b1edbc 304 ((__MODE__) == ADC_TRIPLEMODE_REGSIMULT_AlterTrig) || \
AnnaBridge 171:3a7713b1edbc 305 ((__MODE__) == ADC_TRIPLEMODE_INJECSIMULT) || \
AnnaBridge 171:3a7713b1edbc 306 ((__MODE__) == ADC_TRIPLEMODE_REGSIMULT) || \
AnnaBridge 171:3a7713b1edbc 307 ((__MODE__) == ADC_TRIPLEMODE_INTERL) || \
AnnaBridge 171:3a7713b1edbc 308 ((__MODE__) == ADC_TRIPLEMODE_ALTERTRIG))
AnnaBridge 171:3a7713b1edbc 309 #define IS_ADC_DMA_ACCESS_MODE(__MODE__) (((__MODE__) == ADC_DMAACCESSMODE_DISABLED) || \
AnnaBridge 171:3a7713b1edbc 310 ((__MODE__) == ADC_DMAACCESSMODE_1) || \
AnnaBridge 171:3a7713b1edbc 311 ((__MODE__) == ADC_DMAACCESSMODE_2) || \
AnnaBridge 171:3a7713b1edbc 312 ((__MODE__) == ADC_DMAACCESSMODE_3))
AnnaBridge 171:3a7713b1edbc 313 #define IS_ADC_EXT_INJEC_TRIG_EDGE(__EDGE__) (((__EDGE__) == ADC_EXTERNALTRIGINJECCONVEDGE_NONE) || \
AnnaBridge 171:3a7713b1edbc 314 ((__EDGE__) == ADC_EXTERNALTRIGINJECCONVEDGE_RISING) || \
AnnaBridge 171:3a7713b1edbc 315 ((__EDGE__) == ADC_EXTERNALTRIGINJECCONVEDGE_FALLING) || \
AnnaBridge 171:3a7713b1edbc 316 ((__EDGE__) == ADC_EXTERNALTRIGINJECCONVEDGE_RISINGFALLING))
AnnaBridge 171:3a7713b1edbc 317 #define IS_ADC_EXT_INJEC_TRIG(__INJTRIG__) (((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO) || \
AnnaBridge 171:3a7713b1edbc 318 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T1_CC4) || \
AnnaBridge 171:3a7713b1edbc 319 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO) || \
AnnaBridge 171:3a7713b1edbc 320 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T2_CC1) || \
AnnaBridge 171:3a7713b1edbc 321 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T3_CC4) || \
AnnaBridge 171:3a7713b1edbc 322 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO) || \
AnnaBridge 171:3a7713b1edbc 323 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T8_CC4) || \
AnnaBridge 171:3a7713b1edbc 324 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO2) || \
AnnaBridge 171:3a7713b1edbc 325 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T8_TRGO) || \
AnnaBridge 171:3a7713b1edbc 326 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T8_TRGO2) || \
AnnaBridge 171:3a7713b1edbc 327 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T3_CC3) || \
AnnaBridge 171:3a7713b1edbc 328 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T5_TRGO) || \
AnnaBridge 171:3a7713b1edbc 329 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T3_CC1) || \
AnnaBridge 171:3a7713b1edbc 330 ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T6_TRGO) || \
AnnaBridge 171:3a7713b1edbc 331 ((__INJTRIG__) == ADC_INJECTED_SOFTWARE_START))
AnnaBridge 171:3a7713b1edbc 332 #define IS_ADC_INJECTED_RANK(__RANK__) (((__RANK__) == ADC_INJECTED_RANK_1) || \
AnnaBridge 171:3a7713b1edbc 333 ((__RANK__) == ADC_INJECTED_RANK_2) || \
AnnaBridge 171:3a7713b1edbc 334 ((__RANK__) == ADC_INJECTED_RANK_3) || \
AnnaBridge 171:3a7713b1edbc 335 ((__RANK__) == ADC_INJECTED_RANK_4))
AnnaBridge 171:3a7713b1edbc 336 #define IS_ADC_INJECTED_LENGTH(__LENGTH__) (((__LENGTH__) >= ((uint32_t)1)) && ((__LENGTH__) <= ((uint32_t)4)))
AnnaBridge 171:3a7713b1edbc 337
AnnaBridge 171:3a7713b1edbc 338 /**
AnnaBridge 171:3a7713b1edbc 339 * @brief Set the selected injected Channel rank.
AnnaBridge 171:3a7713b1edbc 340 * @param _CHANNELNB_ Channel number.
AnnaBridge 171:3a7713b1edbc 341 * @param _RANKNB_ Rank number.
AnnaBridge 171:3a7713b1edbc 342 * @param _JSQR_JL_ Sequence length.
AnnaBridge 171:3a7713b1edbc 343 * @retval None
AnnaBridge 171:3a7713b1edbc 344 */
AnnaBridge 171:3a7713b1edbc 345 #define ADC_JSQR(_CHANNELNB_, _RANKNB_,_JSQR_JL_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5 * (uint8_t)(((_RANKNB_) + 3) - (_JSQR_JL_))))
AnnaBridge 171:3a7713b1edbc 346 /**
AnnaBridge 171:3a7713b1edbc 347 * @}
AnnaBridge 171:3a7713b1edbc 348 */
AnnaBridge 171:3a7713b1edbc 349
AnnaBridge 171:3a7713b1edbc 350 /* Private functions ---------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 351 /** @defgroup ADCEx_Private_Functions ADC Private Functions
AnnaBridge 171:3a7713b1edbc 352 * @{
AnnaBridge 171:3a7713b1edbc 353 */
AnnaBridge 171:3a7713b1edbc 354
AnnaBridge 171:3a7713b1edbc 355 /**
AnnaBridge 171:3a7713b1edbc 356 * @}
AnnaBridge 171:3a7713b1edbc 357 */
AnnaBridge 171:3a7713b1edbc 358
AnnaBridge 171:3a7713b1edbc 359 /**
AnnaBridge 171:3a7713b1edbc 360 * @}
AnnaBridge 171:3a7713b1edbc 361 */
AnnaBridge 171:3a7713b1edbc 362
AnnaBridge 171:3a7713b1edbc 363 /**
AnnaBridge 171:3a7713b1edbc 364 * @}
AnnaBridge 171:3a7713b1edbc 365 */
AnnaBridge 171:3a7713b1edbc 366
AnnaBridge 171:3a7713b1edbc 367 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 368 }
AnnaBridge 171:3a7713b1edbc 369 #endif
AnnaBridge 171:3a7713b1edbc 370
AnnaBridge 171:3a7713b1edbc 371 #endif /*__STM32F7xx_ADC_EX_H */
AnnaBridge 171:3a7713b1edbc 372
AnnaBridge 171:3a7713b1edbc 373
AnnaBridge 171:3a7713b1edbc 374 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/