added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
mbed_official
Date:
Mon Mar 07 10:00:14 2016 +0000
Revision:
83:a036322b8637
Parent:
0:9b334a45a8ff
Child:
144:ef7eb2e8f9f7
Synchronized with git revision ee20d03969aa5c570152f88e8f3d8a4739eed40b

Full URL: https://github.com/mbedmicro/mbed/commit/ee20d03969aa5c570152f88e8f3d8a4739eed40b/

[STM32F7] Update STM32F7Cube_FW version

Who changed what in which revision?

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