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:
Kojto
Date:
Tue Feb 14 11:24:20 2017 +0000
Revision:
136:ef9c61f8c49f
Parent:
135:176b8275d35d
Child:
139:856d2700e60b
Release 136 of the mbed library

Ports for Upcoming Targets


Fixes and Changes

3432: Target STM USBHOST support https://github.com/ARMmbed/mbed-os/pull/3432
3181: NUCLEO_F207ZG extending PeripheralPins.c: all available alternate functions can be used now https://github.com/ARMmbed/mbed-os/pull/3181
3626: NUCLEO_F412ZG : Add USB Device +Host https://github.com/ARMmbed/mbed-os/pull/3626
3628: Fix warnings https://github.com/ARMmbed/mbed-os/pull/3628
3629: STM32: L0 LL layer https://github.com/ARMmbed/mbed-os/pull/3629
3632: IDE Export support for platform VK_RZ_A1H https://github.com/ARMmbed/mbed-os/pull/3632
3642: Missing IRQ pin fix for platform VK_RZ_A1H https://github.com/ARMmbed/mbed-os/pull/3642
3664: Fix ncs36510 sleep definitions https://github.com/ARMmbed/mbed-os/pull/3664
3655: [STM32F4] Modify folder structure https://github.com/ARMmbed/mbed-os/pull/3655
3657: [STM32L4] Modify folder structure https://github.com/ARMmbed/mbed-os/pull/3657
3658: [STM32F3] Modify folder structure https://github.com/ARMmbed/mbed-os/pull/3658
3685: STM32: I2C: reset state machine https://github.com/ARMmbed/mbed-os/pull/3685
3692: uVisor: Standardize available legacy heap and stack https://github.com/ARMmbed/mbed-os/pull/3692
3621: Fix for #2884, LPC824: export to LPCXpresso, target running with wron https://github.com/ARMmbed/mbed-os/pull/3621
3649: [STM32F7] Modify folder structure https://github.com/ARMmbed/mbed-os/pull/3649
3695: Enforce device_name is valid in targets.json https://github.com/ARMmbed/mbed-os/pull/3695
3723: NCS36510: spi_format function bug fix https://github.com/ARMmbed/mbed-os/pull/3723

Who changed what in which revision?

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