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
Parent:
TARGET_DISCO_F303VC/TARGET_STM/TARGET_STM32F3/device/stm32f3xx_ll_adc.h@168:b9e159c1930a
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 163:e59c8e839560 1 /**
AnnaBridge 163:e59c8e839560 2 ******************************************************************************
AnnaBridge 163:e59c8e839560 3 * @file stm32f3xx_ll_adc.h
AnnaBridge 163:e59c8e839560 4 * @author MCD Application Team
AnnaBridge 163:e59c8e839560 5 * @brief Header file of ADC LL module.
AnnaBridge 163:e59c8e839560 6 ******************************************************************************
AnnaBridge 163:e59c8e839560 7 * @attention
AnnaBridge 163:e59c8e839560 8 *
AnnaBridge 163:e59c8e839560 9 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
AnnaBridge 163:e59c8e839560 10 *
AnnaBridge 163:e59c8e839560 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 163:e59c8e839560 12 * are permitted provided that the following conditions are met:
AnnaBridge 163:e59c8e839560 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 163:e59c8e839560 14 * this list of conditions and the following disclaimer.
AnnaBridge 163:e59c8e839560 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 163:e59c8e839560 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 163:e59c8e839560 17 * and/or other materials provided with the distribution.
AnnaBridge 163:e59c8e839560 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 163:e59c8e839560 19 * may be used to endorse or promote products derived from this software
AnnaBridge 163:e59c8e839560 20 * without specific prior written permission.
AnnaBridge 163:e59c8e839560 21 *
AnnaBridge 163:e59c8e839560 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 163:e59c8e839560 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 163:e59c8e839560 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 163:e59c8e839560 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 163:e59c8e839560 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 163:e59c8e839560 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 163:e59c8e839560 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 163:e59c8e839560 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 163:e59c8e839560 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 163:e59c8e839560 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 163:e59c8e839560 32 *
AnnaBridge 163:e59c8e839560 33 ******************************************************************************
AnnaBridge 163:e59c8e839560 34 */
AnnaBridge 163:e59c8e839560 35
AnnaBridge 163:e59c8e839560 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 163:e59c8e839560 37 #ifndef __STM32F3xx_LL_ADC_H
AnnaBridge 163:e59c8e839560 38 #define __STM32F3xx_LL_ADC_H
AnnaBridge 163:e59c8e839560 39
AnnaBridge 163:e59c8e839560 40 #ifdef __cplusplus
AnnaBridge 163:e59c8e839560 41 extern "C" {
AnnaBridge 163:e59c8e839560 42 #endif
AnnaBridge 163:e59c8e839560 43
AnnaBridge 163:e59c8e839560 44 /* Includes ------------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 45 #include "stm32f3xx.h"
AnnaBridge 163:e59c8e839560 46
AnnaBridge 163:e59c8e839560 47 /** @addtogroup STM32F3xx_LL_Driver
AnnaBridge 163:e59c8e839560 48 * @{
AnnaBridge 163:e59c8e839560 49 */
AnnaBridge 163:e59c8e839560 50
AnnaBridge 163:e59c8e839560 51 /* Note: Devices of STM32F3 serie embed 1 out of 2 different ADC IP. */
AnnaBridge 163:e59c8e839560 52 /* - STM32F30x, STM32F31x, STM32F32x, STM32F33x, STM32F35x, STM32F39x: */
AnnaBridge 163:e59c8e839560 53 /* ADC IP 5Msamples/sec, from 1 to 4 ADC instances and other specific */
AnnaBridge 163:e59c8e839560 54 /* features (refer to reference manual). */
AnnaBridge 163:e59c8e839560 55 /* - STM32F37x: */
AnnaBridge 163:e59c8e839560 56 /* ADC IP 1Msamples/sec, 1 ADC instance */
AnnaBridge 163:e59c8e839560 57 /* This file contains the drivers of these ADC IP, located in 2 area */
AnnaBridge 163:e59c8e839560 58 /* delimited by compilation switches. */
AnnaBridge 163:e59c8e839560 59
AnnaBridge 163:e59c8e839560 60 #if defined(ADC5_V1_1)
AnnaBridge 163:e59c8e839560 61
AnnaBridge 163:e59c8e839560 62 #if defined (ADC1) || defined (ADC2) || defined (ADC3) || defined (ADC4)
AnnaBridge 163:e59c8e839560 63
AnnaBridge 163:e59c8e839560 64 /** @defgroup ADC_LL ADC
AnnaBridge 163:e59c8e839560 65 * @{
AnnaBridge 163:e59c8e839560 66 */
AnnaBridge 163:e59c8e839560 67
AnnaBridge 163:e59c8e839560 68 /* Private types -------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 69 /* Private variables ---------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 70
AnnaBridge 163:e59c8e839560 71 /* Private constants ---------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 72 /** @defgroup ADC_LL_Private_Constants ADC Private Constants
AnnaBridge 163:e59c8e839560 73 * @{
AnnaBridge 163:e59c8e839560 74 */
AnnaBridge 163:e59c8e839560 75
AnnaBridge 163:e59c8e839560 76 /* Internal mask for ADC group regular sequencer: */
AnnaBridge 163:e59c8e839560 77 /* To select into literal LL_ADC_REG_RANK_x the relevant bits for: */
AnnaBridge 163:e59c8e839560 78 /* - sequencer register offset */
AnnaBridge 163:e59c8e839560 79 /* - sequencer rank bits position into the selected register */
AnnaBridge 163:e59c8e839560 80
AnnaBridge 163:e59c8e839560 81 /* Internal register offset for ADC group regular sequencer configuration */
AnnaBridge 163:e59c8e839560 82 /* (offset placed into a spare area of literal definition) */
AnnaBridge 163:e59c8e839560 83 #define ADC_SQR1_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 84 #define ADC_SQR2_REGOFFSET ((uint32_t)0x00000100U)
AnnaBridge 163:e59c8e839560 85 #define ADC_SQR3_REGOFFSET ((uint32_t)0x00000200U)
AnnaBridge 163:e59c8e839560 86 #define ADC_SQR4_REGOFFSET ((uint32_t)0x00000300U)
AnnaBridge 163:e59c8e839560 87
AnnaBridge 163:e59c8e839560 88 #define ADC_REG_SQRX_REGOFFSET_MASK (ADC_SQR1_REGOFFSET | ADC_SQR2_REGOFFSET | ADC_SQR3_REGOFFSET | ADC_SQR4_REGOFFSET)
AnnaBridge 163:e59c8e839560 89 #define ADC_REG_RANK_ID_SQRX_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0)
AnnaBridge 163:e59c8e839560 90
AnnaBridge 163:e59c8e839560 91 /* Definition of ADC group regular sequencer bits information to be inserted */
AnnaBridge 163:e59c8e839560 92 /* into ADC group regular sequencer ranks literals definition. */
AnnaBridge 163:e59c8e839560 93 #define ADC_REG_RANK_1_SQRX_BITOFFSET_POS ((uint32_t) 6U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ1) */
AnnaBridge 163:e59c8e839560 94 #define ADC_REG_RANK_2_SQRX_BITOFFSET_POS ((uint32_t)12U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ2) */
AnnaBridge 163:e59c8e839560 95 #define ADC_REG_RANK_3_SQRX_BITOFFSET_POS ((uint32_t)18U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ3) */
AnnaBridge 163:e59c8e839560 96 #define ADC_REG_RANK_4_SQRX_BITOFFSET_POS ((uint32_t)24U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ4) */
AnnaBridge 163:e59c8e839560 97 #define ADC_REG_RANK_5_SQRX_BITOFFSET_POS ((uint32_t) 0U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ5) */
AnnaBridge 163:e59c8e839560 98 #define ADC_REG_RANK_6_SQRX_BITOFFSET_POS ((uint32_t) 6U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ6) */
AnnaBridge 163:e59c8e839560 99 #define ADC_REG_RANK_7_SQRX_BITOFFSET_POS ((uint32_t)12U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ7) */
AnnaBridge 163:e59c8e839560 100 #define ADC_REG_RANK_8_SQRX_BITOFFSET_POS ((uint32_t)18U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ8) */
AnnaBridge 163:e59c8e839560 101 #define ADC_REG_RANK_9_SQRX_BITOFFSET_POS ((uint32_t)24U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ9) */
AnnaBridge 163:e59c8e839560 102 #define ADC_REG_RANK_10_SQRX_BITOFFSET_POS ((uint32_t) 0U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ10) */
AnnaBridge 163:e59c8e839560 103 #define ADC_REG_RANK_11_SQRX_BITOFFSET_POS ((uint32_t) 6U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ11) */
AnnaBridge 163:e59c8e839560 104 #define ADC_REG_RANK_12_SQRX_BITOFFSET_POS ((uint32_t)12U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ12) */
AnnaBridge 163:e59c8e839560 105 #define ADC_REG_RANK_13_SQRX_BITOFFSET_POS ((uint32_t)18U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ13) */
AnnaBridge 163:e59c8e839560 106 #define ADC_REG_RANK_14_SQRX_BITOFFSET_POS ((uint32_t)24U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ14) */
AnnaBridge 163:e59c8e839560 107 #define ADC_REG_RANK_15_SQRX_BITOFFSET_POS ((uint32_t) 0U) /* Value equivalent to POSITION_VAL(ADC_SQR4_SQ15) */
AnnaBridge 163:e59c8e839560 108 #define ADC_REG_RANK_16_SQRX_BITOFFSET_POS ((uint32_t) 6U) /* Value equivalent to POSITION_VAL(ADC_SQR4_SQ16) */
AnnaBridge 163:e59c8e839560 109
AnnaBridge 163:e59c8e839560 110
AnnaBridge 163:e59c8e839560 111
AnnaBridge 163:e59c8e839560 112 /* Internal mask for ADC group injected sequencer: */
AnnaBridge 163:e59c8e839560 113 /* To select into literal LL_ADC_INJ_RANK_x the relevant bits for: */
AnnaBridge 163:e59c8e839560 114 /* - data register offset */
AnnaBridge 163:e59c8e839560 115 /* - sequencer rank bits position into the selected register */
AnnaBridge 163:e59c8e839560 116
AnnaBridge 163:e59c8e839560 117 /* Internal register offset for ADC group injected data register */
AnnaBridge 163:e59c8e839560 118 /* (offset placed into a spare area of literal definition) */
AnnaBridge 163:e59c8e839560 119 #define ADC_JDR1_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 120 #define ADC_JDR2_REGOFFSET ((uint32_t)0x00000100U)
AnnaBridge 163:e59c8e839560 121 #define ADC_JDR3_REGOFFSET ((uint32_t)0x00000200U)
AnnaBridge 163:e59c8e839560 122 #define ADC_JDR4_REGOFFSET ((uint32_t)0x00000300U)
AnnaBridge 163:e59c8e839560 123
AnnaBridge 163:e59c8e839560 124 #define ADC_INJ_JDRX_REGOFFSET_MASK (ADC_JDR1_REGOFFSET | ADC_JDR2_REGOFFSET | ADC_JDR3_REGOFFSET | ADC_JDR4_REGOFFSET)
AnnaBridge 163:e59c8e839560 125 #define ADC_INJ_RANK_ID_JSQR_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0)
AnnaBridge 163:e59c8e839560 126
AnnaBridge 163:e59c8e839560 127 /* Definition of ADC group injected sequencer bits information to be inserted */
AnnaBridge 163:e59c8e839560 128 /* into ADC group injected sequencer ranks literals definition. */
AnnaBridge 163:e59c8e839560 129 #define ADC_INJ_RANK_1_JSQR_BITOFFSET_POS ((uint32_t) 8U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ1) */
AnnaBridge 163:e59c8e839560 130 #define ADC_INJ_RANK_2_JSQR_BITOFFSET_POS ((uint32_t)14U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ2) */
AnnaBridge 163:e59c8e839560 131 #define ADC_INJ_RANK_3_JSQR_BITOFFSET_POS ((uint32_t)20U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ3) */
AnnaBridge 163:e59c8e839560 132 #define ADC_INJ_RANK_4_JSQR_BITOFFSET_POS ((uint32_t)26U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ4) */
AnnaBridge 163:e59c8e839560 133
AnnaBridge 163:e59c8e839560 134
AnnaBridge 163:e59c8e839560 135
AnnaBridge 163:e59c8e839560 136 /* Internal mask for ADC group regular trigger: */
AnnaBridge 163:e59c8e839560 137 /* To select into literal LL_ADC_REG_TRIG_x the relevant bits for: */
AnnaBridge 163:e59c8e839560 138 /* - regular trigger source */
AnnaBridge 163:e59c8e839560 139 /* - regular trigger edge */
AnnaBridge 163:e59c8e839560 140 #define ADC_REG_TRIG_EXT_EDGE_DEFAULT (ADC_CFGR_EXTEN_0) /* Trigger edge set to rising edge (default setting for compatibility with some ADC on other STM32 families having this setting set by HW default value) */
AnnaBridge 163:e59c8e839560 141
AnnaBridge 163:e59c8e839560 142 /* Mask containing trigger source masks for each of possible */
AnnaBridge 163:e59c8e839560 143 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
AnnaBridge 163:e59c8e839560 144 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
AnnaBridge 163:e59c8e839560 145 #define ADC_REG_TRIG_SOURCE_MASK (((LL_ADC_REG_TRIG_SOFTWARE & ADC_CFGR_EXTSEL) << (4U * 0U)) | \
AnnaBridge 163:e59c8e839560 146 ((ADC_CFGR_EXTSEL) << (4U * 1U)) | \
AnnaBridge 163:e59c8e839560 147 ((ADC_CFGR_EXTSEL) << (4U * 2U)) | \
AnnaBridge 163:e59c8e839560 148 ((ADC_CFGR_EXTSEL) << (4U * 3U)) )
AnnaBridge 163:e59c8e839560 149
AnnaBridge 163:e59c8e839560 150 /* Mask containing trigger edge masks for each of possible */
AnnaBridge 163:e59c8e839560 151 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
AnnaBridge 163:e59c8e839560 152 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
AnnaBridge 163:e59c8e839560 153 #define ADC_REG_TRIG_EDGE_MASK (((LL_ADC_REG_TRIG_SOFTWARE & ADC_CFGR_EXTEN) << (4U * 0U)) | \
AnnaBridge 163:e59c8e839560 154 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 1U)) | \
AnnaBridge 163:e59c8e839560 155 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 2U)) | \
AnnaBridge 163:e59c8e839560 156 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 3U)) )
AnnaBridge 163:e59c8e839560 157
AnnaBridge 163:e59c8e839560 158 /* Definition of ADC group regular trigger bits information. */
AnnaBridge 163:e59c8e839560 159 #define ADC_REG_TRIG_EXTSEL_BITOFFSET_POS ((uint32_t) 6U) /* Value equivalent to POSITION_VAL(ADC_CFGR_EXTSEL) */
AnnaBridge 163:e59c8e839560 160 #define ADC_REG_TRIG_EXTEN_BITOFFSET_POS ((uint32_t)10U) /* Value equivalent to POSITION_VAL(ADC_CFGR_EXTEN) */
AnnaBridge 163:e59c8e839560 161
AnnaBridge 163:e59c8e839560 162
AnnaBridge 163:e59c8e839560 163
AnnaBridge 163:e59c8e839560 164 /* Internal definitions for ADC group regular trigger sources: */
AnnaBridge 163:e59c8e839560 165 /* To differentiate into literal LL_ADC_REG_TRIG_x the trigger sources */
AnnaBridge 163:e59c8e839560 166 /* depending on ADC instances ADC1, ADC2, ADC3, ADC4 (if ADC instance is */
AnnaBridge 163:e59c8e839560 167 /* available on the selected device). */
AnnaBridge 163:e59c8e839560 168
AnnaBridge 163:e59c8e839560 169 #if defined(STM32F303xC) || defined(STM32F358xx) || defined(STM32F303xE) || defined(STM32F398xx)
AnnaBridge 163:e59c8e839560 170 /* Internal mask offset for ADC group injected trigger sources */
AnnaBridge 163:e59c8e839560 171 /* available only on specific ADC instances. */
AnnaBridge 163:e59c8e839560 172 /* (offset placed into a spare area of literal definition) */
AnnaBridge 163:e59c8e839560 173 #define ADC_REG_TRIG_EXT_INST_ADC12 ((uint32_t)0x00000001U) /* Marker for differentiation of ADC group regular external trigger available only on ADC instance: ADC1, ADC2 */
AnnaBridge 163:e59c8e839560 174 #define ADC_REG_TRIG_EXT_INST_ADC34 ((uint32_t)0x00000002U) /* Marker for differentiation of ADC group regular external trigger available only on ADC instance: ADC3, ADC4 */
AnnaBridge 163:e59c8e839560 175 #endif
AnnaBridge 163:e59c8e839560 176
AnnaBridge 163:e59c8e839560 177 /* Internal mask for ADC group injected trigger: */
AnnaBridge 163:e59c8e839560 178 /* To select into literal LL_ADC_INJ_TRIG_x the relevant bits for: */
AnnaBridge 163:e59c8e839560 179 /* - injected trigger source */
AnnaBridge 163:e59c8e839560 180 /* - injected trigger edge */
AnnaBridge 163:e59c8e839560 181 #define ADC_INJ_TRIG_EXT_EDGE_DEFAULT (ADC_JSQR_JEXTEN_0) /* Trigger edge set to rising edge (default setting for compatibility with some ADC on other STM32 families having this setting set by HW default value) */
AnnaBridge 163:e59c8e839560 182
AnnaBridge 163:e59c8e839560 183 /* Mask containing trigger source masks for each of possible */
AnnaBridge 163:e59c8e839560 184 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
AnnaBridge 163:e59c8e839560 185 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
AnnaBridge 163:e59c8e839560 186 #define ADC_INJ_TRIG_SOURCE_MASK (((LL_ADC_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTSEL) << (4U * 0U)) | \
AnnaBridge 163:e59c8e839560 187 ((ADC_JSQR_JEXTSEL) << (4U * 1U)) | \
AnnaBridge 163:e59c8e839560 188 ((ADC_JSQR_JEXTSEL) << (4U * 2U)) | \
AnnaBridge 163:e59c8e839560 189 ((ADC_JSQR_JEXTSEL) << (4U * 3U)) )
AnnaBridge 163:e59c8e839560 190
AnnaBridge 163:e59c8e839560 191 /* Mask containing trigger edge masks for each of possible */
AnnaBridge 163:e59c8e839560 192 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
AnnaBridge 163:e59c8e839560 193 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
AnnaBridge 163:e59c8e839560 194 #define ADC_INJ_TRIG_EDGE_MASK (((LL_ADC_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTEN) << (4U * 0U)) | \
AnnaBridge 163:e59c8e839560 195 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 1U)) | \
AnnaBridge 163:e59c8e839560 196 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 2U)) | \
AnnaBridge 163:e59c8e839560 197 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 3U)) )
AnnaBridge 163:e59c8e839560 198
AnnaBridge 163:e59c8e839560 199 /* Definition of ADC group injected trigger bits information. */
AnnaBridge 163:e59c8e839560 200 #define ADC_INJ_TRIG_EXTSEL_BITOFFSET_POS ((uint32_t) 2U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JEXTSEL) */
AnnaBridge 163:e59c8e839560 201 #define ADC_INJ_TRIG_EXTEN_BITOFFSET_POS ((uint32_t) 6U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JEXTEN) */
AnnaBridge 163:e59c8e839560 202
AnnaBridge 163:e59c8e839560 203
AnnaBridge 163:e59c8e839560 204
AnnaBridge 163:e59c8e839560 205 /* Internal definitions for ADC group injected trigger sources: */
AnnaBridge 163:e59c8e839560 206 /* To differentiate into literal LL_ADC_INJ_TRIG_x the trigger sources */
AnnaBridge 163:e59c8e839560 207 /* depending on ADC instances ADC1, ADC2, ADC3, ADC4 (if ADC instance is */
AnnaBridge 163:e59c8e839560 208 /* available on the selected device). */
AnnaBridge 163:e59c8e839560 209
AnnaBridge 163:e59c8e839560 210 #if defined(STM32F303xC) || defined(STM32F358xx) || defined(STM32F303xE) || defined(STM32F398xx)
AnnaBridge 163:e59c8e839560 211 /* Internal mask offset for ADC group injected trigger sources */
AnnaBridge 163:e59c8e839560 212 /* available only on specific ADC instances. */
AnnaBridge 163:e59c8e839560 213 /* (offset placed into a spare area of literal definition) */
AnnaBridge 163:e59c8e839560 214 #define ADC_INJ_TRIG_EXT_INST_ADC12 ((uint32_t)0x00000001U) /* Marker for differentiation of ADC group injected external trigger available only on ADC instance: ADC1, ADC2 */
AnnaBridge 163:e59c8e839560 215 #define ADC_INJ_TRIG_EXT_INST_ADC34 ((uint32_t)0x00000002U) /* Marker for differentiation of ADC group injected external trigger available only on ADC instance: ADC3, ADC4 */
AnnaBridge 163:e59c8e839560 216 #endif
AnnaBridge 163:e59c8e839560 217
AnnaBridge 163:e59c8e839560 218
AnnaBridge 163:e59c8e839560 219
AnnaBridge 163:e59c8e839560 220
AnnaBridge 163:e59c8e839560 221 /* Internal mask for ADC channel: */
AnnaBridge 163:e59c8e839560 222 /* To select into literal LL_ADC_CHANNEL_x the relevant bits for: */
AnnaBridge 163:e59c8e839560 223 /* - channel identifier defined by number */
AnnaBridge 163:e59c8e839560 224 /* - channel identifier defined by bitfield */
AnnaBridge 163:e59c8e839560 225 /* - channel differentiation between external channels (connected to */
AnnaBridge 163:e59c8e839560 226 /* GPIO pins) and internal channels (connected to internal paths) */
AnnaBridge 163:e59c8e839560 227 /* - channel sampling time defined by SMPRx register offset */
AnnaBridge 163:e59c8e839560 228 /* and SMPx bits positions into SMPRx register */
AnnaBridge 163:e59c8e839560 229 #define ADC_CHANNEL_ID_NUMBER_MASK (ADC_CFGR_AWD1CH)
AnnaBridge 163:e59c8e839560 230 #define ADC_CHANNEL_ID_BITFIELD_MASK (ADC_AWD2CR_AWD2CH)
AnnaBridge 163:e59c8e839560 231 #define ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS ((uint32_t)26U)/* Value equivalent to POSITION_VAL(ADC_CHANNEL_ID_NUMBER_MASK) */
AnnaBridge 163:e59c8e839560 232 #define ADC_CHANNEL_ID_MASK (ADC_CHANNEL_ID_NUMBER_MASK | ADC_CHANNEL_ID_BITFIELD_MASK | ADC_CHANNEL_ID_INTERNAL_CH_MASK)
AnnaBridge 163:e59c8e839560 233 /* Equivalent mask of ADC_CHANNEL_NUMBER_MASK aligned on register LSB (bit 0) */
AnnaBridge 163:e59c8e839560 234 #define ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 (ADC_SQR2_SQ5) /* Equivalent to shift: (ADC_CHANNEL_NUMBER_MASK >> POSITION_VAL(ADC_CHANNEL_NUMBER_MASK)) */
AnnaBridge 163:e59c8e839560 235
AnnaBridge 163:e59c8e839560 236 /* Channel differentiation between external and internal channels */
AnnaBridge 163:e59c8e839560 237 #define ADC_CHANNEL_ID_INTERNAL_CH ((uint32_t)0x80000000U) /* Marker of internal channel */
AnnaBridge 163:e59c8e839560 238 #define ADC_CHANNEL_ID_INTERNAL_CH_2 ((uint32_t)0x00080000U) /* Marker of internal channel for other ADC instances, in case of different ADC internal channels mapped on same channel number on different ADC instances */
AnnaBridge 163:e59c8e839560 239 #define ADC_CHANNEL_ID_INTERNAL_CH_MASK (ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2)
AnnaBridge 163:e59c8e839560 240
AnnaBridge 163:e59c8e839560 241 /* Internal register offset for ADC channel sampling time configuration */
AnnaBridge 163:e59c8e839560 242 /* (offset placed into a spare area of literal definition) */
AnnaBridge 163:e59c8e839560 243 #define ADC_SMPR1_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 244 #define ADC_SMPR2_REGOFFSET ((uint32_t)0x02000000U)
AnnaBridge 163:e59c8e839560 245 #define ADC_CHANNEL_SMPRX_REGOFFSET_MASK (ADC_SMPR1_REGOFFSET | ADC_SMPR2_REGOFFSET)
AnnaBridge 163:e59c8e839560 246
AnnaBridge 163:e59c8e839560 247 #define ADC_CHANNEL_SMPx_BITOFFSET_MASK ((uint32_t)0x01F00000U)
AnnaBridge 163:e59c8e839560 248 #define ADC_CHANNEL_SMPx_BITOFFSET_POS ((uint32_t)20U) /* Value equivalent to POSITION_VAL(ADC_CHANNEL_SMPx_BITOFFSET_MASK) */
AnnaBridge 163:e59c8e839560 249
AnnaBridge 163:e59c8e839560 250 /* Definition of channels ID number information to be inserted into */
AnnaBridge 163:e59c8e839560 251 /* channels literals definition. */
AnnaBridge 163:e59c8e839560 252 #define ADC_CHANNEL_0_NUMBER ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 253 #define ADC_CHANNEL_1_NUMBER ( ADC_CFGR_AWD1CH_0)
AnnaBridge 163:e59c8e839560 254 #define ADC_CHANNEL_2_NUMBER ( ADC_CFGR_AWD1CH_1 )
AnnaBridge 163:e59c8e839560 255 #define ADC_CHANNEL_3_NUMBER ( ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
AnnaBridge 163:e59c8e839560 256 #define ADC_CHANNEL_4_NUMBER ( ADC_CFGR_AWD1CH_2 )
AnnaBridge 163:e59c8e839560 257 #define ADC_CHANNEL_5_NUMBER ( ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_0)
AnnaBridge 163:e59c8e839560 258 #define ADC_CHANNEL_6_NUMBER ( ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1 )
AnnaBridge 163:e59c8e839560 259 #define ADC_CHANNEL_7_NUMBER ( ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
AnnaBridge 163:e59c8e839560 260 #define ADC_CHANNEL_8_NUMBER ( ADC_CFGR_AWD1CH_3 )
AnnaBridge 163:e59c8e839560 261 #define ADC_CHANNEL_9_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_0)
AnnaBridge 163:e59c8e839560 262 #define ADC_CHANNEL_10_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_1 )
AnnaBridge 163:e59c8e839560 263 #define ADC_CHANNEL_11_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
AnnaBridge 163:e59c8e839560 264 #define ADC_CHANNEL_12_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 )
AnnaBridge 163:e59c8e839560 265 #define ADC_CHANNEL_13_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_0)
AnnaBridge 163:e59c8e839560 266 #define ADC_CHANNEL_14_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1 )
AnnaBridge 163:e59c8e839560 267 #define ADC_CHANNEL_15_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
AnnaBridge 163:e59c8e839560 268 #define ADC_CHANNEL_16_NUMBER (ADC_CFGR_AWD1CH_4 )
AnnaBridge 163:e59c8e839560 269 #define ADC_CHANNEL_17_NUMBER (ADC_CFGR_AWD1CH_4 | ADC_CFGR_AWD1CH_0)
AnnaBridge 163:e59c8e839560 270 #define ADC_CHANNEL_18_NUMBER (ADC_CFGR_AWD1CH_4 | ADC_CFGR_AWD1CH_1 )
AnnaBridge 163:e59c8e839560 271
AnnaBridge 163:e59c8e839560 272 /* Definition of channels ID bitfield information to be inserted into */
AnnaBridge 163:e59c8e839560 273 /* channels literals definition. */
AnnaBridge 163:e59c8e839560 274 #define ADC_CHANNEL_0_BITFIELD (ADC_AWD2CR_AWD2CH_0)
AnnaBridge 163:e59c8e839560 275 #define ADC_CHANNEL_1_BITFIELD (ADC_AWD2CR_AWD2CH_1)
AnnaBridge 163:e59c8e839560 276 #define ADC_CHANNEL_2_BITFIELD (ADC_AWD2CR_AWD2CH_2)
AnnaBridge 163:e59c8e839560 277 #define ADC_CHANNEL_3_BITFIELD (ADC_AWD2CR_AWD2CH_3)
AnnaBridge 163:e59c8e839560 278 #define ADC_CHANNEL_4_BITFIELD (ADC_AWD2CR_AWD2CH_4)
AnnaBridge 163:e59c8e839560 279 #define ADC_CHANNEL_5_BITFIELD (ADC_AWD2CR_AWD2CH_5)
AnnaBridge 163:e59c8e839560 280 #define ADC_CHANNEL_6_BITFIELD (ADC_AWD2CR_AWD2CH_6)
AnnaBridge 163:e59c8e839560 281 #define ADC_CHANNEL_7_BITFIELD (ADC_AWD2CR_AWD2CH_7)
AnnaBridge 163:e59c8e839560 282 #define ADC_CHANNEL_8_BITFIELD (ADC_AWD2CR_AWD2CH_8)
AnnaBridge 163:e59c8e839560 283 #define ADC_CHANNEL_9_BITFIELD (ADC_AWD2CR_AWD2CH_9)
AnnaBridge 163:e59c8e839560 284 #define ADC_CHANNEL_10_BITFIELD (ADC_AWD2CR_AWD2CH_10)
AnnaBridge 163:e59c8e839560 285 #define ADC_CHANNEL_11_BITFIELD (ADC_AWD2CR_AWD2CH_11)
AnnaBridge 163:e59c8e839560 286 #define ADC_CHANNEL_12_BITFIELD (ADC_AWD2CR_AWD2CH_12)
AnnaBridge 163:e59c8e839560 287 #define ADC_CHANNEL_13_BITFIELD (ADC_AWD2CR_AWD2CH_13)
AnnaBridge 163:e59c8e839560 288 #define ADC_CHANNEL_14_BITFIELD (ADC_AWD2CR_AWD2CH_14)
AnnaBridge 163:e59c8e839560 289 #define ADC_CHANNEL_15_BITFIELD (ADC_AWD2CR_AWD2CH_15)
AnnaBridge 163:e59c8e839560 290 #define ADC_CHANNEL_16_BITFIELD (ADC_AWD2CR_AWD2CH_16)
AnnaBridge 163:e59c8e839560 291 #define ADC_CHANNEL_17_BITFIELD (ADC_AWD2CR_AWD2CH_17)
AnnaBridge 163:e59c8e839560 292 #define ADC_CHANNEL_18_BITFIELD (ADC_AWD2CR_AWD2CH_18)
AnnaBridge 163:e59c8e839560 293
AnnaBridge 163:e59c8e839560 294 /* Definition of channels sampling time information to be inserted into */
AnnaBridge 163:e59c8e839560 295 /* channels literals definition. */
AnnaBridge 163:e59c8e839560 296 #define ADC_CHANNEL_0_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t) 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP0) */
AnnaBridge 163:e59c8e839560 297 #define ADC_CHANNEL_1_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t) 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP1) */
AnnaBridge 163:e59c8e839560 298 #define ADC_CHANNEL_2_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t) 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP2) */
AnnaBridge 163:e59c8e839560 299 #define ADC_CHANNEL_3_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t) 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP3) */
AnnaBridge 163:e59c8e839560 300 #define ADC_CHANNEL_4_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t)12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP4) */
AnnaBridge 163:e59c8e839560 301 #define ADC_CHANNEL_5_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t)15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP5) */
AnnaBridge 163:e59c8e839560 302 #define ADC_CHANNEL_6_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t)18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP6) */
AnnaBridge 163:e59c8e839560 303 #define ADC_CHANNEL_7_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t)21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP7) */
AnnaBridge 163:e59c8e839560 304 #define ADC_CHANNEL_8_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t)24U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP8) */
AnnaBridge 163:e59c8e839560 305 #define ADC_CHANNEL_9_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t)27U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP9) */
AnnaBridge 163:e59c8e839560 306 #define ADC_CHANNEL_10_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t) 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP10) */
AnnaBridge 163:e59c8e839560 307 #define ADC_CHANNEL_11_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t) 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP11) */
AnnaBridge 163:e59c8e839560 308 #define ADC_CHANNEL_12_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t) 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP12) */
AnnaBridge 163:e59c8e839560 309 #define ADC_CHANNEL_13_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t) 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP13) */
AnnaBridge 163:e59c8e839560 310 #define ADC_CHANNEL_14_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP14) */
AnnaBridge 163:e59c8e839560 311 #define ADC_CHANNEL_15_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP15) */
AnnaBridge 163:e59c8e839560 312 #define ADC_CHANNEL_16_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP16) */
AnnaBridge 163:e59c8e839560 313 #define ADC_CHANNEL_17_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP17) */
AnnaBridge 163:e59c8e839560 314 #define ADC_CHANNEL_18_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)24U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP18) */
AnnaBridge 163:e59c8e839560 315
AnnaBridge 163:e59c8e839560 316
AnnaBridge 163:e59c8e839560 317 /* Internal mask for ADC mode single or differential ended: */
AnnaBridge 163:e59c8e839560 318 /* To select into literals LL_ADC_SINGLE_ENDED or LL_ADC_SINGLE_DIFFERENTIAL */
AnnaBridge 163:e59c8e839560 319 /* the relevant bits for: */
AnnaBridge 163:e59c8e839560 320 /* (concatenation of multiple bits used in different registers) */
AnnaBridge 163:e59c8e839560 321 /* - ADC calibration: calibration start, calibration factor get or set */
AnnaBridge 163:e59c8e839560 322 /* - ADC channels: set each ADC channel ending mode */
AnnaBridge 163:e59c8e839560 323 #define ADC_SINGLEDIFF_CALIB_START_MASK (ADC_CR_ADCALDIF)
AnnaBridge 163:e59c8e839560 324 #define ADC_SINGLEDIFF_CALIB_FACTOR_MASK (ADC_CALFACT_CALFACT_D | ADC_CALFACT_CALFACT_S)
AnnaBridge 163:e59c8e839560 325 #define ADC_SINGLEDIFF_CHANNEL_MASK (ADC_CHANNEL_ID_BITFIELD_MASK) /* Equivalent to ADC_DIFSEL_DIFSEL */
AnnaBridge 163:e59c8e839560 326 #define ADC_SINGLEDIFF_CHANNEL_SHIFT_MASK (ADC_CALFACT_CALFACT_S_5) /* Bit chosen to perform of shift when single mode is selected, shift value out of channels bits range. */
AnnaBridge 163:e59c8e839560 327
AnnaBridge 163:e59c8e839560 328
AnnaBridge 163:e59c8e839560 329 /* Internal mask for ADC analog watchdog: */
AnnaBridge 163:e59c8e839560 330 /* To select into literals LL_ADC_AWD_CHANNELx_xxx the relevant bits for: */
AnnaBridge 163:e59c8e839560 331 /* (concatenation of multiple bits used in different analog watchdogs, */
AnnaBridge 163:e59c8e839560 332 /* (feature of several watchdogs not available on all STM32 families)). */
AnnaBridge 163:e59c8e839560 333 /* - analog watchdog 1: monitored channel defined by number, */
AnnaBridge 163:e59c8e839560 334 /* selection of ADC group (ADC groups regular and-or injected). */
AnnaBridge 163:e59c8e839560 335 /* - analog watchdog 2 and 3: monitored channel defined by bitfield, no */
AnnaBridge 163:e59c8e839560 336 /* selection on groups. */
AnnaBridge 163:e59c8e839560 337
AnnaBridge 163:e59c8e839560 338 /* Internal register offset for ADC analog watchdog channel configuration */
AnnaBridge 163:e59c8e839560 339 #define ADC_AWD_CR1_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 340 #define ADC_AWD_CR2_REGOFFSET ((uint32_t)0x00100000U)
AnnaBridge 163:e59c8e839560 341 #define ADC_AWD_CR3_REGOFFSET ((uint32_t)0x00200000U)
AnnaBridge 163:e59c8e839560 342
AnnaBridge 163:e59c8e839560 343 /* Register offset gap between AWD1 and AWD2-AWD3 configuration registers */
AnnaBridge 163:e59c8e839560 344 /* (Set separately as ADC_AWD_CRX_REGOFFSET to spare 32 bits space */
AnnaBridge 163:e59c8e839560 345 #define ADC_AWD_CR12_REGOFFSETGAP_MASK (ADC_AWD2CR_AWD2CH_0)
AnnaBridge 163:e59c8e839560 346 #define ADC_AWD_CR12_REGOFFSETGAP_VAL ((uint32_t)0x00000024U)
AnnaBridge 163:e59c8e839560 347
AnnaBridge 163:e59c8e839560 348 #define ADC_AWD_CRX_REGOFFSET_MASK (ADC_AWD_CR1_REGOFFSET | ADC_AWD_CR2_REGOFFSET | ADC_AWD_CR3_REGOFFSET)
AnnaBridge 163:e59c8e839560 349
AnnaBridge 163:e59c8e839560 350 #define ADC_AWD_CR1_CHANNEL_MASK (ADC_CFGR_AWD1CH | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
AnnaBridge 163:e59c8e839560 351 #define ADC_AWD_CR23_CHANNEL_MASK (ADC_AWD2CR_AWD2CH)
AnnaBridge 163:e59c8e839560 352 #define ADC_AWD_CR_ALL_CHANNEL_MASK (ADC_AWD_CR1_CHANNEL_MASK | ADC_AWD_CR23_CHANNEL_MASK)
AnnaBridge 163:e59c8e839560 353
AnnaBridge 163:e59c8e839560 354 /* Internal register offset for ADC analog watchdog threshold configuration */
AnnaBridge 163:e59c8e839560 355 #define ADC_AWD_TR1_REGOFFSET (ADC_AWD_CR1_REGOFFSET)
AnnaBridge 163:e59c8e839560 356 #define ADC_AWD_TR2_REGOFFSET (ADC_AWD_CR2_REGOFFSET)
AnnaBridge 163:e59c8e839560 357 #define ADC_AWD_TR3_REGOFFSET (ADC_AWD_CR3_REGOFFSET)
AnnaBridge 163:e59c8e839560 358 #define ADC_AWD_TRX_REGOFFSET_MASK (ADC_AWD_TR1_REGOFFSET | ADC_AWD_TR2_REGOFFSET | ADC_AWD_TR3_REGOFFSET)
AnnaBridge 163:e59c8e839560 359
AnnaBridge 163:e59c8e839560 360
AnnaBridge 163:e59c8e839560 361 /* Internal mask for ADC offset: */
AnnaBridge 163:e59c8e839560 362 /* Internal register offset for ADC offset number configuration */
AnnaBridge 163:e59c8e839560 363 #define ADC_OFR1_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 364 #define ADC_OFR2_REGOFFSET ((uint32_t)0x00000001U)
AnnaBridge 163:e59c8e839560 365 #define ADC_OFR3_REGOFFSET ((uint32_t)0x00000002U)
AnnaBridge 163:e59c8e839560 366 #define ADC_OFR4_REGOFFSET ((uint32_t)0x00000003U)
AnnaBridge 163:e59c8e839560 367 #define ADC_OFRx_REGOFFSET_MASK (ADC_OFR1_REGOFFSET | ADC_OFR2_REGOFFSET | ADC_OFR3_REGOFFSET | ADC_OFR4_REGOFFSET)
AnnaBridge 163:e59c8e839560 368
AnnaBridge 163:e59c8e839560 369
AnnaBridge 163:e59c8e839560 370 /* ADC registers bits positions */
AnnaBridge 163:e59c8e839560 371 #define ADC_CFGR_RES_BITOFFSET_POS ((uint32_t) 3U) /* Value equivalent to POSITION_VAL(ADC_CFGR_RES) */
AnnaBridge 163:e59c8e839560 372 #define ADC_CFGR_AWD1SGL_BITOFFSET_POS ((uint32_t)22U) /* Value equivalent to POSITION_VAL(ADC_CFGR_AWD1SGL) */
AnnaBridge 163:e59c8e839560 373 #define ADC_CFGR_AWD1EN_BITOFFSET_POS ((uint32_t)23U) /* Value equivalent to POSITION_VAL(ADC_CFGR_AWD1EN) */
AnnaBridge 163:e59c8e839560 374 #define ADC_CFGR_JAWD1EN_BITOFFSET_POS ((uint32_t)24U) /* Value equivalent to POSITION_VAL(ADC_CFGR_JAWD1EN) */
AnnaBridge 163:e59c8e839560 375 #define ADC_TR1_HT1_BITOFFSET_POS ((uint32_t)16U) /* Value equivalent to POSITION_VAL(ADC_TR1_HT1) */
AnnaBridge 163:e59c8e839560 376
AnnaBridge 163:e59c8e839560 377
AnnaBridge 163:e59c8e839560 378 /* ADC registers bits groups */
AnnaBridge 163:e59c8e839560 379 #define ADC_CR_BITS_PROPERTY_RS (ADC_CR_ADCAL | ADC_CR_JADSTP | ADC_CR_ADSTP | ADC_CR_JADSTART | ADC_CR_ADSTART | ADC_CR_ADDIS | ADC_CR_ADEN) /* ADC register CR bits with HW property "rs": Software can read as well as set this bit. Writing '0' has no effect on the bit value. */
AnnaBridge 163:e59c8e839560 380
AnnaBridge 163:e59c8e839560 381
AnnaBridge 163:e59c8e839560 382 /* ADC internal channels related definitions */
AnnaBridge 163:e59c8e839560 383 /* Internal voltage reference VrefInt */
AnnaBridge 163:e59c8e839560 384 #define VREFINT_CAL_ADDR ((uint16_t*) ((uint32_t)0x1FFFF7BAU)) /* Internal voltage reference, address of parameter VREFINT_CAL: VrefInt ADC raw data acquired at temperature 30 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */
AnnaBridge 163:e59c8e839560 385 #define VREFINT_CAL_VREF ((uint32_t) 3300U) /* Analog voltage reference (Vref+) value with which temperature sensor has been calibrated in production (tolerance: +-10 mV) (unit: mV). */
AnnaBridge 163:e59c8e839560 386 /* Temperature sensor */
AnnaBridge 163:e59c8e839560 387 #define TEMPSENSOR_CAL1_ADDR ((uint16_t*) ((uint32_t)0x1FFFF7B8U)) /* Internal temperature sensor, address of parameter TS_CAL1: On STM32F3, temperature sensor ADC raw data acquired at temperature 25 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */
AnnaBridge 163:e59c8e839560 388 #define TEMPSENSOR_CAL2_ADDR ((uint16_t*) ((uint32_t)0x1FFFF7C2U)) /* Internal temperature sensor, address of parameter TS_CAL2: On STM32F3, temperature sensor ADC raw data acquired at temperature 110 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */
AnnaBridge 163:e59c8e839560 389 #define TEMPSENSOR_CAL1_TEMP (( int32_t) 25) /* Internal temperature sensor, temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL1_ADDR (tolerance: +-5 DegC) (unit: DegC). */
AnnaBridge 163:e59c8e839560 390 #define TEMPSENSOR_CAL2_TEMP (( int32_t) 110) /* Internal temperature sensor, temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL2_ADDR (tolerance: +-5 DegC) (unit: DegC). */
AnnaBridge 163:e59c8e839560 391 #define TEMPSENSOR_CAL_VREFANALOG ((uint32_t) 3300U) /* Analog voltage reference (Vref+) voltage with which temperature sensor has been calibrated in production (+-10 mV) (unit: mV). */
AnnaBridge 163:e59c8e839560 392
AnnaBridge 163:e59c8e839560 393
AnnaBridge 163:e59c8e839560 394 /**
AnnaBridge 163:e59c8e839560 395 * @}
AnnaBridge 163:e59c8e839560 396 */
AnnaBridge 163:e59c8e839560 397
AnnaBridge 163:e59c8e839560 398
AnnaBridge 163:e59c8e839560 399 /* Private macros ------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 400 /** @defgroup ADC_LL_Private_Macros ADC Private Macros
AnnaBridge 163:e59c8e839560 401 * @{
AnnaBridge 163:e59c8e839560 402 */
AnnaBridge 163:e59c8e839560 403
AnnaBridge 163:e59c8e839560 404 /**
AnnaBridge 163:e59c8e839560 405 * @brief Driver macro reserved for internal use: isolate bits with the
AnnaBridge 163:e59c8e839560 406 * selected mask and shift them to the register LSB
AnnaBridge 163:e59c8e839560 407 * (shift mask on register position bit 0).
AnnaBridge 163:e59c8e839560 408 * @param __BITS__ Bits in register 32 bits
AnnaBridge 163:e59c8e839560 409 * @param __MASK__ Mask in register 32 bits
AnnaBridge 163:e59c8e839560 410 * @retval Bits in register 32 bits
AnnaBridge 163:e59c8e839560 411 */
AnnaBridge 163:e59c8e839560 412 #define __ADC_MASK_SHIFT(__BITS__, __MASK__) \
AnnaBridge 163:e59c8e839560 413 (((__BITS__) & (__MASK__)) >> POSITION_VAL((__MASK__)))
AnnaBridge 163:e59c8e839560 414
AnnaBridge 163:e59c8e839560 415 /**
AnnaBridge 163:e59c8e839560 416 * @brief Driver macro reserved for internal use: set a pointer to
AnnaBridge 163:e59c8e839560 417 * a register from a register basis from which an offset
AnnaBridge 163:e59c8e839560 418 * is applied.
AnnaBridge 163:e59c8e839560 419 * @param __REG__ Register basis from which the offset is applied.
AnnaBridge 163:e59c8e839560 420 * @param __REG_OFFFSET__ Offset to be applied (unit: number of registers).
AnnaBridge 163:e59c8e839560 421 * @retval Pointer to register address
AnnaBridge 163:e59c8e839560 422 */
AnnaBridge 163:e59c8e839560 423 #define __ADC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \
AnnaBridge 163:e59c8e839560 424 ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U))))
AnnaBridge 163:e59c8e839560 425
AnnaBridge 163:e59c8e839560 426 /**
AnnaBridge 163:e59c8e839560 427 * @}
AnnaBridge 163:e59c8e839560 428 */
AnnaBridge 163:e59c8e839560 429
AnnaBridge 163:e59c8e839560 430
AnnaBridge 163:e59c8e839560 431 /* Exported types ------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 432 #if defined(USE_FULL_LL_DRIVER)
AnnaBridge 163:e59c8e839560 433 /** @defgroup ADC_LL_ES_INIT ADC Exported Init structure
AnnaBridge 163:e59c8e839560 434 * @{
AnnaBridge 163:e59c8e839560 435 */
AnnaBridge 163:e59c8e839560 436
AnnaBridge 163:e59c8e839560 437 /**
AnnaBridge 163:e59c8e839560 438 * @brief Structure definition of some features of ADC common parameters
AnnaBridge 163:e59c8e839560 439 * and multimode
AnnaBridge 163:e59c8e839560 440 * (all ADC instances belonging to the same ADC common instance).
AnnaBridge 163:e59c8e839560 441 * @note The setting of these parameters by function @ref LL_ADC_CommonInit()
AnnaBridge 163:e59c8e839560 442 * is conditioned to ADC instances state (all ADC instances
AnnaBridge 163:e59c8e839560 443 * sharing the same ADC common instance):
AnnaBridge 163:e59c8e839560 444 * All ADC instances sharing the same ADC common instance must be
AnnaBridge 163:e59c8e839560 445 * disabled.
AnnaBridge 163:e59c8e839560 446 */
AnnaBridge 163:e59c8e839560 447 typedef struct
AnnaBridge 163:e59c8e839560 448 {
AnnaBridge 163:e59c8e839560 449 uint32_t CommonClock; /*!< Set parameter common to several ADC: Clock source and prescaler.
AnnaBridge 163:e59c8e839560 450 This parameter can be a value of @ref ADC_LL_EC_COMMON_CLOCK_SOURCE
AnnaBridge 163:e59c8e839560 451 @note On this STM32 serie, if ADC group injected is used, some
AnnaBridge 163:e59c8e839560 452 clock ratio constraints between ADC clock and AHB clock
AnnaBridge 163:e59c8e839560 453 must be respected. Refer to reference manual.
AnnaBridge 163:e59c8e839560 454
AnnaBridge 163:e59c8e839560 455 This feature can be modified afterwards using unitary function @ref LL_ADC_SetCommonClock(). */
AnnaBridge 163:e59c8e839560 456
AnnaBridge 163:e59c8e839560 457 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 163:e59c8e839560 458 uint32_t Multimode; /*!< Set ADC multimode configuration to operate in independent mode or multimode (for devices with several ADC instances).
AnnaBridge 163:e59c8e839560 459 This parameter can be a value of @ref ADC_LL_EC_MULTI_MODE
AnnaBridge 163:e59c8e839560 460
AnnaBridge 163:e59c8e839560 461 This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultimode(). */
AnnaBridge 163:e59c8e839560 462
AnnaBridge 163:e59c8e839560 463 uint32_t MultiDMATransfer; /*!< Set ADC multimode conversion data transfer: no transfer or transfer by DMA.
AnnaBridge 163:e59c8e839560 464 This parameter can be a value of @ref ADC_LL_EC_MULTI_DMA_TRANSFER
AnnaBridge 163:e59c8e839560 465
AnnaBridge 163:e59c8e839560 466 This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultiDMATransfer(). */
AnnaBridge 163:e59c8e839560 467
AnnaBridge 163:e59c8e839560 468 uint32_t MultiTwoSamplingDelay; /*!< Set ADC multimode delay between 2 sampling phases.
AnnaBridge 163:e59c8e839560 469 This parameter can be a value of @ref ADC_LL_EC_MULTI_TWOSMP_DELAY
AnnaBridge 163:e59c8e839560 470
AnnaBridge 163:e59c8e839560 471 This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultiTwoSamplingDelay(). */
AnnaBridge 163:e59c8e839560 472 #endif /* ADC_MULTIMODE_SUPPORT */
AnnaBridge 163:e59c8e839560 473
AnnaBridge 163:e59c8e839560 474 } LL_ADC_CommonInitTypeDef;
AnnaBridge 163:e59c8e839560 475
AnnaBridge 163:e59c8e839560 476 /**
AnnaBridge 163:e59c8e839560 477 * @brief Structure definition of some features of ADC instance.
AnnaBridge 163:e59c8e839560 478 * @note These parameters have an impact on ADC scope: ADC instance.
AnnaBridge 163:e59c8e839560 479 * Affects both group regular and group injected (availability
AnnaBridge 163:e59c8e839560 480 * of ADC group injected depends on STM32 families).
AnnaBridge 163:e59c8e839560 481 * Refer to corresponding unitary functions into
AnnaBridge 163:e59c8e839560 482 * @ref ADC_LL_EF_Configuration_ADC_Instance .
AnnaBridge 163:e59c8e839560 483 * @note The setting of these parameters by function @ref LL_ADC_Init()
AnnaBridge 163:e59c8e839560 484 * is conditioned to ADC state:
AnnaBridge 163:e59c8e839560 485 * ADC instance must be disabled.
AnnaBridge 163:e59c8e839560 486 * This condition is applied to all ADC features, for efficiency
AnnaBridge 163:e59c8e839560 487 * and compatibility over all STM32 families. However, the different
AnnaBridge 163:e59c8e839560 488 * features can be set under different ADC state conditions
AnnaBridge 163:e59c8e839560 489 * (setting possible with ADC enabled without conversion on going,
AnnaBridge 163:e59c8e839560 490 * ADC enabled with conversion on going, ...)
AnnaBridge 163:e59c8e839560 491 * Each feature can be updated afterwards with a unitary function
AnnaBridge 163:e59c8e839560 492 * and potentially with ADC in a different state than disabled,
AnnaBridge 163:e59c8e839560 493 * refer to description of each function for setting
AnnaBridge 163:e59c8e839560 494 * conditioned to ADC state.
AnnaBridge 163:e59c8e839560 495 */
AnnaBridge 163:e59c8e839560 496 typedef struct
AnnaBridge 163:e59c8e839560 497 {
AnnaBridge 163:e59c8e839560 498 uint32_t Resolution; /*!< Set ADC resolution.
AnnaBridge 163:e59c8e839560 499 This parameter can be a value of @ref ADC_LL_EC_RESOLUTION
AnnaBridge 163:e59c8e839560 500
AnnaBridge 163:e59c8e839560 501 This feature can be modified afterwards using unitary function @ref LL_ADC_SetResolution(). */
AnnaBridge 163:e59c8e839560 502
AnnaBridge 163:e59c8e839560 503 uint32_t DataAlignment; /*!< Set ADC conversion data alignment.
AnnaBridge 163:e59c8e839560 504 This parameter can be a value of @ref ADC_LL_EC_DATA_ALIGN
AnnaBridge 163:e59c8e839560 505
AnnaBridge 163:e59c8e839560 506 This feature can be modified afterwards using unitary function @ref LL_ADC_SetDataAlignment(). */
AnnaBridge 163:e59c8e839560 507
AnnaBridge 163:e59c8e839560 508 uint32_t LowPowerMode; /*!< Set ADC low power mode.
AnnaBridge 163:e59c8e839560 509 This parameter can be a value of @ref ADC_LL_EC_LP_MODE
AnnaBridge 163:e59c8e839560 510
AnnaBridge 163:e59c8e839560 511 This feature can be modified afterwards using unitary function @ref LL_ADC_SetLowPowerMode(). */
AnnaBridge 163:e59c8e839560 512
AnnaBridge 163:e59c8e839560 513 } LL_ADC_InitTypeDef;
AnnaBridge 163:e59c8e839560 514
AnnaBridge 163:e59c8e839560 515 /**
AnnaBridge 163:e59c8e839560 516 * @brief Structure definition of some features of ADC group regular.
AnnaBridge 163:e59c8e839560 517 * @note These parameters have an impact on ADC scope: ADC group regular.
AnnaBridge 163:e59c8e839560 518 * Refer to corresponding unitary functions into
AnnaBridge 163:e59c8e839560 519 * @ref ADC_LL_EF_Configuration_ADC_Group_Regular
AnnaBridge 163:e59c8e839560 520 * (functions with prefix "REG").
AnnaBridge 163:e59c8e839560 521 * @note The setting of these parameters by function @ref LL_ADC_REG_Init()
AnnaBridge 163:e59c8e839560 522 * is conditioned to ADC state:
AnnaBridge 163:e59c8e839560 523 * ADC instance must be disabled.
AnnaBridge 163:e59c8e839560 524 * This condition is applied to all ADC features, for efficiency
AnnaBridge 163:e59c8e839560 525 * and compatibility over all STM32 families. However, the different
AnnaBridge 163:e59c8e839560 526 * features can be set under different ADC state conditions
AnnaBridge 163:e59c8e839560 527 * (setting possible with ADC enabled without conversion on going,
AnnaBridge 163:e59c8e839560 528 * ADC enabled with conversion on going, ...)
AnnaBridge 163:e59c8e839560 529 * Each feature can be updated afterwards with a unitary function
AnnaBridge 163:e59c8e839560 530 * and potentially with ADC in a different state than disabled,
AnnaBridge 163:e59c8e839560 531 * refer to description of each function for setting
AnnaBridge 163:e59c8e839560 532 * conditioned to ADC state.
AnnaBridge 163:e59c8e839560 533 */
AnnaBridge 163:e59c8e839560 534 typedef struct
AnnaBridge 163:e59c8e839560 535 {
AnnaBridge 163:e59c8e839560 536 uint32_t TriggerSource; /*!< Set ADC group regular conversion trigger source: internal (SW start) or from external IP (timer event, external interrupt line).
AnnaBridge 163:e59c8e839560 537 This parameter can be a value of @ref ADC_LL_EC_REG_TRIGGER_SOURCE
AnnaBridge 163:e59c8e839560 538 @note On this STM32 serie, setting trigger source to external trigger also set trigger polarity to rising edge
AnnaBridge 163:e59c8e839560 539 (default setting for compatibility with some ADC on other STM32 families having this setting set by HW default value).
AnnaBridge 163:e59c8e839560 540 In case of need to modify trigger edge, use function @ref LL_ADC_REG_SetTriggerEdge().
AnnaBridge 163:e59c8e839560 541
AnnaBridge 163:e59c8e839560 542 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetTriggerSource(). */
AnnaBridge 163:e59c8e839560 543
AnnaBridge 163:e59c8e839560 544 uint32_t SequencerLength; /*!< Set ADC group regular sequencer length.
AnnaBridge 163:e59c8e839560 545 This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_SCAN_LENGTH
AnnaBridge 163:e59c8e839560 546
AnnaBridge 163:e59c8e839560 547 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerLength(). */
AnnaBridge 163:e59c8e839560 548
AnnaBridge 163:e59c8e839560 549 uint32_t SequencerDiscont; /*!< Set ADC group regular sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks.
AnnaBridge 163:e59c8e839560 550 This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_DISCONT_MODE
AnnaBridge 163:e59c8e839560 551 @note This parameter has an effect only if group regular sequencer is enabled
AnnaBridge 163:e59c8e839560 552 (scan length of 2 ranks or more).
AnnaBridge 163:e59c8e839560 553
AnnaBridge 163:e59c8e839560 554 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerDiscont(). */
AnnaBridge 163:e59c8e839560 555
AnnaBridge 163:e59c8e839560 556 uint32_t ContinuousMode; /*!< Set ADC continuous conversion mode on ADC group regular, whether ADC conversions are performed in single mode (one conversion per trigger) or in continuous mode (after the first trigger, following conversions launched successively automatically).
AnnaBridge 163:e59c8e839560 557 This parameter can be a value of @ref ADC_LL_EC_REG_CONTINUOUS_MODE
AnnaBridge 163:e59c8e839560 558 Note: It is not possible to enable both ADC group regular continuous mode and discontinuous mode.
AnnaBridge 163:e59c8e839560 559
AnnaBridge 163:e59c8e839560 560 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetContinuousMode(). */
AnnaBridge 163:e59c8e839560 561
AnnaBridge 163:e59c8e839560 562 uint32_t DMATransfer; /*!< Set ADC group regular conversion data transfer: no transfer or transfer by DMA, and DMA requests mode.
AnnaBridge 163:e59c8e839560 563 This parameter can be a value of @ref ADC_LL_EC_REG_DMA_TRANSFER
AnnaBridge 163:e59c8e839560 564
AnnaBridge 163:e59c8e839560 565 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetDMATransfer(). */
AnnaBridge 163:e59c8e839560 566
AnnaBridge 163:e59c8e839560 567 uint32_t Overrun; /*!< Set ADC group regular behavior in case of overrun:
AnnaBridge 163:e59c8e839560 568 data preserved or overwritten.
AnnaBridge 163:e59c8e839560 569 This parameter can be a value of @ref ADC_LL_EC_REG_OVR_DATA_BEHAVIOR
AnnaBridge 163:e59c8e839560 570
AnnaBridge 163:e59c8e839560 571 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetOverrun(). */
AnnaBridge 163:e59c8e839560 572
AnnaBridge 163:e59c8e839560 573 } LL_ADC_REG_InitTypeDef;
AnnaBridge 163:e59c8e839560 574
AnnaBridge 163:e59c8e839560 575 /**
AnnaBridge 163:e59c8e839560 576 * @brief Structure definition of some features of ADC group injected.
AnnaBridge 163:e59c8e839560 577 * @note These parameters have an impact on ADC scope: ADC group injected.
AnnaBridge 163:e59c8e839560 578 * Refer to corresponding unitary functions into
AnnaBridge 163:e59c8e839560 579 * @ref ADC_LL_EF_Configuration_ADC_Group_Regular
AnnaBridge 163:e59c8e839560 580 * (functions with prefix "INJ").
AnnaBridge 163:e59c8e839560 581 * @note The setting of these parameters by function @ref LL_ADC_INJ_Init()
AnnaBridge 163:e59c8e839560 582 * is conditioned to ADC state:
AnnaBridge 163:e59c8e839560 583 * ADC instance must be disabled.
AnnaBridge 163:e59c8e839560 584 * This condition is applied to all ADC features, for efficiency
AnnaBridge 163:e59c8e839560 585 * and compatibility over all STM32 families. However, the different
AnnaBridge 163:e59c8e839560 586 * features can be set under different ADC state conditions
AnnaBridge 163:e59c8e839560 587 * (setting possible with ADC enabled without conversion on going,
AnnaBridge 163:e59c8e839560 588 * ADC enabled with conversion on going, ...)
AnnaBridge 163:e59c8e839560 589 * Each feature can be updated afterwards with a unitary function
AnnaBridge 163:e59c8e839560 590 * and potentially with ADC in a different state than disabled,
AnnaBridge 163:e59c8e839560 591 * refer to description of each function for setting
AnnaBridge 163:e59c8e839560 592 * conditioned to ADC state.
AnnaBridge 163:e59c8e839560 593 */
AnnaBridge 163:e59c8e839560 594 typedef struct
AnnaBridge 163:e59c8e839560 595 {
AnnaBridge 163:e59c8e839560 596 uint32_t TriggerSource; /*!< Set ADC group injected conversion trigger source: internal (SW start) or from external IP (timer event, external interrupt line).
AnnaBridge 163:e59c8e839560 597 This parameter can be a value of @ref ADC_LL_EC_INJ_TRIGGER_SOURCE
AnnaBridge 163:e59c8e839560 598 @note On this STM32 serie, setting trigger source to external trigger also set trigger polarity to rising edge
AnnaBridge 163:e59c8e839560 599 (default setting for compatibility with some ADC on other STM32 families having this setting set by HW default value).
AnnaBridge 163:e59c8e839560 600 In case of need to modify trigger edge, use function @ref LL_ADC_INJ_SetTriggerEdge().
AnnaBridge 163:e59c8e839560 601
AnnaBridge 163:e59c8e839560 602 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTriggerSource(). */
AnnaBridge 163:e59c8e839560 603
AnnaBridge 163:e59c8e839560 604 uint32_t SequencerLength; /*!< Set ADC group injected sequencer length.
AnnaBridge 163:e59c8e839560 605 This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_SCAN_LENGTH
AnnaBridge 163:e59c8e839560 606
AnnaBridge 163:e59c8e839560 607 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerLength(). */
AnnaBridge 163:e59c8e839560 608
AnnaBridge 163:e59c8e839560 609 uint32_t SequencerDiscont; /*!< Set ADC group injected sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks.
AnnaBridge 163:e59c8e839560 610 This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_DISCONT_MODE
AnnaBridge 163:e59c8e839560 611 @note This parameter has an effect only if group injected sequencer is enabled
AnnaBridge 163:e59c8e839560 612 (scan length of 2 ranks or more).
AnnaBridge 163:e59c8e839560 613
AnnaBridge 163:e59c8e839560 614 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerDiscont(). */
AnnaBridge 163:e59c8e839560 615
AnnaBridge 163:e59c8e839560 616 uint32_t TrigAuto; /*!< Set ADC group injected conversion trigger: independent or from ADC group regular.
AnnaBridge 163:e59c8e839560 617 This parameter can be a value of @ref ADC_LL_EC_INJ_TRIG_AUTO
AnnaBridge 163:e59c8e839560 618 Note: This parameter must be set to set to independent trigger if injected trigger source is set to an external trigger.
AnnaBridge 163:e59c8e839560 619
AnnaBridge 163:e59c8e839560 620 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTrigAuto(). */
AnnaBridge 163:e59c8e839560 621
AnnaBridge 163:e59c8e839560 622 } LL_ADC_INJ_InitTypeDef;
AnnaBridge 163:e59c8e839560 623
AnnaBridge 163:e59c8e839560 624 /**
AnnaBridge 163:e59c8e839560 625 * @}
AnnaBridge 163:e59c8e839560 626 */
AnnaBridge 163:e59c8e839560 627 #endif /* USE_FULL_LL_DRIVER */
AnnaBridge 163:e59c8e839560 628
AnnaBridge 163:e59c8e839560 629 /* Exported constants --------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 630 /** @defgroup ADC_LL_Exported_Constants ADC Exported Constants
AnnaBridge 163:e59c8e839560 631 * @{
AnnaBridge 163:e59c8e839560 632 */
AnnaBridge 163:e59c8e839560 633
AnnaBridge 163:e59c8e839560 634 /** @defgroup ADC_LL_EC_FLAG ADC flags
AnnaBridge 163:e59c8e839560 635 * @brief Flags defines which can be used with LL_ADC_ReadReg function
AnnaBridge 163:e59c8e839560 636 * @{
AnnaBridge 163:e59c8e839560 637 */
AnnaBridge 163:e59c8e839560 638 #define LL_ADC_FLAG_ADRDY ADC_ISR_ADRDY /*!< ADC flag ADC instance ready */
AnnaBridge 163:e59c8e839560 639 #define LL_ADC_FLAG_EOC ADC_ISR_EOC /*!< ADC flag ADC group regular end of unitary conversion */
AnnaBridge 163:e59c8e839560 640 #define LL_ADC_FLAG_EOS ADC_ISR_EOS /*!< ADC flag ADC group regular end of sequence conversions */
AnnaBridge 163:e59c8e839560 641 #define LL_ADC_FLAG_OVR ADC_ISR_OVR /*!< ADC flag ADC group regular overrun */
AnnaBridge 163:e59c8e839560 642 #define LL_ADC_FLAG_EOSMP ADC_ISR_EOSMP /*!< ADC flag ADC group regular end of sampling phase */
AnnaBridge 163:e59c8e839560 643 #define LL_ADC_FLAG_JEOC ADC_ISR_JEOC /*!< ADC flag ADC group injected end of unitary conversion */
AnnaBridge 163:e59c8e839560 644 #define LL_ADC_FLAG_JEOS ADC_ISR_JEOS /*!< ADC flag ADC group injected end of sequence conversions */
AnnaBridge 163:e59c8e839560 645 #define LL_ADC_FLAG_JQOVF ADC_ISR_JQOVF /*!< ADC flag ADC group injected contexts queue overflow */
AnnaBridge 163:e59c8e839560 646 #define LL_ADC_FLAG_AWD1 ADC_ISR_AWD1 /*!< ADC flag ADC analog watchdog 1 */
AnnaBridge 163:e59c8e839560 647 #define LL_ADC_FLAG_AWD2 ADC_ISR_AWD2 /*!< ADC flag ADC analog watchdog 2 */
AnnaBridge 163:e59c8e839560 648 #define LL_ADC_FLAG_AWD3 ADC_ISR_AWD3 /*!< ADC flag ADC analog watchdog 3 */
AnnaBridge 163:e59c8e839560 649 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 163:e59c8e839560 650 #define LL_ADC_FLAG_ADRDY_MST ADC_CSR_ADRDY_MST /*!< ADC flag ADC multimode master instance ready */
AnnaBridge 163:e59c8e839560 651 #define LL_ADC_FLAG_ADRDY_SLV ADC_CSR_ADRDY_SLV /*!< ADC flag ADC multimode slave instance ready */
AnnaBridge 163:e59c8e839560 652 #define LL_ADC_FLAG_EOC_MST ADC_CSR_EOC_MST /*!< ADC flag ADC multimode master group regular end of unitary conversion */
AnnaBridge 163:e59c8e839560 653 #define LL_ADC_FLAG_EOC_SLV ADC_CSR_EOC_SLV /*!< ADC flag ADC multimode slave group regular end of unitary conversion */
AnnaBridge 163:e59c8e839560 654 #define LL_ADC_FLAG_EOS_MST ADC_CSR_EOS_MST /*!< ADC flag ADC multimode master group regular end of sequence conversions */
AnnaBridge 163:e59c8e839560 655 #define LL_ADC_FLAG_EOS_SLV ADC_CSR_EOS_SLV /*!< ADC flag ADC multimode slave group regular end of sequence conversions */
AnnaBridge 163:e59c8e839560 656 #define LL_ADC_FLAG_OVR_MST ADC_CSR_OVR_MST /*!< ADC flag ADC multimode master group regular overrun */
AnnaBridge 163:e59c8e839560 657 #define LL_ADC_FLAG_OVR_SLV ADC_CSR_OVR_SLV /*!< ADC flag ADC multimode slave group regular overrun */
AnnaBridge 163:e59c8e839560 658 #define LL_ADC_FLAG_EOSMP_MST ADC_CSR_EOSMP_MST /*!< ADC flag ADC multimode master group regular end of sampling phase */
AnnaBridge 163:e59c8e839560 659 #define LL_ADC_FLAG_EOSMP_SLV ADC_CSR_EOSMP_SLV /*!< ADC flag ADC multimode slave group regular end of sampling phase */
AnnaBridge 163:e59c8e839560 660 #define LL_ADC_FLAG_JEOC_MST ADC_CSR_JEOC_MST /*!< ADC flag ADC multimode master group injected end of unitary conversion */
AnnaBridge 163:e59c8e839560 661 #define LL_ADC_FLAG_JEOC_SLV ADC_CSR_JEOC_SLV /*!< ADC flag ADC multimode slave group injected end of unitary conversion */
AnnaBridge 163:e59c8e839560 662 #define LL_ADC_FLAG_JEOS_MST ADC_CSR_JEOS_MST /*!< ADC flag ADC multimode master group injected end of sequence conversions */
AnnaBridge 163:e59c8e839560 663 #define LL_ADC_FLAG_JEOS_SLV ADC_CSR_JEOS_SLV /*!< ADC flag ADC multimode slave group injected end of sequence conversions */
AnnaBridge 163:e59c8e839560 664 #define LL_ADC_FLAG_JQOVF_MST ADC_CSR_JQOVF_MST /*!< ADC flag ADC multimode master group injected contexts queue overflow */
AnnaBridge 163:e59c8e839560 665 #define LL_ADC_FLAG_JQOVF_SLV ADC_CSR_JQOVF_SLV /*!< ADC flag ADC multimode slave group injected contexts queue overflow */
AnnaBridge 163:e59c8e839560 666 #define LL_ADC_FLAG_AWD1_MST ADC_CSR_AWD1_MST /*!< ADC flag ADC multimode master analog watchdog 1 of the ADC master */
AnnaBridge 163:e59c8e839560 667 #define LL_ADC_FLAG_AWD1_SLV ADC_CSR_AWD1_SLV /*!< ADC flag ADC multimode slave analog watchdog 1 of the ADC slave */
AnnaBridge 163:e59c8e839560 668 #define LL_ADC_FLAG_AWD2_MST ADC_CSR_AWD2_MST /*!< ADC flag ADC multimode master analog watchdog 2 of the ADC master */
AnnaBridge 163:e59c8e839560 669 #define LL_ADC_FLAG_AWD2_SLV ADC_CSR_AWD2_SLV /*!< ADC flag ADC multimode slave analog watchdog 2 of the ADC slave */
AnnaBridge 163:e59c8e839560 670 #define LL_ADC_FLAG_AWD3_MST ADC_CSR_AWD3_MST /*!< ADC flag ADC multimode master analog watchdog 3 of the ADC master */
AnnaBridge 163:e59c8e839560 671 #define LL_ADC_FLAG_AWD3_SLV ADC_CSR_AWD3_SLV /*!< ADC flag ADC multimode slave analog watchdog 3 of the ADC slave */
AnnaBridge 163:e59c8e839560 672 #endif
AnnaBridge 163:e59c8e839560 673 /**
AnnaBridge 163:e59c8e839560 674 * @}
AnnaBridge 163:e59c8e839560 675 */
AnnaBridge 163:e59c8e839560 676
AnnaBridge 163:e59c8e839560 677 /** @defgroup ADC_LL_EC_IT ADC interruptions for configuration (interruption enable or disable)
AnnaBridge 163:e59c8e839560 678 * @brief IT defines which can be used with LL_ADC_ReadReg and LL_ADC_WriteReg functions
AnnaBridge 163:e59c8e839560 679 * @{
AnnaBridge 163:e59c8e839560 680 */
AnnaBridge 163:e59c8e839560 681 #define LL_ADC_IT_ADRDY ADC_IER_ADRDYIE /*!< ADC interruption ADC instance ready */
AnnaBridge 163:e59c8e839560 682 #define LL_ADC_IT_EOC ADC_IER_EOCIE /*!< ADC interruption ADC group regular end of unitary conversion */
AnnaBridge 163:e59c8e839560 683 #define LL_ADC_IT_EOS ADC_IER_EOSIE /*!< ADC interruption ADC group regular end of sequence conversions */
AnnaBridge 163:e59c8e839560 684 #define LL_ADC_IT_OVR ADC_IER_OVRIE /*!< ADC interruption ADC group regular overrun */
AnnaBridge 163:e59c8e839560 685 #define LL_ADC_IT_EOSMP ADC_IER_EOSMPIE /*!< ADC interruption ADC group regular end of sampling phase */
AnnaBridge 163:e59c8e839560 686 #define LL_ADC_IT_JEOC ADC_IER_JEOCIE /*!< ADC interruption ADC group injected end of unitary conversion */
AnnaBridge 163:e59c8e839560 687 #define LL_ADC_IT_JEOS ADC_IER_JEOSIE /*!< ADC interruption ADC group injected end of sequence conversions */
AnnaBridge 163:e59c8e839560 688 #define LL_ADC_IT_JQOVF ADC_IER_JQOVFIE /*!< ADC interruption ADC group injected contexts queue overflow */
AnnaBridge 163:e59c8e839560 689 #define LL_ADC_IT_AWD1 ADC_IER_AWD1IE /*!< ADC interruption ADC analog watchdog 1 */
AnnaBridge 163:e59c8e839560 690 #define LL_ADC_IT_AWD2 ADC_IER_AWD2IE /*!< ADC interruption ADC analog watchdog 2 */
AnnaBridge 163:e59c8e839560 691 #define LL_ADC_IT_AWD3 ADC_IER_AWD3IE /*!< ADC interruption ADC analog watchdog 3 */
AnnaBridge 163:e59c8e839560 692 /**
AnnaBridge 163:e59c8e839560 693 * @}
AnnaBridge 163:e59c8e839560 694 */
AnnaBridge 163:e59c8e839560 695
AnnaBridge 163:e59c8e839560 696 /** @defgroup ADC_LL_EC_REGISTERS ADC registers compliant with specific purpose
AnnaBridge 163:e59c8e839560 697 * @{
AnnaBridge 163:e59c8e839560 698 */
AnnaBridge 163:e59c8e839560 699 /* List of ADC registers intended to be used (most commonly) with */
AnnaBridge 163:e59c8e839560 700 /* DMA transfer. */
AnnaBridge 163:e59c8e839560 701 /* Refer to function @ref LL_ADC_DMA_GetRegAddr(). */
AnnaBridge 163:e59c8e839560 702 #define LL_ADC_DMA_REG_REGULAR_DATA ((uint32_t)0x00000000U) /* ADC group regular conversion data register (corresponding to register DR) to be used with ADC configured in independent mode. Without DMA transfer, register accessed by LL function @ref LL_ADC_REG_ReadConversionData32() and other functions @ref LL_ADC_REG_ReadConversionDatax() */
AnnaBridge 163:e59c8e839560 703 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 163:e59c8e839560 704 #define LL_ADC_DMA_REG_REGULAR_DATA_MULTI ((uint32_t)0x00000001U) /* ADC group regular conversion data register (corresponding to register CDR) to be used with ADC configured in multimode (available on STM32 devices with several ADC instances). Without DMA transfer, register accessed by LL function @ref LL_ADC_REG_ReadMultiConversionData32() */
AnnaBridge 163:e59c8e839560 705 #endif
AnnaBridge 163:e59c8e839560 706 /**
AnnaBridge 163:e59c8e839560 707 * @}
AnnaBridge 163:e59c8e839560 708 */
AnnaBridge 163:e59c8e839560 709
AnnaBridge 163:e59c8e839560 710 /** @defgroup ADC_LL_EC_COMMON_CLOCK_SOURCE ADC common - Clock source
AnnaBridge 163:e59c8e839560 711 * @{
AnnaBridge 163:e59c8e839560 712 */
AnnaBridge 163:e59c8e839560 713 #define LL_ADC_CLOCK_SYNC_PCLK_DIV1 (ADC_CCR_CKMODE_0) /*!< ADC synchronous clock derived from AHB clock without prescaler */
AnnaBridge 163:e59c8e839560 714 #define LL_ADC_CLOCK_SYNC_PCLK_DIV2 (ADC_CCR_CKMODE_1 ) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 2 */
AnnaBridge 163:e59c8e839560 715 #define LL_ADC_CLOCK_SYNC_PCLK_DIV4 (ADC_CCR_CKMODE_1 | ADC_CCR_CKMODE_0) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 4 */
AnnaBridge 163:e59c8e839560 716 #define LL_ADC_CLOCK_ASYNC_DIV1 ((uint32_t)0x00000000U) /*!< ADC asynchronous clock without prescaler */
AnnaBridge 163:e59c8e839560 717 /**
AnnaBridge 163:e59c8e839560 718 * @}
AnnaBridge 163:e59c8e839560 719 */
AnnaBridge 163:e59c8e839560 720
AnnaBridge 163:e59c8e839560 721 /** @defgroup ADC_LL_EC_COMMON_PATH_INTERNAL ADC common - Measurement path to internal channels
AnnaBridge 163:e59c8e839560 722 * @{
AnnaBridge 163:e59c8e839560 723 */
AnnaBridge 163:e59c8e839560 724 /* Note: Other measurement paths to internal channels may be available */
AnnaBridge 163:e59c8e839560 725 /* (connections to other peripherals). */
AnnaBridge 163:e59c8e839560 726 /* If they are not listed below, they do not require any specific */
AnnaBridge 163:e59c8e839560 727 /* path enable. In this case, Access to measurement path is done */
AnnaBridge 163:e59c8e839560 728 /* only by selecting the corresponding ADC internal channel. */
AnnaBridge 163:e59c8e839560 729 #define LL_ADC_PATH_INTERNAL_NONE ((uint32_t)0x00000000U)/*!< ADC measurement pathes all disabled */
AnnaBridge 163:e59c8e839560 730 #define LL_ADC_PATH_INTERNAL_VREFINT (ADC_CCR_VREFEN) /*!< ADC measurement path to internal channel VrefInt */
AnnaBridge 163:e59c8e839560 731 #define LL_ADC_PATH_INTERNAL_TEMPSENSOR (ADC_CCR_TSEN) /*!< ADC measurement path to internal channel temperature sensor */
AnnaBridge 163:e59c8e839560 732 #define LL_ADC_PATH_INTERNAL_VBAT (ADC_CCR_VBATEN) /*!< ADC measurement path to internal channel Vbat */
AnnaBridge 163:e59c8e839560 733 /**
AnnaBridge 163:e59c8e839560 734 * @}
AnnaBridge 163:e59c8e839560 735 */
AnnaBridge 163:e59c8e839560 736
AnnaBridge 163:e59c8e839560 737 /** @defgroup ADC_LL_EC_RESOLUTION ADC instance - Resolution
AnnaBridge 163:e59c8e839560 738 * @{
AnnaBridge 163:e59c8e839560 739 */
AnnaBridge 163:e59c8e839560 740 #define LL_ADC_RESOLUTION_12B ((uint32_t)0x00000000U) /*!< ADC resolution 12 bits */
AnnaBridge 163:e59c8e839560 741 #define LL_ADC_RESOLUTION_10B ( ADC_CFGR_RES_0) /*!< ADC resolution 10 bits */
AnnaBridge 163:e59c8e839560 742 #define LL_ADC_RESOLUTION_8B (ADC_CFGR_RES_1 ) /*!< ADC resolution 8 bits */
AnnaBridge 163:e59c8e839560 743 #define LL_ADC_RESOLUTION_6B (ADC_CFGR_RES_1 | ADC_CFGR_RES_0) /*!< ADC resolution 6 bits */
AnnaBridge 163:e59c8e839560 744 /**
AnnaBridge 163:e59c8e839560 745 * @}
AnnaBridge 163:e59c8e839560 746 */
AnnaBridge 163:e59c8e839560 747
AnnaBridge 163:e59c8e839560 748 /** @defgroup ADC_LL_EC_DATA_ALIGN ADC instance - Data alignment
AnnaBridge 163:e59c8e839560 749 * @{
AnnaBridge 163:e59c8e839560 750 */
AnnaBridge 163:e59c8e839560 751 #define LL_ADC_DATA_ALIGN_RIGHT ((uint32_t)0x00000000U)/*!< ADC conversion data alignment: right aligned (alignment on data register LSB bit 0)*/
AnnaBridge 163:e59c8e839560 752 #define LL_ADC_DATA_ALIGN_LEFT (ADC_CFGR_ALIGN) /*!< ADC conversion data alignment: left aligned (aligment on data register MSB bit 15)*/
AnnaBridge 163:e59c8e839560 753 /**
AnnaBridge 163:e59c8e839560 754 * @}
AnnaBridge 163:e59c8e839560 755 */
AnnaBridge 163:e59c8e839560 756
AnnaBridge 163:e59c8e839560 757 /** @defgroup ADC_LL_EC_LP_MODE ADC instance - Low power mode
AnnaBridge 163:e59c8e839560 758 * @{
AnnaBridge 163:e59c8e839560 759 */
AnnaBridge 163:e59c8e839560 760 #define LL_ADC_LP_MODE_NONE ((uint32_t)0x00000000U) /*!< No ADC low power mode activated */
AnnaBridge 163:e59c8e839560 761 #define LL_ADC_LP_AUTOWAIT (ADC_CFGR_AUTDLY) /*!< ADC low power mode auto delay: Dynamic low power mode, ADC conversions are performed only when necessary (when previous ADC conversion data is read). See description with function @ref LL_ADC_SetLowPowerMode(). */
AnnaBridge 163:e59c8e839560 762 /**
AnnaBridge 163:e59c8e839560 763 * @}
AnnaBridge 163:e59c8e839560 764 */
AnnaBridge 163:e59c8e839560 765
AnnaBridge 163:e59c8e839560 766 /** @defgroup ADC_LL_EC_OFFSET_NB ADC instance - Offset number
AnnaBridge 163:e59c8e839560 767 * @{
AnnaBridge 163:e59c8e839560 768 */
AnnaBridge 163:e59c8e839560 769 #define LL_ADC_OFFSET_1 ADC_OFR1_REGOFFSET /*!< ADC offset number 1: ADC channel and offset level to which the offset programmed will be applied (independently of channel mapped on ADC group regular or group injected) */
AnnaBridge 163:e59c8e839560 770 #define LL_ADC_OFFSET_2 ADC_OFR2_REGOFFSET /*!< ADC offset number 2: ADC channel and offset level to which the offset programmed will be applied (independently of channel mapped on ADC group regular or group injected) */
AnnaBridge 163:e59c8e839560 771 #define LL_ADC_OFFSET_3 ADC_OFR3_REGOFFSET /*!< ADC offset number 3: ADC channel and offset level to which the offset programmed will be applied (independently of channel mapped on ADC group regular or group injected) */
AnnaBridge 163:e59c8e839560 772 #define LL_ADC_OFFSET_4 ADC_OFR4_REGOFFSET /*!< ADC offset number 4: ADC channel and offset level to which the offset programmed will be applied (independently of channel mapped on ADC group regular or group injected) */
AnnaBridge 163:e59c8e839560 773 /**
AnnaBridge 163:e59c8e839560 774 * @}
AnnaBridge 163:e59c8e839560 775 */
AnnaBridge 163:e59c8e839560 776
AnnaBridge 163:e59c8e839560 777 /** @defgroup ADC_LL_EC_OFFSET_STATE ADC instance - Offset state
AnnaBridge 163:e59c8e839560 778 * @{
AnnaBridge 163:e59c8e839560 779 */
AnnaBridge 163:e59c8e839560 780 #define LL_ADC_OFFSET_DISABLE ((uint32_t)0x00000000U)/*!< ADC offset disabled (among ADC selected offset number 1, 2, 3 or 4) */
AnnaBridge 163:e59c8e839560 781 #define LL_ADC_OFFSET_ENABLE (ADC_OFR1_OFFSET1_EN) /*!< ADC offset enabled (among ADC selected offset number 1, 2, 3 or 4) */
AnnaBridge 163:e59c8e839560 782 /**
AnnaBridge 163:e59c8e839560 783 * @}
AnnaBridge 163:e59c8e839560 784 */
AnnaBridge 163:e59c8e839560 785
AnnaBridge 163:e59c8e839560 786 /** @defgroup ADC_LL_EC_GROUPS ADC instance - Groups
AnnaBridge 163:e59c8e839560 787 * @{
AnnaBridge 163:e59c8e839560 788 */
AnnaBridge 163:e59c8e839560 789 #define LL_ADC_GROUP_REGULAR ((uint32_t)0x00000001U) /*!< ADC group regular (available on all STM32 devices) */
AnnaBridge 163:e59c8e839560 790 #define LL_ADC_GROUP_INJECTED ((uint32_t)0x00000002U) /*!< ADC group injected (not available on all STM32 devices)*/
AnnaBridge 163:e59c8e839560 791 #define LL_ADC_GROUP_REGULAR_INJECTED ((uint32_t)0x00000003U) /*!< ADC both groups regular and injected */
AnnaBridge 163:e59c8e839560 792 /**
AnnaBridge 163:e59c8e839560 793 * @}
AnnaBridge 163:e59c8e839560 794 */
AnnaBridge 163:e59c8e839560 795
AnnaBridge 163:e59c8e839560 796 /** @defgroup ADC_LL_EC_CHANNEL ADC instance - Channel number
AnnaBridge 163:e59c8e839560 797 * @{
AnnaBridge 163:e59c8e839560 798 */
AnnaBridge 163:e59c8e839560 799 #define LL_ADC_CHANNEL_0 (ADC_CHANNEL_0_NUMBER | ADC_CHANNEL_0_SMP | ADC_CHANNEL_0_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN0 */
AnnaBridge 163:e59c8e839560 800 #define LL_ADC_CHANNEL_1 (ADC_CHANNEL_1_NUMBER | ADC_CHANNEL_1_SMP | ADC_CHANNEL_1_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN1 */
AnnaBridge 163:e59c8e839560 801 #define LL_ADC_CHANNEL_2 (ADC_CHANNEL_2_NUMBER | ADC_CHANNEL_2_SMP | ADC_CHANNEL_2_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN2 */
AnnaBridge 163:e59c8e839560 802 #define LL_ADC_CHANNEL_3 (ADC_CHANNEL_3_NUMBER | ADC_CHANNEL_3_SMP | ADC_CHANNEL_3_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN3 */
AnnaBridge 163:e59c8e839560 803 #define LL_ADC_CHANNEL_4 (ADC_CHANNEL_4_NUMBER | ADC_CHANNEL_4_SMP | ADC_CHANNEL_4_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN4 */
AnnaBridge 163:e59c8e839560 804 #define LL_ADC_CHANNEL_5 (ADC_CHANNEL_5_NUMBER | ADC_CHANNEL_5_SMP | ADC_CHANNEL_5_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN5 */
AnnaBridge 163:e59c8e839560 805 #define LL_ADC_CHANNEL_6 (ADC_CHANNEL_6_NUMBER | ADC_CHANNEL_6_SMP | ADC_CHANNEL_6_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN6 */
AnnaBridge 163:e59c8e839560 806 #define LL_ADC_CHANNEL_7 (ADC_CHANNEL_7_NUMBER | ADC_CHANNEL_7_SMP | ADC_CHANNEL_7_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN7 */
AnnaBridge 163:e59c8e839560 807 #define LL_ADC_CHANNEL_8 (ADC_CHANNEL_8_NUMBER | ADC_CHANNEL_8_SMP | ADC_CHANNEL_8_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN8 */
AnnaBridge 163:e59c8e839560 808 #define LL_ADC_CHANNEL_9 (ADC_CHANNEL_9_NUMBER | ADC_CHANNEL_9_SMP | ADC_CHANNEL_9_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN9 */
AnnaBridge 163:e59c8e839560 809 #define LL_ADC_CHANNEL_10 (ADC_CHANNEL_10_NUMBER | ADC_CHANNEL_10_SMP | ADC_CHANNEL_10_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN10 */
AnnaBridge 163:e59c8e839560 810 #define LL_ADC_CHANNEL_11 (ADC_CHANNEL_11_NUMBER | ADC_CHANNEL_11_SMP | ADC_CHANNEL_11_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN11 */
AnnaBridge 163:e59c8e839560 811 #define LL_ADC_CHANNEL_12 (ADC_CHANNEL_12_NUMBER | ADC_CHANNEL_12_SMP | ADC_CHANNEL_12_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN12 */
AnnaBridge 163:e59c8e839560 812 #define LL_ADC_CHANNEL_13 (ADC_CHANNEL_13_NUMBER | ADC_CHANNEL_13_SMP | ADC_CHANNEL_13_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN13 */
AnnaBridge 163:e59c8e839560 813 #define LL_ADC_CHANNEL_14 (ADC_CHANNEL_14_NUMBER | ADC_CHANNEL_14_SMP | ADC_CHANNEL_14_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN14 */
AnnaBridge 163:e59c8e839560 814 #define LL_ADC_CHANNEL_15 (ADC_CHANNEL_15_NUMBER | ADC_CHANNEL_15_SMP | ADC_CHANNEL_15_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN15 */
AnnaBridge 163:e59c8e839560 815 #define LL_ADC_CHANNEL_16 (ADC_CHANNEL_16_NUMBER | ADC_CHANNEL_16_SMP | ADC_CHANNEL_16_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN16 */
AnnaBridge 163:e59c8e839560 816 #define LL_ADC_CHANNEL_17 (ADC_CHANNEL_17_NUMBER | ADC_CHANNEL_17_SMP | ADC_CHANNEL_17_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN17 */
AnnaBridge 163:e59c8e839560 817 #define LL_ADC_CHANNEL_18 (ADC_CHANNEL_18_NUMBER | ADC_CHANNEL_18_SMP | ADC_CHANNEL_18_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN18 */
AnnaBridge 163:e59c8e839560 818 #define LL_ADC_CHANNEL_VREFINT (LL_ADC_CHANNEL_18 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to VrefInt: Internal voltage reference. On STM32F3, ADC channel available only on all ADC instances, but only one ADC instance is allowed to be connected to VrefInt at the same time. */
AnnaBridge 163:e59c8e839560 819 #define LL_ADC_CHANNEL_TEMPSENSOR (LL_ADC_CHANNEL_16 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to Temperature sensor. On STM32F3, ADC channel available only on ADC instance: ADC1. */
AnnaBridge 163:e59c8e839560 820 #define LL_ADC_CHANNEL_VBAT (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda. On STM32F3, ADC channel available only on ADC instance: ADC1. */
AnnaBridge 163:e59c8e839560 821 #if defined(OPAMP1_CSR_OPAMP1EN)
AnnaBridge 163:e59c8e839560 822 #define LL_ADC_CHANNEL_VOPAMP1 (LL_ADC_CHANNEL_15 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to OPAMP1 output. On STM32F3, ADC channel available only on ADC instance: ADC1. */
AnnaBridge 163:e59c8e839560 823 #endif
AnnaBridge 163:e59c8e839560 824 #if defined(OPAMP2_CSR_OPAMP2EN)
AnnaBridge 163:e59c8e839560 825 #define LL_ADC_CHANNEL_VOPAMP2 (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2) /*!< ADC internal channel connected to OPAMP2 output. On STM32F3, ADC channel available only on ADC instance: ADC2. */
AnnaBridge 163:e59c8e839560 826 #endif
AnnaBridge 163:e59c8e839560 827 #if defined(OPAMP3_CSR_OPAMP3EN)
AnnaBridge 163:e59c8e839560 828 #define LL_ADC_CHANNEL_VOPAMP3 (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2) /*!< ADC internal channel connected to OPAMP3 output. On STM32F3, ADC channel available only on ADC instance: ADC3. */
AnnaBridge 163:e59c8e839560 829 #endif
AnnaBridge 163:e59c8e839560 830 #if defined(OPAMP4_CSR_OPAMP4EN)
AnnaBridge 163:e59c8e839560 831 #define LL_ADC_CHANNEL_VOPAMP4 (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2) /*!< ADC internal channel connected to OPAMP4 output. On STM32F3, ADC channel available only on ADC instance: ADC4. */
AnnaBridge 163:e59c8e839560 832 #endif
AnnaBridge 163:e59c8e839560 833 /**
AnnaBridge 163:e59c8e839560 834 * @}
AnnaBridge 163:e59c8e839560 835 */
AnnaBridge 163:e59c8e839560 836
AnnaBridge 163:e59c8e839560 837 /** @defgroup ADC_LL_EC_REG_TRIGGER_SOURCE ADC group regular - Trigger source
AnnaBridge 163:e59c8e839560 838 * @{
AnnaBridge 163:e59c8e839560 839 */
AnnaBridge 163:e59c8e839560 840 #define LL_ADC_REG_TRIG_SOFTWARE ((uint32_t)0x00000000U) /*!< ADC group regular conversion trigger internal: SW start. */
AnnaBridge 163:e59c8e839560 841 #if defined(STM32F303xC) || defined(STM32F358xx) || defined(STM32F303xE) || defined(STM32F398xx)
AnnaBridge 163:e59c8e839560 842 /* ADC group regular external triggers for ADC instances: ADC1, ADC2 (for */
AnnaBridge 163:e59c8e839560 843 /* ADC instances ADCx available on the selected device) */
AnnaBridge 163:e59c8e839560 844 /* Note: Literal without suffix "ADCxy" means that external trigger */
AnnaBridge 163:e59c8e839560 845 /* is available on all ADC instances. */
AnnaBridge 163:e59c8e839560 846 /* Note: For devices STM32F303xE, STM32F398xx: some triggers require to set */
AnnaBridge 163:e59c8e839560 847 /* register SYSCFG_CFGR4. Refer to reference manual. */
AnnaBridge 163:e59c8e839560 848 #define LL_ADC_REG_TRIG_EXT_TIM1_CH1_ADC12 (ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 849 #define LL_ADC_REG_TRIG_EXT_TIM1_CH2_ADC12 (ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 850 #define LL_ADC_REG_TRIG_EXT_TIM1_CH3 (ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 851 #define LL_ADC_REG_TRIG_EXT_TIM2_CH2_ADC12 (ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 852 #define LL_ADC_REG_TRIG_EXT_TIM3_TRGO_ADC12 (ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 853 #define LL_ADC_REG_TRIG_EXT_TIM4_CH4_ADC12 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 854 #define LL_ADC_REG_TRIG_EXT_EXTI_LINE11_ADC12 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: external interrupt line 11. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 855 #define LL_ADC_REG_TRIG_EXT_TIM8_TRGO_ADC12 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 856 #define LL_ADC_REG_TRIG_EXT_TIM8_TRGO2 (ADC_CFGR_EXTSEL_3 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 857 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 858 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO2 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 859 #define LL_ADC_REG_TRIG_EXT_TIM2_TRGO_ADC12 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 860 #define LL_ADC_REG_TRIG_EXT_TIM4_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 861 #define LL_ADC_REG_TRIG_EXT_TIM6_TRGO_ADC12 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 862 #define LL_ADC_REG_TRIG_EXT_TIM15_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM15 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 863 #define LL_ADC_REG_TRIG_EXT_TIM3_CH4_ADC12 (ADC_CFGR_EXTSEL | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 864 #if defined(STM32F303xE) || defined(STM32F398xx)
AnnaBridge 163:e59c8e839560 865 #define LL_ADC_REG_TRIG_EXT_TIM20_TRG0_ADC12 (LL_ADC_REG_TRIG_EXT_TIM1_CH3) /*!< ADC group regular conversion trigger from external IP: TIM20 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 866 #define LL_ADC_REG_TRIG_EXT_TIM20_TRG02_ADC12 (LL_ADC_REG_TRIG_EXT_TIM2_CH2_ADC12) /*!< ADC group regular conversion trigger from external IP: TIM20 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 867 #define LL_ADC_REG_TRIG_EXT_TIM20_CH1_ADC12 (LL_ADC_REG_TRIG_EXT_TIM4_CH4_ADC12) /*!< ADC group regular conversion trigger from external IP: TIM20 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 868 #define LL_ADC_REG_TRIG_EXT_TIM20_CH2_ADC12 (LL_ADC_REG_TRIG_EXT_TIM6_TRGO_ADC12) /*!< ADC group regular conversion trigger from external IP: TIM20 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 869 #define LL_ADC_REG_TRIG_EXT_TIM20_CH3_ADC12 (LL_ADC_REG_TRIG_EXT_TIM3_CH4_ADC12) /*!< ADC group regular conversion trigger from external IP: TIM20 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 870 #endif /* STM32F303xE || STM32F398xx */
AnnaBridge 163:e59c8e839560 871
AnnaBridge 163:e59c8e839560 872 /* ADC group regular external triggers for ADC instances: ADC3, ADC4 (for */
AnnaBridge 163:e59c8e839560 873 /* ADC instances ADCx available on the selected device) */
AnnaBridge 163:e59c8e839560 874 /* Note: Literal without suffix "ADCxy" means that external trigger */
AnnaBridge 163:e59c8e839560 875 /* is available on all ADC instances. */
AnnaBridge 163:e59c8e839560 876 /* Note: For devices STM32F303xE, STM32F398xx: some triggers require to set */
AnnaBridge 163:e59c8e839560 877 /* register SYSCFG_CFGR4. Refer to reference manual. */
AnnaBridge 163:e59c8e839560 878 #define LL_ADC_REG_TRIG_EXT_TIM3_CH1_ADC34 (ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 879 #define LL_ADC_REG_TRIG_EXT_TIM2_CH3_ADC34 (ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 880 #define LL_ADC_REG_TRIG_EXT_TIM1_CH3 (ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 881 #define LL_ADC_REG_TRIG_EXT_TIM8_CH1_ADC34 (ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 882 #define LL_ADC_REG_TRIG_EXT_TIM8_TRGO__ADC34 (ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 883 #define LL_ADC_REG_TRIG_EXT_EXTI_LINE2_ADC34 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: external interrupt line 2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 884 #define LL_ADC_REG_TRIG_EXT_TIM4_CH1_ADC34 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 885 #define LL_ADC_REG_TRIG_EXT_TIM2_TRGO__ADC34 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 886 #define LL_ADC_REG_TRIG_EXT_TIM8_TRGO2 (ADC_CFGR_EXTSEL_3 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 887 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 888 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO2 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 889 #define LL_ADC_REG_TRIG_EXT_TIM3_TRGO__ADC34 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 890 #define LL_ADC_REG_TRIG_EXT_TIM4_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 891 #define LL_ADC_REG_TRIG_EXT_TIM7_TRGO_ADC34 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM7 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 892 #define LL_ADC_REG_TRIG_EXT_TIM15_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM15 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 893 #define LL_ADC_REG_TRIG_EXT_TIM2_CH1_ADC34 (ADC_CFGR_EXTSEL | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 CCx. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 894 #if defined(STM32F303xE) || defined(STM32F398xx)
AnnaBridge 163:e59c8e839560 895 #define LL_ADC_REG_TRIG_EXT_TIM20_TRG0_ADC34 (LL_ADC_REG_TRIG_EXT_EXTI_LINE2_ADC34) /*!< ADC group regular conversion trigger from external IP: TIM20 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 896 #define LL_ADC_REG_TRIG_EXT_TIM20_TRG02_ADC34 (LL_ADC_REG_TRIG_EXT_TIM4_CH1_ADC34) /*!< ADC group regular conversion trigger from external IP: TIM20 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 897 #define LL_ADC_REG_TRIG_EXT_TIM20_CH1_ADC34 (LL_ADC_REG_TRIG_EXT_TIM2_CH1_ADC34) /*!< ADC group regular conversion trigger from external IP: TIM20 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 898 #endif /* STM32F303xE || STM32F398xx */
AnnaBridge 163:e59c8e839560 899
AnnaBridge 163:e59c8e839560 900 #elif defined(STM32F303x8) || defined(STM32F328xx)
AnnaBridge 163:e59c8e839560 901 #define LL_ADC_REG_TRIG_EXT_TIM1_CH1 (ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 902 #define LL_ADC_REG_TRIG_EXT_TIM1_CH2 (ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 903 #define LL_ADC_REG_TRIG_EXT_TIM1_CH3 (ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 904 #define LL_ADC_REG_TRIG_EXT_TIM2_CH2 (ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 905 #define LL_ADC_REG_TRIG_EXT_TIM3_TRGO (ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 906 #define LL_ADC_REG_TRIG_EXT_TIM4_CH4 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 907 #define LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: external interrupt line 11. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 908 #define LL_ADC_REG_TRIG_EXT_TIM8_TRGO (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 909 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 910 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO2 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 911 #define LL_ADC_REG_TRIG_EXT_TIM2_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 912 #define LL_ADC_REG_TRIG_EXT_TIM4_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 913 #define LL_ADC_REG_TRIG_EXT_TIM6_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 914 #define LL_ADC_REG_TRIG_EXT_TIM15_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM15 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 915 #define LL_ADC_REG_TRIG_EXT_TIM3_CH4 (ADC_CFGR_EXTSEL | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 916
AnnaBridge 163:e59c8e839560 917 #elif defined(STM32F334x8)
AnnaBridge 163:e59c8e839560 918 #define LL_ADC_REG_TRIG_EXT_TIM1_CH1 (ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 919 #define LL_ADC_REG_TRIG_EXT_TIM1_CH2 (ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 920 #define LL_ADC_REG_TRIG_EXT_TIM1_CH3 (ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 921 #define LL_ADC_REG_TRIG_EXT_TIM2_CH2 (ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 922 #define LL_ADC_REG_TRIG_EXT_TIM3_TRGO (ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 923 #define LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: external interrupt line 11. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 924 #define LL_ADC_REG_TRIG_EXT_HRTIM_TRG1 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: HRTIM TRG1. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 925 #define LL_ADC_REG_TRIG_EXT_HRTIM_TRG3 (ADC_CFGR_EXTSEL_3 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: HRTIM TRG3. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 926 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 927 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO2 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 928 #define LL_ADC_REG_TRIG_EXT_TIM2_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 929 #define LL_ADC_REG_TRIG_EXT_TIM6_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 930 #define LL_ADC_REG_TRIG_EXT_TIM15_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM15 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 931 #define LL_ADC_REG_TRIG_EXT_TIM3_CH4 (ADC_CFGR_EXTSEL | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 932
AnnaBridge 163:e59c8e839560 933 #elif defined(STM32F302xC) || defined(STM32F302xE)
AnnaBridge 163:e59c8e839560 934 #define LL_ADC_REG_TRIG_EXT_TIM1_CH1 (ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 935 #define LL_ADC_REG_TRIG_EXT_TIM1_CH2 (ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 936 #define LL_ADC_REG_TRIG_EXT_TIM1_CH3 (ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 937 #define LL_ADC_REG_TRIG_EXT_TIM2_CH2 (ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 938 #define LL_ADC_REG_TRIG_EXT_TIM3_TRGO (ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 939 #define LL_ADC_REG_TRIG_EXT_TIM4_CH4 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 940 #define LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: external interrupt line 11. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 941 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 942 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO2 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 943 #define LL_ADC_REG_TRIG_EXT_TIM2_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 944 #define LL_ADC_REG_TRIG_EXT_TIM4_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 945 #define LL_ADC_REG_TRIG_EXT_TIM6_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 946 #define LL_ADC_REG_TRIG_EXT_TIM15_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM15 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 947 #define LL_ADC_REG_TRIG_EXT_TIM3_CH4 (ADC_CFGR_EXTSEL | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 948
AnnaBridge 163:e59c8e839560 949 #elif defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
AnnaBridge 163:e59c8e839560 950 #define LL_ADC_REG_TRIG_EXT_TIM1_CH1 (ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 951 #define LL_ADC_REG_TRIG_EXT_TIM1_CH2 (ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 952 #define LL_ADC_REG_TRIG_EXT_TIM1_CH3 (ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 953 #define LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: external interrupt line 11. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 954 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 955 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO2 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 956 #define LL_ADC_REG_TRIG_EXT_TIM2_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 957 #define LL_ADC_REG_TRIG_EXT_TIM6_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 958 #define LL_ADC_REG_TRIG_EXT_TIM15_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM15 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 959 #endif
AnnaBridge 163:e59c8e839560 960 /**
AnnaBridge 163:e59c8e839560 961 * @}
AnnaBridge 163:e59c8e839560 962 */
AnnaBridge 163:e59c8e839560 963
AnnaBridge 163:e59c8e839560 964 /** @defgroup ADC_LL_EC_REG_TRIGGER_EDGE ADC group regular - Trigger edge
AnnaBridge 163:e59c8e839560 965 * @{
AnnaBridge 163:e59c8e839560 966 */
AnnaBridge 163:e59c8e839560 967 #define LL_ADC_REG_TRIG_EXT_RISING ( ADC_CFGR_EXTEN_0) /*!< ADC group regular conversion trigger polarity set to rising edge */
AnnaBridge 163:e59c8e839560 968 #define LL_ADC_REG_TRIG_EXT_FALLING (ADC_CFGR_EXTEN_1 ) /*!< ADC group regular conversion trigger polarity set to falling edge */
AnnaBridge 163:e59c8e839560 969 #define LL_ADC_REG_TRIG_EXT_RISINGFALLING (ADC_CFGR_EXTEN_1 | ADC_CFGR_EXTEN_0) /*!< ADC group regular conversion trigger polarity set to both rising and falling edges */
AnnaBridge 163:e59c8e839560 970 /**
AnnaBridge 163:e59c8e839560 971 * @}
AnnaBridge 163:e59c8e839560 972 */
AnnaBridge 163:e59c8e839560 973
AnnaBridge 163:e59c8e839560 974 /** @defgroup ADC_LL_EC_REG_CONTINUOUS_MODE ADC group regular - Continuous mode
AnnaBridge 163:e59c8e839560 975 * @{
AnnaBridge 163:e59c8e839560 976 */
AnnaBridge 163:e59c8e839560 977 #define LL_ADC_REG_CONV_SINGLE ((uint32_t)0x00000000U) /*!< ADC conversions are performed in single mode: one conversion per trigger */
AnnaBridge 163:e59c8e839560 978 #define LL_ADC_REG_CONV_CONTINUOUS (ADC_CFGR_CONT) /*!< ADC conversions are performed in continuous mode: after the first trigger, following conversions launched successively automatically */
AnnaBridge 163:e59c8e839560 979 /**
AnnaBridge 163:e59c8e839560 980 * @}
AnnaBridge 163:e59c8e839560 981 */
AnnaBridge 163:e59c8e839560 982
AnnaBridge 163:e59c8e839560 983 /** @defgroup ADC_LL_EC_REG_DMA_TRANSFER ADC group regular - DMA transfer of ADC conversion data
AnnaBridge 163:e59c8e839560 984 * @{
AnnaBridge 163:e59c8e839560 985 */
AnnaBridge 163:e59c8e839560 986 #define LL_ADC_REG_DMA_TRANSFER_NONE ((uint32_t)0x00000000U) /*!< ADC conversions are not transferred by DMA */
AnnaBridge 163:e59c8e839560 987 #define LL_ADC_REG_DMA_TRANSFER_LIMITED ( ADC_CFGR_DMAEN) /*!< ADC conversion data are transferred by DMA, in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. */
AnnaBridge 163:e59c8e839560 988 #define LL_ADC_REG_DMA_TRANSFER_UNLIMITED (ADC_CFGR_DMACFG | ADC_CFGR_DMAEN) /*!< ADC conversion data are transferred by DMA, in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions). This ADC mode is intended to be used with DMA mode circular. */
AnnaBridge 163:e59c8e839560 989 /**
AnnaBridge 163:e59c8e839560 990 * @}
AnnaBridge 163:e59c8e839560 991 */
AnnaBridge 163:e59c8e839560 992
AnnaBridge 163:e59c8e839560 993 /** @defgroup ADC_LL_EC_REG_OVR_DATA_BEHAVIOR ADC group regular - Overrun behavior on conversion data
AnnaBridge 163:e59c8e839560 994 * @{
AnnaBridge 163:e59c8e839560 995 */
AnnaBridge 163:e59c8e839560 996 #define LL_ADC_REG_OVR_DATA_PRESERVED ((uint32_t)0x00000000U)/*!< ADC group regular behavior in case of overrun: data preserved */
AnnaBridge 163:e59c8e839560 997 #define LL_ADC_REG_OVR_DATA_OVERWRITTEN (ADC_CFGR_OVRMOD) /*!< ADC group regular behavior in case of overrun: data overwritten */
AnnaBridge 163:e59c8e839560 998 /**
AnnaBridge 163:e59c8e839560 999 * @}
AnnaBridge 163:e59c8e839560 1000 */
AnnaBridge 163:e59c8e839560 1001
AnnaBridge 163:e59c8e839560 1002 /** @defgroup ADC_LL_EC_REG_SEQ_SCAN_LENGTH ADC group regular - Sequencer scan length
AnnaBridge 163:e59c8e839560 1003 * @{
AnnaBridge 163:e59c8e839560 1004 */
AnnaBridge 163:e59c8e839560 1005 #define LL_ADC_REG_SEQ_SCAN_DISABLE ((uint32_t)0x00000000U) /*!< ADC group regular sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */
AnnaBridge 163:e59c8e839560 1006 #define LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS ( ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 2 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1007 #define LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS ( ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 3 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1008 #define LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS ( ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 4 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1009 #define LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS ( ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 5 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1010 #define LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 6 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1011 #define LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 7 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1012 #define LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 8 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1013 #define LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS (ADC_SQR1_L_3 ) /*!< ADC group regular sequencer enable with 9 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1014 #define LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 10 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1015 #define LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 11 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1016 #define LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 12 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1017 #define LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 13 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1018 #define LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 14 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1019 #define LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 15 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1020 #define LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 16 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1021 /**
AnnaBridge 163:e59c8e839560 1022 * @}
AnnaBridge 163:e59c8e839560 1023 */
AnnaBridge 163:e59c8e839560 1024
AnnaBridge 163:e59c8e839560 1025 /** @defgroup ADC_LL_EC_REG_SEQ_DISCONT_MODE ADC group regular - Sequencer discontinuous mode
AnnaBridge 163:e59c8e839560 1026 * @{
AnnaBridge 163:e59c8e839560 1027 */
AnnaBridge 163:e59c8e839560 1028 #define LL_ADC_REG_SEQ_DISCONT_DISABLE ((uint32_t)0x00000000U) /*!< ADC group regular sequencer discontinuous mode disable */
AnnaBridge 163:e59c8e839560 1029 #define LL_ADC_REG_SEQ_DISCONT_1RANK ( ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every rank */
AnnaBridge 163:e59c8e839560 1030 #define LL_ADC_REG_SEQ_DISCONT_2RANKS ( ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enabled with sequence interruption every 2 ranks */
AnnaBridge 163:e59c8e839560 1031 #define LL_ADC_REG_SEQ_DISCONT_3RANKS ( ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 3 ranks */
AnnaBridge 163:e59c8e839560 1032 #define LL_ADC_REG_SEQ_DISCONT_4RANKS ( ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 4 ranks */
AnnaBridge 163:e59c8e839560 1033 #define LL_ADC_REG_SEQ_DISCONT_5RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 5 ranks */
AnnaBridge 163:e59c8e839560 1034 #define LL_ADC_REG_SEQ_DISCONT_6RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 6 ranks */
AnnaBridge 163:e59c8e839560 1035 #define LL_ADC_REG_SEQ_DISCONT_7RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 7 ranks */
AnnaBridge 163:e59c8e839560 1036 #define LL_ADC_REG_SEQ_DISCONT_8RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 8 ranks */
AnnaBridge 163:e59c8e839560 1037 /**
AnnaBridge 163:e59c8e839560 1038 * @}
AnnaBridge 163:e59c8e839560 1039 */
AnnaBridge 163:e59c8e839560 1040
AnnaBridge 163:e59c8e839560 1041 /** @defgroup ADC_LL_EC_REG_SEQ_RANKS ADC group regular - Sequencer ranks
AnnaBridge 163:e59c8e839560 1042 * @{
AnnaBridge 163:e59c8e839560 1043 */
AnnaBridge 163:e59c8e839560 1044 #define LL_ADC_REG_RANK_1 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_1_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 1 */
AnnaBridge 163:e59c8e839560 1045 #define LL_ADC_REG_RANK_2 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_2_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 2 */
AnnaBridge 163:e59c8e839560 1046 #define LL_ADC_REG_RANK_3 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_3_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 3 */
AnnaBridge 163:e59c8e839560 1047 #define LL_ADC_REG_RANK_4 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_4_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 4 */
AnnaBridge 163:e59c8e839560 1048 #define LL_ADC_REG_RANK_5 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_5_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 5 */
AnnaBridge 163:e59c8e839560 1049 #define LL_ADC_REG_RANK_6 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_6_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 6 */
AnnaBridge 163:e59c8e839560 1050 #define LL_ADC_REG_RANK_7 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_7_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 7 */
AnnaBridge 163:e59c8e839560 1051 #define LL_ADC_REG_RANK_8 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_8_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 8 */
AnnaBridge 163:e59c8e839560 1052 #define LL_ADC_REG_RANK_9 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_9_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 9 */
AnnaBridge 163:e59c8e839560 1053 #define LL_ADC_REG_RANK_10 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_10_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 10 */
AnnaBridge 163:e59c8e839560 1054 #define LL_ADC_REG_RANK_11 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_11_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 11 */
AnnaBridge 163:e59c8e839560 1055 #define LL_ADC_REG_RANK_12 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_12_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 12 */
AnnaBridge 163:e59c8e839560 1056 #define LL_ADC_REG_RANK_13 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_13_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 13 */
AnnaBridge 163:e59c8e839560 1057 #define LL_ADC_REG_RANK_14 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_14_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 14 */
AnnaBridge 163:e59c8e839560 1058 #define LL_ADC_REG_RANK_15 (ADC_SQR4_REGOFFSET | ADC_REG_RANK_15_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 15 */
AnnaBridge 163:e59c8e839560 1059 #define LL_ADC_REG_RANK_16 (ADC_SQR4_REGOFFSET | ADC_REG_RANK_16_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 16 */
AnnaBridge 163:e59c8e839560 1060 /**
AnnaBridge 163:e59c8e839560 1061 * @}
AnnaBridge 163:e59c8e839560 1062 */
AnnaBridge 163:e59c8e839560 1063
AnnaBridge 163:e59c8e839560 1064 /** @defgroup ADC_LL_EC_INJ_TRIGGER_SOURCE ADC group injected - Trigger source
AnnaBridge 163:e59c8e839560 1065 * @{
AnnaBridge 163:e59c8e839560 1066 */
AnnaBridge 163:e59c8e839560 1067 #define LL_ADC_INJ_TRIG_SOFTWARE ((uint32_t)0x00000000U) /*!< ADC group injected conversion trigger internal: SW start.. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1068 #if defined(STM32F303xC) || defined(STM32F358xx) || defined(STM32F303xE) || defined(STM32F398xx)
AnnaBridge 163:e59c8e839560 1069 /* ADC group injected external triggers for ADC instances: ADC1, ADC2 (for */
AnnaBridge 163:e59c8e839560 1070 /* ADC instances ADCx available on the selected device) */
AnnaBridge 163:e59c8e839560 1071 /* Note: Literal without suffix "ADCxy" means that external trigger */
AnnaBridge 163:e59c8e839560 1072 /* is available on all ADC instances. */
AnnaBridge 163:e59c8e839560 1073 /* Note: For devices STM32F303xE, STM32F398xx: some triggers require to set */
AnnaBridge 163:e59c8e839560 1074 /* register SYSCFG_CFGR4. Refer to reference manual. */
AnnaBridge 163:e59c8e839560 1075 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1076 #define LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1077 #define LL_ADC_INJ_TRIG_EXT_TIM2_TRGO_ADC12 (ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1078 #define LL_ADC_INJ_TRIG_EXT_TIM2_CH1_ADC12 (ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1079 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH4_ADC12 (ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1080 #define LL_ADC_INJ_TRIG_EXT_TIM4_TRGO_ADC12 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1081 #define LL_ADC_INJ_TRIG_EXT_EXTI_LINE15_ADC12 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: external interrupt line 15. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1082 #define LL_ADC_INJ_TRIG_EXT_TIM8_CH4_ADC12 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1083 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1084 #define LL_ADC_INJ_TRIG_EXT_TIM8_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1085 #define LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1086 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH3_ADC12 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1087 #define LL_ADC_INJ_TRIG_EXT_TIM3_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1088 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH1_ADC12 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1089 #define LL_ADC_INJ_TRIG_EXT_TIM6_TRGO_ADC12 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM6 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1090 #define LL_ADC_INJ_TRIG_EXT_TIM15_TRGO (ADC_JSQR_JEXTSEL | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM15 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1091 #if defined(STM32F303xE) || defined(STM32F398xx)
AnnaBridge 163:e59c8e839560 1092 #define LL_ADC_INJ_TRIG_EXT_TIM20_TRGO_ADC12 (LL_ADC_INJ_TRIG_EXT_TIM2_CH1_ADC12) /*!< ADC group injected conversion trigger from external IP: TIM20 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1093 #define LL_ADC_INJ_TRIG_EXT_TIM20_TRGO2_ADC12 (LL_ADC_INJ_TRIG_EXT_EXTI_LINE15_ADC12) /*!< ADC group injected conversion trigger from external IP: TIM20 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1094 #define LL_ADC_INJ_TRIG_EXT_TIM20_CH4_ADC12 (LL_ADC_INJ_TRIG_EXT_TIM2_CH1_ADC12) /*!< ADC group injected conversion trigger from external IP: TIM20 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1095 #endif /* STM32F303xE || STM32F398xx */
AnnaBridge 163:e59c8e839560 1096
AnnaBridge 163:e59c8e839560 1097 /* ADC group injected external triggers for ADC instances: ADC3, ADC4 (for */
AnnaBridge 163:e59c8e839560 1098 /* ADC instances ADCx available on the selected device) */
AnnaBridge 163:e59c8e839560 1099 /* Note: Literal without suffix "ADCxy" means that external trigger */
AnnaBridge 163:e59c8e839560 1100 /* is available on all ADC instances. */
AnnaBridge 163:e59c8e839560 1101 /* Note: External triggers JEXT2 and JEXT5 are the same (TIM4_CH3 event). */
AnnaBridge 163:e59c8e839560 1102 /* JEXT2 is the main trigger, JEXT5 is kept as spare trigger for */
AnnaBridge 163:e59c8e839560 1103 /* future devices. */
AnnaBridge 163:e59c8e839560 1104 /* Note: For devices STM32F303xE, STM32F398xx: some triggers require to set */
AnnaBridge 163:e59c8e839560 1105 /* register SYSCFG_CFGR4. Refer to reference manual. */
AnnaBridge 163:e59c8e839560 1106 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1107 #define LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1108 #define LL_ADC_INJ_TRIG_EXT_TIM4_CH3_ADC34 (ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1109 #define LL_ADC_INJ_TRIG_EXT_TIM8_CH2_ADC34 (ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1110 #define LL_ADC_INJ_TRIG_EXT_TIM8_CH4__ADC34 (ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1111 #define LL_ADC_INJ_TRIG_EXT_TIM4_CH4_ADC34 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1112 #define LL_ADC_INJ_TRIG_EXT_TIM4_TRGO__ADC34 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1113 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1114 #define LL_ADC_INJ_TRIG_EXT_TIM8_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1115 #define LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1116 #define LL_ADC_INJ_TRIG_EXT_TIM1_CH3_ADC34 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1117 #define LL_ADC_INJ_TRIG_EXT_TIM3_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1118 #define LL_ADC_INJ_TRIG_EXT_TIM2_TRGO__ADC34 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1119 #define LL_ADC_INJ_TRIG_EXT_TIM7_TRGO_ADC34 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM7 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1120 #define LL_ADC_INJ_TRIG_EXT_TIM15_TRGO (ADC_JSQR_JEXTSEL | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM15 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1121 #if defined(STM32F303xE) || defined(STM32F398xx)
AnnaBridge 163:e59c8e839560 1122 #define LL_ADC_INJ_TRIG_EXT_TIM20_TRG_ADC34 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM20 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1123 #define LL_ADC_INJ_TRIG_EXT_TIM20_TRG2_ADC34 (LL_ADC_INJ_TRIG_EXT_TIM1_CH3_ADC34) /*!< ADC group injected conversion trigger from external IP: TIM20 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1124 #define LL_ADC_INJ_TRIG_EXT_TIM20_CH2 (LL_ADC_INJ_TRIG_EXT_TIM15_TRGO) /*!< ADC group injected conversion trigger from external IP: TIM20 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1125 #endif /* STM32F303xE || STM32F398xx */
AnnaBridge 163:e59c8e839560 1126
AnnaBridge 163:e59c8e839560 1127 #elif defined(STM32F303x8) || defined(STM32F328xx)
AnnaBridge 163:e59c8e839560 1128 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1129 #define LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1130 #define LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1131 #define LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1132 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1133 #define LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1134 #define LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: external interrupt line 15. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1135 #define LL_ADC_INJ_TRIG_EXT_TIM8_CH4 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1136 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1137 #define LL_ADC_INJ_TRIG_EXT_TIM8_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1138 #define LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1139 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH3 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1140 #define LL_ADC_INJ_TRIG_EXT_TIM3_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1141 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH1 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1142 #define LL_ADC_INJ_TRIG_EXT_TIM6_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM6 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1143 #define LL_ADC_INJ_TRIG_EXT_TIM15_TRGO (ADC_JSQR_JEXTSEL | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM15 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1144
AnnaBridge 163:e59c8e839560 1145 #elif defined(STM32F334x8)
AnnaBridge 163:e59c8e839560 1146 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1147 #define LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1148 #define LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1149 #define LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1150 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1151 #define LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: external interrupt line 15. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1152 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1153 #define LL_ADC_INJ_TRIG_EXT_HRTIM_TRG2 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: HRTIM TRG2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1154 #define LL_ADC_INJ_TRIG_EXT_HRTIM_TRG4 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: HRTIM TRG4. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1155 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH3 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1156 #define LL_ADC_INJ_TRIG_EXT_TIM3_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1157 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH1 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1158 #define LL_ADC_INJ_TRIG_EXT_TIM6_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM6 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1159 #define LL_ADC_INJ_TRIG_EXT_TIM15_TRGO (ADC_JSQR_JEXTSEL | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM15 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1160
AnnaBridge 163:e59c8e839560 1161 #elif defined(STM32F302xC) || defined(STM32F302xE)
AnnaBridge 163:e59c8e839560 1162 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1163 #define LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1164 #define LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1165 #define LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1166 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1167 #define LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1168 #define LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: external interrupt line 15. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1169 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1170 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH3 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1171 #define LL_ADC_INJ_TRIG_EXT_TIM3_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1172 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH1 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1173 #define LL_ADC_INJ_TRIG_EXT_TIM6_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM6 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1174 #define LL_ADC_INJ_TRIG_EXT_TIM15_TRGO (ADC_JSQR_JEXTSEL | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM15 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1175
AnnaBridge 163:e59c8e839560 1176 #elif defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
AnnaBridge 163:e59c8e839560 1177 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1178 #define LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1179 #define LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: external interrupt line 15. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1180 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRG02. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1181 #define LL_ADC_INJ_TRIG_EXT_TIM6_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM6 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1182 #define LL_ADC_INJ_TRIG_EXT_TIM15_TRGO (ADC_JSQR_JEXTSEL | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM15 TRG0. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 1183 #endif
AnnaBridge 163:e59c8e839560 1184 /**
AnnaBridge 163:e59c8e839560 1185 * @}
AnnaBridge 163:e59c8e839560 1186 */
AnnaBridge 163:e59c8e839560 1187
AnnaBridge 163:e59c8e839560 1188 /** @defgroup ADC_LL_EC_INJ_TRIGGER_EDGE ADC group injected - Trigger edge
AnnaBridge 163:e59c8e839560 1189 * @{
AnnaBridge 163:e59c8e839560 1190 */
AnnaBridge 163:e59c8e839560 1191 #define LL_ADC_INJ_TRIG_EXT_RISING ( ADC_JSQR_JEXTEN_0) /*!< ADC group injected conversion trigger polarity set to rising edge */
AnnaBridge 163:e59c8e839560 1192 #define LL_ADC_INJ_TRIG_EXT_FALLING (ADC_JSQR_JEXTEN_1 ) /*!< ADC group injected conversion trigger polarity set to falling edge */
AnnaBridge 163:e59c8e839560 1193 #define LL_ADC_INJ_TRIG_EXT_RISINGFALLING (ADC_JSQR_JEXTEN_1 | ADC_JSQR_JEXTEN_0) /*!< ADC group injected conversion trigger polarity set to both rising and falling edges */
AnnaBridge 163:e59c8e839560 1194 /**
AnnaBridge 163:e59c8e839560 1195 * @}
AnnaBridge 163:e59c8e839560 1196 */
AnnaBridge 163:e59c8e839560 1197
AnnaBridge 163:e59c8e839560 1198 /** @defgroup ADC_LL_EC_INJ_TRIG_AUTO ADC group injected - Automatic trigger mode
AnnaBridge 163:e59c8e839560 1199 * @{
AnnaBridge 163:e59c8e839560 1200 */
AnnaBridge 163:e59c8e839560 1201 #define LL_ADC_INJ_TRIG_INDEPENDENT ((uint32_t)0x00000000U)/*!< ADC group injected conversion trigger independent. Setting mandatory if ADC group injected injected trigger source is set to an external trigger. */
AnnaBridge 163:e59c8e839560 1202 #define LL_ADC_INJ_TRIG_FROM_GRP_REGULAR (ADC_CFGR_JAUTO) /*!< ADC group injected conversion trigger from ADC group regular. Setting compliant only with group injected trigger source set to SW start, without any further action on ADC group injected conversion start or stop: in this case, ADC group injected is controlled only from ADC group regular. */
AnnaBridge 163:e59c8e839560 1203 /**
AnnaBridge 163:e59c8e839560 1204 * @}
AnnaBridge 163:e59c8e839560 1205 */
AnnaBridge 163:e59c8e839560 1206
AnnaBridge 163:e59c8e839560 1207 /** @defgroup ADC_LL_EC_INJ_CONTEXT_QUEUE ADC group injected - Context queue mode
AnnaBridge 163:e59c8e839560 1208 * @{
AnnaBridge 163:e59c8e839560 1209 */
AnnaBridge 163:e59c8e839560 1210 #define LL_ADC_INJ_QUEUE_2CONTEXTS_LAST_ACTIVE ((uint32_t)0x00000000U)/* Group injected sequence context queue is enabled and can contain up to 2 contexts. When all contexts have been processed, the queue maintains the last context active perpetually. */
AnnaBridge 163:e59c8e839560 1211 #define LL_ADC_INJ_QUEUE_2CONTEXTS_END_EMPTY (ADC_CFGR_JQM) /* Group injected sequence context queue is enabled and can contain up to 2 contexts. When all contexts have been processed, the queue is empty and injected group triggers are disabled. */
AnnaBridge 163:e59c8e839560 1212 /**
AnnaBridge 163:e59c8e839560 1213 * @}
AnnaBridge 163:e59c8e839560 1214 */
AnnaBridge 163:e59c8e839560 1215
AnnaBridge 163:e59c8e839560 1216 /** @defgroup ADC_LL_EC_INJ_SEQ_SCAN_LENGTH ADC group injected - Sequencer scan length
AnnaBridge 163:e59c8e839560 1217 * @{
AnnaBridge 163:e59c8e839560 1218 */
AnnaBridge 163:e59c8e839560 1219 #define LL_ADC_INJ_SEQ_SCAN_DISABLE ((uint32_t)0x00000000U) /*!< ADC group injected sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */
AnnaBridge 163:e59c8e839560 1220 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS ( ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 2 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1221 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS (ADC_JSQR_JL_1 ) /*!< ADC group injected sequencer enable with 3 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1222 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS (ADC_JSQR_JL_1 | ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 4 ranks in the sequence */
AnnaBridge 163:e59c8e839560 1223 /**
AnnaBridge 163:e59c8e839560 1224 * @}
AnnaBridge 163:e59c8e839560 1225 */
AnnaBridge 163:e59c8e839560 1226
AnnaBridge 163:e59c8e839560 1227 /** @defgroup ADC_LL_EC_INJ_SEQ_DISCONT_MODE ADC group injected - Sequencer discontinuous mode
AnnaBridge 163:e59c8e839560 1228 * @{
AnnaBridge 163:e59c8e839560 1229 */
AnnaBridge 163:e59c8e839560 1230 #define LL_ADC_INJ_SEQ_DISCONT_DISABLE ((uint32_t)0x00000000U)/*!< ADC group injected sequencer discontinuous mode disable */
AnnaBridge 163:e59c8e839560 1231 #define LL_ADC_INJ_SEQ_DISCONT_1RANK (ADC_CFGR_JDISCEN) /*!< ADC group injected sequencer discontinuous mode enable with sequence interruption every rank */
AnnaBridge 163:e59c8e839560 1232 /**
AnnaBridge 163:e59c8e839560 1233 * @}
AnnaBridge 163:e59c8e839560 1234 */
AnnaBridge 163:e59c8e839560 1235
AnnaBridge 163:e59c8e839560 1236 /** @defgroup ADC_LL_EC_INJ_SEQ_RANKS ADC group injected - Sequencer ranks
AnnaBridge 163:e59c8e839560 1237 * @{
AnnaBridge 163:e59c8e839560 1238 */
AnnaBridge 163:e59c8e839560 1239 #define LL_ADC_INJ_RANK_1 (ADC_JDR1_REGOFFSET | ADC_INJ_RANK_1_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 1 */
AnnaBridge 163:e59c8e839560 1240 #define LL_ADC_INJ_RANK_2 (ADC_JDR2_REGOFFSET | ADC_INJ_RANK_2_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 2 */
AnnaBridge 163:e59c8e839560 1241 #define LL_ADC_INJ_RANK_3 (ADC_JDR3_REGOFFSET | ADC_INJ_RANK_3_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 3 */
AnnaBridge 163:e59c8e839560 1242 #define LL_ADC_INJ_RANK_4 (ADC_JDR4_REGOFFSET | ADC_INJ_RANK_4_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 4 */
AnnaBridge 163:e59c8e839560 1243 /**
AnnaBridge 163:e59c8e839560 1244 * @}
AnnaBridge 163:e59c8e839560 1245 */
AnnaBridge 163:e59c8e839560 1246
AnnaBridge 163:e59c8e839560 1247 /** @defgroup ADC_LL_EC_CHANNEL_SAMPLINGTIME Channel - Sampling time
AnnaBridge 163:e59c8e839560 1248 * @{
AnnaBridge 163:e59c8e839560 1249 */
AnnaBridge 163:e59c8e839560 1250 #define LL_ADC_SAMPLINGTIME_1CYCLE_5 (0x00000000U) /*!< Sampling time 1.5 ADC clock cycle */
AnnaBridge 163:e59c8e839560 1251 #define LL_ADC_SAMPLINGTIME_2CYCLES_5 ( ADC_SMPR2_SMP10_0) /*!< Sampling time 2.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1252 #define LL_ADC_SAMPLINGTIME_4CYCLES_5 ( ADC_SMPR2_SMP10_1 ) /*!< Sampling time 4.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1253 #define LL_ADC_SAMPLINGTIME_7CYCLES_5 ( ADC_SMPR2_SMP10_1 | ADC_SMPR2_SMP10_0) /*!< Sampling time 7.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1254 #define LL_ADC_SAMPLINGTIME_19CYCLES_5 (ADC_SMPR2_SMP10_2 ) /*!< Sampling time 19.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1255 #define LL_ADC_SAMPLINGTIME_61CYCLES_5 (ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_0) /*!< Sampling time 61.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1256 #define LL_ADC_SAMPLINGTIME_181CYCLES_5 (ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_1 ) /*!< Sampling time 181.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1257 #define LL_ADC_SAMPLINGTIME_601CYCLES_5 (ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_1 | ADC_SMPR2_SMP10_0) /*!< Sampling time 601.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1258 /**
AnnaBridge 163:e59c8e839560 1259 * @}
AnnaBridge 163:e59c8e839560 1260 */
AnnaBridge 163:e59c8e839560 1261
AnnaBridge 163:e59c8e839560 1262 /** @defgroup ADC_LL_EC_CHANNEL_SINGLE_DIFF_ENDING Channel - Single or differential ending
AnnaBridge 163:e59c8e839560 1263 * @{
AnnaBridge 163:e59c8e839560 1264 */
AnnaBridge 163:e59c8e839560 1265 #define LL_ADC_SINGLE_ENDED ( ADC_CALFACT_CALFACT_S) /*!< ADC channel ending set to single ended (literal also used to set calibration mode) */
AnnaBridge 163:e59c8e839560 1266 #define LL_ADC_DIFFERENTIAL_ENDED (ADC_CR_ADCALDIF | ADC_CALFACT_CALFACT_D) /*!< ADC channel ending set to differential (literal also used to set calibration mode) */
AnnaBridge 163:e59c8e839560 1267 #define LL_ADC_BOTH_SINGLE_DIFF_ENDED (LL_ADC_SINGLE_ENDED | LL_ADC_DIFFERENTIAL_ENDED) /*!< ADC channel ending set to both single ended and differential (literal used only to set calibration factors) */
AnnaBridge 163:e59c8e839560 1268 /**
AnnaBridge 163:e59c8e839560 1269 * @}
AnnaBridge 163:e59c8e839560 1270 */
AnnaBridge 163:e59c8e839560 1271
AnnaBridge 163:e59c8e839560 1272 /** @defgroup ADC_LL_EC_AWD_NUMBER Analog watchdog - Analog watchdog number
AnnaBridge 163:e59c8e839560 1273 * @{
AnnaBridge 163:e59c8e839560 1274 */
AnnaBridge 163:e59c8e839560 1275 #define LL_ADC_AWD1 (ADC_AWD_CR1_CHANNEL_MASK | ADC_AWD_CR1_REGOFFSET) /*!< ADC analog watchdog number 1 */
AnnaBridge 163:e59c8e839560 1276 #define LL_ADC_AWD2 (ADC_AWD_CR23_CHANNEL_MASK | ADC_AWD_CR2_REGOFFSET) /*!< ADC analog watchdog number 2 */
AnnaBridge 163:e59c8e839560 1277 #define LL_ADC_AWD3 (ADC_AWD_CR23_CHANNEL_MASK | ADC_AWD_CR3_REGOFFSET) /*!< ADC analog watchdog number 3 */
AnnaBridge 163:e59c8e839560 1278 /**
AnnaBridge 163:e59c8e839560 1279 * @}
AnnaBridge 163:e59c8e839560 1280 */
AnnaBridge 163:e59c8e839560 1281
AnnaBridge 163:e59c8e839560 1282 /** @defgroup ADC_LL_EC_AWD_CHANNELS Analog watchdog - Monitored channels
AnnaBridge 163:e59c8e839560 1283 * @{
AnnaBridge 163:e59c8e839560 1284 */
AnnaBridge 163:e59c8e839560 1285 #define LL_ADC_AWD_DISABLE ((uint32_t)0x00000000U) /*!< ADC analog watchdog monitoring disabled */
AnnaBridge 163:e59c8e839560 1286 #define LL_ADC_AWD_ALL_CHANNELS_REG (ADC_AWD_CR23_CHANNEL_MASK | ADC_CFGR_AWD1EN ) /*!< ADC analog watchdog monitoring of all channels, converted by group regular only */
AnnaBridge 163:e59c8e839560 1287 #define LL_ADC_AWD_ALL_CHANNELS_INJ (ADC_AWD_CR23_CHANNEL_MASK | ADC_CFGR_JAWD1EN ) /*!< ADC analog watchdog monitoring of all channels, converted by group injected only */
AnnaBridge 163:e59c8e839560 1288 #define LL_ADC_AWD_ALL_CHANNELS_REG_INJ (ADC_AWD_CR23_CHANNEL_MASK | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN ) /*!< ADC analog watchdog monitoring of all channels, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1289 #define LL_ADC_AWD_CHANNEL_0_REG ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by group regular only */
AnnaBridge 163:e59c8e839560 1290 #define LL_ADC_AWD_CHANNEL_0_INJ ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by group injected only */
AnnaBridge 163:e59c8e839560 1291 #define LL_ADC_AWD_CHANNEL_0_REG_INJ ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1292 #define LL_ADC_AWD_CHANNEL_1_REG ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by group regular only */
AnnaBridge 163:e59c8e839560 1293 #define LL_ADC_AWD_CHANNEL_1_INJ ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by group injected only */
AnnaBridge 163:e59c8e839560 1294 #define LL_ADC_AWD_CHANNEL_1_REG_INJ ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1295 #define LL_ADC_AWD_CHANNEL_2_REG ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by group regular only */
AnnaBridge 163:e59c8e839560 1296 #define LL_ADC_AWD_CHANNEL_2_INJ ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by group injected only */
AnnaBridge 163:e59c8e839560 1297 #define LL_ADC_AWD_CHANNEL_2_REG_INJ ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1298 #define LL_ADC_AWD_CHANNEL_3_REG ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by group regular only */
AnnaBridge 163:e59c8e839560 1299 #define LL_ADC_AWD_CHANNEL_3_INJ ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by group injected only */
AnnaBridge 163:e59c8e839560 1300 #define LL_ADC_AWD_CHANNEL_3_REG_INJ ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1301 #define LL_ADC_AWD_CHANNEL_4_REG ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by group regular only */
AnnaBridge 163:e59c8e839560 1302 #define LL_ADC_AWD_CHANNEL_4_INJ ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by group injected only */
AnnaBridge 163:e59c8e839560 1303 #define LL_ADC_AWD_CHANNEL_4_REG_INJ ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1304 #define LL_ADC_AWD_CHANNEL_5_REG ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by group regular only */
AnnaBridge 163:e59c8e839560 1305 #define LL_ADC_AWD_CHANNEL_5_INJ ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by group injected only */
AnnaBridge 163:e59c8e839560 1306 #define LL_ADC_AWD_CHANNEL_5_REG_INJ ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1307 #define LL_ADC_AWD_CHANNEL_6_REG ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by group regular only */
AnnaBridge 163:e59c8e839560 1308 #define LL_ADC_AWD_CHANNEL_6_INJ ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by group injected only */
AnnaBridge 163:e59c8e839560 1309 #define LL_ADC_AWD_CHANNEL_6_REG_INJ ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1310 #define LL_ADC_AWD_CHANNEL_7_REG ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by group regular only */
AnnaBridge 163:e59c8e839560 1311 #define LL_ADC_AWD_CHANNEL_7_INJ ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by group injected only */
AnnaBridge 163:e59c8e839560 1312 #define LL_ADC_AWD_CHANNEL_7_REG_INJ ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1313 #define LL_ADC_AWD_CHANNEL_8_REG ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by group regular only */
AnnaBridge 163:e59c8e839560 1314 #define LL_ADC_AWD_CHANNEL_8_INJ ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by group injected only */
AnnaBridge 163:e59c8e839560 1315 #define LL_ADC_AWD_CHANNEL_8_REG_INJ ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1316 #define LL_ADC_AWD_CHANNEL_9_REG ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by group regular only */
AnnaBridge 163:e59c8e839560 1317 #define LL_ADC_AWD_CHANNEL_9_INJ ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by group injected only */
AnnaBridge 163:e59c8e839560 1318 #define LL_ADC_AWD_CHANNEL_9_REG_INJ ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1319 #define LL_ADC_AWD_CHANNEL_10_REG ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by group regular only */
AnnaBridge 163:e59c8e839560 1320 #define LL_ADC_AWD_CHANNEL_10_INJ ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by group injected only */
AnnaBridge 163:e59c8e839560 1321 #define LL_ADC_AWD_CHANNEL_10_REG_INJ ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1322 #define LL_ADC_AWD_CHANNEL_11_REG ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by group regular only */
AnnaBridge 163:e59c8e839560 1323 #define LL_ADC_AWD_CHANNEL_11_INJ ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by group injected only */
AnnaBridge 163:e59c8e839560 1324 #define LL_ADC_AWD_CHANNEL_11_REG_INJ ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1325 #define LL_ADC_AWD_CHANNEL_12_REG ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by group regular only */
AnnaBridge 163:e59c8e839560 1326 #define LL_ADC_AWD_CHANNEL_12_INJ ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by group injected only */
AnnaBridge 163:e59c8e839560 1327 #define LL_ADC_AWD_CHANNEL_12_REG_INJ ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1328 #define LL_ADC_AWD_CHANNEL_13_REG ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by group regular only */
AnnaBridge 163:e59c8e839560 1329 #define LL_ADC_AWD_CHANNEL_13_INJ ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by group injected only */
AnnaBridge 163:e59c8e839560 1330 #define LL_ADC_AWD_CHANNEL_13_REG_INJ ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1331 #define LL_ADC_AWD_CHANNEL_14_REG ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by group regular only */
AnnaBridge 163:e59c8e839560 1332 #define LL_ADC_AWD_CHANNEL_14_INJ ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by group injected only */
AnnaBridge 163:e59c8e839560 1333 #define LL_ADC_AWD_CHANNEL_14_REG_INJ ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1334 #define LL_ADC_AWD_CHANNEL_15_REG ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by group regular only */
AnnaBridge 163:e59c8e839560 1335 #define LL_ADC_AWD_CHANNEL_15_INJ ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by group injected only */
AnnaBridge 163:e59c8e839560 1336 #define LL_ADC_AWD_CHANNEL_15_REG_INJ ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1337 #define LL_ADC_AWD_CHANNEL_16_REG ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by group regular only */
AnnaBridge 163:e59c8e839560 1338 #define LL_ADC_AWD_CHANNEL_16_INJ ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by group injected only */
AnnaBridge 163:e59c8e839560 1339 #define LL_ADC_AWD_CHANNEL_16_REG_INJ ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1340 #define LL_ADC_AWD_CHANNEL_17_REG ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by group regular only */
AnnaBridge 163:e59c8e839560 1341 #define LL_ADC_AWD_CHANNEL_17_INJ ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by group injected only */
AnnaBridge 163:e59c8e839560 1342 #define LL_ADC_AWD_CHANNEL_17_REG_INJ ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1343 #define LL_ADC_AWD_CHANNEL_18_REG ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by group regular only */
AnnaBridge 163:e59c8e839560 1344 #define LL_ADC_AWD_CHANNEL_18_INJ ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by group injected only */
AnnaBridge 163:e59c8e839560 1345 #define LL_ADC_AWD_CHANNEL_18_REG_INJ ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1346 #define LL_ADC_AWD_CH_VREFINT_REG ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by group regular only */
AnnaBridge 163:e59c8e839560 1347 #define LL_ADC_AWD_CH_VREFINT_INJ ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by group injected only */
AnnaBridge 163:e59c8e839560 1348 #define LL_ADC_AWD_CH_VREFINT_REG_INJ ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1349 #define LL_ADC_AWD_CH_TEMPSENSOR_REG ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by group regular only */
AnnaBridge 163:e59c8e839560 1350 #define LL_ADC_AWD_CH_TEMPSENSOR_INJ ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by group injected only */
AnnaBridge 163:e59c8e839560 1351 #define LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1352 #define LL_ADC_AWD_CH_VBAT_REG ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda, converted by group regular only */
AnnaBridge 163:e59c8e839560 1353 #define LL_ADC_AWD_CH_VBAT_INJ ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda, converted by group injected only */
AnnaBridge 163:e59c8e839560 1354 #define LL_ADC_AWD_CH_VBAT_REG_INJ ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda */
AnnaBridge 163:e59c8e839560 1355 #if defined(OPAMP1_CSR_OPAMP1EN)
AnnaBridge 163:e59c8e839560 1356 #define LL_ADC_AWD_CH_VOPAMP1_REG ((LL_ADC_CHANNEL_VOPAMP1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by group regular only */
AnnaBridge 163:e59c8e839560 1357 #define LL_ADC_AWD_CH_VOPAMP1_INJ ((LL_ADC_CHANNEL_VOPAMP1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by group injected only */
AnnaBridge 163:e59c8e839560 1358 #define LL_ADC_AWD_CH_VOPAMP1_REG_INJ ((LL_ADC_CHANNEL_VOPAMP1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1359 #endif
AnnaBridge 163:e59c8e839560 1360 #if defined(OPAMP2_CSR_OPAMP2EN)
AnnaBridge 163:e59c8e839560 1361 #define LL_ADC_AWD_CH_VOPAMP2_REG ((LL_ADC_CHANNEL_VOPAMP2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by group regular only */
AnnaBridge 163:e59c8e839560 1362 #define LL_ADC_AWD_CH_VOPAMP2_INJ ((LL_ADC_CHANNEL_VOPAMP2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by group injected only */
AnnaBridge 163:e59c8e839560 1363 #define LL_ADC_AWD_CH_VOPAMP2_REG_INJ ((LL_ADC_CHANNEL_VOPAMP2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1364 #endif
AnnaBridge 163:e59c8e839560 1365 #if defined(OPAMP3_CSR_OPAMP3EN)
AnnaBridge 163:e59c8e839560 1366 #define LL_ADC_AWD_CH_VOPAMP3_REG ((LL_ADC_CHANNEL_VOPAMP3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by group regular only */
AnnaBridge 163:e59c8e839560 1367 #define LL_ADC_AWD_CH_VOPAMP3_INJ ((LL_ADC_CHANNEL_VOPAMP3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by group injected only */
AnnaBridge 163:e59c8e839560 1368 #define LL_ADC_AWD_CH_VOPAMP3_REG_INJ ((LL_ADC_CHANNEL_VOPAMP3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1369 #endif
AnnaBridge 163:e59c8e839560 1370 #if defined(OPAMP4_CSR_OPAMP4EN)
AnnaBridge 163:e59c8e839560 1371 #define LL_ADC_AWD_CH_VOPAMP4_REG ((LL_ADC_CHANNEL_VOPAMP4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by group regular only */
AnnaBridge 163:e59c8e839560 1372 #define LL_ADC_AWD_CH_VOPAMP4_INJ ((LL_ADC_CHANNEL_VOPAMP4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by group injected only */
AnnaBridge 163:e59c8e839560 1373 #define LL_ADC_AWD_CH_VOPAMP4_REG_INJ ((LL_ADC_CHANNEL_VOPAMP4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 1374 #endif
AnnaBridge 163:e59c8e839560 1375 /**
AnnaBridge 163:e59c8e839560 1376 * @}
AnnaBridge 163:e59c8e839560 1377 */
AnnaBridge 163:e59c8e839560 1378
AnnaBridge 163:e59c8e839560 1379 /** @defgroup ADC_LL_EC_AWD_THRESHOLDS Analog watchdog - Thresholds
AnnaBridge 163:e59c8e839560 1380 * @{
AnnaBridge 163:e59c8e839560 1381 */
AnnaBridge 163:e59c8e839560 1382 #define LL_ADC_AWD_THRESHOLD_HIGH (ADC_TR1_HT1 ) /*!< ADC analog watchdog threshold high */
AnnaBridge 163:e59c8e839560 1383 #define LL_ADC_AWD_THRESHOLD_LOW ( ADC_TR1_LT1) /*!< ADC analog watchdog threshold low */
AnnaBridge 163:e59c8e839560 1384 #define LL_ADC_AWD_THRESHOLDS_HIGH_LOW (ADC_TR1_HT1 | ADC_TR1_LT1) /*!< ADC analog watchdog both thresholds high and low concatenated into the same data */
AnnaBridge 163:e59c8e839560 1385 /**
AnnaBridge 163:e59c8e839560 1386 * @}
AnnaBridge 163:e59c8e839560 1387 */
AnnaBridge 163:e59c8e839560 1388
AnnaBridge 163:e59c8e839560 1389 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 163:e59c8e839560 1390 /** @defgroup ADC_LL_EC_MULTI_MODE Multimode - Mode
AnnaBridge 163:e59c8e839560 1391 * @{
AnnaBridge 163:e59c8e839560 1392 */
AnnaBridge 163:e59c8e839560 1393 #define LL_ADC_MULTI_INDEPENDENT ((uint32_t)0x00000000U) /*!< ADC dual mode disabled (ADC independent mode) */
AnnaBridge 163:e59c8e839560 1394 #define LL_ADC_MULTI_DUAL_REG_SIMULT ( ADC_CCR_DUAL_2 | ADC_CCR_DUAL_1 ) /*!< ADC dual mode enabled: group regular simultaneous */
AnnaBridge 163:e59c8e839560 1395 #define LL_ADC_MULTI_DUAL_REG_INTERL ( ADC_CCR_DUAL_2 | ADC_CCR_DUAL_1 | ADC_CCR_DUAL_0) /*!< ADC dual mode enabled: Combined group regular interleaved */
AnnaBridge 163:e59c8e839560 1396 #define LL_ADC_MULTI_DUAL_INJ_SIMULT ( ADC_CCR_DUAL_2 | ADC_CCR_DUAL_0) /*!< ADC dual mode enabled: group injected simultaneous */
AnnaBridge 163:e59c8e839560 1397 #define LL_ADC_MULTI_DUAL_INJ_ALTERN (ADC_CCR_DUAL_3 | ADC_CCR_DUAL_0) /*!< ADC dual mode enabled: group injected alternate trigger. Works only with external triggers (not internal SW start) */
AnnaBridge 163:e59c8e839560 1398 #define LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM ( ADC_CCR_DUAL_0) /*!< ADC dual mode enabled: Combined group regular simultaneous + group injected simultaneous */
AnnaBridge 163:e59c8e839560 1399 #define LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT ( ADC_CCR_DUAL_1 ) /*!< ADC dual mode enabled: Combined group regular simultaneous + group injected alternate trigger */
AnnaBridge 163:e59c8e839560 1400 #define LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM ( ADC_CCR_DUAL_1 | ADC_CCR_DUAL_0) /*!< ADC dual mode enabled: Combined group regular interleaved + group injected simultaneous */
AnnaBridge 163:e59c8e839560 1401 /**
AnnaBridge 163:e59c8e839560 1402 * @}
AnnaBridge 163:e59c8e839560 1403 */
AnnaBridge 163:e59c8e839560 1404
AnnaBridge 163:e59c8e839560 1405 /** @defgroup ADC_LL_EC_MULTI_DMA_TRANSFER Multimode - DMA transfer
AnnaBridge 163:e59c8e839560 1406 * @{
AnnaBridge 163:e59c8e839560 1407 */
AnnaBridge 163:e59c8e839560 1408 #define LL_ADC_MULTI_REG_DMA_EACH_ADC ((uint32_t)0x00000000U) /*!< ADC multimode group regular conversions are transferred by DMA: each ADC uses its own DMA channel, with its individual DMA transfer settings */
AnnaBridge 163:e59c8e839560 1409 #define LL_ADC_MULTI_REG_DMA_LIMIT_RES12_10B ( ADC_CCR_MDMA_1 ) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for both ADC (DMA of ADC master), in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting for ADC resolution of 12 and 10 bits */
AnnaBridge 163:e59c8e839560 1410 #define LL_ADC_MULTI_REG_DMA_LIMIT_RES8_6B ( ADC_CCR_MDMA_1 | ADC_CCR_MDMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for both ADC (DMA of ADC master), in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting for ADC resolution of 8 and 6 bits */
AnnaBridge 163:e59c8e839560 1411 #define LL_ADC_MULTI_REG_DMA_UNLMT_RES12_10B (ADC_CCR_DMACFG | ADC_CCR_MDMA_1 ) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for both ADC (DMA of ADC master), in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions). This ADC mode is intended to be used with DMA mode circular. Setting for ADC resolution of 12 and 10 bits */
AnnaBridge 163:e59c8e839560 1412 #define LL_ADC_MULTI_REG_DMA_UNLMT_RES8_6B (ADC_CCR_DMACFG | ADC_CCR_MDMA_1 | ADC_CCR_MDMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for both ADC (DMA of ADC master), in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions). This ADC mode is intended to be used with DMA mode circular. Setting for ADC resolution of 8 and 6 bits */
AnnaBridge 163:e59c8e839560 1413 /**
AnnaBridge 163:e59c8e839560 1414 * @}
AnnaBridge 163:e59c8e839560 1415 */
AnnaBridge 163:e59c8e839560 1416
AnnaBridge 163:e59c8e839560 1417 /** @defgroup ADC_LL_EC_MULTI_TWOSMP_DELAY Multimode - Delay between two sampling phases
AnnaBridge 163:e59c8e839560 1418 * @{
AnnaBridge 163:e59c8e839560 1419 */
AnnaBridge 163:e59c8e839560 1420 #define LL_ADC_MULTI_TWOSMP_DELAY_1CYCLE ((uint32_t)0x00000000U) /*!< ADC multimode delay between two sampling phases: 1 ADC clock cycle */
AnnaBridge 163:e59c8e839560 1421 #define LL_ADC_MULTI_TWOSMP_DELAY_2CYCLES ( ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 2 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1422 #define LL_ADC_MULTI_TWOSMP_DELAY_3CYCLES ( ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 3 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1423 #define LL_ADC_MULTI_TWOSMP_DELAY_4CYCLES ( ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 4 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1424 #define LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES ( ADC_CCR_DELAY_2 ) /*!< ADC multimode delay between two sampling phases: 5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1425 #define LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 6 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1426 #define LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 7 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1427 #define LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 8 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1428 #define LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES (ADC_CCR_DELAY_3 ) /*!< ADC multimode delay between two sampling phases: 9 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1429 #define LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 10 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1430 #define LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 11 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1431 #define LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 12 ADC clock cycles */
AnnaBridge 163:e59c8e839560 1432 /**
AnnaBridge 163:e59c8e839560 1433 * @}
AnnaBridge 163:e59c8e839560 1434 */
AnnaBridge 163:e59c8e839560 1435
AnnaBridge 163:e59c8e839560 1436 /** @defgroup ADC_LL_EC_MULTI_MASTER_SLAVE Multimode - ADC master or slave
AnnaBridge 163:e59c8e839560 1437 * @{
AnnaBridge 163:e59c8e839560 1438 */
AnnaBridge 163:e59c8e839560 1439 #define LL_ADC_MULTI_MASTER ( ADC_CDR_RDATA_MST) /*!< In multimode, selection among several ADC instances: ADC master */
AnnaBridge 163:e59c8e839560 1440 #define LL_ADC_MULTI_SLAVE (ADC_CDR_RDATA_SLV ) /*!< In multimode, selection among several ADC instances: ADC slave */
AnnaBridge 163:e59c8e839560 1441 #define LL_ADC_MULTI_MASTER_SLAVE (ADC_CDR_RDATA_SLV | ADC_CDR_RDATA_MST) /*!< In multimode, selection among several ADC instances: both ADC master and ADC slave */
AnnaBridge 163:e59c8e839560 1442 /**
AnnaBridge 163:e59c8e839560 1443 * @}
AnnaBridge 163:e59c8e839560 1444 */
AnnaBridge 163:e59c8e839560 1445
AnnaBridge 163:e59c8e839560 1446 #endif /* ADC_MULTIMODE_SUPPORT */
AnnaBridge 163:e59c8e839560 1447
AnnaBridge 163:e59c8e839560 1448
AnnaBridge 163:e59c8e839560 1449 /** @defgroup ADC_LL_EC_HW_DELAYS Definitions of ADC hardware constraints delays
AnnaBridge 163:e59c8e839560 1450 * @note Only ADC IP HW delays are defined in ADC LL driver driver,
AnnaBridge 163:e59c8e839560 1451 * not timeout values.
AnnaBridge 163:e59c8e839560 1452 * For details on delays values, refer to descriptions in source code
AnnaBridge 163:e59c8e839560 1453 * above each literal definition.
AnnaBridge 163:e59c8e839560 1454 * @{
AnnaBridge 163:e59c8e839560 1455 */
AnnaBridge 163:e59c8e839560 1456
AnnaBridge 163:e59c8e839560 1457 /* Note: Only ADC IP HW delays are defined in ADC LL driver driver, */
AnnaBridge 163:e59c8e839560 1458 /* not timeout values. */
AnnaBridge 163:e59c8e839560 1459 /* Timeout values for ADC operations are dependent to device clock */
AnnaBridge 163:e59c8e839560 1460 /* configuration (system clock versus ADC clock), */
AnnaBridge 163:e59c8e839560 1461 /* and therefore must be defined in user application. */
AnnaBridge 163:e59c8e839560 1462 /* Indications for estimation of ADC timeout delays, for this */
AnnaBridge 163:e59c8e839560 1463 /* STM32 serie: */
AnnaBridge 163:e59c8e839560 1464 /* - ADC calibration time: maximum delay is 112/fADC. */
AnnaBridge 163:e59c8e839560 1465 /* (refer to device datasheet, parameter "tCAL") */
AnnaBridge 163:e59c8e839560 1466 /* - ADC enable time: maximum delay is 1 conversion cycle. */
AnnaBridge 163:e59c8e839560 1467 /* (refer to device datasheet, parameter "tSTAB") */
AnnaBridge 163:e59c8e839560 1468 /* - ADC disable time: maximum delay should be a few ADC clock cycles */
AnnaBridge 163:e59c8e839560 1469 /* - ADC stop conversion time: maximum delay should be a few ADC clock */
AnnaBridge 163:e59c8e839560 1470 /* cycles */
AnnaBridge 163:e59c8e839560 1471 /* - ADC conversion time: duration depending on ADC clock and ADC */
AnnaBridge 163:e59c8e839560 1472 /* configuration. */
AnnaBridge 163:e59c8e839560 1473 /* (refer to device reference manual, section "Timing") */
AnnaBridge 163:e59c8e839560 1474
AnnaBridge 163:e59c8e839560 1475 /* Delay for ADC stabilization time (ADC voltage regulator start-up time) */
AnnaBridge 163:e59c8e839560 1476 /* Delay set to maximum value (refer to device datasheet, */
AnnaBridge 163:e59c8e839560 1477 /* parameter "tADCVREG_STUP"). */
AnnaBridge 163:e59c8e839560 1478 /* Unit: us */
AnnaBridge 163:e59c8e839560 1479 #define LL_ADC_DELAY_INTERNAL_REGUL_STAB_US ((uint32_t) 10U) /*!< Delay for ADC stabilization time (ADC voltage regulator start-up time) */
AnnaBridge 163:e59c8e839560 1480
AnnaBridge 163:e59c8e839560 1481 /* Delay for internal voltage reference stabilization time. */
AnnaBridge 163:e59c8e839560 1482 /* Delay set to maximum value (refer to device datasheet, */
AnnaBridge 163:e59c8e839560 1483 /* parameter "tstart_vrefint"). */
AnnaBridge 163:e59c8e839560 1484 /* Unit: us */
AnnaBridge 163:e59c8e839560 1485 #define LL_ADC_DELAY_VREFINT_STAB_US ((uint32_t) 12U) /*!< Delay for internal voltage reference stabilization time */
AnnaBridge 163:e59c8e839560 1486
AnnaBridge 163:e59c8e839560 1487 /* Delay for temperature sensor stabilization time. */
AnnaBridge 163:e59c8e839560 1488 /* Literal set to maximum value (refer to device datasheet, */
AnnaBridge 163:e59c8e839560 1489 /* parameter "tSTART"). */
AnnaBridge 163:e59c8e839560 1490 /* Unit: us */
AnnaBridge 163:e59c8e839560 1491 #define LL_ADC_DELAY_TEMPSENSOR_STAB_US ((uint32_t) 120U) /*!< Delay for temperature sensor stabilization time */
AnnaBridge 163:e59c8e839560 1492
AnnaBridge 163:e59c8e839560 1493 /* Delay required between ADC end of calibration and ADC enable. */
AnnaBridge 163:e59c8e839560 1494 /* Note: On this STM32 serie, a minimum number of ADC clock cycles */
AnnaBridge 163:e59c8e839560 1495 /* are required between ADC end of calibration and ADC enable. */
AnnaBridge 163:e59c8e839560 1496 /* Wait time can be computed in user application by waiting for the */
AnnaBridge 163:e59c8e839560 1497 /* equivalent number of CPU cycles, by taking into account */
AnnaBridge 163:e59c8e839560 1498 /* ratio of CPU clock versus ADC clock prescalers. */
AnnaBridge 163:e59c8e839560 1499 /* Unit: ADC clock cycles. */
AnnaBridge 163:e59c8e839560 1500 #define LL_ADC_DELAY_CALIB_ENABLE_ADC_CYCLES ((uint32_t) 4U) /*!< Delay required between ADC end of calibration and ADC enable */
AnnaBridge 163:e59c8e839560 1501
AnnaBridge 163:e59c8e839560 1502 /**
AnnaBridge 163:e59c8e839560 1503 * @}
AnnaBridge 163:e59c8e839560 1504 */
AnnaBridge 163:e59c8e839560 1505
AnnaBridge 163:e59c8e839560 1506 /**
AnnaBridge 163:e59c8e839560 1507 * @}
AnnaBridge 163:e59c8e839560 1508 */
AnnaBridge 163:e59c8e839560 1509
AnnaBridge 163:e59c8e839560 1510
AnnaBridge 163:e59c8e839560 1511 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 1512 /** @defgroup ADC_LL_Exported_Macros ADC Exported Macros
AnnaBridge 163:e59c8e839560 1513 * @{
AnnaBridge 163:e59c8e839560 1514 */
AnnaBridge 163:e59c8e839560 1515
AnnaBridge 163:e59c8e839560 1516 /** @defgroup ADC_LL_EM_WRITE_READ Common write and read registers Macros
AnnaBridge 163:e59c8e839560 1517 * @{
AnnaBridge 163:e59c8e839560 1518 */
AnnaBridge 163:e59c8e839560 1519
AnnaBridge 163:e59c8e839560 1520 /**
AnnaBridge 163:e59c8e839560 1521 * @brief Write a value in ADC register
AnnaBridge 163:e59c8e839560 1522 * @param __INSTANCE__ ADC Instance
AnnaBridge 163:e59c8e839560 1523 * @param __REG__ Register to be written
AnnaBridge 163:e59c8e839560 1524 * @param __VALUE__ Value to be written in the register
AnnaBridge 163:e59c8e839560 1525 * @retval None
AnnaBridge 163:e59c8e839560 1526 */
AnnaBridge 163:e59c8e839560 1527 #define LL_ADC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
AnnaBridge 163:e59c8e839560 1528
AnnaBridge 163:e59c8e839560 1529 /**
AnnaBridge 163:e59c8e839560 1530 * @brief Read a value in ADC register
AnnaBridge 163:e59c8e839560 1531 * @param __INSTANCE__ ADC Instance
AnnaBridge 163:e59c8e839560 1532 * @param __REG__ Register to be read
AnnaBridge 163:e59c8e839560 1533 * @retval Register value
AnnaBridge 163:e59c8e839560 1534 */
AnnaBridge 163:e59c8e839560 1535 #define LL_ADC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
AnnaBridge 163:e59c8e839560 1536 /**
AnnaBridge 163:e59c8e839560 1537 * @}
AnnaBridge 163:e59c8e839560 1538 */
AnnaBridge 163:e59c8e839560 1539
AnnaBridge 163:e59c8e839560 1540 /** @defgroup ADC_LL_EM_HELPER_MACRO ADC helper macro
AnnaBridge 163:e59c8e839560 1541 * @{
AnnaBridge 163:e59c8e839560 1542 */
AnnaBridge 163:e59c8e839560 1543
AnnaBridge 163:e59c8e839560 1544 /**
AnnaBridge 163:e59c8e839560 1545 * @brief Helper macro to get ADC channel number in decimal format
AnnaBridge 163:e59c8e839560 1546 * from literals LL_ADC_CHANNEL_x.
AnnaBridge 163:e59c8e839560 1547 * @note Example:
AnnaBridge 163:e59c8e839560 1548 * __LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_CHANNEL_4)
AnnaBridge 163:e59c8e839560 1549 * will return decimal number "4".
AnnaBridge 163:e59c8e839560 1550 * @note The input can be a value from functions where a channel
AnnaBridge 163:e59c8e839560 1551 * number is returned, either defined with number
AnnaBridge 163:e59c8e839560 1552 * or with bitfield (only one bit must be set).
AnnaBridge 163:e59c8e839560 1553 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 1554 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 1555 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 1556 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 1557 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 1558 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 1559 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 1560 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 1561 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 1562 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 1563 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 1564 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 1565 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 1566 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 1567 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 1568 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 1569 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 1570 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 1571 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 1572 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 1573 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 1574 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 1575 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 1576 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 1577 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 1578 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 1579 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 1580 *
AnnaBridge 163:e59c8e839560 1581 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 1582 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 1583 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 1584 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 1585 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 1586 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 1587 * @retval Value between Min_Data=0 and Max_Data=18
AnnaBridge 163:e59c8e839560 1588 */
AnnaBridge 163:e59c8e839560 1589 #define __LL_ADC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \
AnnaBridge 163:e59c8e839560 1590 ((((__CHANNEL__) & ADC_CHANNEL_ID_BITFIELD_MASK) == 0U) \
AnnaBridge 163:e59c8e839560 1591 ? ( \
AnnaBridge 163:e59c8e839560 1592 ((__CHANNEL__) & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS \
AnnaBridge 163:e59c8e839560 1593 ) \
AnnaBridge 163:e59c8e839560 1594 : \
AnnaBridge 163:e59c8e839560 1595 ( \
AnnaBridge 163:e59c8e839560 1596 POSITION_VAL((__CHANNEL__)) \
AnnaBridge 163:e59c8e839560 1597 ) \
AnnaBridge 163:e59c8e839560 1598 )
AnnaBridge 163:e59c8e839560 1599
AnnaBridge 163:e59c8e839560 1600 /**
AnnaBridge 163:e59c8e839560 1601 * @brief Helper macro to get ADC channel in literal format LL_ADC_CHANNEL_x
AnnaBridge 163:e59c8e839560 1602 * from number in decimal format.
AnnaBridge 163:e59c8e839560 1603 * @note Example:
AnnaBridge 163:e59c8e839560 1604 * __LL_ADC_DECIMAL_NB_TO_CHANNEL(4)
AnnaBridge 163:e59c8e839560 1605 * will return a data equivalent to "LL_ADC_CHANNEL_4".
AnnaBridge 168:b9e159c1930a 1606 * @param __DECIMAL_NB__ Value between Min_Data=0 and Max_Data=18
AnnaBridge 163:e59c8e839560 1607 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 1608 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 1609 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 1610 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 1611 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 1612 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 1613 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 1614 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 1615 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 1616 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 1617 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 1618 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 1619 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 1620 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 1621 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 1622 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 1623 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 1624 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 1625 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 1626 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 1627 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 1628 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 1629 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 1630 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 1631 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 1632 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 1633 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 1634 *
AnnaBridge 163:e59c8e839560 1635 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 1636 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 1637 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 1638 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 1639 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 1640 * only one ADC instance is allowed to be connected to VrefInt at the same time.\n
AnnaBridge 163:e59c8e839560 1641 * (1, 2, 3, 4, 5) For ADC channel read back from ADC register,
AnnaBridge 163:e59c8e839560 1642 * comparison with internal channel parameter to be done
AnnaBridge 163:e59c8e839560 1643 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 163:e59c8e839560 1644 */
AnnaBridge 163:e59c8e839560 1645 #define __LL_ADC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
AnnaBridge 163:e59c8e839560 1646 (((__DECIMAL_NB__) <= 9U) \
AnnaBridge 163:e59c8e839560 1647 ? ( \
AnnaBridge 163:e59c8e839560 1648 ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \
AnnaBridge 163:e59c8e839560 1649 (ADC_AWD2CR_AWD2CH_0 << (__DECIMAL_NB__)) | \
AnnaBridge 163:e59c8e839560 1650 (ADC_SMPR1_REGOFFSET | (((uint32_t) (3U * (__DECIMAL_NB__))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \
AnnaBridge 163:e59c8e839560 1651 ) \
AnnaBridge 163:e59c8e839560 1652 : \
AnnaBridge 163:e59c8e839560 1653 ( \
AnnaBridge 163:e59c8e839560 1654 ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \
AnnaBridge 163:e59c8e839560 1655 (ADC_AWD2CR_AWD2CH_0 << (__DECIMAL_NB__)) | \
AnnaBridge 163:e59c8e839560 1656 (ADC_SMPR2_REGOFFSET | (((uint32_t) (3U * ((__DECIMAL_NB__) - 10U))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \
AnnaBridge 163:e59c8e839560 1657 ) \
AnnaBridge 163:e59c8e839560 1658 )
AnnaBridge 163:e59c8e839560 1659
AnnaBridge 163:e59c8e839560 1660 /**
AnnaBridge 163:e59c8e839560 1661 * @brief Helper macro to determine whether the selected channel
AnnaBridge 163:e59c8e839560 1662 * corresponds to literal definitions of driver.
AnnaBridge 163:e59c8e839560 1663 * @note The different literal definitions of ADC channels are:
AnnaBridge 163:e59c8e839560 1664 * - ADC internal channel:
AnnaBridge 163:e59c8e839560 1665 * LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ...
AnnaBridge 163:e59c8e839560 1666 * - ADC external channel (channel connected to a GPIO pin):
AnnaBridge 163:e59c8e839560 1667 * LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...
AnnaBridge 163:e59c8e839560 1668 * @note The channel parameter must be a value defined from literal
AnnaBridge 163:e59c8e839560 1669 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
AnnaBridge 163:e59c8e839560 1670 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 163:e59c8e839560 1671 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...),
AnnaBridge 163:e59c8e839560 1672 * must not be a value from functions where a channel number is
AnnaBridge 163:e59c8e839560 1673 * returned from ADC registers,
AnnaBridge 163:e59c8e839560 1674 * because internal and external channels share the same channel
AnnaBridge 163:e59c8e839560 1675 * number in ADC registers. The differentiation is made only with
AnnaBridge 163:e59c8e839560 1676 * parameters definitions of driver.
AnnaBridge 163:e59c8e839560 1677 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 1678 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 1679 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 1680 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 1681 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 1682 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 1683 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 1684 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 1685 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 1686 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 1687 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 1688 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 1689 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 1690 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 1691 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 1692 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 1693 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 1694 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 1695 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 1696 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 1697 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 1698 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 1699 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 1700 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 1701 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 1702 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 1703 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 1704 *
AnnaBridge 163:e59c8e839560 1705 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 1706 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 1707 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 1708 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 1709 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 1710 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 1711 * @retval Value "0" if the channel corresponds to a parameter definition of a ADC external channel (channel connected to a GPIO pin).
AnnaBridge 163:e59c8e839560 1712 * Value "1" if the channel corresponds to a parameter definition of a ADC internal channel.
AnnaBridge 163:e59c8e839560 1713 */
AnnaBridge 163:e59c8e839560 1714 #define __LL_ADC_IS_CHANNEL_INTERNAL(__CHANNEL__) \
AnnaBridge 163:e59c8e839560 1715 (((__CHANNEL__) & ADC_CHANNEL_ID_INTERNAL_CH_MASK) != 0U)
AnnaBridge 163:e59c8e839560 1716
AnnaBridge 163:e59c8e839560 1717 /**
AnnaBridge 163:e59c8e839560 1718 * @brief Helper macro to convert a channel defined from parameter
AnnaBridge 163:e59c8e839560 1719 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
AnnaBridge 163:e59c8e839560 1720 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 163:e59c8e839560 1721 * to its equivalent parameter definition of a ADC external channel
AnnaBridge 163:e59c8e839560 1722 * (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...).
AnnaBridge 163:e59c8e839560 1723 * @note The channel parameter can be, additionally to a value
AnnaBridge 163:e59c8e839560 1724 * defined from parameter definition of a ADC internal channel
AnnaBridge 163:e59c8e839560 1725 * (LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 163:e59c8e839560 1726 * a value defined from parameter definition of
AnnaBridge 163:e59c8e839560 1727 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...)
AnnaBridge 163:e59c8e839560 1728 * or a value from functions where a channel number is returned
AnnaBridge 163:e59c8e839560 1729 * from ADC registers.
AnnaBridge 163:e59c8e839560 1730 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 1731 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 1732 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 1733 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 1734 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 1735 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 1736 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 1737 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 1738 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 1739 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 1740 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 1741 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 1742 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 1743 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 1744 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 1745 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 1746 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 1747 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 1748 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 1749 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 1750 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 1751 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 1752 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 1753 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 1754 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 1755 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 1756 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 1757 *
AnnaBridge 163:e59c8e839560 1758 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 1759 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 1760 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 1761 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 1762 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 1763 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 1764 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 1765 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 1766 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 1767 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 1768 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 1769 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 1770 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 1771 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 1772 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 1773 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 1774 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 1775 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 1776 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 1777 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 1778 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 1779 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 1780 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 1781 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 1782 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 1783 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 1784 */
AnnaBridge 163:e59c8e839560 1785 #define __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(__CHANNEL__) \
AnnaBridge 163:e59c8e839560 1786 ((__CHANNEL__) & ~ADC_CHANNEL_ID_INTERNAL_CH_MASK)
AnnaBridge 163:e59c8e839560 1787
AnnaBridge 163:e59c8e839560 1788 /**
AnnaBridge 163:e59c8e839560 1789 * @brief Helper macro to determine whether the internal channel
AnnaBridge 163:e59c8e839560 1790 * selected is available on the ADC instance selected.
AnnaBridge 163:e59c8e839560 1791 * @note The channel parameter must be a value defined from parameter
AnnaBridge 163:e59c8e839560 1792 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
AnnaBridge 163:e59c8e839560 1793 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 163:e59c8e839560 1794 * must not be a value defined from parameter definition of
AnnaBridge 163:e59c8e839560 1795 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...)
AnnaBridge 163:e59c8e839560 1796 * or a value from functions where a channel number is
AnnaBridge 163:e59c8e839560 1797 * returned from ADC registers,
AnnaBridge 163:e59c8e839560 1798 * because internal and external channels share the same channel
AnnaBridge 163:e59c8e839560 1799 * number in ADC registers. The differentiation is made only with
AnnaBridge 163:e59c8e839560 1800 * parameters definitions of driver.
AnnaBridge 163:e59c8e839560 1801 * @param __ADC_INSTANCE__ ADC instance
AnnaBridge 163:e59c8e839560 1802 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 1803 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 1804 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 1805 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 1806 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 1807 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 1808 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 1809 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 1810 *
AnnaBridge 163:e59c8e839560 1811 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 1812 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 1813 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 1814 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 1815 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 1816 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 1817 * @retval Value "0" if the internal channel selected is not available on the ADC instance selected.
AnnaBridge 163:e59c8e839560 1818 * Value "1" if the internal channel selected is available on the ADC instance selected.
AnnaBridge 163:e59c8e839560 1819 */
AnnaBridge 163:e59c8e839560 1820 #if defined (ADC1) && defined (ADC2) && defined (ADC3) && defined (ADC4)
AnnaBridge 163:e59c8e839560 1821 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 163:e59c8e839560 1822 (((__ADC_INSTANCE__) == ADC1) \
AnnaBridge 163:e59c8e839560 1823 ? ( \
AnnaBridge 163:e59c8e839560 1824 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1825 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
AnnaBridge 163:e59c8e839560 1826 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) || \
AnnaBridge 163:e59c8e839560 1827 ((__CHANNEL__) == LL_ADC_CHANNEL_VOPAMP1) \
AnnaBridge 163:e59c8e839560 1828 ) \
AnnaBridge 163:e59c8e839560 1829 : \
AnnaBridge 163:e59c8e839560 1830 ((__ADC_INSTANCE__) == ADC2) \
AnnaBridge 163:e59c8e839560 1831 ? ( \
AnnaBridge 163:e59c8e839560 1832 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1833 ((__CHANNEL__) == LL_ADC_CHANNEL_VOPAMP2) \
AnnaBridge 163:e59c8e839560 1834 ) \
AnnaBridge 163:e59c8e839560 1835 : \
AnnaBridge 163:e59c8e839560 1836 ((__ADC_INSTANCE__) == ADC3) \
AnnaBridge 163:e59c8e839560 1837 ? ( \
AnnaBridge 163:e59c8e839560 1838 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1839 ((__CHANNEL__) == LL_ADC_CHANNEL_VOPAMP3) \
AnnaBridge 163:e59c8e839560 1840 ) \
AnnaBridge 163:e59c8e839560 1841 : \
AnnaBridge 163:e59c8e839560 1842 ((__ADC_INSTANCE__) == ADC4) \
AnnaBridge 163:e59c8e839560 1843 ? ( \
AnnaBridge 163:e59c8e839560 1844 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1845 ((__CHANNEL__) == LL_ADC_CHANNEL_VOPAMP4) \
AnnaBridge 163:e59c8e839560 1846 ) \
AnnaBridge 163:e59c8e839560 1847 : \
AnnaBridge 163:e59c8e839560 1848 (0U) \
AnnaBridge 163:e59c8e839560 1849 )
AnnaBridge 163:e59c8e839560 1850 #elif defined (ADC1) && defined (ADC2)
AnnaBridge 163:e59c8e839560 1851 #if defined(OPAMP1_CSR_OPAMP1EN) && defined(OPAMP2_CSR_OPAMP2EN)
AnnaBridge 163:e59c8e839560 1852 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 163:e59c8e839560 1853 (((__ADC_INSTANCE__) == ADC1) \
AnnaBridge 163:e59c8e839560 1854 ? ( \
AnnaBridge 163:e59c8e839560 1855 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1856 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
AnnaBridge 163:e59c8e839560 1857 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) || \
AnnaBridge 163:e59c8e839560 1858 ((__CHANNEL__) == LL_ADC_CHANNEL_VOPAMP1) \
AnnaBridge 163:e59c8e839560 1859 ) \
AnnaBridge 163:e59c8e839560 1860 : \
AnnaBridge 163:e59c8e839560 1861 ((__ADC_INSTANCE__) == ADC2) \
AnnaBridge 163:e59c8e839560 1862 ? ( \
AnnaBridge 163:e59c8e839560 1863 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1864 ((__CHANNEL__) == LL_ADC_CHANNEL_VOPAMP2) \
AnnaBridge 163:e59c8e839560 1865 ) \
AnnaBridge 163:e59c8e839560 1866 : \
AnnaBridge 163:e59c8e839560 1867 (0U) \
AnnaBridge 163:e59c8e839560 1868 )
AnnaBridge 163:e59c8e839560 1869 #elif defined(OPAMP2_CSR_OPAMP2EN)
AnnaBridge 163:e59c8e839560 1870 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 163:e59c8e839560 1871 (((__ADC_INSTANCE__) == ADC1) \
AnnaBridge 163:e59c8e839560 1872 ? ( \
AnnaBridge 163:e59c8e839560 1873 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1874 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
AnnaBridge 163:e59c8e839560 1875 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) \
AnnaBridge 163:e59c8e839560 1876 ) \
AnnaBridge 163:e59c8e839560 1877 : \
AnnaBridge 163:e59c8e839560 1878 ((__ADC_INSTANCE__) == ADC2) \
AnnaBridge 163:e59c8e839560 1879 ? ( \
AnnaBridge 163:e59c8e839560 1880 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1881 ((__CHANNEL__) == LL_ADC_CHANNEL_VOPAMP2) \
AnnaBridge 163:e59c8e839560 1882 ) \
AnnaBridge 163:e59c8e839560 1883 : \
AnnaBridge 163:e59c8e839560 1884 (0U) \
AnnaBridge 163:e59c8e839560 1885 )
AnnaBridge 163:e59c8e839560 1886 #else
AnnaBridge 163:e59c8e839560 1887 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 163:e59c8e839560 1888 (((__ADC_INSTANCE__) == ADC1) \
AnnaBridge 163:e59c8e839560 1889 ? ( \
AnnaBridge 163:e59c8e839560 1890 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1891 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
AnnaBridge 163:e59c8e839560 1892 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) || \
AnnaBridge 163:e59c8e839560 1893 ((__CHANNEL__) == LL_ADC_CHANNEL_VOPAMP1) \
AnnaBridge 163:e59c8e839560 1894 ) \
AnnaBridge 163:e59c8e839560 1895 : \
AnnaBridge 163:e59c8e839560 1896 ((__ADC_INSTANCE__) == ADC2) \
AnnaBridge 163:e59c8e839560 1897 ? ( \
AnnaBridge 163:e59c8e839560 1898 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) \
AnnaBridge 163:e59c8e839560 1899 ) \
AnnaBridge 163:e59c8e839560 1900 : \
AnnaBridge 163:e59c8e839560 1901 (0U) \
AnnaBridge 163:e59c8e839560 1902 )
AnnaBridge 163:e59c8e839560 1903 #endif
AnnaBridge 163:e59c8e839560 1904 #elif defined (ADC1)
AnnaBridge 163:e59c8e839560 1905 #if defined(OPAMP1_CSR_OPAMP1EN)
AnnaBridge 163:e59c8e839560 1906 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 163:e59c8e839560 1907 ( \
AnnaBridge 163:e59c8e839560 1908 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1909 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
AnnaBridge 163:e59c8e839560 1910 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) || \
AnnaBridge 163:e59c8e839560 1911 ((__CHANNEL__) == LL_ADC_CHANNEL_VOPAMP1) \
AnnaBridge 163:e59c8e839560 1912 )
AnnaBridge 163:e59c8e839560 1913 #else
AnnaBridge 163:e59c8e839560 1914 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 163:e59c8e839560 1915 ( \
AnnaBridge 163:e59c8e839560 1916 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 1917 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
AnnaBridge 163:e59c8e839560 1918 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) \
AnnaBridge 163:e59c8e839560 1919 )
AnnaBridge 163:e59c8e839560 1920 #endif
AnnaBridge 163:e59c8e839560 1921 #endif
AnnaBridge 163:e59c8e839560 1922
AnnaBridge 163:e59c8e839560 1923 /**
AnnaBridge 163:e59c8e839560 1924 * @brief Helper macro to define ADC analog watchdog parameter:
AnnaBridge 163:e59c8e839560 1925 * define a single channel to monitor with analog watchdog
AnnaBridge 163:e59c8e839560 1926 * from sequencer channel and groups definition.
AnnaBridge 163:e59c8e839560 1927 * @note To be used with function @ref LL_ADC_SetAnalogWDMonitChannels().
AnnaBridge 163:e59c8e839560 1928 * Example:
AnnaBridge 163:e59c8e839560 1929 * LL_ADC_SetAnalogWDMonitChannels(
AnnaBridge 163:e59c8e839560 1930 * ADC1, LL_ADC_AWD1,
AnnaBridge 163:e59c8e839560 1931 * __LL_ADC_ANALOGWD_CHANNEL_GROUP(LL_ADC_CHANNEL4, LL_ADC_GROUP_REGULAR))
AnnaBridge 163:e59c8e839560 1932 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 1933 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 1934 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 1935 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 1936 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 1937 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 1938 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 1939 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 1940 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 1941 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 1942 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 1943 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 1944 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 1945 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 1946 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 1947 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 1948 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 1949 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 1950 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 1951 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 1952 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 1953 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 1954 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 1955 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 1956 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 1957 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 1958 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 1959 *
AnnaBridge 163:e59c8e839560 1960 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 1961 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 1962 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 1963 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 1964 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 1965 * only one ADC instance is allowed to be connected to VrefInt at the same time.\n
AnnaBridge 163:e59c8e839560 1966 * (1, 2, 3, 4, 5) For ADC channel read back from ADC register,
AnnaBridge 163:e59c8e839560 1967 * comparison with internal channel parameter to be done
AnnaBridge 163:e59c8e839560 1968 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 163:e59c8e839560 1969 * @param __GROUP__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 1970 * @arg @ref LL_ADC_GROUP_REGULAR
AnnaBridge 163:e59c8e839560 1971 * @arg @ref LL_ADC_GROUP_INJECTED
AnnaBridge 163:e59c8e839560 1972 * @arg @ref LL_ADC_GROUP_REGULAR_INJECTED
AnnaBridge 163:e59c8e839560 1973 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 1974 * @arg @ref LL_ADC_AWD_DISABLE
AnnaBridge 163:e59c8e839560 1975 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG (0)
AnnaBridge 163:e59c8e839560 1976 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ (0)
AnnaBridge 163:e59c8e839560 1977 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
AnnaBridge 163:e59c8e839560 1978 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG (0)
AnnaBridge 163:e59c8e839560 1979 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ (0)
AnnaBridge 163:e59c8e839560 1980 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
AnnaBridge 163:e59c8e839560 1981 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG (0)
AnnaBridge 163:e59c8e839560 1982 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ (0)
AnnaBridge 163:e59c8e839560 1983 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
AnnaBridge 163:e59c8e839560 1984 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG (0)
AnnaBridge 163:e59c8e839560 1985 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ (0)
AnnaBridge 163:e59c8e839560 1986 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
AnnaBridge 163:e59c8e839560 1987 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG (0)
AnnaBridge 163:e59c8e839560 1988 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ (0)
AnnaBridge 163:e59c8e839560 1989 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
AnnaBridge 163:e59c8e839560 1990 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG (0)
AnnaBridge 163:e59c8e839560 1991 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ (0)
AnnaBridge 163:e59c8e839560 1992 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
AnnaBridge 163:e59c8e839560 1993 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG (0)
AnnaBridge 163:e59c8e839560 1994 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ (0)
AnnaBridge 163:e59c8e839560 1995 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
AnnaBridge 163:e59c8e839560 1996 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG (0)
AnnaBridge 163:e59c8e839560 1997 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ (0)
AnnaBridge 163:e59c8e839560 1998 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
AnnaBridge 163:e59c8e839560 1999 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG (0)
AnnaBridge 163:e59c8e839560 2000 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ (0)
AnnaBridge 163:e59c8e839560 2001 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
AnnaBridge 163:e59c8e839560 2002 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG (0)
AnnaBridge 163:e59c8e839560 2003 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ (0)
AnnaBridge 163:e59c8e839560 2004 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
AnnaBridge 163:e59c8e839560 2005 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG (0)
AnnaBridge 163:e59c8e839560 2006 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ (0)
AnnaBridge 163:e59c8e839560 2007 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
AnnaBridge 163:e59c8e839560 2008 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG (0)
AnnaBridge 163:e59c8e839560 2009 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ (0)
AnnaBridge 163:e59c8e839560 2010 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
AnnaBridge 163:e59c8e839560 2011 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG (0)
AnnaBridge 163:e59c8e839560 2012 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ (0)
AnnaBridge 163:e59c8e839560 2013 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
AnnaBridge 163:e59c8e839560 2014 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG (0)
AnnaBridge 163:e59c8e839560 2015 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ (0)
AnnaBridge 163:e59c8e839560 2016 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
AnnaBridge 163:e59c8e839560 2017 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG (0)
AnnaBridge 163:e59c8e839560 2018 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ (0)
AnnaBridge 163:e59c8e839560 2019 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
AnnaBridge 163:e59c8e839560 2020 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG (0)
AnnaBridge 163:e59c8e839560 2021 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ (0)
AnnaBridge 163:e59c8e839560 2022 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
AnnaBridge 163:e59c8e839560 2023 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG (0)
AnnaBridge 163:e59c8e839560 2024 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ (0)
AnnaBridge 163:e59c8e839560 2025 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
AnnaBridge 163:e59c8e839560 2026 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG (0)
AnnaBridge 163:e59c8e839560 2027 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ (0)
AnnaBridge 163:e59c8e839560 2028 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
AnnaBridge 163:e59c8e839560 2029 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG (0)
AnnaBridge 163:e59c8e839560 2030 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ (0)
AnnaBridge 163:e59c8e839560 2031 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
AnnaBridge 163:e59c8e839560 2032 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG (0)
AnnaBridge 163:e59c8e839560 2033 * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ (0)
AnnaBridge 163:e59c8e839560 2034 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ
AnnaBridge 163:e59c8e839560 2035 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (0)(5)
AnnaBridge 163:e59c8e839560 2036 * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (0)(5)
AnnaBridge 163:e59c8e839560 2037 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (5)
AnnaBridge 163:e59c8e839560 2038 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (0)(1)
AnnaBridge 163:e59c8e839560 2039 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (0)(1)
AnnaBridge 163:e59c8e839560 2040 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (1)
AnnaBridge 163:e59c8e839560 2041 * @arg @ref LL_ADC_AWD_CH_VBAT_REG (0)(1)
AnnaBridge 163:e59c8e839560 2042 * @arg @ref LL_ADC_AWD_CH_VBAT_INJ (0)(1)
AnnaBridge 163:e59c8e839560 2043 * @arg @ref LL_ADC_AWD_CH_VBAT_REG_INJ (1)
AnnaBridge 163:e59c8e839560 2044 * @arg @ref LL_ADC_AWD_CH_VOPAMP1_REG (0)(1)
AnnaBridge 163:e59c8e839560 2045 * @arg @ref LL_ADC_AWD_CH_VOPAMP1_INJ (0)(1)
AnnaBridge 163:e59c8e839560 2046 * @arg @ref LL_ADC_AWD_CH_VOPAMP1_REG_INJ (1)
AnnaBridge 163:e59c8e839560 2047 * @arg @ref LL_ADC_AWD_CH_VOPAMP2_REG (0)(2)
AnnaBridge 163:e59c8e839560 2048 * @arg @ref LL_ADC_AWD_CH_VOPAMP2_INJ (0)(2)
AnnaBridge 163:e59c8e839560 2049 * @arg @ref LL_ADC_AWD_CH_VOPAMP2_REG_INJ (2)
AnnaBridge 163:e59c8e839560 2050 * @arg @ref LL_ADC_AWD_CH_VOPAMP3_REG (0)(3)
AnnaBridge 163:e59c8e839560 2051 * @arg @ref LL_ADC_AWD_CH_VOPAMP3_INJ (0)(3)
AnnaBridge 163:e59c8e839560 2052 * @arg @ref LL_ADC_AWD_CH_VOPAMP3_REG_INJ (3)
AnnaBridge 163:e59c8e839560 2053 * @arg @ref LL_ADC_AWD_CH_VOPAMP4_REG (0)(4)
AnnaBridge 163:e59c8e839560 2054 * @arg @ref LL_ADC_AWD_CH_VOPAMP4_INJ (0)(4)
AnnaBridge 163:e59c8e839560 2055 * @arg @ref LL_ADC_AWD_CH_VOPAMP4_REG_INJ (4)
AnnaBridge 163:e59c8e839560 2056 *
AnnaBridge 163:e59c8e839560 2057 * (0) On STM32F3, parameter available only on analog watchdog number: AWD1.\n
AnnaBridge 163:e59c8e839560 2058 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 2059 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 2060 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 2061 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 2062 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 2063 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 2064 */
AnnaBridge 163:e59c8e839560 2065 #define __LL_ADC_ANALOGWD_CHANNEL_GROUP(__CHANNEL__, __GROUP__) \
AnnaBridge 163:e59c8e839560 2066 (((__GROUP__) == LL_ADC_GROUP_REGULAR) \
AnnaBridge 163:e59c8e839560 2067 ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) \
AnnaBridge 163:e59c8e839560 2068 : \
AnnaBridge 163:e59c8e839560 2069 ((__GROUP__) == LL_ADC_GROUP_INJECTED) \
AnnaBridge 163:e59c8e839560 2070 ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) \
AnnaBridge 163:e59c8e839560 2071 : \
AnnaBridge 163:e59c8e839560 2072 (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) \
AnnaBridge 163:e59c8e839560 2073 )
AnnaBridge 163:e59c8e839560 2074
AnnaBridge 163:e59c8e839560 2075 /**
AnnaBridge 163:e59c8e839560 2076 * @brief Helper macro to set the value of ADC analog watchdog threshold high
AnnaBridge 163:e59c8e839560 2077 * or low in function of ADC resolution, when ADC resolution is
AnnaBridge 163:e59c8e839560 2078 * different of 12 bits.
AnnaBridge 163:e59c8e839560 2079 * @note To be used with function @ref LL_ADC_ConfigAnalogWDThresholds()
AnnaBridge 163:e59c8e839560 2080 * or @ref LL_ADC_SetAnalogWDThresholds().
AnnaBridge 163:e59c8e839560 2081 * Example, with a ADC resolution of 8 bits, to set the value of
AnnaBridge 163:e59c8e839560 2082 * analog watchdog threshold high (on 8 bits):
AnnaBridge 163:e59c8e839560 2083 * LL_ADC_SetAnalogWDThresholds
AnnaBridge 163:e59c8e839560 2084 * (< ADCx param >,
AnnaBridge 163:e59c8e839560 2085 * __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(LL_ADC_RESOLUTION_8B, <threshold_value_8_bits>)
AnnaBridge 163:e59c8e839560 2086 * );
AnnaBridge 163:e59c8e839560 2087 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2088 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2089 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2090 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2091 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2092 * @param __AWD_THRESHOLD__ Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 2093 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 2094 */
AnnaBridge 163:e59c8e839560 2095 #define __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD__) \
AnnaBridge 163:e59c8e839560 2096 ((__AWD_THRESHOLD__) << ((__ADC_RESOLUTION__) >> (ADC_CFGR_RES_BITOFFSET_POS - 1U )))
AnnaBridge 163:e59c8e839560 2097
AnnaBridge 163:e59c8e839560 2098 /**
AnnaBridge 163:e59c8e839560 2099 * @brief Helper macro to get the value of ADC analog watchdog threshold high
AnnaBridge 163:e59c8e839560 2100 * or low in function of ADC resolution, when ADC resolution is
AnnaBridge 163:e59c8e839560 2101 * different of 12 bits.
AnnaBridge 163:e59c8e839560 2102 * @note To be used with function @ref LL_ADC_GetAnalogWDThresholds().
AnnaBridge 163:e59c8e839560 2103 * Example, with a ADC resolution of 8 bits, to get the value of
AnnaBridge 163:e59c8e839560 2104 * analog watchdog threshold high (on 8 bits):
AnnaBridge 163:e59c8e839560 2105 * < threshold_value_6_bits > = __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION
AnnaBridge 163:e59c8e839560 2106 * (LL_ADC_RESOLUTION_8B,
AnnaBridge 163:e59c8e839560 2107 * LL_ADC_GetAnalogWDThresholds(<ADCx param>, LL_ADC_AWD_THRESHOLD_HIGH)
AnnaBridge 163:e59c8e839560 2108 * );
AnnaBridge 163:e59c8e839560 2109 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2110 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2111 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2112 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2113 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2114 * @param __AWD_THRESHOLD_12_BITS__ Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 2115 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 2116 */
AnnaBridge 163:e59c8e839560 2117 #define __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD_12_BITS__) \
AnnaBridge 163:e59c8e839560 2118 ((__AWD_THRESHOLD_12_BITS__) >> ((__ADC_RESOLUTION__) >> (ADC_CFGR_RES_BITOFFSET_POS - 1U )))
AnnaBridge 163:e59c8e839560 2119
AnnaBridge 163:e59c8e839560 2120 /**
AnnaBridge 163:e59c8e839560 2121 * @brief Helper macro to get the ADC analog watchdog threshold high
AnnaBridge 163:e59c8e839560 2122 * or low from raw value containing both thresholds concatenated.
AnnaBridge 163:e59c8e839560 2123 * @note To be used with function @ref LL_ADC_GetAnalogWDThresholds().
AnnaBridge 163:e59c8e839560 2124 * Example, to get analog watchdog threshold high from the register raw value:
AnnaBridge 163:e59c8e839560 2125 * __LL_ADC_ANALOGWD_THRESHOLDS_HIGH_LOW(LL_ADC_AWD_THRESHOLD_HIGH, <raw_value_with_both_thresholds>);
AnnaBridge 163:e59c8e839560 2126 * @param __AWD_THRESHOLD_TYPE__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2127 * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH
AnnaBridge 163:e59c8e839560 2128 * @arg @ref LL_ADC_AWD_THRESHOLD_LOW
AnnaBridge 163:e59c8e839560 2129 * @param __AWD_THRESHOLDS__ Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 163:e59c8e839560 2130 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 2131 */
AnnaBridge 163:e59c8e839560 2132 #define __LL_ADC_ANALOGWD_THRESHOLDS_HIGH_LOW(__AWD_THRESHOLD_TYPE__, __AWD_THRESHOLDS__) \
AnnaBridge 163:e59c8e839560 2133 (((__AWD_THRESHOLDS__) >> POSITION_VAL((__AWD_THRESHOLD_TYPE__))) & LL_ADC_AWD_THRESHOLD_LOW)
AnnaBridge 163:e59c8e839560 2134
AnnaBridge 163:e59c8e839560 2135 /**
AnnaBridge 163:e59c8e839560 2136 * @brief Helper macro to set the ADC calibration value with both single ended
AnnaBridge 163:e59c8e839560 2137 * and differential modes calibration factors concatenated.
AnnaBridge 163:e59c8e839560 2138 * @note To be used with function @ref LL_ADC_SetCalibrationFactor().
AnnaBridge 163:e59c8e839560 2139 * Example, to set calibration factors single ended to 0x55
AnnaBridge 163:e59c8e839560 2140 * and differential ended to 0x2A:
AnnaBridge 163:e59c8e839560 2141 * LL_ADC_SetCalibrationFactor(
AnnaBridge 163:e59c8e839560 2142 * ADC1,
AnnaBridge 163:e59c8e839560 2143 * __LL_ADC_CALIB_FACTOR_SINGLE_DIFF(0x55, 0x2A))
AnnaBridge 163:e59c8e839560 2144 * @param __CALIB_FACTOR_SINGLE_ENDED__ Value between Min_Data=0x00 and Max_Data=0x7F
AnnaBridge 163:e59c8e839560 2145 * @param __CALIB_FACTOR_DIFFERENTIAL__ Value between Min_Data=0x00 and Max_Data=0x7F
AnnaBridge 163:e59c8e839560 2146 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 163:e59c8e839560 2147 */
AnnaBridge 163:e59c8e839560 2148 #define __LL_ADC_CALIB_FACTOR_SINGLE_DIFF(__CALIB_FACTOR_SINGLE_ENDED__, __CALIB_FACTOR_DIFFERENTIAL__) \
AnnaBridge 163:e59c8e839560 2149 (((__CALIB_FACTOR_DIFFERENTIAL__) << POSITION_VAL(ADC_CALFACT_CALFACT_D)) | (__CALIB_FACTOR_SINGLE_ENDED__))
AnnaBridge 163:e59c8e839560 2150
AnnaBridge 163:e59c8e839560 2151 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 163:e59c8e839560 2152 /**
AnnaBridge 163:e59c8e839560 2153 * @brief Helper macro to get the ADC multimode conversion data of ADC master
AnnaBridge 163:e59c8e839560 2154 * or ADC slave from raw value with both ADC conversion data concatenated.
AnnaBridge 163:e59c8e839560 2155 * @note This macro is intended to be used when multimode transfer by DMA
AnnaBridge 163:e59c8e839560 2156 * is enabled: refer to function @ref LL_ADC_SetMultiDMATransfer().
AnnaBridge 163:e59c8e839560 2157 * In this case the transferred data need to processed with this macro
AnnaBridge 163:e59c8e839560 2158 * to separate the conversion data of ADC master and ADC slave.
AnnaBridge 163:e59c8e839560 2159 * @param __ADC_MULTI_MASTER_SLAVE__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2160 * @arg @ref LL_ADC_MULTI_MASTER
AnnaBridge 163:e59c8e839560 2161 * @arg @ref LL_ADC_MULTI_SLAVE
AnnaBridge 163:e59c8e839560 2162 * @param __ADC_MULTI_CONV_DATA__ Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 2163 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 2164 */
AnnaBridge 163:e59c8e839560 2165 #define __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(__ADC_MULTI_MASTER_SLAVE__, __ADC_MULTI_CONV_DATA__) \
AnnaBridge 163:e59c8e839560 2166 (((__ADC_MULTI_CONV_DATA__) >> POSITION_VAL((__ADC_MULTI_MASTER_SLAVE__))) & ADC_CDR_RDATA_MST)
AnnaBridge 163:e59c8e839560 2167 #endif
AnnaBridge 163:e59c8e839560 2168
AnnaBridge 163:e59c8e839560 2169 /**
AnnaBridge 163:e59c8e839560 2170 * @brief Helper macro to select the ADC common instance
AnnaBridge 163:e59c8e839560 2171 * to which is belonging the selected ADC instance.
AnnaBridge 163:e59c8e839560 2172 * @note ADC common register instance can be used for:
AnnaBridge 163:e59c8e839560 2173 * - Set parameters common to several ADC instances
AnnaBridge 163:e59c8e839560 2174 * - Multimode (for devices with several ADC instances)
AnnaBridge 163:e59c8e839560 2175 * Refer to functions having argument "ADCxy_COMMON" as parameter.
AnnaBridge 163:e59c8e839560 2176 * @param __ADCx__ ADC instance
AnnaBridge 163:e59c8e839560 2177 * @retval ADC common register instance
AnnaBridge 163:e59c8e839560 2178 */
AnnaBridge 163:e59c8e839560 2179 #if defined(ADC3) && defined(ADC4)
AnnaBridge 163:e59c8e839560 2180 #define __LL_ADC_COMMON_INSTANCE(__ADCx__) \
AnnaBridge 163:e59c8e839560 2181 ((((__ADCx__) == ADC1) || ((__ADCx__) == ADC2)) \
AnnaBridge 163:e59c8e839560 2182 ? ( \
AnnaBridge 163:e59c8e839560 2183 (ADC12_COMMON) \
AnnaBridge 163:e59c8e839560 2184 ) \
AnnaBridge 163:e59c8e839560 2185 : \
AnnaBridge 163:e59c8e839560 2186 ( \
AnnaBridge 163:e59c8e839560 2187 (ADC34_COMMON) \
AnnaBridge 163:e59c8e839560 2188 ) \
AnnaBridge 163:e59c8e839560 2189 )
AnnaBridge 163:e59c8e839560 2190 #elif defined(ADC1) && defined(ADC2)
AnnaBridge 163:e59c8e839560 2191 #define __LL_ADC_COMMON_INSTANCE(__ADCx__) \
AnnaBridge 163:e59c8e839560 2192 (ADC12_COMMON)
AnnaBridge 163:e59c8e839560 2193 #else
AnnaBridge 163:e59c8e839560 2194 #define __LL_ADC_COMMON_INSTANCE(__ADCx__) \
AnnaBridge 163:e59c8e839560 2195 (ADC1_COMMON)
AnnaBridge 163:e59c8e839560 2196 #endif
AnnaBridge 163:e59c8e839560 2197
AnnaBridge 163:e59c8e839560 2198 /**
AnnaBridge 163:e59c8e839560 2199 * @brief Helper macro to check if all ADC instances sharing the same
AnnaBridge 163:e59c8e839560 2200 * ADC common instance are disabled.
AnnaBridge 163:e59c8e839560 2201 * @note This check is required by functions with setting conditioned to
AnnaBridge 163:e59c8e839560 2202 * ADC state:
AnnaBridge 163:e59c8e839560 2203 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 163:e59c8e839560 2204 * Refer to functions having argument "ADCxy_COMMON" as parameter.
AnnaBridge 163:e59c8e839560 2205 * @note On devices with only 1 ADC common instance, parameter of this macro
AnnaBridge 163:e59c8e839560 2206 * is useless and can be ignored (parameter kept for compatibility
AnnaBridge 163:e59c8e839560 2207 * with devices featuring several ADC common instances).
AnnaBridge 163:e59c8e839560 2208 * @param __ADCXY_COMMON__ ADC common instance
AnnaBridge 163:e59c8e839560 2209 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 2210 * @retval Value "0" if all ADC instances sharing the same ADC common instance
AnnaBridge 163:e59c8e839560 2211 * are disabled.
AnnaBridge 163:e59c8e839560 2212 * Value "1" if at least one ADC instance sharing the same ADC common instance
AnnaBridge 163:e59c8e839560 2213 * is enabled.
AnnaBridge 163:e59c8e839560 2214 */
AnnaBridge 163:e59c8e839560 2215 #if defined(ADC3) && defined(ADC4)
AnnaBridge 163:e59c8e839560 2216 #define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
AnnaBridge 163:e59c8e839560 2217 (((__ADCXY_COMMON__) == ADC12_COMMON) \
AnnaBridge 163:e59c8e839560 2218 ? ( \
AnnaBridge 163:e59c8e839560 2219 (LL_ADC_IsEnabled(ADC1) | \
AnnaBridge 163:e59c8e839560 2220 LL_ADC_IsEnabled(ADC2) ) \
AnnaBridge 163:e59c8e839560 2221 ) \
AnnaBridge 163:e59c8e839560 2222 : \
AnnaBridge 163:e59c8e839560 2223 ( \
AnnaBridge 163:e59c8e839560 2224 (LL_ADC_IsEnabled(ADC3) | \
AnnaBridge 163:e59c8e839560 2225 LL_ADC_IsEnabled(ADC4) ) \
AnnaBridge 163:e59c8e839560 2226 ) \
AnnaBridge 163:e59c8e839560 2227 )
AnnaBridge 163:e59c8e839560 2228 #elif defined(ADC1) && defined(ADC2)
AnnaBridge 163:e59c8e839560 2229 #define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
AnnaBridge 163:e59c8e839560 2230 (LL_ADC_IsEnabled(ADC1) | \
AnnaBridge 163:e59c8e839560 2231 LL_ADC_IsEnabled(ADC2) )
AnnaBridge 163:e59c8e839560 2232 #else
AnnaBridge 163:e59c8e839560 2233 #define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
AnnaBridge 163:e59c8e839560 2234 LL_ADC_IsEnabled(ADC1)
AnnaBridge 163:e59c8e839560 2235 #endif
AnnaBridge 163:e59c8e839560 2236
AnnaBridge 163:e59c8e839560 2237 /**
AnnaBridge 163:e59c8e839560 2238 * @brief Helper macro to define the ADC conversion data full-scale digital
AnnaBridge 163:e59c8e839560 2239 * value corresponding to the selected ADC resolution.
AnnaBridge 163:e59c8e839560 2240 * @note ADC conversion data full-scale corresponds to voltage range
AnnaBridge 163:e59c8e839560 2241 * determined by analog voltage references Vref+ and Vref-
AnnaBridge 163:e59c8e839560 2242 * (refer to reference manual).
AnnaBridge 163:e59c8e839560 2243 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2244 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2245 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2246 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2247 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2248 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
AnnaBridge 163:e59c8e839560 2249 */
AnnaBridge 163:e59c8e839560 2250 #define __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 2251 (((uint32_t)0xFFFU) >> ((__ADC_RESOLUTION__) >> (ADC_CFGR_RES_BITOFFSET_POS - 1U)))
AnnaBridge 163:e59c8e839560 2252
AnnaBridge 163:e59c8e839560 2253 /**
AnnaBridge 163:e59c8e839560 2254 * @brief Helper macro to convert the ADC conversion data from
AnnaBridge 163:e59c8e839560 2255 * a resolution to another resolution.
AnnaBridge 163:e59c8e839560 2256 * @param __DATA__ ADC conversion data to be converted
AnnaBridge 163:e59c8e839560 2257 * @param __ADC_RESOLUTION_CURRENT__ Resolution of to the data to be converted
AnnaBridge 163:e59c8e839560 2258 * This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2259 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2260 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2261 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2262 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2263 * @param __ADC_RESOLUTION_TARGET__ Resolution of the data after conversion
AnnaBridge 163:e59c8e839560 2264 * This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2265 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2266 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2267 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2268 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2269 * @retval ADC conversion data to the requested resolution
AnnaBridge 163:e59c8e839560 2270 */
AnnaBridge 163:e59c8e839560 2271 #define __LL_ADC_CONVERT_DATA_RESOLUTION(__DATA__,\
AnnaBridge 163:e59c8e839560 2272 __ADC_RESOLUTION_CURRENT__,\
AnnaBridge 163:e59c8e839560 2273 __ADC_RESOLUTION_TARGET__) \
AnnaBridge 163:e59c8e839560 2274 (((__DATA__) \
AnnaBridge 163:e59c8e839560 2275 << ((__ADC_RESOLUTION_CURRENT__) >> (ADC_CFGR_RES_BITOFFSET_POS - 1U))) \
AnnaBridge 163:e59c8e839560 2276 >> ((__ADC_RESOLUTION_TARGET__) >> (ADC_CFGR_RES_BITOFFSET_POS - 1U)) \
AnnaBridge 163:e59c8e839560 2277 )
AnnaBridge 163:e59c8e839560 2278
AnnaBridge 163:e59c8e839560 2279 /**
AnnaBridge 163:e59c8e839560 2280 * @brief Helper macro to calculate the voltage (unit: mVolt)
AnnaBridge 163:e59c8e839560 2281 * corresponding to a ADC conversion data (unit: digital value).
AnnaBridge 163:e59c8e839560 2282 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 163:e59c8e839560 2283 * user board environment or can be calculated using ADC measurement
AnnaBridge 163:e59c8e839560 2284 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 163:e59c8e839560 2285 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
AnnaBridge 163:e59c8e839560 2286 * @param __ADC_DATA__ ADC conversion data (resolution 12 bits)
AnnaBridge 163:e59c8e839560 2287 * (unit: digital value).
AnnaBridge 163:e59c8e839560 2288 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2289 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2290 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2291 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2292 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2293 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
AnnaBridge 163:e59c8e839560 2294 */
AnnaBridge 163:e59c8e839560 2295 #define __LL_ADC_CALC_DATA_TO_VOLTAGE(__VREFANALOG_VOLTAGE__,\
AnnaBridge 163:e59c8e839560 2296 __ADC_DATA__,\
AnnaBridge 163:e59c8e839560 2297 __ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 2298 ((__ADC_DATA__) * (__VREFANALOG_VOLTAGE__) \
AnnaBridge 163:e59c8e839560 2299 / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 2300 )
AnnaBridge 163:e59c8e839560 2301
AnnaBridge 163:e59c8e839560 2302 /**
AnnaBridge 163:e59c8e839560 2303 * @brief Helper macro to calculate analog reference voltage (Vref+)
AnnaBridge 163:e59c8e839560 2304 * (unit: mVolt) from ADC conversion data of internal voltage
AnnaBridge 163:e59c8e839560 2305 * reference VrefInt.
AnnaBridge 163:e59c8e839560 2306 * @note Computation is using VrefInt calibration value
AnnaBridge 163:e59c8e839560 2307 * stored in system memory for each device during production.
AnnaBridge 163:e59c8e839560 2308 * @note This voltage depends on user board environment: voltage level
AnnaBridge 163:e59c8e839560 2309 * connected to pin Vref+.
AnnaBridge 163:e59c8e839560 2310 * On devices with small package, the pin Vref+ is not present
AnnaBridge 163:e59c8e839560 2311 * and internally bonded to pin Vdda.
AnnaBridge 163:e59c8e839560 2312 * @note On this STM32 serie, calibration data of internal voltage reference
AnnaBridge 163:e59c8e839560 2313 * VrefInt corresponds to a resolution of 12 bits,
AnnaBridge 163:e59c8e839560 2314 * this is the recommended ADC resolution to convert voltage of
AnnaBridge 163:e59c8e839560 2315 * internal voltage reference VrefInt.
AnnaBridge 163:e59c8e839560 2316 * Otherwise, this macro performs the processing to scale
AnnaBridge 163:e59c8e839560 2317 * ADC conversion data to 12 bits.
AnnaBridge 168:b9e159c1930a 2318 * @param __VREFINT_ADC_DATA__ ADC conversion data (resolution 12 bits)
AnnaBridge 163:e59c8e839560 2319 * of internal voltage reference VrefInt (unit: digital value).
AnnaBridge 163:e59c8e839560 2320 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2321 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2322 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2323 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2324 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2325 * @retval Analog reference voltage (unit: mV)
AnnaBridge 163:e59c8e839560 2326 */
AnnaBridge 163:e59c8e839560 2327 #define __LL_ADC_CALC_VREFANALOG_VOLTAGE(__VREFINT_ADC_DATA__,\
AnnaBridge 163:e59c8e839560 2328 __ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 2329 (((uint32_t)(*VREFINT_CAL_ADDR) * VREFINT_CAL_VREF) \
AnnaBridge 163:e59c8e839560 2330 / __LL_ADC_CONVERT_DATA_RESOLUTION((__VREFINT_ADC_DATA__), \
AnnaBridge 163:e59c8e839560 2331 (__ADC_RESOLUTION__), \
AnnaBridge 163:e59c8e839560 2332 LL_ADC_RESOLUTION_12B) \
AnnaBridge 163:e59c8e839560 2333 )
AnnaBridge 163:e59c8e839560 2334
AnnaBridge 163:e59c8e839560 2335 /**
AnnaBridge 163:e59c8e839560 2336 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
AnnaBridge 163:e59c8e839560 2337 * from ADC conversion data of internal temperature sensor.
AnnaBridge 163:e59c8e839560 2338 * @note Computation is using temperature sensor calibration values
AnnaBridge 163:e59c8e839560 2339 * stored in system memory for each device during production.
AnnaBridge 163:e59c8e839560 2340 * @note Calculation formula:
AnnaBridge 163:e59c8e839560 2341 * Temperature = ((TS_ADC_DATA - TS_CAL1)
AnnaBridge 163:e59c8e839560 2342 * * (TS_CAL2_TEMP - TS_CAL1_TEMP))
AnnaBridge 163:e59c8e839560 2343 * / (TS_CAL2 - TS_CAL1) + TS_CAL1_TEMP
AnnaBridge 163:e59c8e839560 2344 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
AnnaBridge 163:e59c8e839560 2345 * Avg_Slope = (TS_CAL2 - TS_CAL1)
AnnaBridge 163:e59c8e839560 2346 * / (TS_CAL2_TEMP - TS_CAL1_TEMP)
AnnaBridge 163:e59c8e839560 2347 * TS_CAL1 = equivalent TS_ADC_DATA at temperature
AnnaBridge 163:e59c8e839560 2348 * TEMP_DEGC_CAL1 (calibrated in factory)
AnnaBridge 163:e59c8e839560 2349 * TS_CAL2 = equivalent TS_ADC_DATA at temperature
AnnaBridge 163:e59c8e839560 2350 * TEMP_DEGC_CAL2 (calibrated in factory)
AnnaBridge 163:e59c8e839560 2351 * Caution: Calculation relevancy under reserve that calibration
AnnaBridge 163:e59c8e839560 2352 * parameters are correct (address and data).
AnnaBridge 163:e59c8e839560 2353 * To calculate temperature using temperature sensor
AnnaBridge 163:e59c8e839560 2354 * datasheet typical values (generic values less, therefore
AnnaBridge 163:e59c8e839560 2355 * less accurate than calibrated values),
AnnaBridge 163:e59c8e839560 2356 * use helper macro @ref __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS().
AnnaBridge 163:e59c8e839560 2357 * @note As calculation input, the analog reference voltage (Vref+) must be
AnnaBridge 163:e59c8e839560 2358 * defined as it impacts the ADC LSB equivalent voltage.
AnnaBridge 163:e59c8e839560 2359 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 163:e59c8e839560 2360 * user board environment or can be calculated using ADC measurement
AnnaBridge 163:e59c8e839560 2361 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 163:e59c8e839560 2362 * @note On this STM32 serie, calibration data of temperature sensor
AnnaBridge 163:e59c8e839560 2363 * corresponds to a resolution of 12 bits,
AnnaBridge 163:e59c8e839560 2364 * this is the recommended ADC resolution to convert voltage of
AnnaBridge 163:e59c8e839560 2365 * temperature sensor.
AnnaBridge 163:e59c8e839560 2366 * Otherwise, this macro performs the processing to scale
AnnaBridge 163:e59c8e839560 2367 * ADC conversion data to 12 bits.
AnnaBridge 163:e59c8e839560 2368 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
AnnaBridge 163:e59c8e839560 2369 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal
AnnaBridge 163:e59c8e839560 2370 * temperature sensor (unit: digital value).
AnnaBridge 163:e59c8e839560 2371 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature
AnnaBridge 163:e59c8e839560 2372 * sensor voltage has been measured.
AnnaBridge 163:e59c8e839560 2373 * This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2374 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2375 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2376 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2377 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2378 * @retval Temperature (unit: degree Celsius)
AnnaBridge 163:e59c8e839560 2379 */
AnnaBridge 163:e59c8e839560 2380 #define __LL_ADC_CALC_TEMPERATURE(__VREFANALOG_VOLTAGE__,\
AnnaBridge 163:e59c8e839560 2381 __TEMPSENSOR_ADC_DATA__,\
AnnaBridge 163:e59c8e839560 2382 __ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 2383 (((( ((int32_t)((__LL_ADC_CONVERT_DATA_RESOLUTION((__TEMPSENSOR_ADC_DATA__), \
AnnaBridge 163:e59c8e839560 2384 (__ADC_RESOLUTION__), \
AnnaBridge 163:e59c8e839560 2385 LL_ADC_RESOLUTION_12B) \
AnnaBridge 163:e59c8e839560 2386 * (__VREFANALOG_VOLTAGE__)) \
AnnaBridge 163:e59c8e839560 2387 / TEMPSENSOR_CAL_VREFANALOG) \
AnnaBridge 163:e59c8e839560 2388 - (int32_t) *TEMPSENSOR_CAL1_ADDR) \
AnnaBridge 163:e59c8e839560 2389 ) * (int32_t)(TEMPSENSOR_CAL2_TEMP - TEMPSENSOR_CAL1_TEMP) \
AnnaBridge 163:e59c8e839560 2390 ) / (int32_t)((int32_t)*TEMPSENSOR_CAL2_ADDR - (int32_t)*TEMPSENSOR_CAL1_ADDR) \
AnnaBridge 163:e59c8e839560 2391 ) + TEMPSENSOR_CAL1_TEMP \
AnnaBridge 163:e59c8e839560 2392 )
AnnaBridge 163:e59c8e839560 2393
AnnaBridge 163:e59c8e839560 2394 /**
AnnaBridge 163:e59c8e839560 2395 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
AnnaBridge 163:e59c8e839560 2396 * from ADC conversion data of internal temperature sensor.
AnnaBridge 163:e59c8e839560 2397 * @note Computation is using temperature sensor typical values
AnnaBridge 163:e59c8e839560 2398 * (refer to device datasheet).
AnnaBridge 163:e59c8e839560 2399 * @note Calculation formula:
AnnaBridge 163:e59c8e839560 2400 * Temperature = (TS_TYP_CALx_VOLT(uV) - TS_ADC_DATA * Conversion_uV)
AnnaBridge 163:e59c8e839560 2401 * / Avg_Slope + CALx_TEMP
AnnaBridge 163:e59c8e839560 2402 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
AnnaBridge 163:e59c8e839560 2403 * (unit: digital value)
AnnaBridge 163:e59c8e839560 2404 * Avg_Slope = temperature sensor slope
AnnaBridge 163:e59c8e839560 2405 * (unit: uV/Degree Celsius)
AnnaBridge 163:e59c8e839560 2406 * TS_TYP_CALx_VOLT = temperature sensor digital value at
AnnaBridge 163:e59c8e839560 2407 * temperature CALx_TEMP (unit: mV)
AnnaBridge 163:e59c8e839560 2408 * Caution: Calculation relevancy under reserve the temperature sensor
AnnaBridge 163:e59c8e839560 2409 * of the current device has characteristics in line with
AnnaBridge 163:e59c8e839560 2410 * datasheet typical values.
AnnaBridge 163:e59c8e839560 2411 * If temperature sensor calibration values are available on
AnnaBridge 163:e59c8e839560 2412 * on this device (presence of macro __LL_ADC_CALC_TEMPERATURE()),
AnnaBridge 163:e59c8e839560 2413 * temperature calculation will be more accurate using
AnnaBridge 163:e59c8e839560 2414 * helper macro @ref __LL_ADC_CALC_TEMPERATURE().
AnnaBridge 163:e59c8e839560 2415 * @note As calculation input, the analog reference voltage (Vref+) must be
AnnaBridge 163:e59c8e839560 2416 * defined as it impacts the ADC LSB equivalent voltage.
AnnaBridge 163:e59c8e839560 2417 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 163:e59c8e839560 2418 * user board environment or can be calculated using ADC measurement
AnnaBridge 163:e59c8e839560 2419 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 163:e59c8e839560 2420 * @note ADC measurement data must correspond to a resolution of 12bits
AnnaBridge 163:e59c8e839560 2421 * (full scale digital value 4095). If not the case, the data must be
AnnaBridge 163:e59c8e839560 2422 * preliminarily rescaled to an equivalent resolution of 12 bits.
AnnaBridge 163:e59c8e839560 2423 * @param __TEMPSENSOR_TYP_AVGSLOPE__ Device datasheet data: Temperature sensor slope typical value (unit: uV/DegCelsius).
AnnaBridge 163:e59c8e839560 2424 * On STM32F3, refer to device datasheet parameter "Avg_Slope".
AnnaBridge 163:e59c8e839560 2425 * @param __TEMPSENSOR_TYP_CALX_V__ Device datasheet data: Temperature sensor voltage typical value (at temperature and Vref+ defined in parameters below) (unit: mV).
AnnaBridge 163:e59c8e839560 2426 * On STM32F3, refer to device datasheet parameter "V25" (corresponding to TS_CAL1).
AnnaBridge 163:e59c8e839560 2427 * @param __TEMPSENSOR_CALX_TEMP__ Device datasheet data: Temperature at which temperature sensor voltage (see parameter above) is corresponding (unit: mV)
AnnaBridge 163:e59c8e839560 2428 * @param __VREFANALOG_VOLTAGE__ Analog voltage reference (Vref+) voltage (unit: mV)
AnnaBridge 163:e59c8e839560 2429 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal temperature sensor (unit: digital value).
AnnaBridge 163:e59c8e839560 2430 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature sensor voltage has been measured.
AnnaBridge 163:e59c8e839560 2431 * This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2432 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2433 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2434 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2435 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2436 * @retval Temperature (unit: degree Celsius)
AnnaBridge 163:e59c8e839560 2437 */
AnnaBridge 163:e59c8e839560 2438 #define __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS(__TEMPSENSOR_TYP_AVGSLOPE__,\
AnnaBridge 163:e59c8e839560 2439 __TEMPSENSOR_TYP_CALX_V__,\
AnnaBridge 163:e59c8e839560 2440 __TEMPSENSOR_CALX_TEMP__,\
AnnaBridge 163:e59c8e839560 2441 __VREFANALOG_VOLTAGE__,\
AnnaBridge 163:e59c8e839560 2442 __TEMPSENSOR_ADC_DATA__,\
AnnaBridge 163:e59c8e839560 2443 __ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 2444 ((( ( \
AnnaBridge 163:e59c8e839560 2445 (int32_t)(((__TEMPSENSOR_TYP_CALX_V__)) \
AnnaBridge 163:e59c8e839560 2446 * 1000) \
AnnaBridge 163:e59c8e839560 2447 - \
AnnaBridge 163:e59c8e839560 2448 (int32_t)((((__TEMPSENSOR_ADC_DATA__) * (__VREFANALOG_VOLTAGE__)) \
AnnaBridge 163:e59c8e839560 2449 / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__)) \
AnnaBridge 163:e59c8e839560 2450 * 1000) \
AnnaBridge 163:e59c8e839560 2451 ) \
AnnaBridge 163:e59c8e839560 2452 ) / (__TEMPSENSOR_TYP_AVGSLOPE__) \
AnnaBridge 163:e59c8e839560 2453 ) + (__TEMPSENSOR_CALX_TEMP__) \
AnnaBridge 163:e59c8e839560 2454 )
AnnaBridge 163:e59c8e839560 2455
AnnaBridge 163:e59c8e839560 2456 /**
AnnaBridge 163:e59c8e839560 2457 * @}
AnnaBridge 163:e59c8e839560 2458 */
AnnaBridge 163:e59c8e839560 2459
AnnaBridge 163:e59c8e839560 2460 /**
AnnaBridge 163:e59c8e839560 2461 * @}
AnnaBridge 163:e59c8e839560 2462 */
AnnaBridge 163:e59c8e839560 2463
AnnaBridge 163:e59c8e839560 2464
AnnaBridge 163:e59c8e839560 2465 /* Exported functions --------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 2466 /** @defgroup ADC_LL_Exported_Functions ADC Exported Functions
AnnaBridge 163:e59c8e839560 2467 * @{
AnnaBridge 163:e59c8e839560 2468 */
AnnaBridge 163:e59c8e839560 2469
AnnaBridge 163:e59c8e839560 2470 /** @defgroup ADC_LL_EF_DMA_Management ADC DMA management
AnnaBridge 163:e59c8e839560 2471 * @{
AnnaBridge 163:e59c8e839560 2472 */
AnnaBridge 163:e59c8e839560 2473 /* Note: LL ADC functions to set DMA transfer are located into sections of */
AnnaBridge 163:e59c8e839560 2474 /* configuration of ADC instance, groups and multimode (if available): */
AnnaBridge 163:e59c8e839560 2475 /* @ref LL_ADC_REG_SetDMATransfer(), ... */
AnnaBridge 163:e59c8e839560 2476
AnnaBridge 163:e59c8e839560 2477 /**
AnnaBridge 163:e59c8e839560 2478 * @brief Function to help to configure DMA transfer from ADC: retrieve the
AnnaBridge 163:e59c8e839560 2479 * ADC register address from ADC instance and a list of ADC registers
AnnaBridge 163:e59c8e839560 2480 * intended to be used (most commonly) with DMA transfer.
AnnaBridge 163:e59c8e839560 2481 * @note These ADC registers are data registers:
AnnaBridge 163:e59c8e839560 2482 * when ADC conversion data is available in ADC data registers,
AnnaBridge 163:e59c8e839560 2483 * ADC generates a DMA transfer request.
AnnaBridge 163:e59c8e839560 2484 * @note This macro is intended to be used with LL DMA driver, refer to
AnnaBridge 163:e59c8e839560 2485 * function "LL_DMA_ConfigAddresses()".
AnnaBridge 163:e59c8e839560 2486 * Example:
AnnaBridge 163:e59c8e839560 2487 * LL_DMA_ConfigAddresses(DMA1,
AnnaBridge 163:e59c8e839560 2488 * LL_DMA_CHANNEL_1,
AnnaBridge 163:e59c8e839560 2489 * LL_ADC_DMA_GetRegAddr(ADC1, LL_ADC_DMA_REG_REGULAR_DATA),
AnnaBridge 163:e59c8e839560 2490 * (uint32_t)&< array or variable >,
AnnaBridge 163:e59c8e839560 2491 * LL_DMA_DIRECTION_PERIPH_TO_MEMORY);
AnnaBridge 163:e59c8e839560 2492 * @note For devices with several ADC: in multimode, some devices
AnnaBridge 163:e59c8e839560 2493 * use a different data register outside of ADC instance scope
AnnaBridge 163:e59c8e839560 2494 * (common data register). This macro manages this register difference,
AnnaBridge 163:e59c8e839560 2495 * only ADC instance has to be set as parameter.
AnnaBridge 163:e59c8e839560 2496 * @rmtoll DR RDATA LL_ADC_DMA_GetRegAddr\n
AnnaBridge 163:e59c8e839560 2497 * CDR RDATA_MST LL_ADC_DMA_GetRegAddr\n
AnnaBridge 163:e59c8e839560 2498 * CDR RDATA_SLV LL_ADC_DMA_GetRegAddr
AnnaBridge 163:e59c8e839560 2499 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2500 * @param Register This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2501 * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA
AnnaBridge 163:e59c8e839560 2502 * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA_MULTI (1)
AnnaBridge 163:e59c8e839560 2503 *
AnnaBridge 163:e59c8e839560 2504 * (1) Available on devices with several ADC instances.
AnnaBridge 163:e59c8e839560 2505 * @retval ADC register address
AnnaBridge 163:e59c8e839560 2506 */
AnnaBridge 163:e59c8e839560 2507 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 163:e59c8e839560 2508 __STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register)
AnnaBridge 163:e59c8e839560 2509 {
AnnaBridge 163:e59c8e839560 2510 register uint32_t data_reg_addr = 0U;
AnnaBridge 163:e59c8e839560 2511
AnnaBridge 163:e59c8e839560 2512 if (Register == LL_ADC_DMA_REG_REGULAR_DATA)
AnnaBridge 163:e59c8e839560 2513 {
AnnaBridge 163:e59c8e839560 2514 /* Retrieve address of register DR */
AnnaBridge 163:e59c8e839560 2515 data_reg_addr = (uint32_t)&(ADCx->DR);
AnnaBridge 163:e59c8e839560 2516 }
AnnaBridge 163:e59c8e839560 2517 else /* (Register == LL_ADC_DMA_REG_REGULAR_DATA_MULTI) */
AnnaBridge 163:e59c8e839560 2518 {
AnnaBridge 163:e59c8e839560 2519 /* Retrieve address of register CDR */
AnnaBridge 163:e59c8e839560 2520 data_reg_addr = (uint32_t)&((__LL_ADC_COMMON_INSTANCE(ADCx))->CDR);
AnnaBridge 163:e59c8e839560 2521 }
AnnaBridge 163:e59c8e839560 2522
AnnaBridge 163:e59c8e839560 2523 return data_reg_addr;
AnnaBridge 163:e59c8e839560 2524 }
AnnaBridge 163:e59c8e839560 2525 #else
AnnaBridge 163:e59c8e839560 2526 __STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register)
AnnaBridge 163:e59c8e839560 2527 {
AnnaBridge 163:e59c8e839560 2528 /* Retrieve address of register DR */
AnnaBridge 163:e59c8e839560 2529 return (uint32_t)&(ADCx->DR);
AnnaBridge 163:e59c8e839560 2530 }
AnnaBridge 163:e59c8e839560 2531 #endif
AnnaBridge 163:e59c8e839560 2532
AnnaBridge 163:e59c8e839560 2533 /**
AnnaBridge 163:e59c8e839560 2534 * @}
AnnaBridge 163:e59c8e839560 2535 */
AnnaBridge 163:e59c8e839560 2536
AnnaBridge 163:e59c8e839560 2537 /** @defgroup ADC_LL_EF_Configuration_ADC_Common Configuration of ADC hierarchical scope: common to several ADC instances
AnnaBridge 163:e59c8e839560 2538 * @{
AnnaBridge 163:e59c8e839560 2539 */
AnnaBridge 163:e59c8e839560 2540
AnnaBridge 163:e59c8e839560 2541 /**
AnnaBridge 163:e59c8e839560 2542 * @brief Set parameter common to several ADC: Clock source and prescaler.
AnnaBridge 163:e59c8e839560 2543 * @note On this STM32 serie, if ADC group injected is used, some
AnnaBridge 163:e59c8e839560 2544 * clock ratio constraints between ADC clock and AHB clock
AnnaBridge 163:e59c8e839560 2545 * must be respected.
AnnaBridge 163:e59c8e839560 2546 * Refer to reference manual.
AnnaBridge 163:e59c8e839560 2547 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 2548 * ADC state:
AnnaBridge 163:e59c8e839560 2549 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 163:e59c8e839560 2550 * This check can be done with function @ref LL_ADC_IsEnabled() for each
AnnaBridge 163:e59c8e839560 2551 * ADC instance or by using helper macro helper macro
AnnaBridge 163:e59c8e839560 2552 * @ref __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE().
AnnaBridge 163:e59c8e839560 2553 * @rmtoll CCR CKMODE LL_ADC_SetCommonClock\n
AnnaBridge 163:e59c8e839560 2554 * CCR PRESC LL_ADC_SetCommonClock
AnnaBridge 163:e59c8e839560 2555 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 2556 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 2557 * @param CommonClock This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2558 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV1
AnnaBridge 163:e59c8e839560 2559 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV2
AnnaBridge 163:e59c8e839560 2560 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV4
AnnaBridge 163:e59c8e839560 2561 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV1
AnnaBridge 163:e59c8e839560 2562 * @retval None
AnnaBridge 163:e59c8e839560 2563 */
AnnaBridge 163:e59c8e839560 2564 __STATIC_INLINE void LL_ADC_SetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t CommonClock)
AnnaBridge 163:e59c8e839560 2565 {
AnnaBridge 163:e59c8e839560 2566 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_CKMODE, CommonClock);
AnnaBridge 163:e59c8e839560 2567 }
AnnaBridge 163:e59c8e839560 2568
AnnaBridge 163:e59c8e839560 2569 /**
AnnaBridge 163:e59c8e839560 2570 * @brief Get parameter common to several ADC: Clock source and prescaler.
AnnaBridge 163:e59c8e839560 2571 * @rmtoll CCR CKMODE LL_ADC_GetCommonClock\n
AnnaBridge 163:e59c8e839560 2572 * CCR PRESC LL_ADC_GetCommonClock
AnnaBridge 163:e59c8e839560 2573 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 2574 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 2575 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 2576 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV1
AnnaBridge 163:e59c8e839560 2577 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV2
AnnaBridge 163:e59c8e839560 2578 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV4
AnnaBridge 163:e59c8e839560 2579 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV1
AnnaBridge 163:e59c8e839560 2580 */
AnnaBridge 163:e59c8e839560 2581 __STATIC_INLINE uint32_t LL_ADC_GetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 2582 {
AnnaBridge 163:e59c8e839560 2583 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_CKMODE));
AnnaBridge 163:e59c8e839560 2584 }
AnnaBridge 163:e59c8e839560 2585
AnnaBridge 163:e59c8e839560 2586 /**
AnnaBridge 163:e59c8e839560 2587 * @brief Set parameter common to several ADC: measurement path to internal
AnnaBridge 163:e59c8e839560 2588 * channels (VrefInt, temperature sensor, ...).
AnnaBridge 163:e59c8e839560 2589 * @note One or several values can be selected.
AnnaBridge 163:e59c8e839560 2590 * Example: (LL_ADC_PATH_INTERNAL_VREFINT |
AnnaBridge 163:e59c8e839560 2591 * LL_ADC_PATH_INTERNAL_TEMPSENSOR)
AnnaBridge 163:e59c8e839560 2592 * @note Stabilization time of measurement path to internal channel:
AnnaBridge 163:e59c8e839560 2593 * After enabling internal paths, before starting ADC conversion,
AnnaBridge 163:e59c8e839560 2594 * a delay is required for internal voltage reference and
AnnaBridge 163:e59c8e839560 2595 * temperature sensor stabilization time.
AnnaBridge 163:e59c8e839560 2596 * Refer to device datasheet.
AnnaBridge 163:e59c8e839560 2597 * Refer to literal @ref LL_ADC_DELAY_VREFINT_STAB_US.
AnnaBridge 163:e59c8e839560 2598 * Refer to literal @ref LL_ADC_DELAY_TEMPSENSOR_STAB_US.
AnnaBridge 163:e59c8e839560 2599 * @note ADC internal channel sampling time constraint:
AnnaBridge 163:e59c8e839560 2600 * For ADC conversion of internal channels,
AnnaBridge 163:e59c8e839560 2601 * a sampling time minimum value is required.
AnnaBridge 163:e59c8e839560 2602 * Refer to device datasheet.
AnnaBridge 163:e59c8e839560 2603 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 2604 * ADC state:
AnnaBridge 163:e59c8e839560 2605 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 163:e59c8e839560 2606 * This check can be done with function @ref LL_ADC_IsEnabled() for each
AnnaBridge 163:e59c8e839560 2607 * ADC instance or by using helper macro helper macro
AnnaBridge 163:e59c8e839560 2608 * @ref __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE().
AnnaBridge 163:e59c8e839560 2609 * @rmtoll CCR VREFEN LL_ADC_SetCommonPathInternalCh\n
AnnaBridge 163:e59c8e839560 2610 * CCR TSEN LL_ADC_SetCommonPathInternalCh\n
AnnaBridge 163:e59c8e839560 2611 * CCR VBATEN LL_ADC_SetCommonPathInternalCh
AnnaBridge 163:e59c8e839560 2612 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 2613 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 2614 * @param PathInternal This parameter can be a combination of the following values:
AnnaBridge 163:e59c8e839560 2615 * @arg @ref LL_ADC_PATH_INTERNAL_NONE
AnnaBridge 163:e59c8e839560 2616 * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT
AnnaBridge 163:e59c8e839560 2617 * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR
AnnaBridge 163:e59c8e839560 2618 * @arg @ref LL_ADC_PATH_INTERNAL_VBAT
AnnaBridge 163:e59c8e839560 2619 * @retval None
AnnaBridge 163:e59c8e839560 2620 */
AnnaBridge 163:e59c8e839560 2621 __STATIC_INLINE void LL_ADC_SetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t PathInternal)
AnnaBridge 163:e59c8e839560 2622 {
AnnaBridge 163:e59c8e839560 2623 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN, PathInternal);
AnnaBridge 163:e59c8e839560 2624 }
AnnaBridge 163:e59c8e839560 2625
AnnaBridge 163:e59c8e839560 2626 /**
AnnaBridge 163:e59c8e839560 2627 * @brief Get parameter common to several ADC: measurement path to internal
AnnaBridge 163:e59c8e839560 2628 * channels (VrefInt, temperature sensor, ...).
AnnaBridge 163:e59c8e839560 2629 * @note One or several values can be selected.
AnnaBridge 163:e59c8e839560 2630 * Example: (LL_ADC_PATH_INTERNAL_VREFINT |
AnnaBridge 163:e59c8e839560 2631 * LL_ADC_PATH_INTERNAL_TEMPSENSOR)
AnnaBridge 163:e59c8e839560 2632 * @rmtoll CCR VREFEN LL_ADC_GetCommonPathInternalCh\n
AnnaBridge 163:e59c8e839560 2633 * CCR TSEN LL_ADC_GetCommonPathInternalCh\n
AnnaBridge 163:e59c8e839560 2634 * CCR VBATEN LL_ADC_GetCommonPathInternalCh
AnnaBridge 163:e59c8e839560 2635 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 2636 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 2637 * @retval Returned value can be a combination of the following values:
AnnaBridge 163:e59c8e839560 2638 * @arg @ref LL_ADC_PATH_INTERNAL_NONE
AnnaBridge 163:e59c8e839560 2639 * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT
AnnaBridge 163:e59c8e839560 2640 * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR
AnnaBridge 163:e59c8e839560 2641 * @arg @ref LL_ADC_PATH_INTERNAL_VBAT
AnnaBridge 163:e59c8e839560 2642 */
AnnaBridge 163:e59c8e839560 2643 __STATIC_INLINE uint32_t LL_ADC_GetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 2644 {
AnnaBridge 163:e59c8e839560 2645 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN));
AnnaBridge 163:e59c8e839560 2646 }
AnnaBridge 163:e59c8e839560 2647
AnnaBridge 163:e59c8e839560 2648 /**
AnnaBridge 163:e59c8e839560 2649 * @}
AnnaBridge 163:e59c8e839560 2650 */
AnnaBridge 163:e59c8e839560 2651
AnnaBridge 163:e59c8e839560 2652 /** @defgroup ADC_LL_EF_Configuration_ADC_Instance Configuration of ADC hierarchical scope: ADC instance
AnnaBridge 163:e59c8e839560 2653 * @{
AnnaBridge 163:e59c8e839560 2654 */
AnnaBridge 163:e59c8e839560 2655
AnnaBridge 163:e59c8e839560 2656 /**
AnnaBridge 163:e59c8e839560 2657 * @brief Set ADC calibration factor in the mode single-ended
AnnaBridge 163:e59c8e839560 2658 * or differential (for devices with differential mode available).
AnnaBridge 163:e59c8e839560 2659 * @note This function is intended to set calibration parameters
AnnaBridge 163:e59c8e839560 2660 * without having to perform a new calibration using
AnnaBridge 163:e59c8e839560 2661 * @ref LL_ADC_StartCalibration().
AnnaBridge 163:e59c8e839560 2662 * @note For devices with differential mode available:
AnnaBridge 163:e59c8e839560 2663 * Calibration of offset is specific to each of
AnnaBridge 163:e59c8e839560 2664 * single-ended and differential modes
AnnaBridge 163:e59c8e839560 2665 * (calibration factor must be specified for each of these
AnnaBridge 163:e59c8e839560 2666 * differential modes, if used afterwards and if the application
AnnaBridge 163:e59c8e839560 2667 * requires their calibration).
AnnaBridge 163:e59c8e839560 2668 * @note In case of setting calibration factors of both modes single ended
AnnaBridge 163:e59c8e839560 2669 * and differential (parameter LL_ADC_BOTH_SINGLE_DIFF_ENDED):
AnnaBridge 163:e59c8e839560 2670 * both calibration factors must be concatenated.
AnnaBridge 163:e59c8e839560 2671 * To perform this processing, use helper macro
AnnaBridge 163:e59c8e839560 2672 * @ref __LL_ADC_CALIB_FACTOR_SINGLE_DIFF().
AnnaBridge 163:e59c8e839560 2673 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 2674 * ADC state:
AnnaBridge 163:e59c8e839560 2675 * ADC must be enabled, without calibration on going, without conversion
AnnaBridge 163:e59c8e839560 2676 * on going on group regular.
AnnaBridge 163:e59c8e839560 2677 * @rmtoll CALFACT CALFACT_S LL_ADC_SetCalibrationFactor\n
AnnaBridge 163:e59c8e839560 2678 * CALFACT CALFACT_D LL_ADC_SetCalibrationFactor
AnnaBridge 163:e59c8e839560 2679 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2680 * @param SingleDiff This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2681 * @arg @ref LL_ADC_SINGLE_ENDED
AnnaBridge 163:e59c8e839560 2682 * @arg @ref LL_ADC_DIFFERENTIAL_ENDED
AnnaBridge 163:e59c8e839560 2683 * @arg @ref LL_ADC_BOTH_SINGLE_DIFF_ENDED
AnnaBridge 163:e59c8e839560 2684 * @param CalibrationFactor Value between Min_Data=0x00 and Max_Data=0x7F
AnnaBridge 163:e59c8e839560 2685 * @retval None
AnnaBridge 163:e59c8e839560 2686 */
AnnaBridge 163:e59c8e839560 2687 __STATIC_INLINE void LL_ADC_SetCalibrationFactor(ADC_TypeDef *ADCx, uint32_t SingleDiff, uint32_t CalibrationFactor)
AnnaBridge 163:e59c8e839560 2688 {
AnnaBridge 163:e59c8e839560 2689 MODIFY_REG(ADCx->CALFACT,
AnnaBridge 163:e59c8e839560 2690 SingleDiff & ADC_SINGLEDIFF_CALIB_FACTOR_MASK,
AnnaBridge 163:e59c8e839560 2691 CalibrationFactor << POSITION_VAL(SingleDiff & ADC_SINGLEDIFF_CALIB_FACTOR_MASK));
AnnaBridge 163:e59c8e839560 2692 }
AnnaBridge 163:e59c8e839560 2693
AnnaBridge 163:e59c8e839560 2694 /**
AnnaBridge 163:e59c8e839560 2695 * @brief Get ADC calibration factor in the mode single-ended
AnnaBridge 163:e59c8e839560 2696 * or differential (for devices with differential mode available).
AnnaBridge 163:e59c8e839560 2697 * @note Calibration factors are set by hardware after performing
AnnaBridge 163:e59c8e839560 2698 * a calibration run using function @ref LL_ADC_StartCalibration().
AnnaBridge 163:e59c8e839560 2699 * @note For devices with differential mode available:
AnnaBridge 163:e59c8e839560 2700 * Calibration of offset is specific to each of
AnnaBridge 163:e59c8e839560 2701 * single-ended and differential modes
AnnaBridge 163:e59c8e839560 2702 * @rmtoll CALFACT CALFACT_S LL_ADC_GetCalibrationFactor\n
AnnaBridge 163:e59c8e839560 2703 * CALFACT CALFACT_D LL_ADC_GetCalibrationFactor
AnnaBridge 163:e59c8e839560 2704 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2705 * @param SingleDiff This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2706 * @arg @ref LL_ADC_SINGLE_ENDED
AnnaBridge 163:e59c8e839560 2707 * @arg @ref LL_ADC_DIFFERENTIAL_ENDED
AnnaBridge 163:e59c8e839560 2708 * @retval Value between Min_Data=0x00 and Max_Data=0x7F
AnnaBridge 163:e59c8e839560 2709 */
AnnaBridge 163:e59c8e839560 2710 __STATIC_INLINE uint32_t LL_ADC_GetCalibrationFactor(ADC_TypeDef *ADCx, uint32_t SingleDiff)
AnnaBridge 163:e59c8e839560 2711 {
AnnaBridge 163:e59c8e839560 2712 /* Retrieve bits with position in register depending on parameter */
AnnaBridge 163:e59c8e839560 2713 /* "SingleDiff". */
AnnaBridge 163:e59c8e839560 2714 /* Parameter used with mask "ADC_SINGLEDIFF_CALIB_FACTOR_MASK" because */
AnnaBridge 163:e59c8e839560 2715 /* containing other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 2716 return (uint32_t)(READ_BIT(ADCx->CALFACT, (SingleDiff & ADC_SINGLEDIFF_CALIB_FACTOR_MASK)) >> POSITION_VAL(SingleDiff & ADC_SINGLEDIFF_CALIB_FACTOR_MASK));
AnnaBridge 163:e59c8e839560 2717 }
AnnaBridge 163:e59c8e839560 2718
AnnaBridge 163:e59c8e839560 2719 /**
AnnaBridge 163:e59c8e839560 2720 * @brief Set ADC resolution.
AnnaBridge 163:e59c8e839560 2721 * Refer to reference manual for alignments formats
AnnaBridge 163:e59c8e839560 2722 * dependencies to ADC resolutions.
AnnaBridge 163:e59c8e839560 2723 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 2724 * ADC state:
AnnaBridge 163:e59c8e839560 2725 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 2726 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 2727 * @rmtoll CFGR RES LL_ADC_SetResolution
AnnaBridge 163:e59c8e839560 2728 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2729 * @param Resolution This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2730 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2731 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2732 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2733 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2734 * @retval None
AnnaBridge 163:e59c8e839560 2735 */
AnnaBridge 163:e59c8e839560 2736 __STATIC_INLINE void LL_ADC_SetResolution(ADC_TypeDef *ADCx, uint32_t Resolution)
AnnaBridge 163:e59c8e839560 2737 {
AnnaBridge 163:e59c8e839560 2738 MODIFY_REG(ADCx->CFGR, ADC_CFGR_RES, Resolution);
AnnaBridge 163:e59c8e839560 2739 }
AnnaBridge 163:e59c8e839560 2740
AnnaBridge 163:e59c8e839560 2741 /**
AnnaBridge 163:e59c8e839560 2742 * @brief Get ADC resolution.
AnnaBridge 163:e59c8e839560 2743 * Refer to reference manual for alignments formats
AnnaBridge 163:e59c8e839560 2744 * dependencies to ADC resolutions.
AnnaBridge 163:e59c8e839560 2745 * @rmtoll CFGR RES LL_ADC_GetResolution
AnnaBridge 163:e59c8e839560 2746 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2747 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 2748 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 2749 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 163:e59c8e839560 2750 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 163:e59c8e839560 2751 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 163:e59c8e839560 2752 */
AnnaBridge 163:e59c8e839560 2753 __STATIC_INLINE uint32_t LL_ADC_GetResolution(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 2754 {
AnnaBridge 163:e59c8e839560 2755 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_RES));
AnnaBridge 163:e59c8e839560 2756 }
AnnaBridge 163:e59c8e839560 2757
AnnaBridge 163:e59c8e839560 2758 /**
AnnaBridge 163:e59c8e839560 2759 * @brief Set ADC conversion data alignment.
AnnaBridge 163:e59c8e839560 2760 * @note Refer to reference manual for alignments formats
AnnaBridge 163:e59c8e839560 2761 * dependencies to ADC resolutions.
AnnaBridge 163:e59c8e839560 2762 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 2763 * ADC state:
AnnaBridge 163:e59c8e839560 2764 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 2765 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 2766 * @rmtoll CFGR ALIGN LL_ADC_SetDataAlignment
AnnaBridge 163:e59c8e839560 2767 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2768 * @param DataAlignment This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2769 * @arg @ref LL_ADC_DATA_ALIGN_RIGHT
AnnaBridge 163:e59c8e839560 2770 * @arg @ref LL_ADC_DATA_ALIGN_LEFT
AnnaBridge 163:e59c8e839560 2771 * @retval None
AnnaBridge 163:e59c8e839560 2772 */
AnnaBridge 163:e59c8e839560 2773 __STATIC_INLINE void LL_ADC_SetDataAlignment(ADC_TypeDef *ADCx, uint32_t DataAlignment)
AnnaBridge 163:e59c8e839560 2774 {
AnnaBridge 163:e59c8e839560 2775 MODIFY_REG(ADCx->CFGR, ADC_CFGR_ALIGN, DataAlignment);
AnnaBridge 163:e59c8e839560 2776 }
AnnaBridge 163:e59c8e839560 2777
AnnaBridge 163:e59c8e839560 2778 /**
AnnaBridge 163:e59c8e839560 2779 * @brief Get ADC conversion data alignment.
AnnaBridge 163:e59c8e839560 2780 * @note Refer to reference manual for alignments formats
AnnaBridge 163:e59c8e839560 2781 * dependencies to ADC resolutions.
AnnaBridge 163:e59c8e839560 2782 * @rmtoll CFGR ALIGN LL_ADC_GetDataAlignment
AnnaBridge 163:e59c8e839560 2783 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2784 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 2785 * @arg @ref LL_ADC_DATA_ALIGN_RIGHT
AnnaBridge 163:e59c8e839560 2786 * @arg @ref LL_ADC_DATA_ALIGN_LEFT
AnnaBridge 163:e59c8e839560 2787 */
AnnaBridge 163:e59c8e839560 2788 __STATIC_INLINE uint32_t LL_ADC_GetDataAlignment(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 2789 {
AnnaBridge 163:e59c8e839560 2790 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_ALIGN));
AnnaBridge 163:e59c8e839560 2791 }
AnnaBridge 163:e59c8e839560 2792
AnnaBridge 163:e59c8e839560 2793 /**
AnnaBridge 163:e59c8e839560 2794 * @brief Set ADC low power mode.
AnnaBridge 163:e59c8e839560 2795 * @note Description of ADC low power modes:
AnnaBridge 163:e59c8e839560 2796 * - ADC low power mode "auto wait": Dynamic low power mode,
AnnaBridge 163:e59c8e839560 2797 * ADC conversions occurrences are limited to the minimum necessary
AnnaBridge 163:e59c8e839560 2798 * in order to reduce power consumption.
AnnaBridge 163:e59c8e839560 2799 * New ADC conversion starts only when the previous
AnnaBridge 163:e59c8e839560 2800 * unitary conversion data (for ADC group regular)
AnnaBridge 163:e59c8e839560 2801 * or previous sequence conversions data (for ADC group injected)
AnnaBridge 163:e59c8e839560 2802 * has been retrieved by user software.
AnnaBridge 163:e59c8e839560 2803 * In the meantime, ADC remains idle: does not performs any
AnnaBridge 163:e59c8e839560 2804 * other conversion.
AnnaBridge 163:e59c8e839560 2805 * This mode allows to automatically adapt the ADC conversions
AnnaBridge 163:e59c8e839560 2806 * triggers to the speed of the software that reads the data.
AnnaBridge 163:e59c8e839560 2807 * Moreover, this avoids risk of overrun for low frequency
AnnaBridge 163:e59c8e839560 2808 * applications.
AnnaBridge 163:e59c8e839560 2809 * How to use this low power mode:
AnnaBridge 163:e59c8e839560 2810 * - Do not use with interruption or DMA since these modes
AnnaBridge 163:e59c8e839560 2811 * have to clear immediately the EOC flag to free the
AnnaBridge 163:e59c8e839560 2812 * IRQ vector sequencer.
AnnaBridge 163:e59c8e839560 2813 * - Do use with polling: 1. Start conversion,
AnnaBridge 163:e59c8e839560 2814 * 2. Later on, when conversion data is needed: poll for end of
AnnaBridge 163:e59c8e839560 2815 * conversion to ensure that conversion is completed and
AnnaBridge 163:e59c8e839560 2816 * retrieve ADC conversion data. This will trig another
AnnaBridge 163:e59c8e839560 2817 * ADC conversion start.
AnnaBridge 163:e59c8e839560 2818 * - ADC low power mode "auto power-off" (feature available on
AnnaBridge 163:e59c8e839560 2819 * this device if parameter LL_ADC_LP_MODE_AUTOOFF is available):
AnnaBridge 163:e59c8e839560 2820 * the ADC automatically powers-off after a conversion and
AnnaBridge 163:e59c8e839560 2821 * automatically wakes up when a new conversion is triggered
AnnaBridge 163:e59c8e839560 2822 * (with startup time between trigger and start of sampling).
AnnaBridge 163:e59c8e839560 2823 * This feature can be combined with low power mode "auto wait".
AnnaBridge 163:e59c8e839560 2824 * @note With ADC low power mode "auto wait", the ADC conversion data read
AnnaBridge 163:e59c8e839560 2825 * is corresponding to previous ADC conversion start, independently
AnnaBridge 163:e59c8e839560 2826 * of delay during which ADC was idle.
AnnaBridge 163:e59c8e839560 2827 * Therefore, the ADC conversion data may be outdated: does not
AnnaBridge 163:e59c8e839560 2828 * correspond to the current voltage level on the selected
AnnaBridge 163:e59c8e839560 2829 * ADC channel.
AnnaBridge 163:e59c8e839560 2830 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 2831 * ADC state:
AnnaBridge 163:e59c8e839560 2832 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 2833 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 2834 * @rmtoll CFGR AUTDLY LL_ADC_SetLowPowerMode
AnnaBridge 163:e59c8e839560 2835 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2836 * @param LowPowerMode This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2837 * @arg @ref LL_ADC_LP_MODE_NONE
AnnaBridge 163:e59c8e839560 2838 * @arg @ref LL_ADC_LP_AUTOWAIT
AnnaBridge 163:e59c8e839560 2839 * @retval None
AnnaBridge 163:e59c8e839560 2840 */
AnnaBridge 163:e59c8e839560 2841 __STATIC_INLINE void LL_ADC_SetLowPowerMode(ADC_TypeDef *ADCx, uint32_t LowPowerMode)
AnnaBridge 163:e59c8e839560 2842 {
AnnaBridge 163:e59c8e839560 2843 MODIFY_REG(ADCx->CFGR, ADC_CFGR_AUTDLY, LowPowerMode);
AnnaBridge 163:e59c8e839560 2844 }
AnnaBridge 163:e59c8e839560 2845
AnnaBridge 163:e59c8e839560 2846 /**
AnnaBridge 163:e59c8e839560 2847 * @brief Get ADC low power mode:
AnnaBridge 163:e59c8e839560 2848 * @note Description of ADC low power modes:
AnnaBridge 163:e59c8e839560 2849 * - ADC low power mode "auto wait": Dynamic low power mode,
AnnaBridge 163:e59c8e839560 2850 * ADC conversions occurrences are limited to the minimum necessary
AnnaBridge 163:e59c8e839560 2851 * in order to reduce power consumption.
AnnaBridge 163:e59c8e839560 2852 * New ADC conversion starts only when the previous
AnnaBridge 163:e59c8e839560 2853 * unitary conversion data (for ADC group regular)
AnnaBridge 163:e59c8e839560 2854 * or previous sequence conversions data (for ADC group injected)
AnnaBridge 163:e59c8e839560 2855 * has been retrieved by user software.
AnnaBridge 163:e59c8e839560 2856 * In the meantime, ADC remains idle: does not performs any
AnnaBridge 163:e59c8e839560 2857 * other conversion.
AnnaBridge 163:e59c8e839560 2858 * This mode allows to automatically adapt the ADC conversions
AnnaBridge 163:e59c8e839560 2859 * triggers to the speed of the software that reads the data.
AnnaBridge 163:e59c8e839560 2860 * Moreover, this avoids risk of overrun for low frequency
AnnaBridge 163:e59c8e839560 2861 * applications.
AnnaBridge 163:e59c8e839560 2862 * How to use this low power mode:
AnnaBridge 163:e59c8e839560 2863 * - Do not use with interruption or DMA since these modes
AnnaBridge 163:e59c8e839560 2864 * have to clear immediately the EOC flag to free the
AnnaBridge 163:e59c8e839560 2865 * IRQ vector sequencer.
AnnaBridge 163:e59c8e839560 2866 * - Do use with polling: 1. Start conversion,
AnnaBridge 163:e59c8e839560 2867 * 2. Later on, when conversion data is needed: poll for end of
AnnaBridge 163:e59c8e839560 2868 * conversion to ensure that conversion is completed and
AnnaBridge 163:e59c8e839560 2869 * retrieve ADC conversion data. This will trig another
AnnaBridge 163:e59c8e839560 2870 * ADC conversion start.
AnnaBridge 163:e59c8e839560 2871 * - ADC low power mode "auto power-off" (feature available on
AnnaBridge 163:e59c8e839560 2872 * this device if parameter LL_ADC_LP_MODE_AUTOOFF is available):
AnnaBridge 163:e59c8e839560 2873 * the ADC automatically powers-off after a conversion and
AnnaBridge 163:e59c8e839560 2874 * automatically wakes up when a new conversion is triggered
AnnaBridge 163:e59c8e839560 2875 * (with startup time between trigger and start of sampling).
AnnaBridge 163:e59c8e839560 2876 * This feature can be combined with low power mode "auto wait".
AnnaBridge 163:e59c8e839560 2877 * @note With ADC low power mode "auto wait", the ADC conversion data read
AnnaBridge 163:e59c8e839560 2878 * is corresponding to previous ADC conversion start, independently
AnnaBridge 163:e59c8e839560 2879 * of delay during which ADC was idle.
AnnaBridge 163:e59c8e839560 2880 * Therefore, the ADC conversion data may be outdated: does not
AnnaBridge 163:e59c8e839560 2881 * correspond to the current voltage level on the selected
AnnaBridge 163:e59c8e839560 2882 * ADC channel.
AnnaBridge 163:e59c8e839560 2883 * @rmtoll CFGR AUTDLY LL_ADC_GetLowPowerMode
AnnaBridge 163:e59c8e839560 2884 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2885 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 2886 * @arg @ref LL_ADC_LP_MODE_NONE
AnnaBridge 163:e59c8e839560 2887 * @arg @ref LL_ADC_LP_AUTOWAIT
AnnaBridge 163:e59c8e839560 2888 */
AnnaBridge 163:e59c8e839560 2889 __STATIC_INLINE uint32_t LL_ADC_GetLowPowerMode(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 2890 {
AnnaBridge 163:e59c8e839560 2891 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_AUTDLY));
AnnaBridge 163:e59c8e839560 2892 }
AnnaBridge 163:e59c8e839560 2893
AnnaBridge 163:e59c8e839560 2894 /**
AnnaBridge 163:e59c8e839560 2895 * @brief Set ADC selected offset number 1, 2, 3 or 4.
AnnaBridge 163:e59c8e839560 2896 * @note This function set the 2 items of offset configuration:
AnnaBridge 163:e59c8e839560 2897 * - ADC channel to which the offset programmed will be applied
AnnaBridge 163:e59c8e839560 2898 * (independently of channel mapped on ADC group regular
AnnaBridge 163:e59c8e839560 2899 * or group injected)
AnnaBridge 163:e59c8e839560 2900 * - Offset level (offset to be subtracted from the raw
AnnaBridge 163:e59c8e839560 2901 * converted data).
AnnaBridge 163:e59c8e839560 2902 * @note Caution: Offset format is dependent to ADC resolution:
AnnaBridge 163:e59c8e839560 2903 * offset has to be left-aligned on bit 11, the LSB (right bits)
AnnaBridge 163:e59c8e839560 2904 * are set to 0.
AnnaBridge 163:e59c8e839560 2905 * @note This function enables the offset, by default. It can be forced
AnnaBridge 163:e59c8e839560 2906 * to disable state using function LL_ADC_SetOffsetState().
AnnaBridge 163:e59c8e839560 2907 * @note If a channel is mapped on several offsets numbers, only the offset
AnnaBridge 163:e59c8e839560 2908 * with the lowest value is considered for the subtraction.
AnnaBridge 163:e59c8e839560 2909 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 2910 * ADC state:
AnnaBridge 163:e59c8e839560 2911 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 2912 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 2913 * @rmtoll OFR1 OFFSET1_CH LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2914 * OFR1 OFFSET1 LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2915 * OFR1 OFFSET1_EN LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2916 * OFR2 OFFSET2_CH LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2917 * OFR2 OFFSET2 LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2918 * OFR2 OFFSET2_EN LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2919 * OFR3 OFFSET3_CH LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2920 * OFR3 OFFSET3 LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2921 * OFR3 OFFSET3_EN LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2922 * OFR4 OFFSET4_CH LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2923 * OFR4 OFFSET4 LL_ADC_SetOffset\n
AnnaBridge 163:e59c8e839560 2924 * OFR4 OFFSET4_EN LL_ADC_SetOffset
AnnaBridge 163:e59c8e839560 2925 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2926 * @param Offsety This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2927 * @arg @ref LL_ADC_OFFSET_1
AnnaBridge 163:e59c8e839560 2928 * @arg @ref LL_ADC_OFFSET_2
AnnaBridge 163:e59c8e839560 2929 * @arg @ref LL_ADC_OFFSET_3
AnnaBridge 163:e59c8e839560 2930 * @arg @ref LL_ADC_OFFSET_4
AnnaBridge 163:e59c8e839560 2931 * @param Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2932 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 2933 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 2934 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 2935 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 2936 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 2937 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 2938 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 2939 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 2940 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 2941 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 2942 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 2943 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 2944 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 2945 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 2946 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 2947 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 2948 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 2949 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 2950 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 2951 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 2952 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 2953 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 2954 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 2955 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 2956 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 2957 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 2958 *
AnnaBridge 163:e59c8e839560 2959 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 2960 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 2961 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 2962 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 2963 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 2964 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 2965 * @param OffsetLevel Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 2966 * @retval None
AnnaBridge 163:e59c8e839560 2967 */
AnnaBridge 163:e59c8e839560 2968 __STATIC_INLINE void LL_ADC_SetOffset(ADC_TypeDef *ADCx, uint32_t Offsety, uint32_t Channel, uint32_t OffsetLevel)
AnnaBridge 163:e59c8e839560 2969 {
AnnaBridge 163:e59c8e839560 2970 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety);
AnnaBridge 163:e59c8e839560 2971
AnnaBridge 163:e59c8e839560 2972 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 2973 ADC_OFR1_OFFSET1_EN | ADC_OFR1_OFFSET1_CH | ADC_OFR1_OFFSET1,
AnnaBridge 163:e59c8e839560 2974 ADC_OFR1_OFFSET1_EN | (Channel & ADC_CHANNEL_ID_NUMBER_MASK) | OffsetLevel);
AnnaBridge 163:e59c8e839560 2975 }
AnnaBridge 163:e59c8e839560 2976
AnnaBridge 163:e59c8e839560 2977 /**
AnnaBridge 163:e59c8e839560 2978 * @brief Get for the ADC selected offset number 1, 2, 3 or 4:
AnnaBridge 163:e59c8e839560 2979 * Channel to which the offset programmed will be applied
AnnaBridge 163:e59c8e839560 2980 * (independently of channel mapped on ADC group regular
AnnaBridge 163:e59c8e839560 2981 * or group injected)
AnnaBridge 163:e59c8e839560 2982 * @note Usage of the returned channel number:
AnnaBridge 163:e59c8e839560 2983 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 163:e59c8e839560 2984 * the returned channel number is only partly formatted on definition
AnnaBridge 163:e59c8e839560 2985 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 163:e59c8e839560 2986 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 163:e59c8e839560 2987 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 2988 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 163:e59c8e839560 2989 * as parameter for another function.
AnnaBridge 163:e59c8e839560 2990 * - To get the channel number in decimal format:
AnnaBridge 163:e59c8e839560 2991 * process the returned value with the helper macro
AnnaBridge 163:e59c8e839560 2992 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 2993 * @rmtoll OFR1 OFFSET1_CH LL_ADC_GetOffsetChannel\n
AnnaBridge 163:e59c8e839560 2994 * OFR2 OFFSET2_CH LL_ADC_GetOffsetChannel\n
AnnaBridge 163:e59c8e839560 2995 * OFR3 OFFSET3_CH LL_ADC_GetOffsetChannel\n
AnnaBridge 163:e59c8e839560 2996 * OFR4 OFFSET4_CH LL_ADC_GetOffsetChannel
AnnaBridge 163:e59c8e839560 2997 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 2998 * @param Offsety This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 2999 * @arg @ref LL_ADC_OFFSET_1
AnnaBridge 163:e59c8e839560 3000 * @arg @ref LL_ADC_OFFSET_2
AnnaBridge 163:e59c8e839560 3001 * @arg @ref LL_ADC_OFFSET_3
AnnaBridge 163:e59c8e839560 3002 * @arg @ref LL_ADC_OFFSET_4
AnnaBridge 163:e59c8e839560 3003 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 3004 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 3005 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 3006 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 3007 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 3008 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 3009 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 3010 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 3011 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 3012 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 3013 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 3014 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 3015 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 3016 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 3017 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 3018 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 3019 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 3020 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 3021 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 3022 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 3023 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 3024 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 3025 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 3026 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 3027 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 3028 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 3029 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 3030 *
AnnaBridge 163:e59c8e839560 3031 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 3032 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 3033 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 3034 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 3035 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 3036 * only one ADC instance is allowed to be connected to VrefInt at the same time.\n
AnnaBridge 163:e59c8e839560 3037 * (1, 2, 3, 4, 5) For ADC channel read back from ADC register,
AnnaBridge 163:e59c8e839560 3038 * comparison with internal channel parameter to be done
AnnaBridge 163:e59c8e839560 3039 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 163:e59c8e839560 3040 */
AnnaBridge 163:e59c8e839560 3041 __STATIC_INLINE uint32_t LL_ADC_GetOffsetChannel(ADC_TypeDef *ADCx, uint32_t Offsety)
AnnaBridge 163:e59c8e839560 3042 {
AnnaBridge 163:e59c8e839560 3043 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety);
AnnaBridge 163:e59c8e839560 3044
AnnaBridge 163:e59c8e839560 3045 return (uint32_t) READ_BIT(*preg, ADC_OFR1_OFFSET1_CH);
AnnaBridge 163:e59c8e839560 3046 }
AnnaBridge 163:e59c8e839560 3047
AnnaBridge 163:e59c8e839560 3048 /**
AnnaBridge 163:e59c8e839560 3049 * @brief Get for the ADC selected offset number 1, 2, 3 or 4:
AnnaBridge 163:e59c8e839560 3050 * Offset level (offset to be subtracted from the raw
AnnaBridge 163:e59c8e839560 3051 * converted data).
AnnaBridge 163:e59c8e839560 3052 * @note Caution: Offset format is dependent to ADC resolution:
AnnaBridge 163:e59c8e839560 3053 * offset has to be left-aligned on bit 11, the LSB (right bits)
AnnaBridge 163:e59c8e839560 3054 * are set to 0.
AnnaBridge 163:e59c8e839560 3055 * @rmtoll OFR1 OFFSET1 LL_ADC_GetOffsetLevel\n
AnnaBridge 163:e59c8e839560 3056 * OFR2 OFFSET2 LL_ADC_GetOffsetLevel\n
AnnaBridge 163:e59c8e839560 3057 * OFR3 OFFSET3 LL_ADC_GetOffsetLevel\n
AnnaBridge 163:e59c8e839560 3058 * OFR4 OFFSET4 LL_ADC_GetOffsetLevel
AnnaBridge 163:e59c8e839560 3059 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3060 * @param Offsety This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3061 * @arg @ref LL_ADC_OFFSET_1
AnnaBridge 163:e59c8e839560 3062 * @arg @ref LL_ADC_OFFSET_2
AnnaBridge 163:e59c8e839560 3063 * @arg @ref LL_ADC_OFFSET_3
AnnaBridge 163:e59c8e839560 3064 * @arg @ref LL_ADC_OFFSET_4
AnnaBridge 163:e59c8e839560 3065 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 3066 */
AnnaBridge 163:e59c8e839560 3067 __STATIC_INLINE uint32_t LL_ADC_GetOffsetLevel(ADC_TypeDef *ADCx, uint32_t Offsety)
AnnaBridge 163:e59c8e839560 3068 {
AnnaBridge 163:e59c8e839560 3069 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety);
AnnaBridge 163:e59c8e839560 3070
AnnaBridge 163:e59c8e839560 3071 return (uint32_t) READ_BIT(*preg, ADC_OFR1_OFFSET1);
AnnaBridge 163:e59c8e839560 3072 }
AnnaBridge 163:e59c8e839560 3073
AnnaBridge 163:e59c8e839560 3074 /**
AnnaBridge 163:e59c8e839560 3075 * @brief Set for the ADC selected offset number 1, 2, 3 or 4:
AnnaBridge 163:e59c8e839560 3076 * force offset state disable or enable
AnnaBridge 163:e59c8e839560 3077 * without modifying offset channel or offset value.
AnnaBridge 163:e59c8e839560 3078 * @note This function should be needed only in case of offset to be
AnnaBridge 163:e59c8e839560 3079 * enabled-disabled dynamically, and should not be needed in other cases:
AnnaBridge 163:e59c8e839560 3080 * function LL_ADC_SetOffset() automatically enables the offset.
AnnaBridge 163:e59c8e839560 3081 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 3082 * ADC state:
AnnaBridge 163:e59c8e839560 3083 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 3084 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 3085 * @rmtoll OFR1 OFFSET1_EN LL_ADC_SetOffsetState\n
AnnaBridge 163:e59c8e839560 3086 * OFR2 OFFSET2_EN LL_ADC_SetOffsetState\n
AnnaBridge 163:e59c8e839560 3087 * OFR3 OFFSET3_EN LL_ADC_SetOffsetState\n
AnnaBridge 163:e59c8e839560 3088 * OFR4 OFFSET4_EN LL_ADC_SetOffsetState
AnnaBridge 163:e59c8e839560 3089 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3090 * @param Offsety This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3091 * @arg @ref LL_ADC_OFFSET_1
AnnaBridge 163:e59c8e839560 3092 * @arg @ref LL_ADC_OFFSET_2
AnnaBridge 163:e59c8e839560 3093 * @arg @ref LL_ADC_OFFSET_3
AnnaBridge 163:e59c8e839560 3094 * @arg @ref LL_ADC_OFFSET_4
AnnaBridge 163:e59c8e839560 3095 * @param OffsetState This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3096 * @arg @ref LL_ADC_OFFSET_DISABLE
AnnaBridge 163:e59c8e839560 3097 * @arg @ref LL_ADC_OFFSET_ENABLE
AnnaBridge 163:e59c8e839560 3098 * @retval None
AnnaBridge 163:e59c8e839560 3099 */
AnnaBridge 163:e59c8e839560 3100 __STATIC_INLINE void LL_ADC_SetOffsetState(ADC_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetState)
AnnaBridge 163:e59c8e839560 3101 {
AnnaBridge 163:e59c8e839560 3102 register uint32_t *preg = (uint32_t *)((uint32_t)
AnnaBridge 163:e59c8e839560 3103 ((uint32_t)(&ADCx->OFR1) + (Offsety*4U)));
AnnaBridge 163:e59c8e839560 3104
AnnaBridge 163:e59c8e839560 3105 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 3106 ADC_OFR1_OFFSET1_EN,
AnnaBridge 163:e59c8e839560 3107 OffsetState);
AnnaBridge 163:e59c8e839560 3108 }
AnnaBridge 163:e59c8e839560 3109
AnnaBridge 163:e59c8e839560 3110 /**
AnnaBridge 163:e59c8e839560 3111 * @brief Get for the ADC selected offset number 1, 2, 3 or 4:
AnnaBridge 163:e59c8e839560 3112 * offset state disabled or enabled.
AnnaBridge 163:e59c8e839560 3113 * @rmtoll OFR1 OFFSET1_EN LL_ADC_GetOffsetState\n
AnnaBridge 163:e59c8e839560 3114 * OFR2 OFFSET2_EN LL_ADC_GetOffsetState\n
AnnaBridge 163:e59c8e839560 3115 * OFR3 OFFSET3_EN LL_ADC_GetOffsetState\n
AnnaBridge 163:e59c8e839560 3116 * OFR4 OFFSET4_EN LL_ADC_GetOffsetState
AnnaBridge 163:e59c8e839560 3117 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3118 * @param Offsety This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3119 * @arg @ref LL_ADC_OFFSET_1
AnnaBridge 163:e59c8e839560 3120 * @arg @ref LL_ADC_OFFSET_2
AnnaBridge 163:e59c8e839560 3121 * @arg @ref LL_ADC_OFFSET_3
AnnaBridge 163:e59c8e839560 3122 * @arg @ref LL_ADC_OFFSET_4
AnnaBridge 163:e59c8e839560 3123 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 3124 * @arg @ref LL_ADC_OFFSET_DISABLE
AnnaBridge 163:e59c8e839560 3125 * @arg @ref LL_ADC_OFFSET_ENABLE
AnnaBridge 163:e59c8e839560 3126 */
AnnaBridge 163:e59c8e839560 3127 __STATIC_INLINE uint32_t LL_ADC_GetOffsetState(ADC_TypeDef *ADCx, uint32_t Offsety)
AnnaBridge 163:e59c8e839560 3128 {
AnnaBridge 163:e59c8e839560 3129 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety);
AnnaBridge 163:e59c8e839560 3130
AnnaBridge 163:e59c8e839560 3131 return (uint32_t) READ_BIT(*preg, ADC_OFR1_OFFSET1_EN);
AnnaBridge 163:e59c8e839560 3132 }
AnnaBridge 163:e59c8e839560 3133
AnnaBridge 163:e59c8e839560 3134 /**
AnnaBridge 163:e59c8e839560 3135 * @}
AnnaBridge 163:e59c8e839560 3136 */
AnnaBridge 163:e59c8e839560 3137
AnnaBridge 163:e59c8e839560 3138 /** @defgroup ADC_LL_EF_Configuration_ADC_Group_Regular Configuration of ADC hierarchical scope: group regular
AnnaBridge 163:e59c8e839560 3139 * @{
AnnaBridge 163:e59c8e839560 3140 */
AnnaBridge 163:e59c8e839560 3141
AnnaBridge 163:e59c8e839560 3142 /**
AnnaBridge 163:e59c8e839560 3143 * @brief Set ADC group regular conversion trigger source:
AnnaBridge 163:e59c8e839560 3144 * internal (SW start) or from external IP (timer event,
AnnaBridge 163:e59c8e839560 3145 * external interrupt line).
AnnaBridge 163:e59c8e839560 3146 * @note On this STM32 serie, setting trigger source to external trigger
AnnaBridge 163:e59c8e839560 3147 * also set trigger polarity to rising edge
AnnaBridge 163:e59c8e839560 3148 * (default setting for compatibility with some ADC on other
AnnaBridge 163:e59c8e839560 3149 * STM32 families having this setting set by HW default value).
AnnaBridge 163:e59c8e839560 3150 * In case of need to modify trigger edge, use
AnnaBridge 163:e59c8e839560 3151 * function @ref LL_ADC_REG_SetTriggerEdge().
AnnaBridge 163:e59c8e839560 3152 * @note Availability of parameters of trigger sources from timer
AnnaBridge 163:e59c8e839560 3153 * depends on timers availability on the selected device.
AnnaBridge 163:e59c8e839560 3154 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 3155 * ADC state:
AnnaBridge 163:e59c8e839560 3156 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 3157 * on group regular.
AnnaBridge 163:e59c8e839560 3158 * @rmtoll CFGR EXTSEL LL_ADC_REG_SetTriggerSource\n
AnnaBridge 163:e59c8e839560 3159 * CFGR EXTEN LL_ADC_REG_SetTriggerSource
AnnaBridge 163:e59c8e839560 3160 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3161 * @param TriggerSource This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3162 * @arg @ref LL_ADC_REG_TRIG_SOFTWARE
AnnaBridge 163:e59c8e839560 3163 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO
AnnaBridge 163:e59c8e839560 3164 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO2
AnnaBridge 163:e59c8e839560 3165 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1 (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3166 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3167 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2 (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3168 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3169 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH3
AnnaBridge 163:e59c8e839560 3170 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3171 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3172 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3173 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH1_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3174 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3175 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH3_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3176 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO (3)(4)(5)
AnnaBridge 163:e59c8e839560 3177 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3178 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3179 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH1_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3180 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH4 (3)(4)(5)
AnnaBridge 163:e59c8e839560 3181 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH4_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3182 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_TRGO (1)(2)(3)(5)
AnnaBridge 163:e59c8e839560 3183 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH1_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3184 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4 (3) (5)
AnnaBridge 163:e59c8e839560 3185 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3186 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM6_TRGO (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3187 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM6_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3188 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO (3)
AnnaBridge 163:e59c8e839560 3189 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3190 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO2 (1)(2)
AnnaBridge 163:e59c8e839560 3191 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM6_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3192 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM7_TRGO_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3193 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3194 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO2 (1)(2)
AnnaBridge 163:e59c8e839560 3195 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_CH1_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3196 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM15_TRGO (5)
AnnaBridge 163:e59c8e839560 3197 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_TRG0_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3198 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_TRG02_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3199 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_CH1_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3200 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_CH2_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3201 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_CH3_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3202 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_TRG0_ADC3 (1) (8)
AnnaBridge 163:e59c8e839560 3203 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_TRG02_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 3204 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_CH1_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 3205 * @arg @ref LL_ADC_REG_TRIG_EXT_HRTIM_TRG1 (4)
AnnaBridge 163:e59c8e839560 3206 * @arg @ref LL_ADC_REG_TRIG_EXT_HRTIM_TRG3 (4)
AnnaBridge 163:e59c8e839560 3207 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE2_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3208 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3209 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3210
AnnaBridge 163:e59c8e839560 3211 * (1) On STM32F3, parameter not available on all devices: among others, on STM32F303xE, STM32F398xx.\n
AnnaBridge 163:e59c8e839560 3212 * (2) On STM32F3, parameter not available on all devices: among others, on STM32F303xC, STM32F358xx.\n
AnnaBridge 163:e59c8e839560 3213 * (3) On STM32F3, parameter not available on all devices: among others, on STM32F303x8, STM32F328xx.\n
AnnaBridge 163:e59c8e839560 3214 * (4) On STM32F3, parameter not available on all devices: among others, on STM32F334x8.\n
AnnaBridge 163:e59c8e839560 3215 * (5) On STM32F3, parameter not available on all devices: among others, on STM32F302xC, STM32F302xE.\n
AnnaBridge 163:e59c8e839560 3216 * (6) On STM32F3, parameter not available on all devices: among others, on STM32F301x8, STM32F302x8, STM32F318xx.\n
AnnaBridge 163:e59c8e839560 3217 * (7) On STM32F3, parameter not available on all ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device).\n
AnnaBridge 163:e59c8e839560 3218 * (8) On STM32F3, parameter not available on all ADC instances: ADC3, ADC4 (for ADC instances ADCx available on the selected device).
AnnaBridge 163:e59c8e839560 3219 * @retval None
AnnaBridge 163:e59c8e839560 3220 */
AnnaBridge 163:e59c8e839560 3221 __STATIC_INLINE void LL_ADC_REG_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource)
AnnaBridge 163:e59c8e839560 3222 {
AnnaBridge 163:e59c8e839560 3223 MODIFY_REG(ADCx->CFGR, ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL, TriggerSource);
AnnaBridge 163:e59c8e839560 3224 }
AnnaBridge 163:e59c8e839560 3225
AnnaBridge 163:e59c8e839560 3226 /**
AnnaBridge 163:e59c8e839560 3227 * @brief Get ADC group regular conversion trigger source:
AnnaBridge 163:e59c8e839560 3228 * internal (SW start) or from external IP (timer event,
AnnaBridge 163:e59c8e839560 3229 * external interrupt line).
AnnaBridge 163:e59c8e839560 3230 * @note To determine whether group regular trigger source is
AnnaBridge 163:e59c8e839560 3231 * internal (SW start) or external, without detail
AnnaBridge 163:e59c8e839560 3232 * of which peripheral is selected as external trigger,
AnnaBridge 163:e59c8e839560 3233 * (equivalent to
AnnaBridge 163:e59c8e839560 3234 * "if(LL_ADC_REG_GetTriggerSource(ADC1) == LL_ADC_REG_TRIG_SOFTWARE)")
AnnaBridge 163:e59c8e839560 3235 * use function @ref LL_ADC_REG_IsTriggerSourceSWStart.
AnnaBridge 163:e59c8e839560 3236 * @note Availability of parameters of trigger sources from timer
AnnaBridge 163:e59c8e839560 3237 * depends on timers availability on the selected device.
AnnaBridge 163:e59c8e839560 3238 * @rmtoll CFGR EXTSEL LL_ADC_REG_GetTriggerSource\n
AnnaBridge 163:e59c8e839560 3239 * CFGR EXTEN LL_ADC_REG_GetTriggerSource
AnnaBridge 163:e59c8e839560 3240 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3241 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 3242 * @arg @ref LL_ADC_REG_TRIG_SOFTWARE
AnnaBridge 163:e59c8e839560 3243 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO
AnnaBridge 163:e59c8e839560 3244 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO2
AnnaBridge 163:e59c8e839560 3245 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1 (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3246 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3247 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2 (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3248 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3249 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH3
AnnaBridge 163:e59c8e839560 3250 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3251 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3252 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3253 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH1_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3254 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3255 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH3_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3256 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO (3)(4)(5)
AnnaBridge 163:e59c8e839560 3257 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3258 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3259 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH1_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3260 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH4 (3)(4)(5)
AnnaBridge 163:e59c8e839560 3261 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH4_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3262 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_TRGO (1)(2)(3)(5)
AnnaBridge 163:e59c8e839560 3263 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH1_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3264 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4 (3) (5)
AnnaBridge 163:e59c8e839560 3265 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3266 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM6_TRGO (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3267 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM6_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3268 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO (3)
AnnaBridge 163:e59c8e839560 3269 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3270 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO2 (1)(2)
AnnaBridge 163:e59c8e839560 3271 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM6_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3272 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM7_TRGO_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3273 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3274 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO2 (1)(2)
AnnaBridge 163:e59c8e839560 3275 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_CH1_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3276 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM15_TRGO (5)
AnnaBridge 163:e59c8e839560 3277 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_TRG0_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3278 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_TRG02_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3279 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_CH1_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3280 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_CH2_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3281 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_CH3_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3282 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_TRG0_ADC3 (1) (8)
AnnaBridge 163:e59c8e839560 3283 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_TRG02_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 3284 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM20_CH1_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 3285 * @arg @ref LL_ADC_REG_TRIG_EXT_HRTIM_TRG1 (4)
AnnaBridge 163:e59c8e839560 3286 * @arg @ref LL_ADC_REG_TRIG_EXT_HRTIM_TRG3 (4)
AnnaBridge 163:e59c8e839560 3287 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE2_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3288 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3289 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3290
AnnaBridge 163:e59c8e839560 3291 * (1) On STM32F3, parameter not available on all devices: among others, on STM32F303xE, STM32F398xx.\n
AnnaBridge 163:e59c8e839560 3292 * (2) On STM32F3, parameter not available on all devices: among others, on STM32F303xC, STM32F358xx.\n
AnnaBridge 163:e59c8e839560 3293 * (3) On STM32F3, parameter not available on all devices: among others, on STM32F303x8, STM32F328xx.\n
AnnaBridge 163:e59c8e839560 3294 * (4) On STM32F3, parameter not available on all devices: among others, on STM32F334x8.\n
AnnaBridge 163:e59c8e839560 3295 * (5) On STM32F3, parameter not available on all devices: among others, on STM32F302xC, STM32F302xE.\n
AnnaBridge 163:e59c8e839560 3296 * (6) On STM32F3, parameter not available on all devices: among others, on STM32F301x8, STM32F302x8, STM32F318xx.\n
AnnaBridge 163:e59c8e839560 3297 * (7) On STM32F3, parameter not available on all ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device).\n
AnnaBridge 163:e59c8e839560 3298 * (8) On STM32F3, parameter not available on all ADC instances: ADC3, ADC4 (for ADC instances ADCx available on the selected device).
AnnaBridge 163:e59c8e839560 3299 */
AnnaBridge 163:e59c8e839560 3300 __STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerSource(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 3301 {
AnnaBridge 163:e59c8e839560 3302 register uint32_t TriggerSource = READ_BIT(ADCx->CFGR, ADC_CFGR_EXTSEL | ADC_CFGR_EXTEN);
AnnaBridge 163:e59c8e839560 3303
AnnaBridge 163:e59c8e839560 3304 /* Value for shift of {0; 4; 8; 12} depending on value of bitfield */
AnnaBridge 163:e59c8e839560 3305 /* corresponding to ADC_CFGR_EXTEN {0; 1; 2; 3}. */
AnnaBridge 163:e59c8e839560 3306 register uint32_t ShiftExten = ((TriggerSource & ADC_CFGR_EXTEN) >> (ADC_REG_TRIG_EXTEN_BITOFFSET_POS - 2U));
AnnaBridge 163:e59c8e839560 3307
AnnaBridge 163:e59c8e839560 3308 /* Set bitfield corresponding to ADC_CFGR_EXTEN and ADC_CFGR_EXTSEL */
AnnaBridge 163:e59c8e839560 3309 /* to match with triggers literals definition. */
AnnaBridge 163:e59c8e839560 3310 return ((TriggerSource
AnnaBridge 163:e59c8e839560 3311 & (ADC_REG_TRIG_SOURCE_MASK >> ShiftExten) & ADC_CFGR_EXTSEL)
AnnaBridge 163:e59c8e839560 3312 | ((ADC_REG_TRIG_EDGE_MASK >> ShiftExten) & ADC_CFGR_EXTEN)
AnnaBridge 163:e59c8e839560 3313 );
AnnaBridge 163:e59c8e839560 3314 }
AnnaBridge 163:e59c8e839560 3315
AnnaBridge 163:e59c8e839560 3316 /**
AnnaBridge 163:e59c8e839560 3317 * @brief Get ADC group regular conversion trigger source internal (SW start)
AnnaBridge 163:e59c8e839560 3318 or external.
AnnaBridge 163:e59c8e839560 3319 * @note In case of group regular trigger source set to external trigger,
AnnaBridge 163:e59c8e839560 3320 * to determine which peripheral is selected as external trigger,
AnnaBridge 163:e59c8e839560 3321 * use function @ref LL_ADC_REG_GetTriggerSource().
AnnaBridge 163:e59c8e839560 3322 * @rmtoll CFGR EXTEN LL_ADC_REG_IsTriggerSourceSWStart
AnnaBridge 163:e59c8e839560 3323 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3324 * @retval Value "0" if trigger source external trigger
AnnaBridge 163:e59c8e839560 3325 * Value "1" if trigger source SW start.
AnnaBridge 163:e59c8e839560 3326 */
AnnaBridge 163:e59c8e839560 3327 __STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 3328 {
AnnaBridge 163:e59c8e839560 3329 return (READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN) == (LL_ADC_REG_TRIG_SOFTWARE & ADC_CFGR_EXTEN));
AnnaBridge 163:e59c8e839560 3330 }
AnnaBridge 163:e59c8e839560 3331
AnnaBridge 163:e59c8e839560 3332 /**
AnnaBridge 163:e59c8e839560 3333 * @brief Set ADC group regular conversion trigger polarity.
AnnaBridge 163:e59c8e839560 3334 * @note Applicable only for trigger source set to external trigger.
AnnaBridge 163:e59c8e839560 3335 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 3336 * ADC state:
AnnaBridge 163:e59c8e839560 3337 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 3338 * on group regular.
AnnaBridge 163:e59c8e839560 3339 * @rmtoll CFGR EXTEN LL_ADC_REG_SetTriggerEdge
AnnaBridge 163:e59c8e839560 3340 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3341 * @param ExternalTriggerEdge This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3342 * @arg @ref LL_ADC_REG_TRIG_EXT_RISING
AnnaBridge 163:e59c8e839560 3343 * @arg @ref LL_ADC_REG_TRIG_EXT_FALLING
AnnaBridge 163:e59c8e839560 3344 * @arg @ref LL_ADC_REG_TRIG_EXT_RISINGFALLING
AnnaBridge 163:e59c8e839560 3345 * @retval None
AnnaBridge 163:e59c8e839560 3346 */
AnnaBridge 163:e59c8e839560 3347 __STATIC_INLINE void LL_ADC_REG_SetTriggerEdge(ADC_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
AnnaBridge 163:e59c8e839560 3348 {
AnnaBridge 163:e59c8e839560 3349 MODIFY_REG(ADCx->CFGR, ADC_CFGR_EXTEN, ExternalTriggerEdge);
AnnaBridge 163:e59c8e839560 3350 }
AnnaBridge 163:e59c8e839560 3351
AnnaBridge 163:e59c8e839560 3352 /**
AnnaBridge 163:e59c8e839560 3353 * @brief Get ADC group regular conversion trigger polarity.
AnnaBridge 163:e59c8e839560 3354 * @note Applicable only for trigger source set to external trigger.
AnnaBridge 163:e59c8e839560 3355 * @rmtoll CFGR EXTEN LL_ADC_REG_GetTriggerEdge
AnnaBridge 163:e59c8e839560 3356 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3357 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 3358 * @arg @ref LL_ADC_REG_TRIG_EXT_RISING
AnnaBridge 163:e59c8e839560 3359 * @arg @ref LL_ADC_REG_TRIG_EXT_FALLING
AnnaBridge 163:e59c8e839560 3360 * @arg @ref LL_ADC_REG_TRIG_EXT_RISINGFALLING
AnnaBridge 163:e59c8e839560 3361 */
AnnaBridge 163:e59c8e839560 3362 __STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerEdge(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 3363 {
AnnaBridge 163:e59c8e839560 3364 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN));
AnnaBridge 163:e59c8e839560 3365 }
AnnaBridge 163:e59c8e839560 3366
AnnaBridge 163:e59c8e839560 3367
AnnaBridge 163:e59c8e839560 3368 /**
AnnaBridge 163:e59c8e839560 3369 * @brief Set ADC group regular sequencer length and scan direction.
AnnaBridge 163:e59c8e839560 3370 * @note Description of ADC group regular sequencer features:
AnnaBridge 163:e59c8e839560 3371 * - For devices with sequencer fully configurable
AnnaBridge 163:e59c8e839560 3372 * (function "LL_ADC_REG_SetSequencerRanks()" available):
AnnaBridge 163:e59c8e839560 3373 * sequencer length and each rank affectation to a channel
AnnaBridge 163:e59c8e839560 3374 * are configurable.
AnnaBridge 163:e59c8e839560 3375 * This function performs configuration of:
AnnaBridge 163:e59c8e839560 3376 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 163:e59c8e839560 3377 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 3378 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 163:e59c8e839560 3379 * Sequencer ranks are selected using
AnnaBridge 163:e59c8e839560 3380 * function "LL_ADC_REG_SetSequencerRanks()".
AnnaBridge 163:e59c8e839560 3381 * - For devices with sequencer not fully configurable
AnnaBridge 163:e59c8e839560 3382 * (function "LL_ADC_REG_SetSequencerChannels()" available):
AnnaBridge 163:e59c8e839560 3383 * sequencer length and each rank affectation to a channel
AnnaBridge 163:e59c8e839560 3384 * are defined by channel number.
AnnaBridge 163:e59c8e839560 3385 * This function performs configuration of:
AnnaBridge 163:e59c8e839560 3386 * - Sequence length: Number of ranks in the scan sequence is
AnnaBridge 163:e59c8e839560 3387 * defined by number of channels set in the sequence,
AnnaBridge 163:e59c8e839560 3388 * rank of each channel is fixed by channel HW number.
AnnaBridge 163:e59c8e839560 3389 * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...).
AnnaBridge 163:e59c8e839560 3390 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 3391 * scan direction is forward (from lowest channel number to
AnnaBridge 163:e59c8e839560 3392 * highest channel number).
AnnaBridge 163:e59c8e839560 3393 * Sequencer ranks are selected using
AnnaBridge 163:e59c8e839560 3394 * function "LL_ADC_REG_SetSequencerChannels()".
AnnaBridge 163:e59c8e839560 3395 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 163:e59c8e839560 3396 * ADC conversion on only 1 channel.
AnnaBridge 163:e59c8e839560 3397 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 3398 * ADC state:
AnnaBridge 163:e59c8e839560 3399 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 3400 * on group regular.
AnnaBridge 163:e59c8e839560 3401 * @rmtoll SQR1 L LL_ADC_REG_SetSequencerLength
AnnaBridge 163:e59c8e839560 3402 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3403 * @param SequencerNbRanks This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3404 * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 3405 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 163:e59c8e839560 3406 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 163:e59c8e839560 3407 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 163:e59c8e839560 3408 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS
AnnaBridge 163:e59c8e839560 3409 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS
AnnaBridge 163:e59c8e839560 3410 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS
AnnaBridge 163:e59c8e839560 3411 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS
AnnaBridge 163:e59c8e839560 3412 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS
AnnaBridge 163:e59c8e839560 3413 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS
AnnaBridge 163:e59c8e839560 3414 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS
AnnaBridge 163:e59c8e839560 3415 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS
AnnaBridge 163:e59c8e839560 3416 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS
AnnaBridge 163:e59c8e839560 3417 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS
AnnaBridge 163:e59c8e839560 3418 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS
AnnaBridge 163:e59c8e839560 3419 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS
AnnaBridge 163:e59c8e839560 3420 * @retval None
AnnaBridge 163:e59c8e839560 3421 */
AnnaBridge 163:e59c8e839560 3422 __STATIC_INLINE void LL_ADC_REG_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks)
AnnaBridge 163:e59c8e839560 3423 {
AnnaBridge 163:e59c8e839560 3424 MODIFY_REG(ADCx->SQR1, ADC_SQR1_L, SequencerNbRanks);
AnnaBridge 163:e59c8e839560 3425 }
AnnaBridge 163:e59c8e839560 3426
AnnaBridge 163:e59c8e839560 3427 /**
AnnaBridge 163:e59c8e839560 3428 * @brief Get ADC group regular sequencer length and scan direction.
AnnaBridge 163:e59c8e839560 3429 * @note Description of ADC group regular sequencer features:
AnnaBridge 163:e59c8e839560 3430 * - For devices with sequencer fully configurable
AnnaBridge 163:e59c8e839560 3431 * (function "LL_ADC_REG_SetSequencerRanks()" available):
AnnaBridge 163:e59c8e839560 3432 * sequencer length and each rank affectation to a channel
AnnaBridge 163:e59c8e839560 3433 * are configurable.
AnnaBridge 163:e59c8e839560 3434 * This function retrieves:
AnnaBridge 163:e59c8e839560 3435 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 163:e59c8e839560 3436 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 3437 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 163:e59c8e839560 3438 * Sequencer ranks are selected using
AnnaBridge 163:e59c8e839560 3439 * function "LL_ADC_REG_SetSequencerRanks()".
AnnaBridge 163:e59c8e839560 3440 * - For devices with sequencer not fully configurable
AnnaBridge 163:e59c8e839560 3441 * (function "LL_ADC_REG_SetSequencerChannels()" available):
AnnaBridge 163:e59c8e839560 3442 * sequencer length and each rank affectation to a channel
AnnaBridge 163:e59c8e839560 3443 * are defined by channel number.
AnnaBridge 163:e59c8e839560 3444 * This function retrieves:
AnnaBridge 163:e59c8e839560 3445 * - Sequence length: Number of ranks in the scan sequence is
AnnaBridge 163:e59c8e839560 3446 * defined by number of channels set in the sequence,
AnnaBridge 163:e59c8e839560 3447 * rank of each channel is fixed by channel HW number.
AnnaBridge 163:e59c8e839560 3448 * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...).
AnnaBridge 163:e59c8e839560 3449 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 3450 * scan direction is forward (from lowest channel number to
AnnaBridge 163:e59c8e839560 3451 * highest channel number).
AnnaBridge 163:e59c8e839560 3452 * Sequencer ranks are selected using
AnnaBridge 163:e59c8e839560 3453 * function "LL_ADC_REG_SetSequencerChannels()".
AnnaBridge 163:e59c8e839560 3454 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 163:e59c8e839560 3455 * ADC conversion on only 1 channel.
AnnaBridge 163:e59c8e839560 3456 * @rmtoll SQR1 L LL_ADC_REG_GetSequencerLength
AnnaBridge 163:e59c8e839560 3457 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3458 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 3459 * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 3460 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 163:e59c8e839560 3461 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 163:e59c8e839560 3462 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 163:e59c8e839560 3463 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS
AnnaBridge 163:e59c8e839560 3464 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS
AnnaBridge 163:e59c8e839560 3465 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS
AnnaBridge 163:e59c8e839560 3466 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS
AnnaBridge 163:e59c8e839560 3467 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS
AnnaBridge 163:e59c8e839560 3468 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS
AnnaBridge 163:e59c8e839560 3469 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS
AnnaBridge 163:e59c8e839560 3470 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS
AnnaBridge 163:e59c8e839560 3471 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS
AnnaBridge 163:e59c8e839560 3472 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS
AnnaBridge 163:e59c8e839560 3473 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS
AnnaBridge 163:e59c8e839560 3474 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS
AnnaBridge 163:e59c8e839560 3475 */
AnnaBridge 163:e59c8e839560 3476 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerLength(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 3477 {
AnnaBridge 163:e59c8e839560 3478 return (uint32_t)(READ_BIT(ADCx->SQR1, ADC_SQR1_L));
AnnaBridge 163:e59c8e839560 3479 }
AnnaBridge 163:e59c8e839560 3480
AnnaBridge 163:e59c8e839560 3481 /**
AnnaBridge 163:e59c8e839560 3482 * @brief Set ADC group regular sequencer discontinuous mode:
AnnaBridge 163:e59c8e839560 3483 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 163:e59c8e839560 3484 * number of ranks.
AnnaBridge 163:e59c8e839560 3485 * @note It is not possible to enable both ADC group regular
AnnaBridge 163:e59c8e839560 3486 * continuous mode and sequencer discontinuous mode.
AnnaBridge 163:e59c8e839560 3487 * @note It is not possible to enable both ADC auto-injected mode
AnnaBridge 163:e59c8e839560 3488 * and ADC group regular sequencer discontinuous mode.
AnnaBridge 163:e59c8e839560 3489 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 3490 * ADC state:
AnnaBridge 163:e59c8e839560 3491 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 3492 * on group regular.
AnnaBridge 163:e59c8e839560 3493 * @rmtoll CFGR DISCEN LL_ADC_REG_SetSequencerDiscont\n
AnnaBridge 163:e59c8e839560 3494 * CFGR DISCNUM LL_ADC_REG_SetSequencerDiscont
AnnaBridge 163:e59c8e839560 3495 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3496 * @param SeqDiscont This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3497 * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE
AnnaBridge 163:e59c8e839560 3498 * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK
AnnaBridge 163:e59c8e839560 3499 * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS
AnnaBridge 163:e59c8e839560 3500 * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS
AnnaBridge 163:e59c8e839560 3501 * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS
AnnaBridge 163:e59c8e839560 3502 * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS
AnnaBridge 163:e59c8e839560 3503 * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS
AnnaBridge 163:e59c8e839560 3504 * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS
AnnaBridge 163:e59c8e839560 3505 * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS
AnnaBridge 163:e59c8e839560 3506 * @retval None
AnnaBridge 163:e59c8e839560 3507 */
AnnaBridge 163:e59c8e839560 3508 __STATIC_INLINE void LL_ADC_REG_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont)
AnnaBridge 163:e59c8e839560 3509 {
AnnaBridge 163:e59c8e839560 3510 MODIFY_REG(ADCx->CFGR, ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM, SeqDiscont);
AnnaBridge 163:e59c8e839560 3511 }
AnnaBridge 163:e59c8e839560 3512
AnnaBridge 163:e59c8e839560 3513 /**
AnnaBridge 163:e59c8e839560 3514 * @brief Get ADC group regular sequencer discontinuous mode:
AnnaBridge 163:e59c8e839560 3515 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 163:e59c8e839560 3516 * number of ranks.
AnnaBridge 163:e59c8e839560 3517 * @rmtoll CFGR DISCEN LL_ADC_REG_GetSequencerDiscont\n
AnnaBridge 163:e59c8e839560 3518 * CFGR DISCNUM LL_ADC_REG_GetSequencerDiscont
AnnaBridge 163:e59c8e839560 3519 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3520 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 3521 * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE
AnnaBridge 163:e59c8e839560 3522 * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK
AnnaBridge 163:e59c8e839560 3523 * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS
AnnaBridge 163:e59c8e839560 3524 * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS
AnnaBridge 163:e59c8e839560 3525 * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS
AnnaBridge 163:e59c8e839560 3526 * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS
AnnaBridge 163:e59c8e839560 3527 * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS
AnnaBridge 163:e59c8e839560 3528 * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS
AnnaBridge 163:e59c8e839560 3529 * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS
AnnaBridge 163:e59c8e839560 3530 */
AnnaBridge 163:e59c8e839560 3531 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerDiscont(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 3532 {
AnnaBridge 163:e59c8e839560 3533 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM));
AnnaBridge 163:e59c8e839560 3534 }
AnnaBridge 163:e59c8e839560 3535
AnnaBridge 163:e59c8e839560 3536 /**
AnnaBridge 163:e59c8e839560 3537 * @brief Set ADC group regular sequence: channel on the selected
AnnaBridge 163:e59c8e839560 3538 * scan sequence rank.
AnnaBridge 163:e59c8e839560 3539 * @note This function performs configuration of:
AnnaBridge 163:e59c8e839560 3540 * - Channels ordering into each rank of scan sequence:
AnnaBridge 163:e59c8e839560 3541 * whatever channel can be placed into whatever rank.
AnnaBridge 163:e59c8e839560 3542 * @note On this STM32 serie, ADC group regular sequencer is
AnnaBridge 163:e59c8e839560 3543 * fully configurable: sequencer length and each rank
AnnaBridge 163:e59c8e839560 3544 * affectation to a channel are configurable.
AnnaBridge 163:e59c8e839560 3545 * Refer to description of function @ref LL_ADC_REG_SetSequencerLength().
AnnaBridge 163:e59c8e839560 3546 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 163:e59c8e839560 3547 * Refer to device datasheet for channels availability.
AnnaBridge 163:e59c8e839560 3548 * @note On this STM32 serie, to measure internal channels (VrefInt,
AnnaBridge 163:e59c8e839560 3549 * TempSensor, ...), measurement paths to internal channels must be
AnnaBridge 163:e59c8e839560 3550 * enabled separately.
AnnaBridge 163:e59c8e839560 3551 * This can be done using function @ref LL_ADC_SetCommonPathInternalCh().
AnnaBridge 163:e59c8e839560 3552 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 3553 * ADC state:
AnnaBridge 163:e59c8e839560 3554 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 3555 * on group regular.
AnnaBridge 163:e59c8e839560 3556 * @rmtoll SQR1 SQ1 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3557 * SQR1 SQ2 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3558 * SQR1 SQ3 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3559 * SQR1 SQ4 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3560 * SQR2 SQ5 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3561 * SQR2 SQ6 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3562 * SQR2 SQ7 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3563 * SQR2 SQ8 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3564 * SQR2 SQ9 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3565 * SQR3 SQ10 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3566 * SQR3 SQ11 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3567 * SQR3 SQ12 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3568 * SQR3 SQ13 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3569 * SQR3 SQ14 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3570 * SQR4 SQ15 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3571 * SQR4 SQ16 LL_ADC_REG_SetSequencerRanks
AnnaBridge 163:e59c8e839560 3572 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3573 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3574 * @arg @ref LL_ADC_REG_RANK_1
AnnaBridge 163:e59c8e839560 3575 * @arg @ref LL_ADC_REG_RANK_2
AnnaBridge 163:e59c8e839560 3576 * @arg @ref LL_ADC_REG_RANK_3
AnnaBridge 163:e59c8e839560 3577 * @arg @ref LL_ADC_REG_RANK_4
AnnaBridge 163:e59c8e839560 3578 * @arg @ref LL_ADC_REG_RANK_5
AnnaBridge 163:e59c8e839560 3579 * @arg @ref LL_ADC_REG_RANK_6
AnnaBridge 163:e59c8e839560 3580 * @arg @ref LL_ADC_REG_RANK_7
AnnaBridge 163:e59c8e839560 3581 * @arg @ref LL_ADC_REG_RANK_8
AnnaBridge 163:e59c8e839560 3582 * @arg @ref LL_ADC_REG_RANK_9
AnnaBridge 163:e59c8e839560 3583 * @arg @ref LL_ADC_REG_RANK_10
AnnaBridge 163:e59c8e839560 3584 * @arg @ref LL_ADC_REG_RANK_11
AnnaBridge 163:e59c8e839560 3585 * @arg @ref LL_ADC_REG_RANK_12
AnnaBridge 163:e59c8e839560 3586 * @arg @ref LL_ADC_REG_RANK_13
AnnaBridge 163:e59c8e839560 3587 * @arg @ref LL_ADC_REG_RANK_14
AnnaBridge 163:e59c8e839560 3588 * @arg @ref LL_ADC_REG_RANK_15
AnnaBridge 163:e59c8e839560 3589 * @arg @ref LL_ADC_REG_RANK_16
AnnaBridge 163:e59c8e839560 3590 * @param Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3591 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 3592 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 3593 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 3594 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 3595 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 3596 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 3597 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 3598 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 3599 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 3600 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 3601 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 3602 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 3603 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 3604 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 3605 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 3606 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 3607 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 3608 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 3609 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 3610 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 3611 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 3612 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 3613 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 3614 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 3615 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 3616 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 3617 *
AnnaBridge 163:e59c8e839560 3618 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 3619 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 3620 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 3621 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 3622 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 3623 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 3624 * @retval None
AnnaBridge 163:e59c8e839560 3625 */
AnnaBridge 163:e59c8e839560 3626 __STATIC_INLINE void LL_ADC_REG_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
AnnaBridge 163:e59c8e839560 3627 {
AnnaBridge 163:e59c8e839560 3628 /* Set bits with content of parameter "Channel" with bits position */
AnnaBridge 163:e59c8e839560 3629 /* in register and register position depending on parameter "Rank". */
AnnaBridge 163:e59c8e839560 3630 /* Parameters "Rank" and "Channel" are used with masks because containing */
AnnaBridge 163:e59c8e839560 3631 /* other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 3632 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 3633
AnnaBridge 163:e59c8e839560 3634 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 3635 ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 << (Rank & ADC_REG_RANK_ID_SQRX_MASK),
AnnaBridge 163:e59c8e839560 3636 (Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> (ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS - (Rank & ADC_REG_RANK_ID_SQRX_MASK)));
AnnaBridge 163:e59c8e839560 3637 }
AnnaBridge 163:e59c8e839560 3638
AnnaBridge 163:e59c8e839560 3639 /**
AnnaBridge 163:e59c8e839560 3640 * @brief Get ADC group regular sequence: channel on the selected
AnnaBridge 163:e59c8e839560 3641 * scan sequence rank.
AnnaBridge 163:e59c8e839560 3642 * @note On this STM32 serie, ADC group regular sequencer is
AnnaBridge 163:e59c8e839560 3643 * fully configurable: sequencer length and each rank
AnnaBridge 163:e59c8e839560 3644 * affectation to a channel are configurable.
AnnaBridge 163:e59c8e839560 3645 * Refer to description of function @ref LL_ADC_REG_SetSequencerLength().
AnnaBridge 163:e59c8e839560 3646 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 163:e59c8e839560 3647 * Refer to device datasheet for channels availability.
AnnaBridge 163:e59c8e839560 3648 * @note Usage of the returned channel number:
AnnaBridge 163:e59c8e839560 3649 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 163:e59c8e839560 3650 * the returned channel number is only partly formatted on definition
AnnaBridge 163:e59c8e839560 3651 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 163:e59c8e839560 3652 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 163:e59c8e839560 3653 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 3654 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 163:e59c8e839560 3655 * as parameter for another function.
AnnaBridge 163:e59c8e839560 3656 * - To get the channel number in decimal format:
AnnaBridge 163:e59c8e839560 3657 * process the returned value with the helper macro
AnnaBridge 163:e59c8e839560 3658 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 3659 * @rmtoll SQR1 SQ1 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3660 * SQR1 SQ2 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3661 * SQR1 SQ3 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3662 * SQR1 SQ4 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3663 * SQR2 SQ5 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3664 * SQR2 SQ6 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3665 * SQR2 SQ7 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3666 * SQR2 SQ8 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3667 * SQR2 SQ9 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3668 * SQR3 SQ10 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3669 * SQR3 SQ11 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3670 * SQR3 SQ12 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3671 * SQR3 SQ13 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3672 * SQR3 SQ14 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3673 * SQR4 SQ15 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 3674 * SQR4 SQ16 LL_ADC_REG_GetSequencerRanks
AnnaBridge 163:e59c8e839560 3675 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3676 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3677 * @arg @ref LL_ADC_REG_RANK_1
AnnaBridge 163:e59c8e839560 3678 * @arg @ref LL_ADC_REG_RANK_2
AnnaBridge 163:e59c8e839560 3679 * @arg @ref LL_ADC_REG_RANK_3
AnnaBridge 163:e59c8e839560 3680 * @arg @ref LL_ADC_REG_RANK_4
AnnaBridge 163:e59c8e839560 3681 * @arg @ref LL_ADC_REG_RANK_5
AnnaBridge 163:e59c8e839560 3682 * @arg @ref LL_ADC_REG_RANK_6
AnnaBridge 163:e59c8e839560 3683 * @arg @ref LL_ADC_REG_RANK_7
AnnaBridge 163:e59c8e839560 3684 * @arg @ref LL_ADC_REG_RANK_8
AnnaBridge 163:e59c8e839560 3685 * @arg @ref LL_ADC_REG_RANK_9
AnnaBridge 163:e59c8e839560 3686 * @arg @ref LL_ADC_REG_RANK_10
AnnaBridge 163:e59c8e839560 3687 * @arg @ref LL_ADC_REG_RANK_11
AnnaBridge 163:e59c8e839560 3688 * @arg @ref LL_ADC_REG_RANK_12
AnnaBridge 163:e59c8e839560 3689 * @arg @ref LL_ADC_REG_RANK_13
AnnaBridge 163:e59c8e839560 3690 * @arg @ref LL_ADC_REG_RANK_14
AnnaBridge 163:e59c8e839560 3691 * @arg @ref LL_ADC_REG_RANK_15
AnnaBridge 163:e59c8e839560 3692 * @arg @ref LL_ADC_REG_RANK_16
AnnaBridge 163:e59c8e839560 3693 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 3694 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 3695 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 3696 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 3697 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 3698 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 3699 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 3700 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 3701 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 3702 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 3703 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 3704 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 3705 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 3706 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 3707 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 3708 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 3709 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 3710 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 3711 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 3712 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 3713 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 3714 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 3715 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 3716 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 3717 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 3718 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 3719 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 3720 *
AnnaBridge 163:e59c8e839560 3721 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 3722 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 3723 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 3724 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 3725 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 3726 * only one ADC instance is allowed to be connected to VrefInt at the same time.\n
AnnaBridge 163:e59c8e839560 3727 * (1, 2, 3, 4, 5) For ADC channel read back from ADC register,
AnnaBridge 163:e59c8e839560 3728 * comparison with internal channel parameter to be done
AnnaBridge 163:e59c8e839560 3729 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 163:e59c8e839560 3730 */
AnnaBridge 163:e59c8e839560 3731 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 3732 {
AnnaBridge 163:e59c8e839560 3733 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 3734
AnnaBridge 163:e59c8e839560 3735 return (uint32_t) (READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 3736 ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 << (Rank & ADC_REG_RANK_ID_SQRX_MASK))
AnnaBridge 163:e59c8e839560 3737 << (ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS - (Rank & ADC_REG_RANK_ID_SQRX_MASK))
AnnaBridge 163:e59c8e839560 3738 );
AnnaBridge 163:e59c8e839560 3739 }
AnnaBridge 163:e59c8e839560 3740
AnnaBridge 163:e59c8e839560 3741 /**
AnnaBridge 163:e59c8e839560 3742 * @brief Set ADC continuous conversion mode on ADC group regular.
AnnaBridge 163:e59c8e839560 3743 * @note Description of ADC continuous conversion mode:
AnnaBridge 163:e59c8e839560 3744 * - single mode: one conversion per trigger
AnnaBridge 163:e59c8e839560 3745 * - continuous mode: after the first trigger, following
AnnaBridge 163:e59c8e839560 3746 * conversions launched successively automatically.
AnnaBridge 163:e59c8e839560 3747 * @note It is not possible to enable both ADC group regular
AnnaBridge 163:e59c8e839560 3748 * continuous mode and sequencer discontinuous mode.
AnnaBridge 163:e59c8e839560 3749 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 3750 * ADC state:
AnnaBridge 163:e59c8e839560 3751 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 3752 * on group regular.
AnnaBridge 163:e59c8e839560 3753 * @rmtoll CFGR CONT LL_ADC_REG_SetContinuousMode
AnnaBridge 163:e59c8e839560 3754 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3755 * @param Continuous This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3756 * @arg @ref LL_ADC_REG_CONV_SINGLE
AnnaBridge 163:e59c8e839560 3757 * @arg @ref LL_ADC_REG_CONV_CONTINUOUS
AnnaBridge 163:e59c8e839560 3758 * @retval None
AnnaBridge 163:e59c8e839560 3759 */
AnnaBridge 163:e59c8e839560 3760 __STATIC_INLINE void LL_ADC_REG_SetContinuousMode(ADC_TypeDef *ADCx, uint32_t Continuous)
AnnaBridge 163:e59c8e839560 3761 {
AnnaBridge 163:e59c8e839560 3762 MODIFY_REG(ADCx->CFGR, ADC_CFGR_CONT, Continuous);
AnnaBridge 163:e59c8e839560 3763 }
AnnaBridge 163:e59c8e839560 3764
AnnaBridge 163:e59c8e839560 3765 /**
AnnaBridge 163:e59c8e839560 3766 * @brief Get ADC continuous conversion mode on ADC group regular.
AnnaBridge 163:e59c8e839560 3767 * @note Description of ADC continuous conversion mode:
AnnaBridge 163:e59c8e839560 3768 * - single mode: one conversion per trigger
AnnaBridge 163:e59c8e839560 3769 * - continuous mode: after the first trigger, following
AnnaBridge 163:e59c8e839560 3770 * conversions launched successively automatically.
AnnaBridge 163:e59c8e839560 3771 * @rmtoll CFGR CONT LL_ADC_REG_GetContinuousMode
AnnaBridge 163:e59c8e839560 3772 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3773 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 3774 * @arg @ref LL_ADC_REG_CONV_SINGLE
AnnaBridge 163:e59c8e839560 3775 * @arg @ref LL_ADC_REG_CONV_CONTINUOUS
AnnaBridge 163:e59c8e839560 3776 */
AnnaBridge 163:e59c8e839560 3777 __STATIC_INLINE uint32_t LL_ADC_REG_GetContinuousMode(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 3778 {
AnnaBridge 163:e59c8e839560 3779 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_CONT));
AnnaBridge 163:e59c8e839560 3780 }
AnnaBridge 163:e59c8e839560 3781
AnnaBridge 163:e59c8e839560 3782 /**
AnnaBridge 163:e59c8e839560 3783 * @brief Set ADC group regular conversion data transfer: no transfer or
AnnaBridge 163:e59c8e839560 3784 * transfer by DMA, and DMA requests mode.
AnnaBridge 163:e59c8e839560 3785 * @note If transfer by DMA selected, specifies the DMA requests
AnnaBridge 163:e59c8e839560 3786 * mode:
AnnaBridge 163:e59c8e839560 3787 * - Limited mode (One shot mode): DMA transfer requests are stopped
AnnaBridge 163:e59c8e839560 3788 * when number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 3789 * ADC conversions) is reached.
AnnaBridge 163:e59c8e839560 3790 * This ADC mode is intended to be used with DMA mode non-circular.
AnnaBridge 163:e59c8e839560 3791 * - Unlimited mode: DMA transfer requests are unlimited,
AnnaBridge 163:e59c8e839560 3792 * whatever number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 3793 * ADC conversions).
AnnaBridge 163:e59c8e839560 3794 * This ADC mode is intended to be used with DMA mode circular.
AnnaBridge 163:e59c8e839560 3795 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
AnnaBridge 163:e59c8e839560 3796 * mode non-circular:
AnnaBridge 163:e59c8e839560 3797 * when DMA transfers size will be reached, DMA will stop transfers of
AnnaBridge 163:e59c8e839560 3798 * ADC conversions data ADC will raise an overrun error
AnnaBridge 163:e59c8e839560 3799 * (overrun flag and interruption if enabled).
AnnaBridge 163:e59c8e839560 3800 * @note For devices with several ADC instances: ADC multimode DMA
AnnaBridge 163:e59c8e839560 3801 * settings are available using function @ref LL_ADC_SetMultiDMATransfer().
AnnaBridge 163:e59c8e839560 3802 * @note To configure DMA source address (peripheral address),
AnnaBridge 163:e59c8e839560 3803 * use function @ref LL_ADC_DMA_GetRegAddr().
AnnaBridge 163:e59c8e839560 3804 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 3805 * ADC state:
AnnaBridge 163:e59c8e839560 3806 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 3807 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 3808 * @rmtoll CFGR DMAEN LL_ADC_REG_SetDMATransfer\n
AnnaBridge 163:e59c8e839560 3809 * CFGR DMACFG LL_ADC_REG_SetDMATransfer
AnnaBridge 163:e59c8e839560 3810 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3811 * @param DMATransfer This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3812 * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE
AnnaBridge 163:e59c8e839560 3813 * @arg @ref LL_ADC_REG_DMA_TRANSFER_LIMITED
AnnaBridge 163:e59c8e839560 3814 * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED
AnnaBridge 163:e59c8e839560 3815 * @retval None
AnnaBridge 163:e59c8e839560 3816 */
AnnaBridge 163:e59c8e839560 3817 __STATIC_INLINE void LL_ADC_REG_SetDMATransfer(ADC_TypeDef *ADCx, uint32_t DMATransfer)
AnnaBridge 163:e59c8e839560 3818 {
AnnaBridge 163:e59c8e839560 3819 MODIFY_REG(ADCx->CFGR, ADC_CFGR_DMAEN | ADC_CFGR_DMACFG, DMATransfer);
AnnaBridge 163:e59c8e839560 3820 }
AnnaBridge 163:e59c8e839560 3821
AnnaBridge 163:e59c8e839560 3822 /**
AnnaBridge 163:e59c8e839560 3823 * @brief Get ADC group regular conversion data transfer: no transfer or
AnnaBridge 163:e59c8e839560 3824 * transfer by DMA, and DMA requests mode.
AnnaBridge 163:e59c8e839560 3825 * @note If transfer by DMA selected, specifies the DMA requests
AnnaBridge 163:e59c8e839560 3826 * mode:
AnnaBridge 163:e59c8e839560 3827 * - Limited mode (One shot mode): DMA transfer requests are stopped
AnnaBridge 163:e59c8e839560 3828 * when number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 3829 * ADC conversions) is reached.
AnnaBridge 163:e59c8e839560 3830 * This ADC mode is intended to be used with DMA mode non-circular.
AnnaBridge 163:e59c8e839560 3831 * - Unlimited mode: DMA transfer requests are unlimited,
AnnaBridge 163:e59c8e839560 3832 * whatever number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 3833 * ADC conversions).
AnnaBridge 163:e59c8e839560 3834 * This ADC mode is intended to be used with DMA mode circular.
AnnaBridge 163:e59c8e839560 3835 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
AnnaBridge 163:e59c8e839560 3836 * mode non-circular:
AnnaBridge 163:e59c8e839560 3837 * when DMA transfers size will be reached, DMA will stop transfers of
AnnaBridge 163:e59c8e839560 3838 * ADC conversions data ADC will raise an overrun error
AnnaBridge 163:e59c8e839560 3839 * (overrun flag and interruption if enabled).
AnnaBridge 163:e59c8e839560 3840 * @note For devices with several ADC instances: ADC multimode DMA
AnnaBridge 163:e59c8e839560 3841 * settings are available using function @ref LL_ADC_GetMultiDMATransfer().
AnnaBridge 163:e59c8e839560 3842 * @note To configure DMA source address (peripheral address),
AnnaBridge 163:e59c8e839560 3843 * use function @ref LL_ADC_DMA_GetRegAddr().
AnnaBridge 163:e59c8e839560 3844 * @rmtoll CFGR DMAEN LL_ADC_REG_GetDMATransfer\n
AnnaBridge 163:e59c8e839560 3845 * CFGR DMACFG LL_ADC_REG_GetDMATransfer
AnnaBridge 163:e59c8e839560 3846 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3847 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 3848 * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE
AnnaBridge 163:e59c8e839560 3849 * @arg @ref LL_ADC_REG_DMA_TRANSFER_LIMITED
AnnaBridge 163:e59c8e839560 3850 * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED
AnnaBridge 163:e59c8e839560 3851 */
AnnaBridge 163:e59c8e839560 3852 __STATIC_INLINE uint32_t LL_ADC_REG_GetDMATransfer(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 3853 {
AnnaBridge 163:e59c8e839560 3854 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DMAEN | ADC_CFGR_DMACFG));
AnnaBridge 163:e59c8e839560 3855 }
AnnaBridge 163:e59c8e839560 3856
AnnaBridge 163:e59c8e839560 3857 /**
AnnaBridge 163:e59c8e839560 3858 * @brief Set ADC group regular behavior in case of overrun:
AnnaBridge 163:e59c8e839560 3859 * data preserved or overwritten.
AnnaBridge 163:e59c8e839560 3860 * @note Compatibility with devices without feature overrun:
AnnaBridge 163:e59c8e839560 3861 * other devices without this feature have a behavior
AnnaBridge 163:e59c8e839560 3862 * equivalent to data overwritten.
AnnaBridge 163:e59c8e839560 3863 * The default setting of overrun is data preserved.
AnnaBridge 163:e59c8e839560 3864 * Therefore, for compatibility with all devices, parameter
AnnaBridge 163:e59c8e839560 3865 * overrun should be set to data overwritten.
AnnaBridge 163:e59c8e839560 3866 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 3867 * ADC state:
AnnaBridge 163:e59c8e839560 3868 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 3869 * on group regular.
AnnaBridge 163:e59c8e839560 3870 * @rmtoll CFGR OVRMOD LL_ADC_REG_SetOverrun
AnnaBridge 163:e59c8e839560 3871 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3872 * @param Overrun This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3873 * @arg @ref LL_ADC_REG_OVR_DATA_PRESERVED
AnnaBridge 163:e59c8e839560 3874 * @arg @ref LL_ADC_REG_OVR_DATA_OVERWRITTEN
AnnaBridge 163:e59c8e839560 3875 * @retval None
AnnaBridge 163:e59c8e839560 3876 */
AnnaBridge 163:e59c8e839560 3877 __STATIC_INLINE void LL_ADC_REG_SetOverrun(ADC_TypeDef *ADCx, uint32_t Overrun)
AnnaBridge 163:e59c8e839560 3878 {
AnnaBridge 163:e59c8e839560 3879 MODIFY_REG(ADCx->CFGR, ADC_CFGR_OVRMOD, Overrun);
AnnaBridge 163:e59c8e839560 3880 }
AnnaBridge 163:e59c8e839560 3881
AnnaBridge 163:e59c8e839560 3882 /**
AnnaBridge 163:e59c8e839560 3883 * @brief Get ADC group regular behavior in case of overrun:
AnnaBridge 163:e59c8e839560 3884 * data preserved or overwritten.
AnnaBridge 163:e59c8e839560 3885 * @rmtoll CFGR OVRMOD LL_ADC_REG_GetOverrun
AnnaBridge 163:e59c8e839560 3886 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3887 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 3888 * @arg @ref LL_ADC_REG_OVR_DATA_PRESERVED
AnnaBridge 163:e59c8e839560 3889 * @arg @ref LL_ADC_REG_OVR_DATA_OVERWRITTEN
AnnaBridge 163:e59c8e839560 3890 */
AnnaBridge 163:e59c8e839560 3891 __STATIC_INLINE uint32_t LL_ADC_REG_GetOverrun(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 3892 {
AnnaBridge 163:e59c8e839560 3893 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_OVRMOD));
AnnaBridge 163:e59c8e839560 3894 }
AnnaBridge 163:e59c8e839560 3895
AnnaBridge 163:e59c8e839560 3896 /**
AnnaBridge 163:e59c8e839560 3897 * @}
AnnaBridge 163:e59c8e839560 3898 */
AnnaBridge 163:e59c8e839560 3899
AnnaBridge 163:e59c8e839560 3900 /** @defgroup ADC_LL_EF_Configuration_ADC_Group_Injected Configuration of ADC hierarchical scope: group injected
AnnaBridge 163:e59c8e839560 3901 * @{
AnnaBridge 163:e59c8e839560 3902 */
AnnaBridge 163:e59c8e839560 3903
AnnaBridge 163:e59c8e839560 3904 /**
AnnaBridge 163:e59c8e839560 3905 * @brief Set ADC group injected conversion trigger source:
AnnaBridge 163:e59c8e839560 3906 * internal (SW start) or from external IP (timer event,
AnnaBridge 163:e59c8e839560 3907 * external interrupt line).
AnnaBridge 163:e59c8e839560 3908 * @note On this STM32 serie, setting trigger source to external trigger
AnnaBridge 163:e59c8e839560 3909 * also set trigger polarity to rising edge
AnnaBridge 163:e59c8e839560 3910 * (default setting for compatibility with some ADC on other
AnnaBridge 163:e59c8e839560 3911 * STM32 families having this setting set by HW default value).
AnnaBridge 163:e59c8e839560 3912 * In case of need to modify trigger edge, use
AnnaBridge 163:e59c8e839560 3913 * function @ref LL_ADC_INJ_SetTriggerEdge().
AnnaBridge 163:e59c8e839560 3914 * @note Caution to ADC group injected contexts queue: On this STM32 serie,
AnnaBridge 163:e59c8e839560 3915 * using successively several times this function will appear has
AnnaBridge 163:e59c8e839560 3916 * having no effect.
AnnaBridge 163:e59c8e839560 3917 * This is due to ADC group injected contexts queue (this feature
AnnaBridge 163:e59c8e839560 3918 * cannot be disabled on this STM32 serie).
AnnaBridge 163:e59c8e839560 3919 * To set several features of ADC group injected, use
AnnaBridge 163:e59c8e839560 3920 * function @ref LL_ADC_INJ_ConfigQueueContext().
AnnaBridge 163:e59c8e839560 3921 * @note Availability of parameters of trigger sources from timer
AnnaBridge 163:e59c8e839560 3922 * depends on timers availability on the selected device.
AnnaBridge 163:e59c8e839560 3923 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 3924 * ADC state:
AnnaBridge 163:e59c8e839560 3925 * ADC must not be disabled. Can be enabled with or without conversion
AnnaBridge 163:e59c8e839560 3926 * on going on either groups regular or injected.
AnnaBridge 163:e59c8e839560 3927 * @rmtoll JSQR JEXTSEL LL_ADC_INJ_SetTriggerSource\n
AnnaBridge 163:e59c8e839560 3928 * JSQR JEXTEN LL_ADC_INJ_SetTriggerSource
AnnaBridge 163:e59c8e839560 3929 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 3930 * @param TriggerSource This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 3931 * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE
AnnaBridge 163:e59c8e839560 3932 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO
AnnaBridge 163:e59c8e839560 3933 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2
AnnaBridge 163:e59c8e839560 3934 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH3_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3935 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4
AnnaBridge 163:e59c8e839560 3936 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (3)(4)(5)
AnnaBridge 163:e59c8e839560 3937 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3938 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3939 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (3)(4)(5)
AnnaBridge 163:e59c8e839560 3940 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3941 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_TRGO (1)(2)(3)(4)(5)
AnnaBridge 163:e59c8e839560 3942 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1 (3)(4)(5)
AnnaBridge 163:e59c8e839560 3943 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3944 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3 (3)(4)(5)
AnnaBridge 163:e59c8e839560 3945 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3946 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (3)(4)(5)
AnnaBridge 163:e59c8e839560 3947 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4_ADC12 (1)(2)(3)(4)(5) (7)
AnnaBridge 163:e59c8e839560 3948 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (3) (5)
AnnaBridge 163:e59c8e839560 3949 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3950 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3951 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH3_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3952 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH4_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3953 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO (3)(4)(5)
AnnaBridge 163:e59c8e839560 3954 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3955 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM7_TRGO_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3956 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO (1)(2)
AnnaBridge 163:e59c8e839560 3957 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2 (1)(2)
AnnaBridge 163:e59c8e839560 3958 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH2_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3959 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3960 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 3961 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM15_TRGO
AnnaBridge 163:e59c8e839560 3962 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRGO_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3963 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRGO2_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3964 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_CH4_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 3965 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRG_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 3966 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRG2_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 3967 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_CH2_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 3968 * @arg @ref LL_ADC_INJ_TRIG_EXT_HRTIM_TRG2 (4)
AnnaBridge 163:e59c8e839560 3969 * @arg @ref LL_ADC_INJ_TRIG_EXT_HRTIM_TRG4 (4)
AnnaBridge 163:e59c8e839560 3970 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 3971 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 3972 *
AnnaBridge 163:e59c8e839560 3973 * (1) On STM32F3, parameter not available on all devices: among others, on STM32F303xE, STM32F398xx.\n
AnnaBridge 163:e59c8e839560 3974 * (2) On STM32F3, parameter not available on all devices: among others, on STM32F303xC, STM32F358xx.\n
AnnaBridge 163:e59c8e839560 3975 * (3) On STM32F3, parameter not available on all devices: among others, on STM32F303x8, STM32F328xx.\n
AnnaBridge 163:e59c8e839560 3976 * (4) On STM32F3, parameter not available on all devices: among others, on STM32F334x8.\n
AnnaBridge 163:e59c8e839560 3977 * (5) On STM32F3, parameter not available on all devices: among others, on STM32F302xC, STM32F302xE.\n
AnnaBridge 163:e59c8e839560 3978 * (6) On STM32F3, parameter not available on all devices: among others, on STM32F301x8, STM32F302x8, STM32F318xx.\n
AnnaBridge 163:e59c8e839560 3979 * (7) On STM32F3, parameter not available on all ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device).\n
AnnaBridge 163:e59c8e839560 3980 * (8) On STM32F3, parameter not available on all ADC instances: ADC3, ADC4 (for ADC instances ADCx available on the selected device).
AnnaBridge 163:e59c8e839560 3981 * @retval None
AnnaBridge 163:e59c8e839560 3982 */
AnnaBridge 163:e59c8e839560 3983 __STATIC_INLINE void LL_ADC_INJ_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource)
AnnaBridge 163:e59c8e839560 3984 {
AnnaBridge 163:e59c8e839560 3985 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN, TriggerSource);
AnnaBridge 163:e59c8e839560 3986 }
AnnaBridge 163:e59c8e839560 3987
AnnaBridge 163:e59c8e839560 3988 /**
AnnaBridge 163:e59c8e839560 3989 * @brief Get ADC group injected conversion trigger source:
AnnaBridge 163:e59c8e839560 3990 * internal (SW start) or from external IP (timer event,
AnnaBridge 163:e59c8e839560 3991 * external interrupt line).
AnnaBridge 163:e59c8e839560 3992 * @note To determine whether group injected trigger source is
AnnaBridge 163:e59c8e839560 3993 * internal (SW start) or external, without detail
AnnaBridge 163:e59c8e839560 3994 * of which peripheral is selected as external trigger,
AnnaBridge 163:e59c8e839560 3995 * (equivalent to
AnnaBridge 163:e59c8e839560 3996 * "if(LL_ADC_INJ_GetTriggerSource(ADC1) == LL_ADC_INJ_TRIG_SOFTWARE)")
AnnaBridge 163:e59c8e839560 3997 * use function @ref LL_ADC_INJ_IsTriggerSourceSWStart.
AnnaBridge 163:e59c8e839560 3998 * @note Availability of parameters of trigger sources from timer
AnnaBridge 163:e59c8e839560 3999 * depends on timers availability on the selected device.
AnnaBridge 163:e59c8e839560 4000 * @rmtoll JSQR JEXTSEL LL_ADC_INJ_GetTriggerSource\n
AnnaBridge 163:e59c8e839560 4001 * JSQR JEXTEN LL_ADC_INJ_GetTriggerSource
AnnaBridge 163:e59c8e839560 4002 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4003 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 4004 * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE
AnnaBridge 163:e59c8e839560 4005 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO
AnnaBridge 163:e59c8e839560 4006 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2
AnnaBridge 163:e59c8e839560 4007 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH3_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4008 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4
AnnaBridge 163:e59c8e839560 4009 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (3)(4)(5)
AnnaBridge 163:e59c8e839560 4010 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4011 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4012 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (3)(4)(5)
AnnaBridge 163:e59c8e839560 4013 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4014 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_TRGO (1)(2)(3)(4)(5)
AnnaBridge 163:e59c8e839560 4015 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1 (3)(4)(5)
AnnaBridge 163:e59c8e839560 4016 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4017 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3 (3)(4)(5)
AnnaBridge 163:e59c8e839560 4018 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4019 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (3)(4)(5)
AnnaBridge 163:e59c8e839560 4020 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4_ADC12 (1)(2)(3)(4)(5) (7)
AnnaBridge 163:e59c8e839560 4021 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (3) (5)
AnnaBridge 163:e59c8e839560 4022 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4023 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4024 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH3_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4025 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH4_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4026 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO (3)(4)(5)
AnnaBridge 163:e59c8e839560 4027 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4028 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM7_TRGO_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4029 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO (1)(2)
AnnaBridge 163:e59c8e839560 4030 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2 (1)(2)
AnnaBridge 163:e59c8e839560 4031 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH2_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4032 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4033 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4034 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM15_TRGO
AnnaBridge 163:e59c8e839560 4035 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRGO_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 4036 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRGO2_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 4037 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_CH4_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 4038 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRG_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 4039 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRG2_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 4040 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_CH2_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 4041 * @arg @ref LL_ADC_INJ_TRIG_EXT_HRTIM_TRG2 (4)
AnnaBridge 163:e59c8e839560 4042 * @arg @ref LL_ADC_INJ_TRIG_EXT_HRTIM_TRG4 (4)
AnnaBridge 163:e59c8e839560 4043 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 4044 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4045 *
AnnaBridge 163:e59c8e839560 4046 * (1) On STM32F3, parameter not available on all devices: among others, on STM32F303xE, STM32F398xx.\n
AnnaBridge 163:e59c8e839560 4047 * (2) On STM32F3, parameter not available on all devices: among others, on STM32F303xC, STM32F358xx.\n
AnnaBridge 163:e59c8e839560 4048 * (3) On STM32F3, parameter not available on all devices: among others, on STM32F303x8, STM32F328xx.\n
AnnaBridge 163:e59c8e839560 4049 * (4) On STM32F3, parameter not available on all devices: among others, on STM32F334x8.\n
AnnaBridge 163:e59c8e839560 4050 * (5) On STM32F3, parameter not available on all devices: among others, on STM32F302xC, STM32F302xE.\n
AnnaBridge 163:e59c8e839560 4051 * (6) On STM32F3, parameter not available on all devices: among others, on STM32F301x8, STM32F302x8, STM32F318xx.\n
AnnaBridge 163:e59c8e839560 4052 * (7) On STM32F3, parameter not available on all ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device).\n
AnnaBridge 163:e59c8e839560 4053 * (8) On STM32F3, parameter not available on all ADC instances: ADC3, ADC4 (for ADC instances ADCx available on the selected device).
AnnaBridge 163:e59c8e839560 4054 */
AnnaBridge 163:e59c8e839560 4055 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerSource(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 4056 {
AnnaBridge 163:e59c8e839560 4057 register uint32_t TriggerSource = READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN);
AnnaBridge 163:e59c8e839560 4058
AnnaBridge 163:e59c8e839560 4059 /* Value for shift of {0; 4; 8; 12} depending on value of bitfield */
AnnaBridge 163:e59c8e839560 4060 /* corresponding to ADC_JSQR_JEXTEN {0; 1; 2; 3}. */
AnnaBridge 163:e59c8e839560 4061 register uint32_t ShiftJexten = ((TriggerSource & ADC_JSQR_JEXTEN) >> (ADC_INJ_TRIG_EXTEN_BITOFFSET_POS - 2U));
AnnaBridge 163:e59c8e839560 4062
AnnaBridge 163:e59c8e839560 4063 /* Set bitfield corresponding to ADC_JSQR_JEXTEN and ADC_JSQR_JEXTSEL */
AnnaBridge 163:e59c8e839560 4064 /* to match with triggers literals definition. */
AnnaBridge 163:e59c8e839560 4065 return ((TriggerSource
AnnaBridge 163:e59c8e839560 4066 & (ADC_INJ_TRIG_SOURCE_MASK >> ShiftJexten) & ADC_JSQR_JEXTSEL)
AnnaBridge 163:e59c8e839560 4067 | ((ADC_INJ_TRIG_EDGE_MASK >> ShiftJexten) & ADC_JSQR_JEXTEN)
AnnaBridge 163:e59c8e839560 4068 );
AnnaBridge 163:e59c8e839560 4069 }
AnnaBridge 163:e59c8e839560 4070
AnnaBridge 163:e59c8e839560 4071 /**
AnnaBridge 163:e59c8e839560 4072 * @brief Get ADC group injected conversion trigger source internal (SW start)
AnnaBridge 163:e59c8e839560 4073 or external
AnnaBridge 163:e59c8e839560 4074 * @note In case of group injected trigger source set to external trigger,
AnnaBridge 163:e59c8e839560 4075 * to determine which peripheral is selected as external trigger,
AnnaBridge 163:e59c8e839560 4076 * use function @ref LL_ADC_INJ_GetTriggerSource.
AnnaBridge 163:e59c8e839560 4077 * @rmtoll JSQR JEXTEN LL_ADC_INJ_IsTriggerSourceSWStart
AnnaBridge 163:e59c8e839560 4078 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4079 * @retval Value "0" if trigger source external trigger
AnnaBridge 163:e59c8e839560 4080 * Value "1" if trigger source SW start.
AnnaBridge 163:e59c8e839560 4081 */
AnnaBridge 163:e59c8e839560 4082 __STATIC_INLINE uint32_t LL_ADC_INJ_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 4083 {
AnnaBridge 163:e59c8e839560 4084 return (READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTEN) == (LL_ADC_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTEN));
AnnaBridge 163:e59c8e839560 4085 }
AnnaBridge 163:e59c8e839560 4086
AnnaBridge 163:e59c8e839560 4087 /**
AnnaBridge 163:e59c8e839560 4088 * @brief Set ADC group injected conversion trigger polarity.
AnnaBridge 163:e59c8e839560 4089 * Applicable only for trigger source set to external trigger.
AnnaBridge 163:e59c8e839560 4090 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 4091 * ADC state:
AnnaBridge 163:e59c8e839560 4092 * ADC must not be disabled. Can be enabled with or without conversion
AnnaBridge 163:e59c8e839560 4093 * on going on either groups regular or injected.
AnnaBridge 163:e59c8e839560 4094 * @rmtoll JSQR JEXTEN LL_ADC_INJ_SetTriggerEdge
AnnaBridge 163:e59c8e839560 4095 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4096 * @param ExternalTriggerEdge This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4097 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING
AnnaBridge 163:e59c8e839560 4098 * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING
AnnaBridge 163:e59c8e839560 4099 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING
AnnaBridge 163:e59c8e839560 4100 * @retval None
AnnaBridge 163:e59c8e839560 4101 */
AnnaBridge 163:e59c8e839560 4102 __STATIC_INLINE void LL_ADC_INJ_SetTriggerEdge(ADC_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
AnnaBridge 163:e59c8e839560 4103 {
AnnaBridge 163:e59c8e839560 4104 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JEXTEN, ExternalTriggerEdge);
AnnaBridge 163:e59c8e839560 4105 }
AnnaBridge 163:e59c8e839560 4106
AnnaBridge 163:e59c8e839560 4107 /**
AnnaBridge 163:e59c8e839560 4108 * @brief Get ADC group injected conversion trigger polarity.
AnnaBridge 163:e59c8e839560 4109 * Applicable only for trigger source set to external trigger.
AnnaBridge 163:e59c8e839560 4110 * @rmtoll JSQR JEXTEN LL_ADC_INJ_GetTriggerEdge
AnnaBridge 163:e59c8e839560 4111 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4112 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 4113 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING
AnnaBridge 163:e59c8e839560 4114 * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING
AnnaBridge 163:e59c8e839560 4115 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING
AnnaBridge 163:e59c8e839560 4116 */
AnnaBridge 163:e59c8e839560 4117 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerEdge(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 4118 {
AnnaBridge 163:e59c8e839560 4119 return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTEN));
AnnaBridge 163:e59c8e839560 4120 }
AnnaBridge 163:e59c8e839560 4121
AnnaBridge 163:e59c8e839560 4122 /**
AnnaBridge 163:e59c8e839560 4123 * @brief Set ADC group injected sequencer length and scan direction.
AnnaBridge 163:e59c8e839560 4124 * @note This function performs configuration of:
AnnaBridge 163:e59c8e839560 4125 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 163:e59c8e839560 4126 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 4127 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 163:e59c8e839560 4128 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 163:e59c8e839560 4129 * ADC conversion on only 1 channel.
AnnaBridge 163:e59c8e839560 4130 * @note Caution to ADC group injected contexts queue: On this STM32 serie,
AnnaBridge 163:e59c8e839560 4131 * using successively several times this function will appear has
AnnaBridge 163:e59c8e839560 4132 * having no effect.
AnnaBridge 163:e59c8e839560 4133 * This is due to ADC group injected contexts queue (this feature
AnnaBridge 163:e59c8e839560 4134 * cannot be disabled on this STM32 serie).
AnnaBridge 163:e59c8e839560 4135 * To set several features of ADC group injected, use
AnnaBridge 163:e59c8e839560 4136 * function @ref LL_ADC_INJ_ConfigQueueContext().
AnnaBridge 163:e59c8e839560 4137 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 4138 * ADC state:
AnnaBridge 163:e59c8e839560 4139 * ADC must not be disabled. Can be enabled with or without conversion
AnnaBridge 163:e59c8e839560 4140 * on going on either groups regular or injected.
AnnaBridge 163:e59c8e839560 4141 * @rmtoll JSQR JL LL_ADC_INJ_SetSequencerLength
AnnaBridge 163:e59c8e839560 4142 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4143 * @param SequencerNbRanks This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4144 * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 4145 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 163:e59c8e839560 4146 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 163:e59c8e839560 4147 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 163:e59c8e839560 4148 * @retval None
AnnaBridge 163:e59c8e839560 4149 */
AnnaBridge 163:e59c8e839560 4150 __STATIC_INLINE void LL_ADC_INJ_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks)
AnnaBridge 163:e59c8e839560 4151 {
AnnaBridge 163:e59c8e839560 4152 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JL, SequencerNbRanks);
AnnaBridge 163:e59c8e839560 4153 }
AnnaBridge 163:e59c8e839560 4154
AnnaBridge 163:e59c8e839560 4155 /**
AnnaBridge 163:e59c8e839560 4156 * @brief Get ADC group injected sequencer length and scan direction.
AnnaBridge 163:e59c8e839560 4157 * @note This function retrieves:
AnnaBridge 163:e59c8e839560 4158 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 163:e59c8e839560 4159 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 4160 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 163:e59c8e839560 4161 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 163:e59c8e839560 4162 * ADC conversion on only 1 channel.
AnnaBridge 163:e59c8e839560 4163 * @rmtoll JSQR JL LL_ADC_INJ_GetSequencerLength
AnnaBridge 163:e59c8e839560 4164 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4165 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 4166 * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 4167 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 163:e59c8e839560 4168 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 163:e59c8e839560 4169 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 163:e59c8e839560 4170 */
AnnaBridge 163:e59c8e839560 4171 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerLength(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 4172 {
AnnaBridge 163:e59c8e839560 4173 return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JL));
AnnaBridge 163:e59c8e839560 4174 }
AnnaBridge 163:e59c8e839560 4175
AnnaBridge 163:e59c8e839560 4176 /**
AnnaBridge 163:e59c8e839560 4177 * @brief Set ADC group injected sequencer discontinuous mode:
AnnaBridge 163:e59c8e839560 4178 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 163:e59c8e839560 4179 * number of ranks.
AnnaBridge 163:e59c8e839560 4180 * @note It is not possible to enable both ADC group injected
AnnaBridge 163:e59c8e839560 4181 * auto-injected mode and sequencer discontinuous mode.
AnnaBridge 163:e59c8e839560 4182 * @rmtoll CFGR JDISCEN LL_ADC_INJ_SetSequencerDiscont
AnnaBridge 163:e59c8e839560 4183 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4184 * @param SeqDiscont This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4185 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE
AnnaBridge 163:e59c8e839560 4186 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK
AnnaBridge 163:e59c8e839560 4187 * @retval None
AnnaBridge 163:e59c8e839560 4188 */
AnnaBridge 163:e59c8e839560 4189 __STATIC_INLINE void LL_ADC_INJ_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont)
AnnaBridge 163:e59c8e839560 4190 {
AnnaBridge 163:e59c8e839560 4191 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JDISCEN, SeqDiscont);
AnnaBridge 163:e59c8e839560 4192 }
AnnaBridge 163:e59c8e839560 4193
AnnaBridge 163:e59c8e839560 4194 /**
AnnaBridge 163:e59c8e839560 4195 * @brief Get ADC group injected sequencer discontinuous mode:
AnnaBridge 163:e59c8e839560 4196 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 163:e59c8e839560 4197 * number of ranks.
AnnaBridge 163:e59c8e839560 4198 * @rmtoll CFGR JDISCEN LL_ADC_INJ_GetSequencerDiscont
AnnaBridge 163:e59c8e839560 4199 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4200 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 4201 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE
AnnaBridge 163:e59c8e839560 4202 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK
AnnaBridge 163:e59c8e839560 4203 */
AnnaBridge 163:e59c8e839560 4204 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerDiscont(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 4205 {
AnnaBridge 163:e59c8e839560 4206 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JDISCEN));
AnnaBridge 163:e59c8e839560 4207 }
AnnaBridge 163:e59c8e839560 4208
AnnaBridge 163:e59c8e839560 4209 /**
AnnaBridge 163:e59c8e839560 4210 * @brief Set ADC group injected sequence: channel on the selected
AnnaBridge 163:e59c8e839560 4211 * sequence rank.
AnnaBridge 163:e59c8e839560 4212 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 163:e59c8e839560 4213 * Refer to device datasheet for channels availability.
AnnaBridge 163:e59c8e839560 4214 * @note On this STM32 serie, to measure internal channels (VrefInt,
AnnaBridge 163:e59c8e839560 4215 * TempSensor, ...), measurement paths to internal channels must be
AnnaBridge 163:e59c8e839560 4216 * enabled separately.
AnnaBridge 163:e59c8e839560 4217 * This can be done using function @ref LL_ADC_SetCommonPathInternalCh().
AnnaBridge 163:e59c8e839560 4218 * @note Caution to ADC group injected contexts queue: On this STM32 serie,
AnnaBridge 163:e59c8e839560 4219 * using successively several times this function will appear has
AnnaBridge 163:e59c8e839560 4220 * having no effect.
AnnaBridge 163:e59c8e839560 4221 * This is due to ADC group injected contexts queue (this feature
AnnaBridge 163:e59c8e839560 4222 * cannot be disabled on this STM32 serie).
AnnaBridge 163:e59c8e839560 4223 * To set several features of ADC group injected, use
AnnaBridge 163:e59c8e839560 4224 * function @ref LL_ADC_INJ_ConfigQueueContext().
AnnaBridge 163:e59c8e839560 4225 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 4226 * ADC state:
AnnaBridge 163:e59c8e839560 4227 * ADC must not be disabled. Can be enabled with or without conversion
AnnaBridge 163:e59c8e839560 4228 * on going on either groups regular or injected.
AnnaBridge 163:e59c8e839560 4229 * @rmtoll JSQR JSQ1 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 4230 * JSQR JSQ2 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 4231 * JSQR JSQ3 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 4232 * JSQR JSQ4 LL_ADC_INJ_SetSequencerRanks
AnnaBridge 163:e59c8e839560 4233 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4234 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4235 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 4236 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 4237 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 4238 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 4239 * @param Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4240 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 4241 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 4242 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 4243 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 4244 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 4245 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 4246 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 4247 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 4248 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 4249 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 4250 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 4251 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 4252 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 4253 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 4254 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 4255 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 4256 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 4257 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 4258 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 4259 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 4260 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 4261 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 4262 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 4263 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 4264 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 4265 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 4266 *
AnnaBridge 163:e59c8e839560 4267 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 4268 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 4269 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 4270 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 4271 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 4272 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 4273 * @retval None
AnnaBridge 163:e59c8e839560 4274 */
AnnaBridge 163:e59c8e839560 4275 __STATIC_INLINE void LL_ADC_INJ_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
AnnaBridge 163:e59c8e839560 4276 {
AnnaBridge 163:e59c8e839560 4277 /* Set bits with content of parameter "Channel" with bits position */
AnnaBridge 163:e59c8e839560 4278 /* in register depending on parameter "Rank". */
AnnaBridge 163:e59c8e839560 4279 /* Parameters "Rank" and "Channel" are used with masks because containing */
AnnaBridge 163:e59c8e839560 4280 /* other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 4281 MODIFY_REG(ADCx->JSQR,
AnnaBridge 163:e59c8e839560 4282 ADC_CHANNEL_ID_NUMBER_MASK >> (ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS - (Rank & ADC_INJ_RANK_ID_JSQR_MASK)),
AnnaBridge 163:e59c8e839560 4283 (Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> (ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS - (Rank & ADC_INJ_RANK_ID_JSQR_MASK)));
AnnaBridge 163:e59c8e839560 4284 }
AnnaBridge 163:e59c8e839560 4285
AnnaBridge 163:e59c8e839560 4286 /**
AnnaBridge 163:e59c8e839560 4287 * @brief Get ADC group injected sequence: channel on the selected
AnnaBridge 163:e59c8e839560 4288 * sequence rank.
AnnaBridge 163:e59c8e839560 4289 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 163:e59c8e839560 4290 * Refer to device datasheet for channels availability.
AnnaBridge 163:e59c8e839560 4291 * @note Usage of the returned channel number:
AnnaBridge 163:e59c8e839560 4292 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 163:e59c8e839560 4293 * the returned channel number is only partly formatted on definition
AnnaBridge 163:e59c8e839560 4294 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 163:e59c8e839560 4295 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 163:e59c8e839560 4296 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 4297 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 163:e59c8e839560 4298 * as parameter for another function.
AnnaBridge 163:e59c8e839560 4299 * - To get the channel number in decimal format:
AnnaBridge 163:e59c8e839560 4300 * process the returned value with the helper macro
AnnaBridge 163:e59c8e839560 4301 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 4302 * @rmtoll JSQR JSQ1 LL_ADC_INJ_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 4303 * JSQR JSQ2 LL_ADC_INJ_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 4304 * JSQR JSQ3 LL_ADC_INJ_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 4305 * JSQR JSQ4 LL_ADC_INJ_GetSequencerRanks
AnnaBridge 163:e59c8e839560 4306 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4307 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4308 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 4309 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 4310 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 4311 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 4312 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 4313 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 4314 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 4315 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 4316 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 4317 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 4318 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 4319 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 4320 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 4321 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 4322 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 4323 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 4324 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 4325 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 4326 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 4327 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 4328 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 4329 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 4330 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 4331 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 4332 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 4333 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 4334 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 4335 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 4336 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 4337 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 4338 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 4339 *
AnnaBridge 163:e59c8e839560 4340 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 4341 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 4342 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 4343 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 4344 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 4345 * only one ADC instance is allowed to be connected to VrefInt at the same time.\n
AnnaBridge 163:e59c8e839560 4346 * (1, 2, 3, 4, 5) For ADC channel read back from ADC register,
AnnaBridge 163:e59c8e839560 4347 * comparison with internal channel parameter to be done
AnnaBridge 163:e59c8e839560 4348 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 163:e59c8e839560 4349 */
AnnaBridge 163:e59c8e839560 4350 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 4351 {
AnnaBridge 163:e59c8e839560 4352 return (uint32_t)(READ_BIT(ADCx->JSQR,
AnnaBridge 163:e59c8e839560 4353 ADC_CHANNEL_ID_NUMBER_MASK >> (ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS - (Rank & ADC_INJ_RANK_ID_JSQR_MASK)))
AnnaBridge 163:e59c8e839560 4354 << (ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS - (Rank & ADC_INJ_RANK_ID_JSQR_MASK))
AnnaBridge 163:e59c8e839560 4355 );
AnnaBridge 163:e59c8e839560 4356 }
AnnaBridge 163:e59c8e839560 4357
AnnaBridge 163:e59c8e839560 4358 /**
AnnaBridge 163:e59c8e839560 4359 * @brief Set ADC group injected conversion trigger:
AnnaBridge 163:e59c8e839560 4360 * independent or from ADC group regular.
AnnaBridge 163:e59c8e839560 4361 * @note This mode can be used to extend number of data registers
AnnaBridge 163:e59c8e839560 4362 * updated after one ADC conversion trigger and with data
AnnaBridge 163:e59c8e839560 4363 * permanently kept (not erased by successive conversions of scan of
AnnaBridge 163:e59c8e839560 4364 * ADC sequencer ranks), up to 5 data registers:
AnnaBridge 163:e59c8e839560 4365 * 1 data register on ADC group regular, 4 data registers
AnnaBridge 163:e59c8e839560 4366 * on ADC group injected.
AnnaBridge 163:e59c8e839560 4367 * @note If ADC group injected injected trigger source is set to an
AnnaBridge 163:e59c8e839560 4368 * external trigger, this feature must be must be set to
AnnaBridge 163:e59c8e839560 4369 * independent trigger.
AnnaBridge 163:e59c8e839560 4370 * ADC group injected automatic trigger is compliant only with
AnnaBridge 163:e59c8e839560 4371 * group injected trigger source set to SW start, without any
AnnaBridge 163:e59c8e839560 4372 * further action on ADC group injected conversion start or stop:
AnnaBridge 163:e59c8e839560 4373 * in this case, ADC group injected is controlled only
AnnaBridge 163:e59c8e839560 4374 * from ADC group regular.
AnnaBridge 163:e59c8e839560 4375 * @note It is not possible to enable both ADC group injected
AnnaBridge 163:e59c8e839560 4376 * auto-injected mode and sequencer discontinuous mode.
AnnaBridge 163:e59c8e839560 4377 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 4378 * ADC state:
AnnaBridge 163:e59c8e839560 4379 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 4380 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 4381 * @rmtoll CFGR JAUTO LL_ADC_INJ_SetTrigAuto
AnnaBridge 163:e59c8e839560 4382 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4383 * @param TrigAuto This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4384 * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT
AnnaBridge 163:e59c8e839560 4385 * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR
AnnaBridge 163:e59c8e839560 4386 * @retval None
AnnaBridge 163:e59c8e839560 4387 */
AnnaBridge 163:e59c8e839560 4388 __STATIC_INLINE void LL_ADC_INJ_SetTrigAuto(ADC_TypeDef *ADCx, uint32_t TrigAuto)
AnnaBridge 163:e59c8e839560 4389 {
AnnaBridge 163:e59c8e839560 4390 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JAUTO, TrigAuto);
AnnaBridge 163:e59c8e839560 4391 }
AnnaBridge 163:e59c8e839560 4392
AnnaBridge 163:e59c8e839560 4393 /**
AnnaBridge 163:e59c8e839560 4394 * @brief Get ADC group injected conversion trigger:
AnnaBridge 163:e59c8e839560 4395 * independent or from ADC group regular.
AnnaBridge 163:e59c8e839560 4396 * @rmtoll CFGR JAUTO LL_ADC_INJ_GetTrigAuto
AnnaBridge 163:e59c8e839560 4397 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4398 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 4399 * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT
AnnaBridge 163:e59c8e839560 4400 * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR
AnnaBridge 163:e59c8e839560 4401 */
AnnaBridge 163:e59c8e839560 4402 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTrigAuto(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 4403 {
AnnaBridge 163:e59c8e839560 4404 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JAUTO));
AnnaBridge 163:e59c8e839560 4405 }
AnnaBridge 163:e59c8e839560 4406
AnnaBridge 163:e59c8e839560 4407 /**
AnnaBridge 163:e59c8e839560 4408 * @brief Set ADC group injected contexts queue mode.
AnnaBridge 163:e59c8e839560 4409 * @note A context is a setting of group injected sequencer:
AnnaBridge 163:e59c8e839560 4410 * - group injected trigger
AnnaBridge 163:e59c8e839560 4411 * - sequencer length
AnnaBridge 163:e59c8e839560 4412 * - sequencer ranks
AnnaBridge 163:e59c8e839560 4413 * If contexts queue is disabled:
AnnaBridge 163:e59c8e839560 4414 * - only 1 sequence can be configured
AnnaBridge 163:e59c8e839560 4415 * and is active perpetually.
AnnaBridge 163:e59c8e839560 4416 * If contexts queue is enabled:
AnnaBridge 163:e59c8e839560 4417 * - up to 2 contexts can be queued
AnnaBridge 163:e59c8e839560 4418 * and are checked in and out as a FIFO stack (first-in, first-out).
AnnaBridge 163:e59c8e839560 4419 * - If a new context is set when queues is full, error is triggered
AnnaBridge 163:e59c8e839560 4420 * by interruption "Injected Queue Overflow".
AnnaBridge 163:e59c8e839560 4421 * - Two behaviors are possible when all contexts have been processed:
AnnaBridge 163:e59c8e839560 4422 * the contexts queue can maintain the last context active perpetually
AnnaBridge 163:e59c8e839560 4423 * or can be empty and injected group triggers are disabled.
AnnaBridge 163:e59c8e839560 4424 * - Triggers can be only external (not internal SW start)
AnnaBridge 163:e59c8e839560 4425 * - Caution: The sequence must be fully configured in one time
AnnaBridge 163:e59c8e839560 4426 * (one write of register JSQR makes a check-in of a new context
AnnaBridge 163:e59c8e839560 4427 * into the queue).
AnnaBridge 163:e59c8e839560 4428 * Therefore functions to set separately injected trigger and
AnnaBridge 163:e59c8e839560 4429 * sequencer channels cannot be used, register JSQR must be set
AnnaBridge 163:e59c8e839560 4430 * using function @ref LL_ADC_INJ_ConfigQueueContext().
AnnaBridge 163:e59c8e839560 4431 * @note This parameter can be modified only when no conversion is on going
AnnaBridge 163:e59c8e839560 4432 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 4433 * @note A modification of the context mode (bit JQDIS) causes the contexts
AnnaBridge 163:e59c8e839560 4434 * queue to be flushed and the register JSQR is cleared.
AnnaBridge 163:e59c8e839560 4435 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 4436 * ADC state:
AnnaBridge 163:e59c8e839560 4437 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 4438 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 4439 * @rmtoll CFGR JQM LL_ADC_INJ_SetQueueMode
AnnaBridge 163:e59c8e839560 4440 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4441 * @param QueueMode This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4442 * @arg @ref LL_ADC_INJ_QUEUE_2CONTEXTS_LAST_ACTIVE
AnnaBridge 163:e59c8e839560 4443 * @arg @ref LL_ADC_INJ_QUEUE_2CONTEXTS_END_EMPTY
AnnaBridge 163:e59c8e839560 4444 * @retval None
AnnaBridge 163:e59c8e839560 4445 */
AnnaBridge 163:e59c8e839560 4446 __STATIC_INLINE void LL_ADC_INJ_SetQueueMode(ADC_TypeDef *ADCx, uint32_t QueueMode)
AnnaBridge 163:e59c8e839560 4447 {
AnnaBridge 163:e59c8e839560 4448 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JQM, QueueMode);
AnnaBridge 163:e59c8e839560 4449 }
AnnaBridge 163:e59c8e839560 4450
AnnaBridge 163:e59c8e839560 4451 /**
AnnaBridge 163:e59c8e839560 4452 * @brief Get ADC group injected context queue mode.
AnnaBridge 163:e59c8e839560 4453 * @rmtoll CFGR JQM LL_ADC_INJ_GetQueueMode
AnnaBridge 163:e59c8e839560 4454 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4455 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 4456 * @arg @ref LL_ADC_INJ_QUEUE_2CONTEXTS_LAST_ACTIVE
AnnaBridge 163:e59c8e839560 4457 * @arg @ref LL_ADC_INJ_QUEUE_2CONTEXTS_END_EMPTY
AnnaBridge 163:e59c8e839560 4458 */
AnnaBridge 163:e59c8e839560 4459 __STATIC_INLINE uint32_t LL_ADC_INJ_GetQueueMode(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 4460 {
AnnaBridge 163:e59c8e839560 4461 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JQM));
AnnaBridge 163:e59c8e839560 4462 }
AnnaBridge 163:e59c8e839560 4463
AnnaBridge 163:e59c8e839560 4464 /**
AnnaBridge 163:e59c8e839560 4465 * @brief Set one context on ADC group injected that will be checked in
AnnaBridge 163:e59c8e839560 4466 * contexts queue.
AnnaBridge 163:e59c8e839560 4467 * @note A context is a setting of group injected sequencer:
AnnaBridge 163:e59c8e839560 4468 * - group injected trigger
AnnaBridge 163:e59c8e839560 4469 * - sequencer length
AnnaBridge 163:e59c8e839560 4470 * - sequencer ranks
AnnaBridge 163:e59c8e839560 4471 * This function is intended to be used when contexts queue is enabled,
AnnaBridge 163:e59c8e839560 4472 * because the sequence must be fully configured in one time
AnnaBridge 163:e59c8e839560 4473 * (functions to set separately injected trigger and sequencer channels
AnnaBridge 163:e59c8e839560 4474 * cannot be used):
AnnaBridge 163:e59c8e839560 4475 * Refer to function @ref LL_ADC_INJ_SetQueueMode().
AnnaBridge 163:e59c8e839560 4476 * @note In the contexts queue, only the active context can be read.
AnnaBridge 163:e59c8e839560 4477 * The parameters of this function can be read using functions:
AnnaBridge 163:e59c8e839560 4478 * @arg @ref LL_ADC_INJ_GetTriggerSource()
AnnaBridge 163:e59c8e839560 4479 * @arg @ref LL_ADC_INJ_GetTriggerEdge()
AnnaBridge 163:e59c8e839560 4480 * @arg @ref LL_ADC_INJ_GetSequencerRanks()
AnnaBridge 163:e59c8e839560 4481 * @note On this STM32 serie, to measure internal channels (VrefInt,
AnnaBridge 163:e59c8e839560 4482 * TempSensor, ...), measurement paths to internal channels must be
AnnaBridge 163:e59c8e839560 4483 * enabled separately.
AnnaBridge 163:e59c8e839560 4484 * This can be done using function @ref LL_ADC_SetCommonPathInternalCh().
AnnaBridge 163:e59c8e839560 4485 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 4486 * ADC state:
AnnaBridge 163:e59c8e839560 4487 * ADC must not be disabled. Can be enabled with or without conversion
AnnaBridge 163:e59c8e839560 4488 * on going on either groups regular or injected.
AnnaBridge 163:e59c8e839560 4489 * @rmtoll JSQR JEXTSEL LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 163:e59c8e839560 4490 * JSQR JEXTEN LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 163:e59c8e839560 4491 * JSQR JL LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 163:e59c8e839560 4492 * JSQR JSQ1 LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 163:e59c8e839560 4493 * JSQR JSQ2 LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 163:e59c8e839560 4494 * JSQR JSQ3 LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 163:e59c8e839560 4495 * JSQR JSQ4 LL_ADC_INJ_ConfigQueueContext
AnnaBridge 163:e59c8e839560 4496 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4497 * @param TriggerSource This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4498 * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE
AnnaBridge 163:e59c8e839560 4499 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO
AnnaBridge 163:e59c8e839560 4500 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2
AnnaBridge 163:e59c8e839560 4501 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH3_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4502 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4
AnnaBridge 163:e59c8e839560 4503 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (3)(4)(5)
AnnaBridge 163:e59c8e839560 4504 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4505 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4506 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (3)(4)(5)
AnnaBridge 163:e59c8e839560 4507 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4508 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_TRGO (1)(2)(3)(4)(5)
AnnaBridge 163:e59c8e839560 4509 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1 (3)(4)(5)
AnnaBridge 163:e59c8e839560 4510 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4511 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3 (3)(4)(5)
AnnaBridge 163:e59c8e839560 4512 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4513 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (3)(4)(5)
AnnaBridge 163:e59c8e839560 4514 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4_ADC12 (1)(2)(3)(4)(5) (7)
AnnaBridge 163:e59c8e839560 4515 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (3) (5)
AnnaBridge 163:e59c8e839560 4516 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4517 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4518 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH3_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4519 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH4_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4520 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO (3)(4)(5)
AnnaBridge 163:e59c8e839560 4521 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4522 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM7_TRGO_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4523 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO (1)(2)
AnnaBridge 163:e59c8e839560 4524 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2 (1)(2)
AnnaBridge 163:e59c8e839560 4525 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH2_ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4526 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4527 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4__ADC34 (1)(2) (8)
AnnaBridge 163:e59c8e839560 4528 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM15_TRGO
AnnaBridge 163:e59c8e839560 4529 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRGO_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 4530 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRGO2_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 4531 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_CH4_ADC12 (1) (7)
AnnaBridge 163:e59c8e839560 4532 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRG_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 4533 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_TRG2_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 4534 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM20_CH2_ADC34 (1) (8)
AnnaBridge 163:e59c8e839560 4535 * @arg @ref LL_ADC_INJ_TRIG_EXT_HRTIM_TRG2 (4)
AnnaBridge 163:e59c8e839560 4536 * @arg @ref LL_ADC_INJ_TRIG_EXT_HRTIM_TRG4 (4)
AnnaBridge 163:e59c8e839560 4537 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (3)(4)(5)(6)
AnnaBridge 163:e59c8e839560 4538 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15_ADC12 (1)(2) (7)
AnnaBridge 163:e59c8e839560 4539 *
AnnaBridge 163:e59c8e839560 4540 * (1) On STM32F3, parameter not available on all devices: among others, on STM32F303xE, STM32F398xx.\n
AnnaBridge 163:e59c8e839560 4541 * (2) On STM32F3, parameter not available on all devices: among others, on STM32F303xC, STM32F358xx.\n
AnnaBridge 163:e59c8e839560 4542 * (3) On STM32F3, parameter not available on all devices: among others, on STM32F303x8, STM32F328xx.\n
AnnaBridge 163:e59c8e839560 4543 * (4) On STM32F3, parameter not available on all devices: among others, on STM32F334x8.\n
AnnaBridge 163:e59c8e839560 4544 * (5) On STM32F3, parameter not available on all devices: among others, on STM32F302xC, STM32F302xE.\n
AnnaBridge 163:e59c8e839560 4545 * (6) On STM32F3, parameter not available on all devices: among others, on STM32F301x8, STM32F302x8, STM32F318xx.\n
AnnaBridge 163:e59c8e839560 4546 * (7) On STM32F3, parameter not available on all ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device).\n
AnnaBridge 163:e59c8e839560 4547 * (8) On STM32F3, parameter not available on all ADC instances: ADC3, ADC4 (for ADC instances ADCx available on the selected device).
AnnaBridge 163:e59c8e839560 4548 * @param ExternalTriggerEdge This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4549 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING
AnnaBridge 163:e59c8e839560 4550 * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING
AnnaBridge 163:e59c8e839560 4551 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING
AnnaBridge 163:e59c8e839560 4552 *
AnnaBridge 163:e59c8e839560 4553 * Note: This parameter is discarded in case of SW start:
AnnaBridge 163:e59c8e839560 4554 * parameter "TriggerSource" set to "LL_ADC_INJ_TRIG_SOFTWARE".
AnnaBridge 163:e59c8e839560 4555 * @param SequencerNbRanks This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4556 * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 4557 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 163:e59c8e839560 4558 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 163:e59c8e839560 4559 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 163:e59c8e839560 4560 * @param Rank1_Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4561 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 4562 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 4563 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 4564 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 4565 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 4566 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 4567 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 4568 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 4569 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 4570 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 4571 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 4572 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 4573 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 4574 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 4575 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 4576 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 4577 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 4578 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 4579 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 4580 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 4581 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 4582 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 4583 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 4584 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 4585 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 4586 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 4587 *
AnnaBridge 163:e59c8e839560 4588 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 4589 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 4590 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 4591 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 4592 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 4593 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 4594 * @param Rank2_Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4595 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 4596 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 4597 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 4598 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 4599 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 4600 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 4601 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 4602 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 4603 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 4604 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 4605 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 4606 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 4607 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 4608 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 4609 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 4610 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 4611 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 4612 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 4613 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 4614 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 4615 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 4616 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 4617 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 4618 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 4619 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 4620 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 4621 *
AnnaBridge 163:e59c8e839560 4622 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 4623 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 4624 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 4625 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 4626 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 4627 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 4628 * @param Rank3_Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4629 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 4630 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 4631 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 4632 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 4633 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 4634 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 4635 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 4636 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 4637 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 4638 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 4639 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 4640 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 4641 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 4642 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 4643 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 4644 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 4645 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 4646 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 4647 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 4648 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 4649 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 4650 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 4651 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 4652 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 4653 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 4654 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 4655 *
AnnaBridge 163:e59c8e839560 4656 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 4657 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 4658 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 4659 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 4660 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 4661 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 4662 * @param Rank4_Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4663 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 4664 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 4665 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 4666 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 4667 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 4668 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 4669 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 4670 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 4671 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 4672 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 4673 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 4674 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 4675 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 4676 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 4677 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 4678 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 4679 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 4680 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 4681 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 4682 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 4683 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 4684 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 4685 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 4686 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 4687 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 4688 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 4689 *
AnnaBridge 163:e59c8e839560 4690 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 4691 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 4692 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 4693 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 4694 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 4695 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 4696 * @retval None
AnnaBridge 163:e59c8e839560 4697 */
AnnaBridge 163:e59c8e839560 4698 __STATIC_INLINE void LL_ADC_INJ_ConfigQueueContext(ADC_TypeDef *ADCx,
AnnaBridge 163:e59c8e839560 4699 uint32_t TriggerSource,
AnnaBridge 163:e59c8e839560 4700 uint32_t ExternalTriggerEdge,
AnnaBridge 163:e59c8e839560 4701 uint32_t SequencerNbRanks,
AnnaBridge 163:e59c8e839560 4702 uint32_t Rank1_Channel,
AnnaBridge 163:e59c8e839560 4703 uint32_t Rank2_Channel,
AnnaBridge 163:e59c8e839560 4704 uint32_t Rank3_Channel,
AnnaBridge 163:e59c8e839560 4705 uint32_t Rank4_Channel)
AnnaBridge 163:e59c8e839560 4706 {
AnnaBridge 163:e59c8e839560 4707 /* Set bits with content of parameter "Rankx_Channel" with bits position */
AnnaBridge 163:e59c8e839560 4708 /* in register depending on literal "LL_ADC_INJ_RANK_x". */
AnnaBridge 163:e59c8e839560 4709 /* Parameters "Rankx_Channel" and "LL_ADC_INJ_RANK_x" are used with masks */
AnnaBridge 163:e59c8e839560 4710 /* because containing other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 4711 /* If parameter "TriggerSource" is set to SW start, then parameter */
AnnaBridge 163:e59c8e839560 4712 /* "ExternalTriggerEdge" is discarded. */
AnnaBridge 163:e59c8e839560 4713 MODIFY_REG(ADCx->JSQR ,
AnnaBridge 163:e59c8e839560 4714 ADC_JSQR_JEXTSEL |
AnnaBridge 163:e59c8e839560 4715 ADC_JSQR_JEXTEN |
AnnaBridge 163:e59c8e839560 4716 ADC_JSQR_JSQ4 |
AnnaBridge 163:e59c8e839560 4717 ADC_JSQR_JSQ3 |
AnnaBridge 163:e59c8e839560 4718 ADC_JSQR_JSQ2 |
AnnaBridge 163:e59c8e839560 4719 ADC_JSQR_JSQ1 |
AnnaBridge 163:e59c8e839560 4720 ADC_JSQR_JL ,
AnnaBridge 163:e59c8e839560 4721 TriggerSource |
AnnaBridge 163:e59c8e839560 4722 (ExternalTriggerEdge * ((TriggerSource != LL_ADC_INJ_TRIG_SOFTWARE))) |
AnnaBridge 163:e59c8e839560 4723 ((Rank4_Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> (ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS - (LL_ADC_INJ_RANK_4 & ADC_INJ_RANK_ID_JSQR_MASK))) |
AnnaBridge 163:e59c8e839560 4724 ((Rank3_Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> (ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS - (LL_ADC_INJ_RANK_3 & ADC_INJ_RANK_ID_JSQR_MASK))) |
AnnaBridge 163:e59c8e839560 4725 ((Rank2_Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> (ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS - (LL_ADC_INJ_RANK_2 & ADC_INJ_RANK_ID_JSQR_MASK))) |
AnnaBridge 163:e59c8e839560 4726 ((Rank1_Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> (ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS - (LL_ADC_INJ_RANK_1 & ADC_INJ_RANK_ID_JSQR_MASK))) |
AnnaBridge 163:e59c8e839560 4727 SequencerNbRanks
AnnaBridge 163:e59c8e839560 4728 );
AnnaBridge 163:e59c8e839560 4729 }
AnnaBridge 163:e59c8e839560 4730
AnnaBridge 163:e59c8e839560 4731 /**
AnnaBridge 163:e59c8e839560 4732 * @}
AnnaBridge 163:e59c8e839560 4733 */
AnnaBridge 163:e59c8e839560 4734
AnnaBridge 163:e59c8e839560 4735 /** @defgroup ADC_LL_EF_Configuration_Channels Configuration of ADC hierarchical scope: channels
AnnaBridge 163:e59c8e839560 4736 * @{
AnnaBridge 163:e59c8e839560 4737 */
AnnaBridge 163:e59c8e839560 4738
AnnaBridge 163:e59c8e839560 4739 /**
AnnaBridge 163:e59c8e839560 4740 * @brief Set sampling time of the selected ADC channel
AnnaBridge 163:e59c8e839560 4741 * Unit: ADC clock cycles.
AnnaBridge 163:e59c8e839560 4742 * @note On this device, sampling time is on channel scope: independently
AnnaBridge 163:e59c8e839560 4743 * of channel mapped on ADC group regular or injected.
AnnaBridge 163:e59c8e839560 4744 * @note In case of internal channel (VrefInt, TempSensor, ...) to be
AnnaBridge 163:e59c8e839560 4745 * converted:
AnnaBridge 163:e59c8e839560 4746 * sampling time constraints must be respected (sampling time can be
AnnaBridge 163:e59c8e839560 4747 * adjusted in function of ADC clock frequency and sampling time
AnnaBridge 163:e59c8e839560 4748 * setting).
AnnaBridge 163:e59c8e839560 4749 * Refer to device datasheet for timings values (parameters TS_vrefint,
AnnaBridge 163:e59c8e839560 4750 * TS_temp, ...).
AnnaBridge 163:e59c8e839560 4751 * @note Conversion time is the addition of sampling time and processing time.
AnnaBridge 163:e59c8e839560 4752 * On this STM32 serie, ADC processing time is:
AnnaBridge 163:e59c8e839560 4753 * - 12.5 ADC clock cycles at ADC resolution 12 bits
AnnaBridge 163:e59c8e839560 4754 * - 10.5 ADC clock cycles at ADC resolution 10 bits
AnnaBridge 163:e59c8e839560 4755 * - 8.5 ADC clock cycles at ADC resolution 8 bits
AnnaBridge 163:e59c8e839560 4756 * - 6.5 ADC clock cycles at ADC resolution 6 bits
AnnaBridge 163:e59c8e839560 4757 * @note In case of ADC conversion of internal channel (VrefInt,
AnnaBridge 163:e59c8e839560 4758 * temperature sensor, ...), a sampling time minimum value
AnnaBridge 163:e59c8e839560 4759 * is required.
AnnaBridge 163:e59c8e839560 4760 * Refer to device datasheet.
AnnaBridge 163:e59c8e839560 4761 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 4762 * ADC state:
AnnaBridge 163:e59c8e839560 4763 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 4764 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 4765 * @rmtoll SMPR1 SMP0 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4766 * SMPR1 SMP1 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4767 * SMPR1 SMP2 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4768 * SMPR1 SMP3 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4769 * SMPR1 SMP4 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4770 * SMPR1 SMP5 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4771 * SMPR1 SMP6 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4772 * SMPR1 SMP7 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4773 * SMPR1 SMP8 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4774 * SMPR1 SMP9 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4775 * SMPR2 SMP10 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4776 * SMPR2 SMP11 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4777 * SMPR2 SMP12 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4778 * SMPR2 SMP13 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4779 * SMPR2 SMP14 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4780 * SMPR2 SMP15 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4781 * SMPR2 SMP16 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4782 * SMPR2 SMP17 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4783 * SMPR2 SMP18 LL_ADC_SetChannelSamplingTime
AnnaBridge 163:e59c8e839560 4784 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4785 * @param Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4786 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 4787 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 4788 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 4789 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 4790 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 4791 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 4792 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 4793 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 4794 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 4795 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 4796 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 4797 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 4798 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 4799 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 4800 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 4801 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 4802 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 4803 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 4804 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 4805 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 4806 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 4807 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 4808 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 4809 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 4810 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 4811 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 4812 *
AnnaBridge 163:e59c8e839560 4813 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 4814 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 4815 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 4816 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 4817 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 4818 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 4819 * @param SamplingTime This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4820 * @arg @ref LL_ADC_SAMPLINGTIME_1CYCLE_5
AnnaBridge 163:e59c8e839560 4821 * @arg @ref LL_ADC_SAMPLINGTIME_2CYCLES_5
AnnaBridge 163:e59c8e839560 4822 * @arg @ref LL_ADC_SAMPLINGTIME_4CYCLES_5
AnnaBridge 163:e59c8e839560 4823 * @arg @ref LL_ADC_SAMPLINGTIME_7CYCLES_5
AnnaBridge 163:e59c8e839560 4824 * @arg @ref LL_ADC_SAMPLINGTIME_19CYCLES_5
AnnaBridge 163:e59c8e839560 4825 * @arg @ref LL_ADC_SAMPLINGTIME_61CYCLES_5
AnnaBridge 163:e59c8e839560 4826 * @arg @ref LL_ADC_SAMPLINGTIME_181CYCLES_5
AnnaBridge 163:e59c8e839560 4827 * @arg @ref LL_ADC_SAMPLINGTIME_601CYCLES_5
AnnaBridge 163:e59c8e839560 4828 * @retval None
AnnaBridge 163:e59c8e839560 4829 */
AnnaBridge 163:e59c8e839560 4830 __STATIC_INLINE void LL_ADC_SetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime)
AnnaBridge 163:e59c8e839560 4831 {
AnnaBridge 163:e59c8e839560 4832 /* Set bits with content of parameter "SamplingTime" with bits position */
AnnaBridge 163:e59c8e839560 4833 /* in register and register position depending on parameter "Channel". */
AnnaBridge 163:e59c8e839560 4834 /* Parameter "Channel" is used with masks because containing */
AnnaBridge 163:e59c8e839560 4835 /* other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 4836 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 4837
AnnaBridge 163:e59c8e839560 4838 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 4839 ADC_SMPR1_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK),
AnnaBridge 163:e59c8e839560 4840 SamplingTime << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK));
AnnaBridge 163:e59c8e839560 4841 }
AnnaBridge 163:e59c8e839560 4842
AnnaBridge 163:e59c8e839560 4843 /**
AnnaBridge 163:e59c8e839560 4844 * @brief Get sampling time of the selected ADC channel
AnnaBridge 163:e59c8e839560 4845 * Unit: ADC clock cycles.
AnnaBridge 163:e59c8e839560 4846 * @note On this device, sampling time is on channel scope: independently
AnnaBridge 163:e59c8e839560 4847 * of channel mapped on ADC group regular or injected.
AnnaBridge 163:e59c8e839560 4848 * @note Conversion time is the addition of sampling time and processing time.
AnnaBridge 163:e59c8e839560 4849 * On this STM32 serie, ADC processing time is:
AnnaBridge 163:e59c8e839560 4850 * - 12.5 ADC clock cycles at ADC resolution 12 bits
AnnaBridge 163:e59c8e839560 4851 * - 10.5 ADC clock cycles at ADC resolution 10 bits
AnnaBridge 163:e59c8e839560 4852 * - 8.5 ADC clock cycles at ADC resolution 8 bits
AnnaBridge 163:e59c8e839560 4853 * - 6.5 ADC clock cycles at ADC resolution 6 bits
AnnaBridge 163:e59c8e839560 4854 * @rmtoll SMPR1 SMP0 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4855 * SMPR1 SMP1 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4856 * SMPR1 SMP2 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4857 * SMPR1 SMP3 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4858 * SMPR1 SMP4 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4859 * SMPR1 SMP5 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4860 * SMPR1 SMP6 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4861 * SMPR1 SMP7 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4862 * SMPR1 SMP8 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4863 * SMPR1 SMP9 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4864 * SMPR2 SMP10 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4865 * SMPR2 SMP11 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4866 * SMPR2 SMP12 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4867 * SMPR2 SMP13 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4868 * SMPR2 SMP14 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4869 * SMPR2 SMP15 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4870 * SMPR2 SMP16 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4871 * SMPR2 SMP17 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 4872 * SMPR2 SMP18 LL_ADC_GetChannelSamplingTime
AnnaBridge 163:e59c8e839560 4873 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4874 * @param Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4875 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 4876 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 4877 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 4878 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 4879 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 4880 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 4881 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 4882 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 4883 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 4884 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 4885 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 4886 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 4887 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 4888 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 4889 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 4890 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 4891 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 4892 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 4893 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 163:e59c8e839560 4894 * @arg @ref LL_ADC_CHANNEL_VREFINT (5)
AnnaBridge 163:e59c8e839560 4895 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 4896 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
AnnaBridge 163:e59c8e839560 4897 * @arg @ref LL_ADC_CHANNEL_VOPAMP1 (1)
AnnaBridge 163:e59c8e839560 4898 * @arg @ref LL_ADC_CHANNEL_VOPAMP2 (2)
AnnaBridge 163:e59c8e839560 4899 * @arg @ref LL_ADC_CHANNEL_VOPAMP3 (3)
AnnaBridge 163:e59c8e839560 4900 * @arg @ref LL_ADC_CHANNEL_VOPAMP4 (4)
AnnaBridge 163:e59c8e839560 4901 *
AnnaBridge 163:e59c8e839560 4902 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 4903 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 4904 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 4905 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 4906 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 4907 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 4908 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 4909 * @arg @ref LL_ADC_SAMPLINGTIME_1CYCLE_5
AnnaBridge 163:e59c8e839560 4910 * @arg @ref LL_ADC_SAMPLINGTIME_2CYCLES_5
AnnaBridge 163:e59c8e839560 4911 * @arg @ref LL_ADC_SAMPLINGTIME_4CYCLES_5
AnnaBridge 163:e59c8e839560 4912 * @arg @ref LL_ADC_SAMPLINGTIME_7CYCLES_5
AnnaBridge 163:e59c8e839560 4913 * @arg @ref LL_ADC_SAMPLINGTIME_19CYCLES_5
AnnaBridge 163:e59c8e839560 4914 * @arg @ref LL_ADC_SAMPLINGTIME_61CYCLES_5
AnnaBridge 163:e59c8e839560 4915 * @arg @ref LL_ADC_SAMPLINGTIME_181CYCLES_5
AnnaBridge 163:e59c8e839560 4916 * @arg @ref LL_ADC_SAMPLINGTIME_601CYCLES_5
AnnaBridge 163:e59c8e839560 4917 */
AnnaBridge 163:e59c8e839560 4918 __STATIC_INLINE uint32_t LL_ADC_GetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel)
AnnaBridge 163:e59c8e839560 4919 {
AnnaBridge 163:e59c8e839560 4920 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 4921
AnnaBridge 163:e59c8e839560 4922 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 4923 ADC_SMPR1_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK))
AnnaBridge 163:e59c8e839560 4924 >> __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK)
AnnaBridge 163:e59c8e839560 4925 );
AnnaBridge 163:e59c8e839560 4926 }
AnnaBridge 163:e59c8e839560 4927
AnnaBridge 163:e59c8e839560 4928 /**
AnnaBridge 163:e59c8e839560 4929 * @brief Set mode single-ended or differential input of the selected
AnnaBridge 163:e59c8e839560 4930 * ADC channel.
AnnaBridge 163:e59c8e839560 4931 * @note Channel ending is on channel scope: independently of channel mapped
AnnaBridge 163:e59c8e839560 4932 * on ADC group regular or injected.
AnnaBridge 163:e59c8e839560 4933 * In differential mode: Differential measurement is carried out
AnnaBridge 163:e59c8e839560 4934 * between the selected channel 'i' (positive input) and
AnnaBridge 163:e59c8e839560 4935 * channel 'i+1' (negative input). Only channel 'i' has to be
AnnaBridge 163:e59c8e839560 4936 * configured, channel 'i+1' is configured automatically.
AnnaBridge 163:e59c8e839560 4937 * @note Refer to Reference Manual to ensure the selected channel is
AnnaBridge 163:e59c8e839560 4938 * available in differential mode.
AnnaBridge 163:e59c8e839560 4939 * For example, internal channels (VrefInt, TempSensor, ...) are
AnnaBridge 163:e59c8e839560 4940 * not available in differential mode.
AnnaBridge 163:e59c8e839560 4941 * @note When configuring a channel 'i' in differential mode,
AnnaBridge 163:e59c8e839560 4942 * the channel 'i+1' is not usable separately.
AnnaBridge 163:e59c8e839560 4943 * @note On STM32F3, channels 16, 17, 18 of ADC1,
AnnaBridge 163:e59c8e839560 4944 * channels 17, 18 of ADC2, ADC3, ADC4 (if available)
AnnaBridge 163:e59c8e839560 4945 * are internally fixed to single-ended inputs configuration.
AnnaBridge 163:e59c8e839560 4946 * @note For ADC channels configured in differential mode, both inputs
AnnaBridge 163:e59c8e839560 4947 * should be biased at (Vref+)/2 +/-200mV.
AnnaBridge 163:e59c8e839560 4948 * (Vref+ is the analog voltage reference)
AnnaBridge 163:e59c8e839560 4949 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 4950 * ADC state:
AnnaBridge 163:e59c8e839560 4951 * ADC must be ADC disabled.
AnnaBridge 163:e59c8e839560 4952 * @note One or several values can be selected.
AnnaBridge 163:e59c8e839560 4953 * Example: (LL_ADC_CHANNEL_4 | LL_ADC_CHANNEL_12 | ...)
AnnaBridge 163:e59c8e839560 4954 * @rmtoll DIFSEL DIFSEL LL_ADC_GetChannelSamplingTime
AnnaBridge 163:e59c8e839560 4955 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 4956 * @param Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 4957 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 4958 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 4959 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 4960 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 4961 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 4962 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 4963 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 4964 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 4965 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 4966 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 4967 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 4968 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 4969 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 4970 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 4971 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 4972 * @arg @ref LL_ADC_CHANNEL_16 (1)
AnnaBridge 163:e59c8e839560 4973 *
AnnaBridge 163:e59c8e839560 4974 * (1) On STM32F3, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 4975 * @param SingleDiff This parameter can be a combination of the following values:
AnnaBridge 163:e59c8e839560 4976 * @arg @ref LL_ADC_SINGLE_ENDED
AnnaBridge 163:e59c8e839560 4977 * @arg @ref LL_ADC_DIFFERENTIAL_ENDED
AnnaBridge 163:e59c8e839560 4978 * @retval None
AnnaBridge 163:e59c8e839560 4979 */
AnnaBridge 163:e59c8e839560 4980 __STATIC_INLINE void LL_ADC_SetChannelSingleDiff(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SingleDiff)
AnnaBridge 163:e59c8e839560 4981 {
AnnaBridge 163:e59c8e839560 4982 /* Bits of channels in single or differential mode are set only for */
AnnaBridge 163:e59c8e839560 4983 /* differential mode (for single mode, mask of bits allowed to be set is */
AnnaBridge 163:e59c8e839560 4984 /* shifted out of range of bits of channels in single or differential mode. */
AnnaBridge 163:e59c8e839560 4985 MODIFY_REG(ADCx->DIFSEL,
AnnaBridge 163:e59c8e839560 4986 Channel & ADC_SINGLEDIFF_CHANNEL_MASK,
AnnaBridge 163:e59c8e839560 4987 (Channel & ADC_SINGLEDIFF_CHANNEL_MASK) & (ADC_DIFSEL_DIFSEL << (SingleDiff & ADC_SINGLEDIFF_CHANNEL_SHIFT_MASK)));
AnnaBridge 163:e59c8e839560 4988 }
AnnaBridge 163:e59c8e839560 4989
AnnaBridge 163:e59c8e839560 4990 /**
AnnaBridge 163:e59c8e839560 4991 * @brief Get mode single-ended or differential input of the selected
AnnaBridge 163:e59c8e839560 4992 * ADC channel.
AnnaBridge 163:e59c8e839560 4993 * @note When configuring a channel 'i' in differential mode,
AnnaBridge 163:e59c8e839560 4994 * the channel 'i+1' is not usable separately.
AnnaBridge 163:e59c8e839560 4995 * Therefore, to ensure a channel is configured in single-ended mode,
AnnaBridge 163:e59c8e839560 4996 * the configuration of channel itself and the channel 'i-1' must be
AnnaBridge 163:e59c8e839560 4997 * read back (to ensure that the selected channel channel has not been
AnnaBridge 163:e59c8e839560 4998 * configured in differential mode by the previous channel).
AnnaBridge 163:e59c8e839560 4999 * @note Refer to Reference Manual to ensure the selected channel is
AnnaBridge 163:e59c8e839560 5000 * available in differential mode.
AnnaBridge 163:e59c8e839560 5001 * For example, internal channels (VrefInt, TempSensor, ...) are
AnnaBridge 163:e59c8e839560 5002 * not available in differential mode.
AnnaBridge 163:e59c8e839560 5003 * @note When configuring a channel 'i' in differential mode,
AnnaBridge 163:e59c8e839560 5004 * the channel 'i+1' is not usable separately.
AnnaBridge 163:e59c8e839560 5005 * @note On STM32F3, channels 16, 17, 18 of ADC1,
AnnaBridge 163:e59c8e839560 5006 * channels 17, 18 of ADC2, ADC3, ADC4 (if available)
AnnaBridge 163:e59c8e839560 5007 * are internally fixed to single-ended inputs configuration.
AnnaBridge 163:e59c8e839560 5008 * @note One or several values can be selected. In this case, the value
AnnaBridge 163:e59c8e839560 5009 * returned is null if all channels are in single ended-mode.
AnnaBridge 163:e59c8e839560 5010 * Example: (LL_ADC_CHANNEL_4 | LL_ADC_CHANNEL_12 | ...)
AnnaBridge 163:e59c8e839560 5011 * @rmtoll DIFSEL DIFSEL LL_ADC_GetChannelSamplingTime
AnnaBridge 163:e59c8e839560 5012 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5013 * @param Channel This parameter can be a combination of the following values:
AnnaBridge 163:e59c8e839560 5014 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 5015 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 5016 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 5017 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 5018 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 5019 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 5020 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 5021 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 5022 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 5023 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 5024 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 5025 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 5026 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 5027 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 5028 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 5029 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 5030 * @arg @ref LL_ADC_CHANNEL_16 (1)
AnnaBridge 163:e59c8e839560 5031 *
AnnaBridge 163:e59c8e839560 5032 * (1) On STM32F3, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 5033 * @retval 0: channel in single-ended mode, else: channel in differential mode
AnnaBridge 163:e59c8e839560 5034 */
AnnaBridge 163:e59c8e839560 5035 __STATIC_INLINE uint32_t LL_ADC_GetChannelSingleDiff(ADC_TypeDef *ADCx, uint32_t Channel)
AnnaBridge 163:e59c8e839560 5036 {
AnnaBridge 163:e59c8e839560 5037 return (uint32_t)(READ_BIT(ADCx->DIFSEL, (Channel & ADC_SINGLEDIFF_CHANNEL_MASK)));
AnnaBridge 163:e59c8e839560 5038 }
AnnaBridge 163:e59c8e839560 5039
AnnaBridge 163:e59c8e839560 5040 /**
AnnaBridge 163:e59c8e839560 5041 * @}
AnnaBridge 163:e59c8e839560 5042 */
AnnaBridge 163:e59c8e839560 5043
AnnaBridge 163:e59c8e839560 5044 /** @defgroup ADC_LL_EF_Configuration_ADC_AnalogWatchdog Configuration of ADC transversal scope: analog watchdog
AnnaBridge 163:e59c8e839560 5045 * @{
AnnaBridge 163:e59c8e839560 5046 */
AnnaBridge 163:e59c8e839560 5047
AnnaBridge 163:e59c8e839560 5048 /**
AnnaBridge 163:e59c8e839560 5049 * @brief Set ADC analog watchdog monitored channels:
AnnaBridge 163:e59c8e839560 5050 * a single channel, multiple channels or all channels,
AnnaBridge 163:e59c8e839560 5051 * on ADC groups regular and-or injected.
AnnaBridge 163:e59c8e839560 5052 * @note Once monitored channels are selected, analog watchdog
AnnaBridge 163:e59c8e839560 5053 * is enabled.
AnnaBridge 163:e59c8e839560 5054 * @note In case of need to define a single channel to monitor
AnnaBridge 163:e59c8e839560 5055 * with analog watchdog from sequencer channel definition,
AnnaBridge 163:e59c8e839560 5056 * use helper macro @ref __LL_ADC_ANALOGWD_CHANNEL_GROUP().
AnnaBridge 163:e59c8e839560 5057 * @note On this STM32 serie, there are 2 kinds of analog watchdog
AnnaBridge 163:e59c8e839560 5058 * instance:
AnnaBridge 163:e59c8e839560 5059 * - AWD standard (instance AWD1):
AnnaBridge 163:e59c8e839560 5060 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 163:e59c8e839560 5061 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 163:e59c8e839560 5062 * - resolution: resolution is not limited (corresponds to
AnnaBridge 163:e59c8e839560 5063 * ADC resolution configured).
AnnaBridge 163:e59c8e839560 5064 * - AWD flexible (instances AWD2, AWD3):
AnnaBridge 163:e59c8e839560 5065 * - channels monitored: flexible on channels monitored, selection is
AnnaBridge 163:e59c8e839560 5066 * channel wise, from from 1 to all channels.
AnnaBridge 163:e59c8e839560 5067 * Specificity of this analog watchdog: Multiple channels can
AnnaBridge 163:e59c8e839560 5068 * be selected. For example:
AnnaBridge 163:e59c8e839560 5069 * (LL_ADC_AWD_CHANNEL4_REG_INJ | LL_ADC_AWD_CHANNEL5_REG_INJ | ...)
AnnaBridge 163:e59c8e839560 5070 * - groups monitored: not selection possible (monitoring on both
AnnaBridge 163:e59c8e839560 5071 * groups regular and injected).
AnnaBridge 163:e59c8e839560 5072 * Channels selected are monitored on groups regular and injected:
AnnaBridge 163:e59c8e839560 5073 * LL_ADC_AWD_CHANNELxx_REG_INJ (do not use parameters
AnnaBridge 163:e59c8e839560 5074 * LL_ADC_AWD_CHANNELxx_REG and LL_ADC_AWD_CHANNELxx_INJ)
AnnaBridge 163:e59c8e839560 5075 * - resolution: resolution is limited to 8 bits: if ADC resolution is
AnnaBridge 163:e59c8e839560 5076 * 12 bits the 4 LSB are ignored, if ADC resolution is 10 bits
AnnaBridge 163:e59c8e839560 5077 * the 2 LSB are ignored.
AnnaBridge 163:e59c8e839560 5078 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5079 * ADC state:
AnnaBridge 163:e59c8e839560 5080 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 5081 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 5082 * @rmtoll CFGR AWD1CH LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 5083 * CFGR AWD1SGL LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 5084 * CFGR AWD1EN LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 5085 * CFGR JAWD1EN LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 5086 * AWD2CR AWD2CH LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 5087 * AWD3CR AWD3CH LL_ADC_SetAnalogWDMonitChannels
AnnaBridge 163:e59c8e839560 5088 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5089 * @param AWDy This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5090 * @arg @ref LL_ADC_AWD1
AnnaBridge 163:e59c8e839560 5091 * @arg @ref LL_ADC_AWD2
AnnaBridge 163:e59c8e839560 5092 * @arg @ref LL_ADC_AWD3
AnnaBridge 163:e59c8e839560 5093 * @param AWDChannelGroup This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5094 * @arg @ref LL_ADC_AWD_DISABLE
AnnaBridge 163:e59c8e839560 5095 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG (0)
AnnaBridge 163:e59c8e839560 5096 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ (0)
AnnaBridge 163:e59c8e839560 5097 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
AnnaBridge 163:e59c8e839560 5098 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG (0)
AnnaBridge 163:e59c8e839560 5099 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ (0)
AnnaBridge 163:e59c8e839560 5100 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
AnnaBridge 163:e59c8e839560 5101 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG (0)
AnnaBridge 163:e59c8e839560 5102 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ (0)
AnnaBridge 163:e59c8e839560 5103 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
AnnaBridge 163:e59c8e839560 5104 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG (0)
AnnaBridge 163:e59c8e839560 5105 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ (0)
AnnaBridge 163:e59c8e839560 5106 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
AnnaBridge 163:e59c8e839560 5107 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG (0)
AnnaBridge 163:e59c8e839560 5108 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ (0)
AnnaBridge 163:e59c8e839560 5109 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
AnnaBridge 163:e59c8e839560 5110 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG (0)
AnnaBridge 163:e59c8e839560 5111 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ (0)
AnnaBridge 163:e59c8e839560 5112 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
AnnaBridge 163:e59c8e839560 5113 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG (0)
AnnaBridge 163:e59c8e839560 5114 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ (0)
AnnaBridge 163:e59c8e839560 5115 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
AnnaBridge 163:e59c8e839560 5116 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG (0)
AnnaBridge 163:e59c8e839560 5117 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ (0)
AnnaBridge 163:e59c8e839560 5118 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
AnnaBridge 163:e59c8e839560 5119 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG (0)
AnnaBridge 163:e59c8e839560 5120 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ (0)
AnnaBridge 163:e59c8e839560 5121 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
AnnaBridge 163:e59c8e839560 5122 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG (0)
AnnaBridge 163:e59c8e839560 5123 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ (0)
AnnaBridge 163:e59c8e839560 5124 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
AnnaBridge 163:e59c8e839560 5125 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG (0)
AnnaBridge 163:e59c8e839560 5126 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ (0)
AnnaBridge 163:e59c8e839560 5127 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
AnnaBridge 163:e59c8e839560 5128 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG (0)
AnnaBridge 163:e59c8e839560 5129 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ (0)
AnnaBridge 163:e59c8e839560 5130 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
AnnaBridge 163:e59c8e839560 5131 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG (0)
AnnaBridge 163:e59c8e839560 5132 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ (0)
AnnaBridge 163:e59c8e839560 5133 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
AnnaBridge 163:e59c8e839560 5134 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG (0)
AnnaBridge 163:e59c8e839560 5135 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ (0)
AnnaBridge 163:e59c8e839560 5136 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
AnnaBridge 163:e59c8e839560 5137 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG (0)
AnnaBridge 163:e59c8e839560 5138 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ (0)
AnnaBridge 163:e59c8e839560 5139 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
AnnaBridge 163:e59c8e839560 5140 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG (0)
AnnaBridge 163:e59c8e839560 5141 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ (0)
AnnaBridge 163:e59c8e839560 5142 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
AnnaBridge 163:e59c8e839560 5143 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG (0)
AnnaBridge 163:e59c8e839560 5144 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ (0)
AnnaBridge 163:e59c8e839560 5145 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
AnnaBridge 163:e59c8e839560 5146 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG (0)
AnnaBridge 163:e59c8e839560 5147 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ (0)
AnnaBridge 163:e59c8e839560 5148 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
AnnaBridge 163:e59c8e839560 5149 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG (0)
AnnaBridge 163:e59c8e839560 5150 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ (0)
AnnaBridge 163:e59c8e839560 5151 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
AnnaBridge 163:e59c8e839560 5152 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG (0)
AnnaBridge 163:e59c8e839560 5153 * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ (0)
AnnaBridge 163:e59c8e839560 5154 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ
AnnaBridge 163:e59c8e839560 5155 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (0)(5)
AnnaBridge 163:e59c8e839560 5156 * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (0)(5)
AnnaBridge 163:e59c8e839560 5157 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (5)
AnnaBridge 163:e59c8e839560 5158 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (0)(1)
AnnaBridge 163:e59c8e839560 5159 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (0)(1)
AnnaBridge 163:e59c8e839560 5160 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (1)
AnnaBridge 163:e59c8e839560 5161 * @arg @ref LL_ADC_AWD_CH_VBAT_REG (0)(1)
AnnaBridge 163:e59c8e839560 5162 * @arg @ref LL_ADC_AWD_CH_VBAT_INJ (0)(1)
AnnaBridge 163:e59c8e839560 5163 * @arg @ref LL_ADC_AWD_CH_VBAT_REG_INJ (1)
AnnaBridge 163:e59c8e839560 5164 * @arg @ref LL_ADC_AWD_CH_VOPAMP1_REG (0)(1)
AnnaBridge 163:e59c8e839560 5165 * @arg @ref LL_ADC_AWD_CH_VOPAMP1_INJ (0)(1)
AnnaBridge 163:e59c8e839560 5166 * @arg @ref LL_ADC_AWD_CH_VOPAMP1_REG_INJ (1)
AnnaBridge 163:e59c8e839560 5167 * @arg @ref LL_ADC_AWD_CH_VOPAMP2_REG (0)(2)
AnnaBridge 163:e59c8e839560 5168 * @arg @ref LL_ADC_AWD_CH_VOPAMP2_INJ (0)(2)
AnnaBridge 163:e59c8e839560 5169 * @arg @ref LL_ADC_AWD_CH_VOPAMP2_REG_INJ (2)
AnnaBridge 163:e59c8e839560 5170 * @arg @ref LL_ADC_AWD_CH_VOPAMP3_REG (0)(3)
AnnaBridge 163:e59c8e839560 5171 * @arg @ref LL_ADC_AWD_CH_VOPAMP3_INJ (0)(3)
AnnaBridge 163:e59c8e839560 5172 * @arg @ref LL_ADC_AWD_CH_VOPAMP3_REG_INJ (3)
AnnaBridge 163:e59c8e839560 5173 * @arg @ref LL_ADC_AWD_CH_VOPAMP4_REG (0)(4)
AnnaBridge 163:e59c8e839560 5174 * @arg @ref LL_ADC_AWD_CH_VOPAMP4_INJ (0)(4)
AnnaBridge 163:e59c8e839560 5175 * @arg @ref LL_ADC_AWD_CH_VOPAMP4_REG_INJ (4)
AnnaBridge 163:e59c8e839560 5176 *
AnnaBridge 163:e59c8e839560 5177 * (0) On STM32F3, parameter available only on analog watchdog number: AWD1.\n
AnnaBridge 163:e59c8e839560 5178 * (1) On STM32F3, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 5179 * (2) On STM32F3, parameter available only on ADC instance: ADC2.\n
AnnaBridge 163:e59c8e839560 5180 * (3) On STM32F3, parameter available only on ADC instance: ADC3.\n
AnnaBridge 163:e59c8e839560 5181 * (4) On STM32F3, parameter available only on ADC instances: ADC4.\n
AnnaBridge 163:e59c8e839560 5182 * (5) On STM32F3, ADC channel available only on all ADC instances, but
AnnaBridge 163:e59c8e839560 5183 * only one ADC instance is allowed to be connected to VrefInt at the same time.
AnnaBridge 163:e59c8e839560 5184 * @retval None
AnnaBridge 163:e59c8e839560 5185 */
AnnaBridge 163:e59c8e839560 5186 __STATIC_INLINE void LL_ADC_SetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDChannelGroup)
AnnaBridge 163:e59c8e839560 5187 {
AnnaBridge 163:e59c8e839560 5188 /* Set bits with content of parameter "AWDChannelGroup" with bits position */
AnnaBridge 163:e59c8e839560 5189 /* in register and register position depending on parameter "AWDy". */
AnnaBridge 163:e59c8e839560 5190 /* Parameters "AWDChannelGroup" and "AWDy" are used with masks because */
AnnaBridge 163:e59c8e839560 5191 /* containing other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 5192 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->CFGR, __ADC_MASK_SHIFT(AWDy, ADC_AWD_CRX_REGOFFSET_MASK)
AnnaBridge 163:e59c8e839560 5193 + ((AWDy & ADC_AWD_CR12_REGOFFSETGAP_MASK) * ADC_AWD_CR12_REGOFFSETGAP_VAL));
AnnaBridge 163:e59c8e839560 5194
AnnaBridge 163:e59c8e839560 5195 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 5196 (AWDy & ADC_AWD_CR_ALL_CHANNEL_MASK),
AnnaBridge 163:e59c8e839560 5197 AWDChannelGroup & AWDy);
AnnaBridge 163:e59c8e839560 5198 }
AnnaBridge 163:e59c8e839560 5199
AnnaBridge 163:e59c8e839560 5200 /**
AnnaBridge 163:e59c8e839560 5201 * @brief Get ADC analog watchdog monitored channel.
AnnaBridge 163:e59c8e839560 5202 * @note Usage of the returned channel number:
AnnaBridge 163:e59c8e839560 5203 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 163:e59c8e839560 5204 * the returned channel number is only partly formatted on definition
AnnaBridge 163:e59c8e839560 5205 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 163:e59c8e839560 5206 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 163:e59c8e839560 5207 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 5208 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 163:e59c8e839560 5209 * as parameter for another function.
AnnaBridge 163:e59c8e839560 5210 * - To get the channel number in decimal format:
AnnaBridge 163:e59c8e839560 5211 * process the returned value with the helper macro
AnnaBridge 163:e59c8e839560 5212 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 5213 * Applicable only when the analog watchdog is set to monitor
AnnaBridge 163:e59c8e839560 5214 * one channel.
AnnaBridge 163:e59c8e839560 5215 * @note On this STM32 serie, there are 2 kinds of analog watchdog
AnnaBridge 163:e59c8e839560 5216 * instance:
AnnaBridge 163:e59c8e839560 5217 * - AWD standard (instance AWD1):
AnnaBridge 163:e59c8e839560 5218 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 163:e59c8e839560 5219 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 163:e59c8e839560 5220 * - resolution: resolution is not limited (corresponds to
AnnaBridge 163:e59c8e839560 5221 * ADC resolution configured).
AnnaBridge 163:e59c8e839560 5222 * - AWD flexible (instances AWD2, AWD3):
AnnaBridge 163:e59c8e839560 5223 * - channels monitored: flexible on channels monitored, selection is
AnnaBridge 163:e59c8e839560 5224 * channel wise, from from 1 to all channels.
AnnaBridge 163:e59c8e839560 5225 * Specificity of this analog watchdog: Multiple channels can
AnnaBridge 163:e59c8e839560 5226 * be selected. For example:
AnnaBridge 163:e59c8e839560 5227 * (LL_ADC_AWD_CHANNEL4_REG_INJ | LL_ADC_AWD_CHANNEL5_REG_INJ | ...)
AnnaBridge 163:e59c8e839560 5228 * - groups monitored: not selection possible (monitoring on both
AnnaBridge 163:e59c8e839560 5229 * groups regular and injected).
AnnaBridge 163:e59c8e839560 5230 * Channels selected are monitored on groups regular and injected:
AnnaBridge 163:e59c8e839560 5231 * LL_ADC_AWD_CHANNELxx_REG_INJ (do not use parameters
AnnaBridge 163:e59c8e839560 5232 * LL_ADC_AWD_CHANNELxx_REG and LL_ADC_AWD_CHANNELxx_INJ)
AnnaBridge 163:e59c8e839560 5233 * - resolution: resolution is limited to 8 bits: if ADC resolution is
AnnaBridge 163:e59c8e839560 5234 * 12 bits the 4 LSB are ignored, if ADC resolution is 10 bits
AnnaBridge 163:e59c8e839560 5235 * the 2 LSB are ignored.
AnnaBridge 163:e59c8e839560 5236 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5237 * ADC state:
AnnaBridge 163:e59c8e839560 5238 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 5239 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 5240 * @rmtoll CFGR AWD1CH LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 5241 * CFGR AWD1SGL LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 5242 * CFGR AWD1EN LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 5243 * CFGR JAWD1EN LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 5244 * AWD2CR AWD2CH LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 5245 * AWD3CR AWD3CH LL_ADC_GetAnalogWDMonitChannels
AnnaBridge 163:e59c8e839560 5246 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5247 * @param AWDy This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5248 * @arg @ref LL_ADC_AWD1
AnnaBridge 163:e59c8e839560 5249 * @arg @ref LL_ADC_AWD2 (1)
AnnaBridge 163:e59c8e839560 5250 * @arg @ref LL_ADC_AWD3 (1)
AnnaBridge 163:e59c8e839560 5251 *
AnnaBridge 163:e59c8e839560 5252 * (1) On this AWD number, monitored channel can be retrieved
AnnaBridge 163:e59c8e839560 5253 * if only 1 channel is programmed (or none or all channels).
AnnaBridge 163:e59c8e839560 5254 * This function cannot retrieve monitored channel if
AnnaBridge 163:e59c8e839560 5255 * multiple channels are programmed simultaneously
AnnaBridge 163:e59c8e839560 5256 * by bitfield.
AnnaBridge 163:e59c8e839560 5257 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 5258 * @arg @ref LL_ADC_AWD_DISABLE
AnnaBridge 163:e59c8e839560 5259 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG (0)
AnnaBridge 163:e59c8e839560 5260 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ (0)
AnnaBridge 163:e59c8e839560 5261 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
AnnaBridge 163:e59c8e839560 5262 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG (0)
AnnaBridge 163:e59c8e839560 5263 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ (0)
AnnaBridge 163:e59c8e839560 5264 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
AnnaBridge 163:e59c8e839560 5265 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG (0)
AnnaBridge 163:e59c8e839560 5266 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ (0)
AnnaBridge 163:e59c8e839560 5267 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
AnnaBridge 163:e59c8e839560 5268 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG (0)
AnnaBridge 163:e59c8e839560 5269 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ (0)
AnnaBridge 163:e59c8e839560 5270 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
AnnaBridge 163:e59c8e839560 5271 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG (0)
AnnaBridge 163:e59c8e839560 5272 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ (0)
AnnaBridge 163:e59c8e839560 5273 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
AnnaBridge 163:e59c8e839560 5274 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG (0)
AnnaBridge 163:e59c8e839560 5275 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ (0)
AnnaBridge 163:e59c8e839560 5276 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
AnnaBridge 163:e59c8e839560 5277 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG (0)
AnnaBridge 163:e59c8e839560 5278 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ (0)
AnnaBridge 163:e59c8e839560 5279 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
AnnaBridge 163:e59c8e839560 5280 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG (0)
AnnaBridge 163:e59c8e839560 5281 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ (0)
AnnaBridge 163:e59c8e839560 5282 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
AnnaBridge 163:e59c8e839560 5283 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG (0)
AnnaBridge 163:e59c8e839560 5284 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ (0)
AnnaBridge 163:e59c8e839560 5285 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
AnnaBridge 163:e59c8e839560 5286 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG (0)
AnnaBridge 163:e59c8e839560 5287 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ (0)
AnnaBridge 163:e59c8e839560 5288 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
AnnaBridge 163:e59c8e839560 5289 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG (0)
AnnaBridge 163:e59c8e839560 5290 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ (0)
AnnaBridge 163:e59c8e839560 5291 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
AnnaBridge 163:e59c8e839560 5292 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG (0)
AnnaBridge 163:e59c8e839560 5293 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ (0)
AnnaBridge 163:e59c8e839560 5294 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
AnnaBridge 163:e59c8e839560 5295 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG (0)
AnnaBridge 163:e59c8e839560 5296 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ (0)
AnnaBridge 163:e59c8e839560 5297 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
AnnaBridge 163:e59c8e839560 5298 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG (0)
AnnaBridge 163:e59c8e839560 5299 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ (0)
AnnaBridge 163:e59c8e839560 5300 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
AnnaBridge 163:e59c8e839560 5301 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG (0)
AnnaBridge 163:e59c8e839560 5302 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ (0)
AnnaBridge 163:e59c8e839560 5303 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
AnnaBridge 163:e59c8e839560 5304 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG (0)
AnnaBridge 163:e59c8e839560 5305 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ (0)
AnnaBridge 163:e59c8e839560 5306 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
AnnaBridge 163:e59c8e839560 5307 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG (0)
AnnaBridge 163:e59c8e839560 5308 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ (0)
AnnaBridge 163:e59c8e839560 5309 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
AnnaBridge 163:e59c8e839560 5310 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG (0)
AnnaBridge 163:e59c8e839560 5311 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ (0)
AnnaBridge 163:e59c8e839560 5312 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
AnnaBridge 163:e59c8e839560 5313 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG (0)
AnnaBridge 163:e59c8e839560 5314 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ (0)
AnnaBridge 163:e59c8e839560 5315 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
AnnaBridge 163:e59c8e839560 5316 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG (0)
AnnaBridge 163:e59c8e839560 5317 * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ (0)
AnnaBridge 163:e59c8e839560 5318 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ
AnnaBridge 163:e59c8e839560 5319 *
AnnaBridge 163:e59c8e839560 5320 * (0) On STM32F3, parameter available only on analog watchdog number: AWD1.
AnnaBridge 163:e59c8e839560 5321 */
AnnaBridge 163:e59c8e839560 5322 __STATIC_INLINE uint32_t LL_ADC_GetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t AWDy)
AnnaBridge 163:e59c8e839560 5323 {
AnnaBridge 163:e59c8e839560 5324 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->CFGR, __ADC_MASK_SHIFT(AWDy, ADC_AWD_CRX_REGOFFSET_MASK)
AnnaBridge 163:e59c8e839560 5325 + ((AWDy & ADC_AWD_CR12_REGOFFSETGAP_MASK) * ADC_AWD_CR12_REGOFFSETGAP_VAL));
AnnaBridge 163:e59c8e839560 5326
AnnaBridge 163:e59c8e839560 5327 /* Variable "AWDy" used to retrieve appropriate bitfield corresponding to */
AnnaBridge 163:e59c8e839560 5328 /* ADC_AWD_CR1_CHANNEL_MASK or ADC_AWD_CR23_CHANNEL_MASK. */
AnnaBridge 163:e59c8e839560 5329 register uint32_t AWD123ChannelGroup = READ_BIT(*preg, (AWDy | ADC_AWD_CR_ALL_CHANNEL_MASK));
AnnaBridge 163:e59c8e839560 5330
AnnaBridge 163:e59c8e839560 5331 /* Set variable of AWD1 monitored channel according to AWD1 features */
AnnaBridge 163:e59c8e839560 5332 /* and ADC channel definition: */
AnnaBridge 163:e59c8e839560 5333 /* - channel ID with number */
AnnaBridge 163:e59c8e839560 5334 /* - channel ID with bitfield */
AnnaBridge 163:e59c8e839560 5335 /* - AWD1 single or all channels */
AnnaBridge 163:e59c8e839560 5336 /* - AWD1 enable or disable (also used to discard AWD1 bitfield in case of */
AnnaBridge 163:e59c8e839560 5337 /* AWD2 or AWD3 selected). */
AnnaBridge 163:e59c8e839560 5338 register uint32_t AWD1ChannelSingle = ((AWD123ChannelGroup & ADC_CFGR_AWD1SGL) >> ADC_CFGR_AWD1SGL_BITOFFSET_POS);
AnnaBridge 163:e59c8e839560 5339
AnnaBridge 163:e59c8e839560 5340 register uint32_t AWD1ChannelGroup = ( ( AWD123ChannelGroup
AnnaBridge 163:e59c8e839560 5341 | ((ADC_CHANNEL_0_BITFIELD << ((AWD123ChannelGroup & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS)) * AWD1ChannelSingle)
AnnaBridge 163:e59c8e839560 5342 | (ADC_CHANNEL_ID_BITFIELD_MASK * (~AWD1ChannelSingle & ((uint32_t)0x00000001U)))
AnnaBridge 163:e59c8e839560 5343 )
AnnaBridge 163:e59c8e839560 5344 * (((AWD123ChannelGroup & ADC_CFGR_JAWD1EN) >> ADC_CFGR_JAWD1EN_BITOFFSET_POS) | ((AWD123ChannelGroup & ADC_CFGR_AWD1EN) >> ADC_CFGR_AWD1EN_BITOFFSET_POS))
AnnaBridge 163:e59c8e839560 5345 );
AnnaBridge 163:e59c8e839560 5346
AnnaBridge 163:e59c8e839560 5347 /* Set variable of AWD2 and AWD3 monitored channel according to AWD2-3 */
AnnaBridge 163:e59c8e839560 5348 /* features and ADC channel definition: */
AnnaBridge 163:e59c8e839560 5349 /* - channel ID with number */
AnnaBridge 163:e59c8e839560 5350 /* - channel ID with bitfield */
AnnaBridge 163:e59c8e839560 5351 /* - AWD2-3 single or all channels (shift value 32 (0x1 shift 5) used to */
AnnaBridge 163:e59c8e839560 5352 /* shift AWD1 equivalent single-all channels out of register) */
AnnaBridge 163:e59c8e839560 5353 /* - AWD2-3 enable or disable */
AnnaBridge 163:e59c8e839560 5354 /* Note: Use modulo 3 to avoid a shift value too long. On AWD2 and AWD3, */
AnnaBridge 163:e59c8e839560 5355 /* channel can be read back if only 1 channel monitoring */
AnnaBridge 163:e59c8e839560 5356 /* is activated, therefore the channel monitoring value channel "3" */
AnnaBridge 163:e59c8e839560 5357 /* is not not supported by this function, there is no risk of */
AnnaBridge 163:e59c8e839560 5358 /* conflict. */
AnnaBridge 163:e59c8e839560 5359 register uint32_t AWD23Enabled = ((((uint32_t)0x00000001U) >> (AWD123ChannelGroup % 3U)) << 6U); /* Value "0" if AWD2-3 is enabled, value "32" if AWD2-3 is disabled */
AnnaBridge 163:e59c8e839560 5360
AnnaBridge 163:e59c8e839560 5361 register uint32_t AWD23ChannelGroup = ((( AWD123ChannelGroup
AnnaBridge 163:e59c8e839560 5362 | ((uint32_t)POSITION_VAL(AWD123ChannelGroup) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS)
AnnaBridge 163:e59c8e839560 5363 | ((ADC_CFGR_AWD1SGL) >> ((((uint32_t)0x00000001U) >> (ADC_AWD_CR23_CHANNEL_MASK - AWD123ChannelGroup)) << 5U))
AnnaBridge 163:e59c8e839560 5364 | (ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN)
AnnaBridge 163:e59c8e839560 5365 ) >> AWD23Enabled
AnnaBridge 163:e59c8e839560 5366 ) >> (((AWDy & ADC_CFGR_AWD1SGL) >> ADC_CFGR_AWD1SGL_BITOFFSET_POS) << 5U));
AnnaBridge 163:e59c8e839560 5367
AnnaBridge 163:e59c8e839560 5368 return (AWD1ChannelGroup | AWD23ChannelGroup);
AnnaBridge 163:e59c8e839560 5369 }
AnnaBridge 163:e59c8e839560 5370
AnnaBridge 163:e59c8e839560 5371 /**
AnnaBridge 163:e59c8e839560 5372 * @brief Set ADC analog watchdog thresholds value of both thresholds
AnnaBridge 163:e59c8e839560 5373 * high and low.
AnnaBridge 163:e59c8e839560 5374 * @note If value of only one threshold high or low must be set,
AnnaBridge 163:e59c8e839560 5375 * use function @ref LL_ADC_SetAnalogWDThresholds().
AnnaBridge 163:e59c8e839560 5376 * @note In case of ADC resolution different of 12 bits,
AnnaBridge 163:e59c8e839560 5377 * analog watchdog thresholds data require a specific shift.
AnnaBridge 163:e59c8e839560 5378 * Use helper macro @ref __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION().
AnnaBridge 163:e59c8e839560 5379 * @note On this STM32 serie, there are 2 kinds of analog watchdog
AnnaBridge 163:e59c8e839560 5380 * instance:
AnnaBridge 163:e59c8e839560 5381 * - AWD standard (instance AWD1):
AnnaBridge 163:e59c8e839560 5382 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 163:e59c8e839560 5383 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 163:e59c8e839560 5384 * - resolution: resolution is not limited (corresponds to
AnnaBridge 163:e59c8e839560 5385 * ADC resolution configured).
AnnaBridge 163:e59c8e839560 5386 * - AWD flexible (instances AWD2, AWD3):
AnnaBridge 163:e59c8e839560 5387 * - channels monitored: flexible on channels monitored, selection is
AnnaBridge 163:e59c8e839560 5388 * channel wise, from from 1 to all channels.
AnnaBridge 163:e59c8e839560 5389 * Specificity of this analog watchdog: Multiple channels can
AnnaBridge 163:e59c8e839560 5390 * be selected. For example:
AnnaBridge 163:e59c8e839560 5391 * (LL_ADC_AWD_CHANNEL4_REG_INJ | LL_ADC_AWD_CHANNEL5_REG_INJ | ...)
AnnaBridge 163:e59c8e839560 5392 * - groups monitored: not selection possible (monitoring on both
AnnaBridge 163:e59c8e839560 5393 * groups regular and injected).
AnnaBridge 163:e59c8e839560 5394 * Channels selected are monitored on groups regular and injected:
AnnaBridge 163:e59c8e839560 5395 * LL_ADC_AWD_CHANNELxx_REG_INJ (do not use parameters
AnnaBridge 163:e59c8e839560 5396 * LL_ADC_AWD_CHANNELxx_REG and LL_ADC_AWD_CHANNELxx_INJ)
AnnaBridge 163:e59c8e839560 5397 * - resolution: resolution is limited to 8 bits: if ADC resolution is
AnnaBridge 163:e59c8e839560 5398 * 12 bits the 4 LSB are ignored, if ADC resolution is 10 bits
AnnaBridge 163:e59c8e839560 5399 * the 2 LSB are ignored.
AnnaBridge 163:e59c8e839560 5400 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5401 * ADC state:
AnnaBridge 163:e59c8e839560 5402 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 5403 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 5404 * @rmtoll TR1 HT1 LL_ADC_ConfigAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5405 * TR2 HT2 LL_ADC_ConfigAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5406 * TR3 HT3 LL_ADC_ConfigAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5407 * TR1 LT1 LL_ADC_ConfigAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5408 * TR2 LT2 LL_ADC_ConfigAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5409 * TR3 LT3 LL_ADC_ConfigAnalogWDThresholds
AnnaBridge 163:e59c8e839560 5410 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5411 * @param AWDy This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5412 * @arg @ref LL_ADC_AWD1
AnnaBridge 163:e59c8e839560 5413 * @arg @ref LL_ADC_AWD2
AnnaBridge 163:e59c8e839560 5414 * @arg @ref LL_ADC_AWD3
AnnaBridge 163:e59c8e839560 5415 * @param AWDThresholdHighValue Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 5416 * @param AWDThresholdLowValue Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 5417 * @retval None
AnnaBridge 163:e59c8e839560 5418 */
AnnaBridge 163:e59c8e839560 5419 __STATIC_INLINE void LL_ADC_ConfigAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdHighValue, uint32_t AWDThresholdLowValue)
AnnaBridge 163:e59c8e839560 5420 {
AnnaBridge 163:e59c8e839560 5421 /* Set bits with content of parameter "AWDThresholdxxxValue" with bits */
AnnaBridge 163:e59c8e839560 5422 /* position in register and register position depending on parameter */
AnnaBridge 163:e59c8e839560 5423 /* "AWDy". */
AnnaBridge 163:e59c8e839560 5424 /* Parameters "AWDy" and "AWDThresholdxxxValue" are used with masks because */
AnnaBridge 163:e59c8e839560 5425 /* containing other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 5426 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1, __ADC_MASK_SHIFT(AWDy, ADC_AWD_TRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 5427
AnnaBridge 163:e59c8e839560 5428 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 5429 ADC_TR1_HT1 | ADC_TR1_LT1,
AnnaBridge 163:e59c8e839560 5430 (AWDThresholdHighValue << ADC_TR1_HT1_BITOFFSET_POS) | AWDThresholdLowValue);
AnnaBridge 163:e59c8e839560 5431 }
AnnaBridge 163:e59c8e839560 5432
AnnaBridge 163:e59c8e839560 5433 /**
AnnaBridge 163:e59c8e839560 5434 * @brief Set ADC analog watchdog threshold value of threshold
AnnaBridge 163:e59c8e839560 5435 * high or low.
AnnaBridge 163:e59c8e839560 5436 * @note If values of both thresholds high or low must be set,
AnnaBridge 163:e59c8e839560 5437 * use function @ref LL_ADC_ConfigAnalogWDThresholds().
AnnaBridge 163:e59c8e839560 5438 * @note In case of ADC resolution different of 12 bits,
AnnaBridge 163:e59c8e839560 5439 * analog watchdog thresholds data require a specific shift.
AnnaBridge 163:e59c8e839560 5440 * Use helper macro @ref __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION().
AnnaBridge 163:e59c8e839560 5441 * @note On this STM32 serie, there are 2 kinds of analog watchdog
AnnaBridge 163:e59c8e839560 5442 * instance:
AnnaBridge 163:e59c8e839560 5443 * - AWD standard (instance AWD1):
AnnaBridge 163:e59c8e839560 5444 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 163:e59c8e839560 5445 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 163:e59c8e839560 5446 * - resolution: resolution is not limited (corresponds to
AnnaBridge 163:e59c8e839560 5447 * ADC resolution configured).
AnnaBridge 163:e59c8e839560 5448 * - AWD flexible (instances AWD2, AWD3):
AnnaBridge 163:e59c8e839560 5449 * - channels monitored: flexible on channels monitored, selection is
AnnaBridge 163:e59c8e839560 5450 * channel wise, from from 1 to all channels.
AnnaBridge 163:e59c8e839560 5451 * Specificity of this analog watchdog: Multiple channels can
AnnaBridge 163:e59c8e839560 5452 * be selected. For example:
AnnaBridge 163:e59c8e839560 5453 * (LL_ADC_AWD_CHANNEL4_REG_INJ | LL_ADC_AWD_CHANNEL5_REG_INJ | ...)
AnnaBridge 163:e59c8e839560 5454 * - groups monitored: not selection possible (monitoring on both
AnnaBridge 163:e59c8e839560 5455 * groups regular and injected).
AnnaBridge 163:e59c8e839560 5456 * Channels selected are monitored on groups regular and injected:
AnnaBridge 163:e59c8e839560 5457 * LL_ADC_AWD_CHANNELxx_REG_INJ (do not use parameters
AnnaBridge 163:e59c8e839560 5458 * LL_ADC_AWD_CHANNELxx_REG and LL_ADC_AWD_CHANNELxx_INJ)
AnnaBridge 163:e59c8e839560 5459 * - resolution: resolution is limited to 8 bits: if ADC resolution is
AnnaBridge 163:e59c8e839560 5460 * 12 bits the 4 LSB are ignored, if ADC resolution is 10 bits
AnnaBridge 163:e59c8e839560 5461 * the 2 LSB are ignored.
AnnaBridge 163:e59c8e839560 5462 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5463 * ADC state:
AnnaBridge 163:e59c8e839560 5464 * ADC must be disabled or enabled without conversion on going
AnnaBridge 163:e59c8e839560 5465 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 5466 * @rmtoll TR1 HT1 LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5467 * TR2 HT2 LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5468 * TR3 HT3 LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5469 * TR1 LT1 LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5470 * TR2 LT2 LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5471 * TR3 LT3 LL_ADC_SetAnalogWDThresholds
AnnaBridge 163:e59c8e839560 5472 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5473 * @param AWDy This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5474 * @arg @ref LL_ADC_AWD1
AnnaBridge 163:e59c8e839560 5475 * @arg @ref LL_ADC_AWD2
AnnaBridge 163:e59c8e839560 5476 * @arg @ref LL_ADC_AWD3
AnnaBridge 163:e59c8e839560 5477 * @param AWDThresholdsHighLow This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5478 * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH
AnnaBridge 163:e59c8e839560 5479 * @arg @ref LL_ADC_AWD_THRESHOLD_LOW
AnnaBridge 168:b9e159c1930a 5480 * @param AWDThresholdValue Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 5481 * @retval None
AnnaBridge 163:e59c8e839560 5482 */
AnnaBridge 163:e59c8e839560 5483 __STATIC_INLINE void LL_ADC_SetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow, uint32_t AWDThresholdValue)
AnnaBridge 163:e59c8e839560 5484 {
AnnaBridge 163:e59c8e839560 5485 /* Set bits with content of parameter "AWDThresholdValue" with bits */
AnnaBridge 163:e59c8e839560 5486 /* position in register and register position depending on parameters */
AnnaBridge 163:e59c8e839560 5487 /* "AWDThresholdsHighLow" and "AWDy". */
AnnaBridge 163:e59c8e839560 5488 /* Parameters "AWDy" and "AWDThresholdValue" are used with masks because */
AnnaBridge 163:e59c8e839560 5489 /* containing other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 5490 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1, __ADC_MASK_SHIFT(AWDy, ADC_AWD_TRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 5491
AnnaBridge 163:e59c8e839560 5492 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 5493 AWDThresholdsHighLow,
AnnaBridge 163:e59c8e839560 5494 AWDThresholdValue << POSITION_VAL(AWDThresholdsHighLow));
AnnaBridge 163:e59c8e839560 5495 }
AnnaBridge 163:e59c8e839560 5496
AnnaBridge 163:e59c8e839560 5497 /**
AnnaBridge 163:e59c8e839560 5498 * @brief Get ADC analog watchdog threshold value of threshold high,
AnnaBridge 163:e59c8e839560 5499 * threshold low or raw data with ADC thresholds high and low
AnnaBridge 163:e59c8e839560 5500 * concatenated.
AnnaBridge 163:e59c8e839560 5501 * @note If raw data with ADC thresholds high and low is retrieved,
AnnaBridge 163:e59c8e839560 5502 * the data of each threshold high or low can be isolated
AnnaBridge 163:e59c8e839560 5503 * using helper macro:
AnnaBridge 163:e59c8e839560 5504 * @ref __LL_ADC_ANALOGWD_THRESHOLDS_HIGH_LOW().
AnnaBridge 163:e59c8e839560 5505 * @note In case of ADC resolution different of 12 bits,
AnnaBridge 163:e59c8e839560 5506 * analog watchdog thresholds data require a specific shift.
AnnaBridge 163:e59c8e839560 5507 * Use helper macro @ref __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION().
AnnaBridge 163:e59c8e839560 5508 * @rmtoll TR1 HT1 LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5509 * TR2 HT2 LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5510 * TR3 HT3 LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5511 * TR1 LT1 LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5512 * TR2 LT2 LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 5513 * TR3 LT3 LL_ADC_GetAnalogWDThresholds
AnnaBridge 163:e59c8e839560 5514 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5515 * @param AWDy This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5516 * @arg @ref LL_ADC_AWD1
AnnaBridge 163:e59c8e839560 5517 * @arg @ref LL_ADC_AWD2
AnnaBridge 163:e59c8e839560 5518 * @arg @ref LL_ADC_AWD3
AnnaBridge 163:e59c8e839560 5519 * @param AWDThresholdsHighLow This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5520 * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH
AnnaBridge 163:e59c8e839560 5521 * @arg @ref LL_ADC_AWD_THRESHOLD_LOW
AnnaBridge 163:e59c8e839560 5522 * @arg @ref LL_ADC_AWD_THRESHOLDS_HIGH_LOW
AnnaBridge 163:e59c8e839560 5523 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 5524 */
AnnaBridge 163:e59c8e839560 5525 __STATIC_INLINE uint32_t LL_ADC_GetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow)
AnnaBridge 163:e59c8e839560 5526 {
AnnaBridge 163:e59c8e839560 5527 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1, __ADC_MASK_SHIFT(AWDy, ADC_AWD_TRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 5528
AnnaBridge 163:e59c8e839560 5529 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 5530 (AWDThresholdsHighLow | ADC_TR1_LT1))
AnnaBridge 163:e59c8e839560 5531 >> POSITION_VAL(AWDThresholdsHighLow)
AnnaBridge 163:e59c8e839560 5532 );
AnnaBridge 163:e59c8e839560 5533 }
AnnaBridge 163:e59c8e839560 5534
AnnaBridge 163:e59c8e839560 5535 /**
AnnaBridge 163:e59c8e839560 5536 * @}
AnnaBridge 163:e59c8e839560 5537 */
AnnaBridge 163:e59c8e839560 5538
AnnaBridge 163:e59c8e839560 5539 /** @defgroup ADC_LL_EF_Configuration_ADC_Multimode Configuration of ADC hierarchical scope: multimode
AnnaBridge 163:e59c8e839560 5540 * @{
AnnaBridge 163:e59c8e839560 5541 */
AnnaBridge 163:e59c8e839560 5542
AnnaBridge 163:e59c8e839560 5543 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 163:e59c8e839560 5544 /**
AnnaBridge 163:e59c8e839560 5545 * @brief Set ADC multimode configuration to operate in independent mode
AnnaBridge 163:e59c8e839560 5546 * or multimode (for devices with several ADC instances).
AnnaBridge 163:e59c8e839560 5547 * @note If multimode configuration: the selected ADC instance is
AnnaBridge 163:e59c8e839560 5548 * either master or slave depending on hardware.
AnnaBridge 163:e59c8e839560 5549 * Refer to reference manual.
AnnaBridge 163:e59c8e839560 5550 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5551 * ADC state:
AnnaBridge 163:e59c8e839560 5552 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 163:e59c8e839560 5553 * This check can be done with function @ref LL_ADC_IsEnabled() for each
AnnaBridge 163:e59c8e839560 5554 * ADC instance or by using helper macro
AnnaBridge 163:e59c8e839560 5555 * @ref __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE().
AnnaBridge 163:e59c8e839560 5556 * @rmtoll CCR DUAL LL_ADC_SetMultimode
AnnaBridge 163:e59c8e839560 5557 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 5558 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 5559 * @param Multimode This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5560 * @arg @ref LL_ADC_MULTI_INDEPENDENT
AnnaBridge 163:e59c8e839560 5561 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIMULT
AnnaBridge 163:e59c8e839560 5562 * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL
AnnaBridge 163:e59c8e839560 5563 * @arg @ref LL_ADC_MULTI_DUAL_INJ_SIMULT
AnnaBridge 163:e59c8e839560 5564 * @arg @ref LL_ADC_MULTI_DUAL_INJ_ALTERN
AnnaBridge 163:e59c8e839560 5565 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM
AnnaBridge 163:e59c8e839560 5566 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT
AnnaBridge 163:e59c8e839560 5567 * @arg @ref LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM
AnnaBridge 163:e59c8e839560 5568 * @retval None
AnnaBridge 163:e59c8e839560 5569 */
AnnaBridge 163:e59c8e839560 5570 __STATIC_INLINE void LL_ADC_SetMultimode(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t Multimode)
AnnaBridge 163:e59c8e839560 5571 {
AnnaBridge 163:e59c8e839560 5572 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_DUAL, Multimode);
AnnaBridge 163:e59c8e839560 5573 }
AnnaBridge 163:e59c8e839560 5574
AnnaBridge 163:e59c8e839560 5575 /**
AnnaBridge 163:e59c8e839560 5576 * @brief Get ADC multimode configuration to operate in independent mode
AnnaBridge 163:e59c8e839560 5577 * or multimode (for devices with several ADC instances).
AnnaBridge 163:e59c8e839560 5578 * @note If multimode configuration: the selected ADC instance is
AnnaBridge 163:e59c8e839560 5579 * either master or slave depending on hardware.
AnnaBridge 163:e59c8e839560 5580 * Refer to reference manual.
AnnaBridge 163:e59c8e839560 5581 * @rmtoll CCR DUAL LL_ADC_GetMultimode
AnnaBridge 163:e59c8e839560 5582 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 5583 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 5584 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 5585 * @arg @ref LL_ADC_MULTI_INDEPENDENT
AnnaBridge 163:e59c8e839560 5586 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIMULT
AnnaBridge 163:e59c8e839560 5587 * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL
AnnaBridge 163:e59c8e839560 5588 * @arg @ref LL_ADC_MULTI_DUAL_INJ_SIMULT
AnnaBridge 163:e59c8e839560 5589 * @arg @ref LL_ADC_MULTI_DUAL_INJ_ALTERN
AnnaBridge 163:e59c8e839560 5590 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM
AnnaBridge 163:e59c8e839560 5591 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT
AnnaBridge 163:e59c8e839560 5592 * @arg @ref LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM
AnnaBridge 163:e59c8e839560 5593 */
AnnaBridge 163:e59c8e839560 5594 __STATIC_INLINE uint32_t LL_ADC_GetMultimode(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 5595 {
AnnaBridge 163:e59c8e839560 5596 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DUAL));
AnnaBridge 163:e59c8e839560 5597 }
AnnaBridge 163:e59c8e839560 5598
AnnaBridge 163:e59c8e839560 5599 /**
AnnaBridge 163:e59c8e839560 5600 * @brief Set ADC multimode conversion data transfer: no transfer
AnnaBridge 163:e59c8e839560 5601 * or transfer by DMA.
AnnaBridge 163:e59c8e839560 5602 * @note If ADC multimode transfer by DMA is not selected:
AnnaBridge 163:e59c8e839560 5603 * each ADC uses its own DMA channel, with its individual
AnnaBridge 163:e59c8e839560 5604 * DMA transfer settings.
AnnaBridge 163:e59c8e839560 5605 * If ADC multimode transfer by DMA is selected:
AnnaBridge 163:e59c8e839560 5606 * One DMA channel is used for both ADC (DMA of ADC master)
AnnaBridge 163:e59c8e839560 5607 * Specifies the DMA requests mode:
AnnaBridge 163:e59c8e839560 5608 * - Limited mode (One shot mode): DMA transfer requests are stopped
AnnaBridge 163:e59c8e839560 5609 * when number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 5610 * ADC conversions) is reached.
AnnaBridge 163:e59c8e839560 5611 * This ADC mode is intended to be used with DMA mode non-circular.
AnnaBridge 163:e59c8e839560 5612 * - Unlimited mode: DMA transfer requests are unlimited,
AnnaBridge 163:e59c8e839560 5613 * whatever number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 5614 * ADC conversions).
AnnaBridge 163:e59c8e839560 5615 * This ADC mode is intended to be used with DMA mode circular.
AnnaBridge 163:e59c8e839560 5616 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
AnnaBridge 163:e59c8e839560 5617 * mode non-circular:
AnnaBridge 163:e59c8e839560 5618 * when DMA transfers size will be reached, DMA will stop transfers of
AnnaBridge 163:e59c8e839560 5619 * ADC conversions data ADC will raise an overrun error
AnnaBridge 163:e59c8e839560 5620 * (overrun flag and interruption if enabled).
AnnaBridge 163:e59c8e839560 5621 * @note How to retrieve multimode conversion data:
AnnaBridge 163:e59c8e839560 5622 * Whatever multimode transfer by DMA setting: using function
AnnaBridge 163:e59c8e839560 5623 * @ref LL_ADC_REG_ReadMultiConversionData32().
AnnaBridge 163:e59c8e839560 5624 * If ADC multimode transfer by DMA is selected: conversion data
AnnaBridge 163:e59c8e839560 5625 * is a raw data with ADC master and slave concatenated.
AnnaBridge 163:e59c8e839560 5626 * A macro is available to get the conversion data of
AnnaBridge 163:e59c8e839560 5627 * ADC master or ADC slave: see helper macro
AnnaBridge 163:e59c8e839560 5628 * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE().
AnnaBridge 163:e59c8e839560 5629 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5630 * ADC state:
AnnaBridge 163:e59c8e839560 5631 * All ADC instances of the ADC common group must be disabled
AnnaBridge 163:e59c8e839560 5632 * or enabled without conversion on going on group regular.
AnnaBridge 163:e59c8e839560 5633 * @rmtoll CCR MDMA LL_ADC_SetMultiDMATransfer\n
AnnaBridge 163:e59c8e839560 5634 * CCR DMACFG LL_ADC_SetMultiDMATransfer
AnnaBridge 163:e59c8e839560 5635 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 5636 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 5637 * @param MultiDMATransfer This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5638 * @arg @ref LL_ADC_MULTI_REG_DMA_EACH_ADC
AnnaBridge 163:e59c8e839560 5639 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_RES12_10B
AnnaBridge 163:e59c8e839560 5640 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_RES8_6B
AnnaBridge 163:e59c8e839560 5641 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_RES12_10B
AnnaBridge 163:e59c8e839560 5642 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_RES8_6B
AnnaBridge 163:e59c8e839560 5643 * @retval None
AnnaBridge 163:e59c8e839560 5644 */
AnnaBridge 163:e59c8e839560 5645 __STATIC_INLINE void LL_ADC_SetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t MultiDMATransfer)
AnnaBridge 163:e59c8e839560 5646 {
AnnaBridge 163:e59c8e839560 5647 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_MDMA | ADC_CCR_DMACFG, MultiDMATransfer);
AnnaBridge 163:e59c8e839560 5648 }
AnnaBridge 163:e59c8e839560 5649
AnnaBridge 163:e59c8e839560 5650 /**
AnnaBridge 163:e59c8e839560 5651 * @brief Get ADC multimode conversion data transfer: no transfer
AnnaBridge 163:e59c8e839560 5652 * or transfer by DMA.
AnnaBridge 163:e59c8e839560 5653 * @note If ADC multimode transfer by DMA is not selected:
AnnaBridge 163:e59c8e839560 5654 * each ADC uses its own DMA channel, with its individual
AnnaBridge 163:e59c8e839560 5655 * DMA transfer settings.
AnnaBridge 163:e59c8e839560 5656 * If ADC multimode transfer by DMA is selected:
AnnaBridge 163:e59c8e839560 5657 * One DMA channel is used for both ADC (DMA of ADC master)
AnnaBridge 163:e59c8e839560 5658 * Specifies the DMA requests mode:
AnnaBridge 163:e59c8e839560 5659 * - Limited mode (One shot mode): DMA transfer requests are stopped
AnnaBridge 163:e59c8e839560 5660 * when number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 5661 * ADC conversions) is reached.
AnnaBridge 163:e59c8e839560 5662 * This ADC mode is intended to be used with DMA mode non-circular.
AnnaBridge 163:e59c8e839560 5663 * - Unlimited mode: DMA transfer requests are unlimited,
AnnaBridge 163:e59c8e839560 5664 * whatever number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 5665 * ADC conversions).
AnnaBridge 163:e59c8e839560 5666 * This ADC mode is intended to be used with DMA mode circular.
AnnaBridge 163:e59c8e839560 5667 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
AnnaBridge 163:e59c8e839560 5668 * mode non-circular:
AnnaBridge 163:e59c8e839560 5669 * when DMA transfers size will be reached, DMA will stop transfers of
AnnaBridge 163:e59c8e839560 5670 * ADC conversions data ADC will raise an overrun error
AnnaBridge 163:e59c8e839560 5671 * (overrun flag and interruption if enabled).
AnnaBridge 163:e59c8e839560 5672 * @note How to retrieve multimode conversion data:
AnnaBridge 163:e59c8e839560 5673 * Whatever multimode transfer by DMA setting: using function
AnnaBridge 163:e59c8e839560 5674 * @ref LL_ADC_REG_ReadMultiConversionData32().
AnnaBridge 163:e59c8e839560 5675 * If ADC multimode transfer by DMA is selected: conversion data
AnnaBridge 163:e59c8e839560 5676 * is a raw data with ADC master and slave concatenated.
AnnaBridge 163:e59c8e839560 5677 * A macro is available to get the conversion data of
AnnaBridge 163:e59c8e839560 5678 * ADC master or ADC slave: see helper macro
AnnaBridge 163:e59c8e839560 5679 * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE().
AnnaBridge 163:e59c8e839560 5680 * @rmtoll CCR MDMA LL_ADC_GetMultiDMATransfer\n
AnnaBridge 163:e59c8e839560 5681 * CCR DMACFG LL_ADC_GetMultiDMATransfer
AnnaBridge 163:e59c8e839560 5682 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 5683 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 5684 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 5685 * @arg @ref LL_ADC_MULTI_REG_DMA_EACH_ADC
AnnaBridge 163:e59c8e839560 5686 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_RES12_10B
AnnaBridge 163:e59c8e839560 5687 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_RES8_6B
AnnaBridge 163:e59c8e839560 5688 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_RES12_10B
AnnaBridge 163:e59c8e839560 5689 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_RES8_6B
AnnaBridge 163:e59c8e839560 5690 */
AnnaBridge 163:e59c8e839560 5691 __STATIC_INLINE uint32_t LL_ADC_GetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 5692 {
AnnaBridge 163:e59c8e839560 5693 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_MDMA | ADC_CCR_DMACFG));
AnnaBridge 163:e59c8e839560 5694 }
AnnaBridge 163:e59c8e839560 5695
AnnaBridge 163:e59c8e839560 5696 /**
AnnaBridge 163:e59c8e839560 5697 * @brief Set ADC multimode delay between 2 sampling phases.
AnnaBridge 163:e59c8e839560 5698 * @note The sampling delay range depends on ADC resolution:
AnnaBridge 163:e59c8e839560 5699 * - ADC resolution 12 bits can have maximum delay of 12 cycles.
AnnaBridge 163:e59c8e839560 5700 * - ADC resolution 10 bits can have maximum delay of 10 cycles.
AnnaBridge 163:e59c8e839560 5701 * - ADC resolution 8 bits can have maximum delay of 8 cycles.
AnnaBridge 163:e59c8e839560 5702 * - ADC resolution 6 bits can have maximum delay of 6 cycles.
AnnaBridge 163:e59c8e839560 5703 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5704 * ADC state:
AnnaBridge 163:e59c8e839560 5705 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 163:e59c8e839560 5706 * This check can be done with function @ref LL_ADC_IsEnabled() for each
AnnaBridge 163:e59c8e839560 5707 * ADC instance or by using helper macro helper macro
AnnaBridge 163:e59c8e839560 5708 * @ref __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE().
AnnaBridge 163:e59c8e839560 5709 * @rmtoll CCR DELAY LL_ADC_SetMultiTwoSamplingDelay
AnnaBridge 163:e59c8e839560 5710 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 5711 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 5712 * @param MultiTwoSamplingDelay This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5713 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_1CYCLE
AnnaBridge 163:e59c8e839560 5714 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_2CYCLES
AnnaBridge 163:e59c8e839560 5715 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_3CYCLES
AnnaBridge 163:e59c8e839560 5716 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_4CYCLES
AnnaBridge 163:e59c8e839560 5717 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES
AnnaBridge 163:e59c8e839560 5718 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES (1)
AnnaBridge 163:e59c8e839560 5719 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES (1)
AnnaBridge 163:e59c8e839560 5720 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES (2)
AnnaBridge 163:e59c8e839560 5721 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES (2)
AnnaBridge 163:e59c8e839560 5722 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES (2)
AnnaBridge 163:e59c8e839560 5723 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES (3)
AnnaBridge 163:e59c8e839560 5724 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES (3)
AnnaBridge 163:e59c8e839560 5725 *
AnnaBridge 163:e59c8e839560 5726 * (1) Parameter available only if ADC resolution is 12, 10 or 8 bits.\n
AnnaBridge 163:e59c8e839560 5727 * (2) Parameter available only if ADC resolution is 12 or 10 bits.\n
AnnaBridge 163:e59c8e839560 5728 * (3) Parameter available only if ADC resolution is 12 bits.
AnnaBridge 163:e59c8e839560 5729 * @retval None
AnnaBridge 163:e59c8e839560 5730 */
AnnaBridge 163:e59c8e839560 5731 __STATIC_INLINE void LL_ADC_SetMultiTwoSamplingDelay(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t MultiTwoSamplingDelay)
AnnaBridge 163:e59c8e839560 5732 {
AnnaBridge 163:e59c8e839560 5733 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_DELAY, MultiTwoSamplingDelay);
AnnaBridge 163:e59c8e839560 5734 }
AnnaBridge 163:e59c8e839560 5735
AnnaBridge 163:e59c8e839560 5736 /**
AnnaBridge 163:e59c8e839560 5737 * @brief Get ADC multimode delay between 2 sampling phases.
AnnaBridge 163:e59c8e839560 5738 * @rmtoll CCR DELAY LL_ADC_GetMultiTwoSamplingDelay
AnnaBridge 163:e59c8e839560 5739 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 5740 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 5741 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 5742 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_1CYCLE
AnnaBridge 163:e59c8e839560 5743 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_2CYCLES
AnnaBridge 163:e59c8e839560 5744 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_3CYCLES
AnnaBridge 163:e59c8e839560 5745 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_4CYCLES
AnnaBridge 163:e59c8e839560 5746 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES
AnnaBridge 163:e59c8e839560 5747 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES (1)
AnnaBridge 163:e59c8e839560 5748 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES (1)
AnnaBridge 163:e59c8e839560 5749 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES (2)
AnnaBridge 163:e59c8e839560 5750 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES (2)
AnnaBridge 163:e59c8e839560 5751 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES (2)
AnnaBridge 163:e59c8e839560 5752 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES (3)
AnnaBridge 163:e59c8e839560 5753 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES (3)
AnnaBridge 163:e59c8e839560 5754 *
AnnaBridge 163:e59c8e839560 5755 * (1) Parameter available only if ADC resolution is 12, 10 or 8 bits.\n
AnnaBridge 163:e59c8e839560 5756 * (2) Parameter available only if ADC resolution is 12 or 10 bits.\n
AnnaBridge 163:e59c8e839560 5757 * (3) Parameter available only if ADC resolution is 12 bits.
AnnaBridge 163:e59c8e839560 5758 */
AnnaBridge 163:e59c8e839560 5759 __STATIC_INLINE uint32_t LL_ADC_GetMultiTwoSamplingDelay(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 5760 {
AnnaBridge 163:e59c8e839560 5761 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DELAY));
AnnaBridge 163:e59c8e839560 5762 }
AnnaBridge 163:e59c8e839560 5763 #endif /* ADC_MULTIMODE_SUPPORT */
AnnaBridge 163:e59c8e839560 5764
AnnaBridge 163:e59c8e839560 5765 /**
AnnaBridge 163:e59c8e839560 5766 * @}
AnnaBridge 163:e59c8e839560 5767 */
AnnaBridge 163:e59c8e839560 5768 /** @defgroup ADC_LL_EF_Operation_ADC_Instance Operation on ADC hierarchical scope: ADC instance
AnnaBridge 163:e59c8e839560 5769 * @{
AnnaBridge 163:e59c8e839560 5770 */
AnnaBridge 163:e59c8e839560 5771
AnnaBridge 163:e59c8e839560 5772 /**
AnnaBridge 163:e59c8e839560 5773 * @brief Enable ADC instance internal voltage regulator.
AnnaBridge 163:e59c8e839560 5774 * @note On this STM32 serie, after ADC internal voltage regulator enable,
AnnaBridge 163:e59c8e839560 5775 * a delay for ADC internal voltage regulator stabilization
AnnaBridge 163:e59c8e839560 5776 * is required before performing a ADC calibration or ADC enable.
AnnaBridge 163:e59c8e839560 5777 * Refer to device datasheet, parameter tADCVREG_STUP.
AnnaBridge 163:e59c8e839560 5778 * Refer to literal @ref LL_ADC_DELAY_INTERNAL_REGUL_STAB_US.
AnnaBridge 163:e59c8e839560 5779 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5780 * ADC state:
AnnaBridge 163:e59c8e839560 5781 * ADC must be ADC disabled.
AnnaBridge 163:e59c8e839560 5782 * @rmtoll CR ADVREGEN LL_ADC_EnableInternalRegulator
AnnaBridge 163:e59c8e839560 5783 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5784 * @retval None
AnnaBridge 163:e59c8e839560 5785 */
AnnaBridge 163:e59c8e839560 5786 __STATIC_INLINE void LL_ADC_EnableInternalRegulator(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 5787 {
AnnaBridge 163:e59c8e839560 5788 /* 1. Set the intermediate state before moving the ADC voltage regulator */
AnnaBridge 163:e59c8e839560 5789 /* to state enable. */
AnnaBridge 163:e59c8e839560 5790 CLEAR_BIT(ADCx->CR, (ADC_CR_ADVREGEN_1 | ADC_CR_ADVREGEN_0));
AnnaBridge 163:e59c8e839560 5791 /* 2. Set the final state of ADC voltage regulator enable */
AnnaBridge 163:e59c8e839560 5792 /* (ADVREGEN bits set to 0x01). */
AnnaBridge 163:e59c8e839560 5793 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 163:e59c8e839560 5794 /* instead of modifying only the selected bit for this function, */
AnnaBridge 163:e59c8e839560 5795 /* to not interfere with bits with HW property "rs". */
AnnaBridge 163:e59c8e839560 5796 MODIFY_REG(ADCx->CR,
AnnaBridge 163:e59c8e839560 5797 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 163:e59c8e839560 5798 ADC_CR_ADVREGEN_0);
AnnaBridge 163:e59c8e839560 5799 }
AnnaBridge 163:e59c8e839560 5800
AnnaBridge 163:e59c8e839560 5801 /**
AnnaBridge 163:e59c8e839560 5802 * @brief Disable ADC internal voltage regulator.
AnnaBridge 163:e59c8e839560 5803 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5804 * ADC state:
AnnaBridge 163:e59c8e839560 5805 * ADC must be ADC disabled.
AnnaBridge 163:e59c8e839560 5806 * @rmtoll CR ADVREGEN LL_ADC_DisableInternalRegulator
AnnaBridge 163:e59c8e839560 5807 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5808 * @retval None
AnnaBridge 163:e59c8e839560 5809 */
AnnaBridge 163:e59c8e839560 5810 __STATIC_INLINE void LL_ADC_DisableInternalRegulator(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 5811 {
AnnaBridge 163:e59c8e839560 5812 CLEAR_BIT(ADCx->CR, (ADC_CR_ADVREGEN | ADC_CR_BITS_PROPERTY_RS));
AnnaBridge 163:e59c8e839560 5813 }
AnnaBridge 163:e59c8e839560 5814
AnnaBridge 163:e59c8e839560 5815 /**
AnnaBridge 163:e59c8e839560 5816 * @brief Get the selected ADC instance internal voltage regulator state.
AnnaBridge 163:e59c8e839560 5817 * @rmtoll CR ADVREGEN LL_ADC_IsInternalRegulatorEnabled
AnnaBridge 163:e59c8e839560 5818 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5819 * @retval 0: internal regulator is disabled, 1: internal regulator is enabled.
AnnaBridge 163:e59c8e839560 5820 */
AnnaBridge 163:e59c8e839560 5821 __STATIC_INLINE uint32_t LL_ADC_IsInternalRegulatorEnabled(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 5822 {
AnnaBridge 163:e59c8e839560 5823 return (READ_BIT(ADCx->CR, (ADC_CR_ADVREGEN_1 | ADC_CR_ADVREGEN_0)) == (ADC_CR_ADVREGEN_0));
AnnaBridge 163:e59c8e839560 5824 }
AnnaBridge 163:e59c8e839560 5825
AnnaBridge 163:e59c8e839560 5826 /**
AnnaBridge 163:e59c8e839560 5827 * @brief Enable the selected ADC instance.
AnnaBridge 163:e59c8e839560 5828 * @note On this STM32 serie, after ADC enable, a delay for
AnnaBridge 163:e59c8e839560 5829 * ADC internal analog stabilization is required before performing a
AnnaBridge 163:e59c8e839560 5830 * ADC conversion start.
AnnaBridge 163:e59c8e839560 5831 * Refer to device datasheet, parameter tSTAB.
AnnaBridge 163:e59c8e839560 5832 * @note On this STM32 serie, flag LL_ADC_FLAG_ADRDY is raised when the ADC
AnnaBridge 163:e59c8e839560 5833 * is enabled and when conversion clock is active.
AnnaBridge 163:e59c8e839560 5834 * (not only core clock: this ADC has a dual clock domain)
AnnaBridge 163:e59c8e839560 5835 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5836 * ADC state:
AnnaBridge 163:e59c8e839560 5837 * ADC must be ADC disabled and ADC internal voltage regulator enabled.
AnnaBridge 163:e59c8e839560 5838 * @rmtoll CR ADEN LL_ADC_Enable
AnnaBridge 163:e59c8e839560 5839 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5840 * @retval None
AnnaBridge 163:e59c8e839560 5841 */
AnnaBridge 163:e59c8e839560 5842 __STATIC_INLINE void LL_ADC_Enable(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 5843 {
AnnaBridge 163:e59c8e839560 5844 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 163:e59c8e839560 5845 /* instead of modifying only the selected bit for this function, */
AnnaBridge 163:e59c8e839560 5846 /* to not interfere with bits with HW property "rs". */
AnnaBridge 163:e59c8e839560 5847 MODIFY_REG(ADCx->CR,
AnnaBridge 163:e59c8e839560 5848 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 163:e59c8e839560 5849 ADC_CR_ADEN);
AnnaBridge 163:e59c8e839560 5850 }
AnnaBridge 163:e59c8e839560 5851
AnnaBridge 163:e59c8e839560 5852 /**
AnnaBridge 163:e59c8e839560 5853 * @brief Disable the selected ADC instance.
AnnaBridge 163:e59c8e839560 5854 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5855 * ADC state:
AnnaBridge 163:e59c8e839560 5856 * ADC must be not disabled. Must be enabled without conversion on going
AnnaBridge 163:e59c8e839560 5857 * on either groups regular or injected.
AnnaBridge 163:e59c8e839560 5858 * @rmtoll CR ADDIS LL_ADC_Disable
AnnaBridge 163:e59c8e839560 5859 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5860 * @retval None
AnnaBridge 163:e59c8e839560 5861 */
AnnaBridge 163:e59c8e839560 5862 __STATIC_INLINE void LL_ADC_Disable(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 5863 {
AnnaBridge 163:e59c8e839560 5864 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 163:e59c8e839560 5865 /* instead of modifying only the selected bit for this function, */
AnnaBridge 163:e59c8e839560 5866 /* to not interfere with bits with HW property "rs". */
AnnaBridge 163:e59c8e839560 5867 MODIFY_REG(ADCx->CR,
AnnaBridge 163:e59c8e839560 5868 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 163:e59c8e839560 5869 ADC_CR_ADDIS);
AnnaBridge 163:e59c8e839560 5870 }
AnnaBridge 163:e59c8e839560 5871
AnnaBridge 163:e59c8e839560 5872 /**
AnnaBridge 163:e59c8e839560 5873 * @brief Get the selected ADC instance enable state.
AnnaBridge 163:e59c8e839560 5874 * @note On this STM32 serie, flag LL_ADC_FLAG_ADRDY is raised when the ADC
AnnaBridge 163:e59c8e839560 5875 * is enabled and when conversion clock is active.
AnnaBridge 163:e59c8e839560 5876 * (not only core clock: this ADC has a dual clock domain)
AnnaBridge 163:e59c8e839560 5877 * @rmtoll CR ADEN LL_ADC_IsEnabled
AnnaBridge 163:e59c8e839560 5878 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5879 * @retval 0: ADC is disabled, 1: ADC is enabled.
AnnaBridge 163:e59c8e839560 5880 */
AnnaBridge 163:e59c8e839560 5881 __STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 5882 {
AnnaBridge 163:e59c8e839560 5883 return (READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN));
AnnaBridge 163:e59c8e839560 5884 }
AnnaBridge 163:e59c8e839560 5885
AnnaBridge 163:e59c8e839560 5886 /**
AnnaBridge 163:e59c8e839560 5887 * @brief Get the selected ADC instance disable state.
AnnaBridge 163:e59c8e839560 5888 * @rmtoll CR ADDIS LL_ADC_IsDisableOngoing
AnnaBridge 163:e59c8e839560 5889 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5890 * @retval 0: no ADC disable command on going.
AnnaBridge 163:e59c8e839560 5891 */
AnnaBridge 163:e59c8e839560 5892 __STATIC_INLINE uint32_t LL_ADC_IsDisableOngoing(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 5893 {
AnnaBridge 163:e59c8e839560 5894 return (READ_BIT(ADCx->CR, ADC_CR_ADDIS) == (ADC_CR_ADDIS));
AnnaBridge 163:e59c8e839560 5895 }
AnnaBridge 163:e59c8e839560 5896
AnnaBridge 163:e59c8e839560 5897 /**
AnnaBridge 163:e59c8e839560 5898 * @brief Start ADC calibration in the mode single-ended
AnnaBridge 163:e59c8e839560 5899 * or differential (for devices with differential mode available).
AnnaBridge 163:e59c8e839560 5900 * @note On this STM32 serie, a minimum number of ADC clock cycles
AnnaBridge 163:e59c8e839560 5901 * are required between ADC end of calibration and ADC enable.
AnnaBridge 163:e59c8e839560 5902 * Refer to literal @ref LL_ADC_DELAY_CALIB_ENABLE_ADC_CYCLES.
AnnaBridge 163:e59c8e839560 5903 * @note For devices with differential mode available:
AnnaBridge 163:e59c8e839560 5904 * Calibration of offset is specific to each of
AnnaBridge 163:e59c8e839560 5905 * single-ended and differential modes
AnnaBridge 163:e59c8e839560 5906 * (calibration run must be performed for each of these
AnnaBridge 163:e59c8e839560 5907 * differential modes, if used afterwards and if the application
AnnaBridge 163:e59c8e839560 5908 * requires their calibration).
AnnaBridge 163:e59c8e839560 5909 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5910 * ADC state:
AnnaBridge 163:e59c8e839560 5911 * ADC must be ADC disabled.
AnnaBridge 163:e59c8e839560 5912 * @rmtoll CR ADCAL LL_ADC_StartCalibration\n
AnnaBridge 163:e59c8e839560 5913 * CR ADCALDIF LL_ADC_StartCalibration
AnnaBridge 163:e59c8e839560 5914 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5915 * @param SingleDiff This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 5916 * @arg @ref LL_ADC_SINGLE_ENDED
AnnaBridge 163:e59c8e839560 5917 * @arg @ref LL_ADC_DIFFERENTIAL_ENDED
AnnaBridge 163:e59c8e839560 5918 * @retval None
AnnaBridge 163:e59c8e839560 5919 */
AnnaBridge 163:e59c8e839560 5920 __STATIC_INLINE void LL_ADC_StartCalibration(ADC_TypeDef *ADCx, uint32_t SingleDiff)
AnnaBridge 163:e59c8e839560 5921 {
AnnaBridge 163:e59c8e839560 5922 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 163:e59c8e839560 5923 /* instead of modifying only the selected bit for this function, */
AnnaBridge 163:e59c8e839560 5924 /* to not interfere with bits with HW property "rs". */
AnnaBridge 163:e59c8e839560 5925 MODIFY_REG(ADCx->CR,
AnnaBridge 163:e59c8e839560 5926 ADC_CR_ADCALDIF | ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 163:e59c8e839560 5927 ADC_CR_ADCAL | (SingleDiff & ADC_SINGLEDIFF_CALIB_START_MASK));
AnnaBridge 163:e59c8e839560 5928 }
AnnaBridge 163:e59c8e839560 5929
AnnaBridge 163:e59c8e839560 5930 /**
AnnaBridge 163:e59c8e839560 5931 * @brief Get ADC calibration state.
AnnaBridge 163:e59c8e839560 5932 * @rmtoll CR ADCAL LL_ADC_IsCalibrationOnGoing
AnnaBridge 163:e59c8e839560 5933 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5934 * @retval 0: calibration complete, 1: calibration in progress.
AnnaBridge 163:e59c8e839560 5935 */
AnnaBridge 163:e59c8e839560 5936 __STATIC_INLINE uint32_t LL_ADC_IsCalibrationOnGoing(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 5937 {
AnnaBridge 163:e59c8e839560 5938 return (READ_BIT(ADCx->CR, ADC_CR_ADCAL) == (ADC_CR_ADCAL));
AnnaBridge 163:e59c8e839560 5939 }
AnnaBridge 163:e59c8e839560 5940
AnnaBridge 163:e59c8e839560 5941 /**
AnnaBridge 163:e59c8e839560 5942 * @}
AnnaBridge 163:e59c8e839560 5943 */
AnnaBridge 163:e59c8e839560 5944
AnnaBridge 163:e59c8e839560 5945 /** @defgroup ADC_LL_EF_Operation_ADC_Group_Regular Operation on ADC hierarchical scope: group regular
AnnaBridge 163:e59c8e839560 5946 * @{
AnnaBridge 163:e59c8e839560 5947 */
AnnaBridge 163:e59c8e839560 5948
AnnaBridge 163:e59c8e839560 5949 /**
AnnaBridge 163:e59c8e839560 5950 * @brief Start ADC group regular conversion.
AnnaBridge 163:e59c8e839560 5951 * @note On this STM32 serie, this function is relevant for both
AnnaBridge 163:e59c8e839560 5952 * internal trigger (SW start) and external trigger:
AnnaBridge 163:e59c8e839560 5953 * - If ADC trigger has been set to software start, ADC conversion
AnnaBridge 163:e59c8e839560 5954 * starts immediately.
AnnaBridge 163:e59c8e839560 5955 * - If ADC trigger has been set to external trigger, ADC conversion
AnnaBridge 163:e59c8e839560 5956 * will start at next trigger event (on the selected trigger edge)
AnnaBridge 163:e59c8e839560 5957 * following the ADC start conversion command.
AnnaBridge 163:e59c8e839560 5958 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5959 * ADC state:
AnnaBridge 163:e59c8e839560 5960 * ADC must be enabled without conversion on going on group regular,
AnnaBridge 163:e59c8e839560 5961 * without conversion stop command on going on group regular,
AnnaBridge 163:e59c8e839560 5962 * without ADC disable command on going.
AnnaBridge 163:e59c8e839560 5963 * @rmtoll CR ADSTART LL_ADC_REG_StartConversion
AnnaBridge 163:e59c8e839560 5964 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5965 * @retval None
AnnaBridge 163:e59c8e839560 5966 */
AnnaBridge 163:e59c8e839560 5967 __STATIC_INLINE void LL_ADC_REG_StartConversion(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 5968 {
AnnaBridge 163:e59c8e839560 5969 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 163:e59c8e839560 5970 /* instead of modifying only the selected bit for this function, */
AnnaBridge 163:e59c8e839560 5971 /* to not interfere with bits with HW property "rs". */
AnnaBridge 163:e59c8e839560 5972 MODIFY_REG(ADCx->CR,
AnnaBridge 163:e59c8e839560 5973 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 163:e59c8e839560 5974 ADC_CR_ADSTART);
AnnaBridge 163:e59c8e839560 5975 }
AnnaBridge 163:e59c8e839560 5976
AnnaBridge 163:e59c8e839560 5977 /**
AnnaBridge 163:e59c8e839560 5978 * @brief Stop ADC group regular conversion.
AnnaBridge 163:e59c8e839560 5979 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 5980 * ADC state:
AnnaBridge 163:e59c8e839560 5981 * ADC must be enabled with conversion on going on group regular,
AnnaBridge 163:e59c8e839560 5982 * without ADC disable command on going.
AnnaBridge 163:e59c8e839560 5983 * @rmtoll CR ADSTP LL_ADC_REG_StopConversion
AnnaBridge 163:e59c8e839560 5984 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 5985 * @retval None
AnnaBridge 163:e59c8e839560 5986 */
AnnaBridge 163:e59c8e839560 5987 __STATIC_INLINE void LL_ADC_REG_StopConversion(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 5988 {
AnnaBridge 163:e59c8e839560 5989 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 163:e59c8e839560 5990 /* instead of modifying only the selected bit for this function, */
AnnaBridge 163:e59c8e839560 5991 /* to not interfere with bits with HW property "rs". */
AnnaBridge 163:e59c8e839560 5992 MODIFY_REG(ADCx->CR,
AnnaBridge 163:e59c8e839560 5993 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 163:e59c8e839560 5994 ADC_CR_ADSTP);
AnnaBridge 163:e59c8e839560 5995 }
AnnaBridge 163:e59c8e839560 5996
AnnaBridge 163:e59c8e839560 5997 /**
AnnaBridge 163:e59c8e839560 5998 * @brief Get ADC group regular conversion state.
AnnaBridge 163:e59c8e839560 5999 * @rmtoll CR ADSTART LL_ADC_REG_IsConversionOngoing
AnnaBridge 163:e59c8e839560 6000 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6001 * @retval 0: no conversion is on going on ADC group regular.
AnnaBridge 163:e59c8e839560 6002 */
AnnaBridge 163:e59c8e839560 6003 __STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6004 {
AnnaBridge 163:e59c8e839560 6005 return (READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART));
AnnaBridge 163:e59c8e839560 6006 }
AnnaBridge 163:e59c8e839560 6007
AnnaBridge 163:e59c8e839560 6008 /**
AnnaBridge 163:e59c8e839560 6009 * @brief Get ADC group regular command of conversion stop state
AnnaBridge 163:e59c8e839560 6010 * @rmtoll CR ADSTP LL_ADC_REG_IsStopConversionOngoing
AnnaBridge 163:e59c8e839560 6011 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6012 * @retval 0: no command of conversion stop is on going on ADC group regular.
AnnaBridge 163:e59c8e839560 6013 */
AnnaBridge 163:e59c8e839560 6014 __STATIC_INLINE uint32_t LL_ADC_REG_IsStopConversionOngoing(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6015 {
AnnaBridge 163:e59c8e839560 6016 return (READ_BIT(ADCx->CR, ADC_CR_ADSTP) == (ADC_CR_ADSTP));
AnnaBridge 163:e59c8e839560 6017 }
AnnaBridge 163:e59c8e839560 6018
AnnaBridge 163:e59c8e839560 6019 /**
AnnaBridge 163:e59c8e839560 6020 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 163:e59c8e839560 6021 * all ADC configurations: all ADC resolutions and
AnnaBridge 163:e59c8e839560 6022 * all oversampling increased data width (for devices
AnnaBridge 163:e59c8e839560 6023 * with feature oversampling).
AnnaBridge 163:e59c8e839560 6024 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData32
AnnaBridge 163:e59c8e839560 6025 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6026 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 163:e59c8e839560 6027 */
AnnaBridge 163:e59c8e839560 6028 __STATIC_INLINE uint32_t LL_ADC_REG_ReadConversionData32(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6029 {
AnnaBridge 163:e59c8e839560 6030 return (uint32_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA));
AnnaBridge 163:e59c8e839560 6031 }
AnnaBridge 163:e59c8e839560 6032
AnnaBridge 163:e59c8e839560 6033 /**
AnnaBridge 163:e59c8e839560 6034 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 163:e59c8e839560 6035 * ADC resolution 12 bits.
AnnaBridge 163:e59c8e839560 6036 * @note For devices with feature oversampling: Oversampling
AnnaBridge 163:e59c8e839560 6037 * can increase data width, function for extended range
AnnaBridge 163:e59c8e839560 6038 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
AnnaBridge 163:e59c8e839560 6039 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData12
AnnaBridge 163:e59c8e839560 6040 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6041 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 6042 */
AnnaBridge 163:e59c8e839560 6043 __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData12(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6044 {
AnnaBridge 163:e59c8e839560 6045 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA));
AnnaBridge 163:e59c8e839560 6046 }
AnnaBridge 163:e59c8e839560 6047
AnnaBridge 163:e59c8e839560 6048 /**
AnnaBridge 163:e59c8e839560 6049 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 163:e59c8e839560 6050 * ADC resolution 10 bits.
AnnaBridge 163:e59c8e839560 6051 * @note For devices with feature oversampling: Oversampling
AnnaBridge 163:e59c8e839560 6052 * can increase data width, function for extended range
AnnaBridge 163:e59c8e839560 6053 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
AnnaBridge 163:e59c8e839560 6054 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData10
AnnaBridge 163:e59c8e839560 6055 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6056 * @retval Value between Min_Data=0x000 and Max_Data=0x3FF
AnnaBridge 163:e59c8e839560 6057 */
AnnaBridge 163:e59c8e839560 6058 __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData10(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6059 {
AnnaBridge 163:e59c8e839560 6060 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA));
AnnaBridge 163:e59c8e839560 6061 }
AnnaBridge 163:e59c8e839560 6062
AnnaBridge 163:e59c8e839560 6063 /**
AnnaBridge 163:e59c8e839560 6064 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 163:e59c8e839560 6065 * ADC resolution 8 bits.
AnnaBridge 163:e59c8e839560 6066 * @note For devices with feature oversampling: Oversampling
AnnaBridge 163:e59c8e839560 6067 * can increase data width, function for extended range
AnnaBridge 163:e59c8e839560 6068 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
AnnaBridge 163:e59c8e839560 6069 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData8
AnnaBridge 163:e59c8e839560 6070 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6071 * @retval Value between Min_Data=0x00 and Max_Data=0xFF
AnnaBridge 163:e59c8e839560 6072 */
AnnaBridge 163:e59c8e839560 6073 __STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData8(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6074 {
AnnaBridge 163:e59c8e839560 6075 return (uint8_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA));
AnnaBridge 163:e59c8e839560 6076 }
AnnaBridge 163:e59c8e839560 6077
AnnaBridge 163:e59c8e839560 6078 /**
AnnaBridge 163:e59c8e839560 6079 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 163:e59c8e839560 6080 * ADC resolution 6 bits.
AnnaBridge 163:e59c8e839560 6081 * @note For devices with feature oversampling: Oversampling
AnnaBridge 163:e59c8e839560 6082 * can increase data width, function for extended range
AnnaBridge 163:e59c8e839560 6083 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
AnnaBridge 163:e59c8e839560 6084 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData6
AnnaBridge 163:e59c8e839560 6085 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6086 * @retval Value between Min_Data=0x00 and Max_Data=0x3F
AnnaBridge 163:e59c8e839560 6087 */
AnnaBridge 163:e59c8e839560 6088 __STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData6(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6089 {
AnnaBridge 163:e59c8e839560 6090 return (uint8_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA));
AnnaBridge 163:e59c8e839560 6091 }
AnnaBridge 163:e59c8e839560 6092
AnnaBridge 163:e59c8e839560 6093 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 163:e59c8e839560 6094 /**
AnnaBridge 163:e59c8e839560 6095 * @brief Get ADC multimode conversion data of ADC master, ADC slave
AnnaBridge 163:e59c8e839560 6096 * or raw data with ADC master and slave concatenated.
AnnaBridge 163:e59c8e839560 6097 * @note If raw data with ADC master and slave concatenated is retrieved,
AnnaBridge 163:e59c8e839560 6098 * a macro is available to get the conversion data of
AnnaBridge 163:e59c8e839560 6099 * ADC master or ADC slave: see helper macro
AnnaBridge 163:e59c8e839560 6100 * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE().
AnnaBridge 163:e59c8e839560 6101 * (however this macro is mainly intended for multimode
AnnaBridge 163:e59c8e839560 6102 * transfer by DMA, because this function can do the same
AnnaBridge 163:e59c8e839560 6103 * by getting multimode conversion data of ADC master or ADC slave
AnnaBridge 163:e59c8e839560 6104 * separately).
AnnaBridge 163:e59c8e839560 6105 * @rmtoll CDR RDATA_MST LL_ADC_REG_ReadMultiConversionData32\n
AnnaBridge 163:e59c8e839560 6106 * CDR RDATA_SLV LL_ADC_REG_ReadMultiConversionData32
AnnaBridge 163:e59c8e839560 6107 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6108 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6109 * @param ConversionData This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 6110 * @arg @ref LL_ADC_MULTI_MASTER
AnnaBridge 163:e59c8e839560 6111 * @arg @ref LL_ADC_MULTI_SLAVE
AnnaBridge 163:e59c8e839560 6112 * @arg @ref LL_ADC_MULTI_MASTER_SLAVE
AnnaBridge 163:e59c8e839560 6113 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 163:e59c8e839560 6114 */
AnnaBridge 163:e59c8e839560 6115 __STATIC_INLINE uint32_t LL_ADC_REG_ReadMultiConversionData32(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t ConversionData)
AnnaBridge 163:e59c8e839560 6116 {
AnnaBridge 163:e59c8e839560 6117 return (uint32_t)(READ_BIT(ADCxy_COMMON->CDR,
AnnaBridge 163:e59c8e839560 6118 ConversionData)
AnnaBridge 163:e59c8e839560 6119 >> POSITION_VAL(ConversionData)
AnnaBridge 163:e59c8e839560 6120 );
AnnaBridge 163:e59c8e839560 6121 }
AnnaBridge 163:e59c8e839560 6122 #endif /* ADC_MULTIMODE_SUPPORT */
AnnaBridge 163:e59c8e839560 6123
AnnaBridge 163:e59c8e839560 6124 /**
AnnaBridge 163:e59c8e839560 6125 * @}
AnnaBridge 163:e59c8e839560 6126 */
AnnaBridge 163:e59c8e839560 6127
AnnaBridge 163:e59c8e839560 6128 /** @defgroup ADC_LL_EF_Operation_ADC_Group_Injected Operation on ADC hierarchical scope: group injected
AnnaBridge 163:e59c8e839560 6129 * @{
AnnaBridge 163:e59c8e839560 6130 */
AnnaBridge 163:e59c8e839560 6131
AnnaBridge 163:e59c8e839560 6132 /**
AnnaBridge 163:e59c8e839560 6133 * @brief Start ADC group injected conversion.
AnnaBridge 163:e59c8e839560 6134 * @note On this STM32 serie, this function is relevant for both
AnnaBridge 163:e59c8e839560 6135 * internal trigger (SW start) and external trigger:
AnnaBridge 163:e59c8e839560 6136 * - If ADC trigger has been set to software start, ADC conversion
AnnaBridge 163:e59c8e839560 6137 * starts immediately.
AnnaBridge 163:e59c8e839560 6138 * - If ADC trigger has been set to external trigger, ADC conversion
AnnaBridge 163:e59c8e839560 6139 * will start at next trigger event (on the selected trigger edge)
AnnaBridge 163:e59c8e839560 6140 * following the ADC start conversion command.
AnnaBridge 163:e59c8e839560 6141 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 6142 * ADC state:
AnnaBridge 163:e59c8e839560 6143 * ADC must be enabled without conversion on going on group injected,
AnnaBridge 163:e59c8e839560 6144 * without conversion stop command on going on group injected,
AnnaBridge 163:e59c8e839560 6145 * without ADC disable command on going.
AnnaBridge 163:e59c8e839560 6146 * @rmtoll CR JADSTART LL_ADC_INJ_StartConversion
AnnaBridge 163:e59c8e839560 6147 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6148 * @retval None
AnnaBridge 163:e59c8e839560 6149 */
AnnaBridge 163:e59c8e839560 6150 __STATIC_INLINE void LL_ADC_INJ_StartConversion(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6151 {
AnnaBridge 163:e59c8e839560 6152 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 163:e59c8e839560 6153 /* instead of modifying only the selected bit for this function, */
AnnaBridge 163:e59c8e839560 6154 /* to not interfere with bits with HW property "rs". */
AnnaBridge 163:e59c8e839560 6155 MODIFY_REG(ADCx->CR,
AnnaBridge 163:e59c8e839560 6156 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 163:e59c8e839560 6157 ADC_CR_JADSTART);
AnnaBridge 163:e59c8e839560 6158 }
AnnaBridge 163:e59c8e839560 6159
AnnaBridge 163:e59c8e839560 6160 /**
AnnaBridge 163:e59c8e839560 6161 * @brief Stop ADC group injected conversion.
AnnaBridge 163:e59c8e839560 6162 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 163:e59c8e839560 6163 * ADC state:
AnnaBridge 163:e59c8e839560 6164 * ADC must be enabled with conversion on going on group injected,
AnnaBridge 163:e59c8e839560 6165 * without ADC disable command on going.
AnnaBridge 163:e59c8e839560 6166 * @rmtoll CR JADSTP LL_ADC_INJ_StopConversion
AnnaBridge 163:e59c8e839560 6167 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6168 * @retval None
AnnaBridge 163:e59c8e839560 6169 */
AnnaBridge 163:e59c8e839560 6170 __STATIC_INLINE void LL_ADC_INJ_StopConversion(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6171 {
AnnaBridge 163:e59c8e839560 6172 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 163:e59c8e839560 6173 /* instead of modifying only the selected bit for this function, */
AnnaBridge 163:e59c8e839560 6174 /* to not interfere with bits with HW property "rs". */
AnnaBridge 163:e59c8e839560 6175 MODIFY_REG(ADCx->CR,
AnnaBridge 163:e59c8e839560 6176 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 163:e59c8e839560 6177 ADC_CR_JADSTP);
AnnaBridge 163:e59c8e839560 6178 }
AnnaBridge 163:e59c8e839560 6179
AnnaBridge 163:e59c8e839560 6180 /**
AnnaBridge 163:e59c8e839560 6181 * @brief Get ADC group injected conversion state.
AnnaBridge 163:e59c8e839560 6182 * @rmtoll CR JADSTART LL_ADC_INJ_IsConversionOngoing
AnnaBridge 163:e59c8e839560 6183 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6184 * @retval 0: no conversion is on going on ADC group injected.
AnnaBridge 163:e59c8e839560 6185 */
AnnaBridge 163:e59c8e839560 6186 __STATIC_INLINE uint32_t LL_ADC_INJ_IsConversionOngoing(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6187 {
AnnaBridge 163:e59c8e839560 6188 return (READ_BIT(ADCx->CR, ADC_CR_JADSTART) == (ADC_CR_JADSTART));
AnnaBridge 163:e59c8e839560 6189 }
AnnaBridge 163:e59c8e839560 6190
AnnaBridge 163:e59c8e839560 6191 /**
AnnaBridge 163:e59c8e839560 6192 * @brief Get ADC group injected command of conversion stop state
AnnaBridge 163:e59c8e839560 6193 * @rmtoll CR JADSTP LL_ADC_INJ_IsStopConversionOngoing
AnnaBridge 163:e59c8e839560 6194 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6195 * @retval 0: no command of conversion stop is on going on ADC group injected.
AnnaBridge 163:e59c8e839560 6196 */
AnnaBridge 163:e59c8e839560 6197 __STATIC_INLINE uint32_t LL_ADC_INJ_IsStopConversionOngoing(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6198 {
AnnaBridge 163:e59c8e839560 6199 return (READ_BIT(ADCx->CR, ADC_CR_JADSTP) == (ADC_CR_JADSTP));
AnnaBridge 163:e59c8e839560 6200 }
AnnaBridge 163:e59c8e839560 6201
AnnaBridge 163:e59c8e839560 6202 /**
AnnaBridge 163:e59c8e839560 6203 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 163:e59c8e839560 6204 * all ADC configurations: all ADC resolutions and
AnnaBridge 163:e59c8e839560 6205 * all oversampling increased data width (for devices
AnnaBridge 163:e59c8e839560 6206 * with feature oversampling).
AnnaBridge 163:e59c8e839560 6207 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData32\n
AnnaBridge 163:e59c8e839560 6208 * JDR2 JDATA LL_ADC_INJ_ReadConversionData32\n
AnnaBridge 163:e59c8e839560 6209 * JDR3 JDATA LL_ADC_INJ_ReadConversionData32\n
AnnaBridge 163:e59c8e839560 6210 * JDR4 JDATA LL_ADC_INJ_ReadConversionData32
AnnaBridge 163:e59c8e839560 6211 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6212 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 6213 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 6214 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 6215 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 6216 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 6217 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 163:e59c8e839560 6218 */
AnnaBridge 163:e59c8e839560 6219 __STATIC_INLINE uint32_t LL_ADC_INJ_ReadConversionData32(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 6220 {
AnnaBridge 163:e59c8e839560 6221 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 6222
AnnaBridge 163:e59c8e839560 6223 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 6224 ADC_JDR1_JDATA)
AnnaBridge 163:e59c8e839560 6225 );
AnnaBridge 163:e59c8e839560 6226 }
AnnaBridge 163:e59c8e839560 6227
AnnaBridge 163:e59c8e839560 6228 /**
AnnaBridge 163:e59c8e839560 6229 * @brief Get ADC group injected conversion data, range fit for
AnnaBridge 163:e59c8e839560 6230 * ADC resolution 12 bits.
AnnaBridge 163:e59c8e839560 6231 * @note For devices with feature oversampling: Oversampling
AnnaBridge 163:e59c8e839560 6232 * can increase data width, function for extended range
AnnaBridge 163:e59c8e839560 6233 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
AnnaBridge 163:e59c8e839560 6234 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData12\n
AnnaBridge 163:e59c8e839560 6235 * JDR2 JDATA LL_ADC_INJ_ReadConversionData12\n
AnnaBridge 163:e59c8e839560 6236 * JDR3 JDATA LL_ADC_INJ_ReadConversionData12\n
AnnaBridge 163:e59c8e839560 6237 * JDR4 JDATA LL_ADC_INJ_ReadConversionData12
AnnaBridge 163:e59c8e839560 6238 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6239 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 6240 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 6241 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 6242 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 6243 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 6244 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 6245 */
AnnaBridge 163:e59c8e839560 6246 __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData12(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 6247 {
AnnaBridge 163:e59c8e839560 6248 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 6249
AnnaBridge 163:e59c8e839560 6250 return (uint16_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 6251 ADC_JDR1_JDATA)
AnnaBridge 163:e59c8e839560 6252 );
AnnaBridge 163:e59c8e839560 6253 }
AnnaBridge 163:e59c8e839560 6254
AnnaBridge 163:e59c8e839560 6255 /**
AnnaBridge 163:e59c8e839560 6256 * @brief Get ADC group injected conversion data, range fit for
AnnaBridge 163:e59c8e839560 6257 * ADC resolution 10 bits.
AnnaBridge 163:e59c8e839560 6258 * @note For devices with feature oversampling: Oversampling
AnnaBridge 163:e59c8e839560 6259 * can increase data width, function for extended range
AnnaBridge 163:e59c8e839560 6260 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
AnnaBridge 163:e59c8e839560 6261 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData10\n
AnnaBridge 163:e59c8e839560 6262 * JDR2 JDATA LL_ADC_INJ_ReadConversionData10\n
AnnaBridge 163:e59c8e839560 6263 * JDR3 JDATA LL_ADC_INJ_ReadConversionData10\n
AnnaBridge 163:e59c8e839560 6264 * JDR4 JDATA LL_ADC_INJ_ReadConversionData10
AnnaBridge 163:e59c8e839560 6265 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6266 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 6267 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 6268 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 6269 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 6270 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 6271 * @retval Value between Min_Data=0x000 and Max_Data=0x3FF
AnnaBridge 163:e59c8e839560 6272 */
AnnaBridge 163:e59c8e839560 6273 __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData10(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 6274 {
AnnaBridge 163:e59c8e839560 6275 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 6276
AnnaBridge 163:e59c8e839560 6277 return (uint16_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 6278 ADC_JDR1_JDATA)
AnnaBridge 163:e59c8e839560 6279 );
AnnaBridge 163:e59c8e839560 6280 }
AnnaBridge 163:e59c8e839560 6281
AnnaBridge 163:e59c8e839560 6282 /**
AnnaBridge 163:e59c8e839560 6283 * @brief Get ADC group injected conversion data, range fit for
AnnaBridge 163:e59c8e839560 6284 * ADC resolution 8 bits.
AnnaBridge 163:e59c8e839560 6285 * @note For devices with feature oversampling: Oversampling
AnnaBridge 163:e59c8e839560 6286 * can increase data width, function for extended range
AnnaBridge 163:e59c8e839560 6287 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
AnnaBridge 163:e59c8e839560 6288 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData8\n
AnnaBridge 163:e59c8e839560 6289 * JDR2 JDATA LL_ADC_INJ_ReadConversionData8\n
AnnaBridge 163:e59c8e839560 6290 * JDR3 JDATA LL_ADC_INJ_ReadConversionData8\n
AnnaBridge 163:e59c8e839560 6291 * JDR4 JDATA LL_ADC_INJ_ReadConversionData8
AnnaBridge 163:e59c8e839560 6292 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6293 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 6294 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 6295 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 6296 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 6297 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 6298 * @retval Value between Min_Data=0x00 and Max_Data=0xFF
AnnaBridge 163:e59c8e839560 6299 */
AnnaBridge 163:e59c8e839560 6300 __STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData8(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 6301 {
AnnaBridge 163:e59c8e839560 6302 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 6303
AnnaBridge 163:e59c8e839560 6304 return (uint8_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 6305 ADC_JDR1_JDATA)
AnnaBridge 163:e59c8e839560 6306 );
AnnaBridge 163:e59c8e839560 6307 }
AnnaBridge 163:e59c8e839560 6308
AnnaBridge 163:e59c8e839560 6309 /**
AnnaBridge 163:e59c8e839560 6310 * @brief Get ADC group injected conversion data, range fit for
AnnaBridge 163:e59c8e839560 6311 * ADC resolution 6 bits.
AnnaBridge 163:e59c8e839560 6312 * @note For devices with feature oversampling: Oversampling
AnnaBridge 163:e59c8e839560 6313 * can increase data width, function for extended range
AnnaBridge 163:e59c8e839560 6314 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
AnnaBridge 163:e59c8e839560 6315 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData6\n
AnnaBridge 163:e59c8e839560 6316 * JDR2 JDATA LL_ADC_INJ_ReadConversionData6\n
AnnaBridge 163:e59c8e839560 6317 * JDR3 JDATA LL_ADC_INJ_ReadConversionData6\n
AnnaBridge 163:e59c8e839560 6318 * JDR4 JDATA LL_ADC_INJ_ReadConversionData6
AnnaBridge 163:e59c8e839560 6319 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6320 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 6321 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 6322 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 6323 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 6324 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 6325 * @retval Value between Min_Data=0x00 and Max_Data=0x3F
AnnaBridge 163:e59c8e839560 6326 */
AnnaBridge 163:e59c8e839560 6327 __STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData6(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 6328 {
AnnaBridge 163:e59c8e839560 6329 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 6330
AnnaBridge 163:e59c8e839560 6331 return (uint8_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 6332 ADC_JDR1_JDATA)
AnnaBridge 163:e59c8e839560 6333 );
AnnaBridge 163:e59c8e839560 6334 }
AnnaBridge 163:e59c8e839560 6335
AnnaBridge 163:e59c8e839560 6336 /**
AnnaBridge 163:e59c8e839560 6337 * @}
AnnaBridge 163:e59c8e839560 6338 */
AnnaBridge 163:e59c8e839560 6339
AnnaBridge 163:e59c8e839560 6340 /** @defgroup ADC_LL_EF_FLAG_Management ADC flag management
AnnaBridge 163:e59c8e839560 6341 * @{
AnnaBridge 163:e59c8e839560 6342 */
AnnaBridge 163:e59c8e839560 6343
AnnaBridge 163:e59c8e839560 6344 /**
AnnaBridge 163:e59c8e839560 6345 * @brief Get flag ADC ready.
AnnaBridge 163:e59c8e839560 6346 * @note On this STM32 serie, flag LL_ADC_FLAG_ADRDY is raised when the ADC
AnnaBridge 163:e59c8e839560 6347 * is enabled and when conversion clock is active.
AnnaBridge 163:e59c8e839560 6348 * (not only core clock: this ADC has a dual clock domain)
AnnaBridge 163:e59c8e839560 6349 * @rmtoll ISR ADRDY LL_ADC_IsActiveFlag_ADRDY
AnnaBridge 163:e59c8e839560 6350 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6351 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6352 */
AnnaBridge 163:e59c8e839560 6353 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_ADRDY(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6354 {
AnnaBridge 163:e59c8e839560 6355 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_ADRDY) == (LL_ADC_FLAG_ADRDY));
AnnaBridge 163:e59c8e839560 6356 }
AnnaBridge 163:e59c8e839560 6357
AnnaBridge 163:e59c8e839560 6358 /**
AnnaBridge 163:e59c8e839560 6359 * @brief Get flag ADC group regular end of unitary conversion.
AnnaBridge 163:e59c8e839560 6360 * @rmtoll ISR EOC LL_ADC_IsActiveFlag_EOC
AnnaBridge 163:e59c8e839560 6361 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6362 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6363 */
AnnaBridge 163:e59c8e839560 6364 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOC(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6365 {
AnnaBridge 163:e59c8e839560 6366 return (READ_BIT(ADCx->ISR, ADC_ISR_EOC) == (ADC_ISR_EOC));
AnnaBridge 163:e59c8e839560 6367 }
AnnaBridge 163:e59c8e839560 6368
AnnaBridge 163:e59c8e839560 6369 /**
AnnaBridge 163:e59c8e839560 6370 * @brief Get flag ADC group regular end of sequence conversions.
AnnaBridge 163:e59c8e839560 6371 * @rmtoll ISR EOS LL_ADC_IsActiveFlag_EOS
AnnaBridge 163:e59c8e839560 6372 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6373 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6374 */
AnnaBridge 163:e59c8e839560 6375 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6376 {
AnnaBridge 163:e59c8e839560 6377 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_EOS) == (LL_ADC_FLAG_EOS));
AnnaBridge 163:e59c8e839560 6378 }
AnnaBridge 163:e59c8e839560 6379
AnnaBridge 163:e59c8e839560 6380 /**
AnnaBridge 163:e59c8e839560 6381 * @brief Get flag ADC group regular overrun.
AnnaBridge 163:e59c8e839560 6382 * @rmtoll ISR OVR LL_ADC_IsActiveFlag_OVR
AnnaBridge 163:e59c8e839560 6383 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6384 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6385 */
AnnaBridge 163:e59c8e839560 6386 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_OVR(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6387 {
AnnaBridge 163:e59c8e839560 6388 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_OVR) == (LL_ADC_FLAG_OVR));
AnnaBridge 163:e59c8e839560 6389 }
AnnaBridge 163:e59c8e839560 6390
AnnaBridge 163:e59c8e839560 6391 /**
AnnaBridge 163:e59c8e839560 6392 * @brief Get flag ADC group regular end of sampling phase.
AnnaBridge 163:e59c8e839560 6393 * @rmtoll ISR EOSMP LL_ADC_IsActiveFlag_EOSMP
AnnaBridge 163:e59c8e839560 6394 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6395 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6396 */
AnnaBridge 163:e59c8e839560 6397 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOSMP(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6398 {
AnnaBridge 163:e59c8e839560 6399 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_EOSMP) == (LL_ADC_FLAG_EOSMP));
AnnaBridge 163:e59c8e839560 6400 }
AnnaBridge 163:e59c8e839560 6401
AnnaBridge 163:e59c8e839560 6402 /**
AnnaBridge 163:e59c8e839560 6403 * @brief Get flag ADC group injected end of unitary conversion.
AnnaBridge 163:e59c8e839560 6404 * @rmtoll ISR JEOC LL_ADC_IsActiveFlag_JEOC
AnnaBridge 163:e59c8e839560 6405 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6406 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6407 */
AnnaBridge 163:e59c8e839560 6408 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOC(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6409 {
AnnaBridge 163:e59c8e839560 6410 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_JEOC) == (LL_ADC_FLAG_JEOC));
AnnaBridge 163:e59c8e839560 6411 }
AnnaBridge 163:e59c8e839560 6412
AnnaBridge 163:e59c8e839560 6413 /**
AnnaBridge 163:e59c8e839560 6414 * @brief Get flag ADC group injected end of sequence conversions.
AnnaBridge 163:e59c8e839560 6415 * @rmtoll ISR JEOS LL_ADC_IsActiveFlag_JEOS
AnnaBridge 163:e59c8e839560 6416 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6417 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6418 */
AnnaBridge 163:e59c8e839560 6419 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6420 {
AnnaBridge 163:e59c8e839560 6421 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_JEOS) == (LL_ADC_FLAG_JEOS));
AnnaBridge 163:e59c8e839560 6422 }
AnnaBridge 163:e59c8e839560 6423
AnnaBridge 163:e59c8e839560 6424 /**
AnnaBridge 163:e59c8e839560 6425 * @brief Get flag ADC group injected contexts queue overflow.
AnnaBridge 163:e59c8e839560 6426 * @rmtoll ISR JQOVF LL_ADC_IsActiveFlag_JQOVF
AnnaBridge 163:e59c8e839560 6427 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6428 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6429 */
AnnaBridge 163:e59c8e839560 6430 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JQOVF(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6431 {
AnnaBridge 163:e59c8e839560 6432 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_JQOVF) == (LL_ADC_FLAG_JQOVF));
AnnaBridge 163:e59c8e839560 6433 }
AnnaBridge 163:e59c8e839560 6434
AnnaBridge 163:e59c8e839560 6435 /**
AnnaBridge 163:e59c8e839560 6436 * @brief Get flag ADC analog watchdog 1 flag
AnnaBridge 163:e59c8e839560 6437 * @rmtoll ISR AWD1 LL_ADC_IsActiveFlag_AWD1
AnnaBridge 163:e59c8e839560 6438 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6439 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6440 */
AnnaBridge 163:e59c8e839560 6441 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6442 {
AnnaBridge 163:e59c8e839560 6443 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_AWD1) == (LL_ADC_FLAG_AWD1));
AnnaBridge 163:e59c8e839560 6444 }
AnnaBridge 163:e59c8e839560 6445
AnnaBridge 163:e59c8e839560 6446 /**
AnnaBridge 163:e59c8e839560 6447 * @brief Get flag ADC analog watchdog 2.
AnnaBridge 163:e59c8e839560 6448 * @rmtoll ISR AWD2 LL_ADC_IsActiveFlag_AWD2
AnnaBridge 163:e59c8e839560 6449 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6450 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6451 */
AnnaBridge 163:e59c8e839560 6452 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD2(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6453 {
AnnaBridge 163:e59c8e839560 6454 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_AWD2) == (LL_ADC_FLAG_AWD2));
AnnaBridge 163:e59c8e839560 6455 }
AnnaBridge 163:e59c8e839560 6456
AnnaBridge 163:e59c8e839560 6457 /**
AnnaBridge 163:e59c8e839560 6458 * @brief Get flag ADC analog watchdog 3.
AnnaBridge 163:e59c8e839560 6459 * @rmtoll ISR AWD3 LL_ADC_IsActiveFlag_AWD3
AnnaBridge 163:e59c8e839560 6460 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6461 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6462 */
AnnaBridge 163:e59c8e839560 6463 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD3(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6464 {
AnnaBridge 163:e59c8e839560 6465 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_AWD3) == (LL_ADC_FLAG_AWD3));
AnnaBridge 163:e59c8e839560 6466 }
AnnaBridge 163:e59c8e839560 6467
AnnaBridge 163:e59c8e839560 6468 /**
AnnaBridge 163:e59c8e839560 6469 * @brief Clear flag ADC ready.
AnnaBridge 163:e59c8e839560 6470 * @note On this STM32 serie, flag LL_ADC_FLAG_ADRDY is raised when the ADC
AnnaBridge 163:e59c8e839560 6471 * is enabled and when conversion clock is active.
AnnaBridge 163:e59c8e839560 6472 * (not only core clock: this ADC has a dual clock domain)
AnnaBridge 163:e59c8e839560 6473 * @rmtoll ISR ADRDY LL_ADC_ClearFlag_ADRDY
AnnaBridge 163:e59c8e839560 6474 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6475 * @retval None
AnnaBridge 163:e59c8e839560 6476 */
AnnaBridge 163:e59c8e839560 6477 __STATIC_INLINE void LL_ADC_ClearFlag_ADRDY(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6478 {
AnnaBridge 163:e59c8e839560 6479 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_ADRDY);
AnnaBridge 163:e59c8e839560 6480 }
AnnaBridge 163:e59c8e839560 6481
AnnaBridge 163:e59c8e839560 6482 /**
AnnaBridge 163:e59c8e839560 6483 * @brief Clear flag ADC group regular end of unitary conversion.
AnnaBridge 163:e59c8e839560 6484 * @rmtoll ISR EOC LL_ADC_ClearFlag_EOC
AnnaBridge 163:e59c8e839560 6485 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6486 * @retval None
AnnaBridge 163:e59c8e839560 6487 */
AnnaBridge 163:e59c8e839560 6488 __STATIC_INLINE void LL_ADC_ClearFlag_EOC(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6489 {
AnnaBridge 163:e59c8e839560 6490 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_EOC);
AnnaBridge 163:e59c8e839560 6491 }
AnnaBridge 163:e59c8e839560 6492
AnnaBridge 163:e59c8e839560 6493 /**
AnnaBridge 163:e59c8e839560 6494 * @brief Clear flag ADC group regular end of sequence conversions.
AnnaBridge 163:e59c8e839560 6495 * @rmtoll ISR EOS LL_ADC_ClearFlag_EOS
AnnaBridge 163:e59c8e839560 6496 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6497 * @retval None
AnnaBridge 163:e59c8e839560 6498 */
AnnaBridge 163:e59c8e839560 6499 __STATIC_INLINE void LL_ADC_ClearFlag_EOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6500 {
AnnaBridge 163:e59c8e839560 6501 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_EOS);
AnnaBridge 163:e59c8e839560 6502 }
AnnaBridge 163:e59c8e839560 6503
AnnaBridge 163:e59c8e839560 6504 /**
AnnaBridge 163:e59c8e839560 6505 * @brief Clear flag ADC group regular overrun.
AnnaBridge 163:e59c8e839560 6506 * @rmtoll ISR OVR LL_ADC_ClearFlag_OVR
AnnaBridge 163:e59c8e839560 6507 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6508 * @retval None
AnnaBridge 163:e59c8e839560 6509 */
AnnaBridge 163:e59c8e839560 6510 __STATIC_INLINE void LL_ADC_ClearFlag_OVR(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6511 {
AnnaBridge 163:e59c8e839560 6512 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_OVR);
AnnaBridge 163:e59c8e839560 6513 }
AnnaBridge 163:e59c8e839560 6514
AnnaBridge 163:e59c8e839560 6515 /**
AnnaBridge 163:e59c8e839560 6516 * @brief Clear flag ADC group regular end of sampling phase.
AnnaBridge 163:e59c8e839560 6517 * @rmtoll ISR EOSMP LL_ADC_ClearFlag_EOSMP
AnnaBridge 163:e59c8e839560 6518 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6519 * @retval None
AnnaBridge 163:e59c8e839560 6520 */
AnnaBridge 163:e59c8e839560 6521 __STATIC_INLINE void LL_ADC_ClearFlag_EOSMP(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6522 {
AnnaBridge 163:e59c8e839560 6523 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_EOSMP);
AnnaBridge 163:e59c8e839560 6524 }
AnnaBridge 163:e59c8e839560 6525
AnnaBridge 163:e59c8e839560 6526 /**
AnnaBridge 163:e59c8e839560 6527 * @brief Clear flag ADC group injected end of unitary conversion.
AnnaBridge 163:e59c8e839560 6528 * @rmtoll ISR JEOC LL_ADC_ClearFlag_JEOC
AnnaBridge 163:e59c8e839560 6529 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6530 * @retval None
AnnaBridge 163:e59c8e839560 6531 */
AnnaBridge 163:e59c8e839560 6532 __STATIC_INLINE void LL_ADC_ClearFlag_JEOC(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6533 {
AnnaBridge 163:e59c8e839560 6534 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_JEOC);
AnnaBridge 163:e59c8e839560 6535 }
AnnaBridge 163:e59c8e839560 6536
AnnaBridge 163:e59c8e839560 6537 /**
AnnaBridge 163:e59c8e839560 6538 * @brief Clear flag ADC group injected end of sequence conversions.
AnnaBridge 163:e59c8e839560 6539 * @rmtoll ISR JEOS LL_ADC_ClearFlag_JEOS
AnnaBridge 163:e59c8e839560 6540 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6541 * @retval None
AnnaBridge 163:e59c8e839560 6542 */
AnnaBridge 163:e59c8e839560 6543 __STATIC_INLINE void LL_ADC_ClearFlag_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6544 {
AnnaBridge 163:e59c8e839560 6545 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_JEOS);
AnnaBridge 163:e59c8e839560 6546 }
AnnaBridge 163:e59c8e839560 6547
AnnaBridge 163:e59c8e839560 6548 /**
AnnaBridge 163:e59c8e839560 6549 * @brief Clear flag ADC group injected contexts queue overflow.
AnnaBridge 163:e59c8e839560 6550 * @rmtoll ISR JQOVF LL_ADC_ClearFlag_JQOVF
AnnaBridge 163:e59c8e839560 6551 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6552 * @retval None
AnnaBridge 163:e59c8e839560 6553 */
AnnaBridge 163:e59c8e839560 6554 __STATIC_INLINE void LL_ADC_ClearFlag_JQOVF(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6555 {
AnnaBridge 163:e59c8e839560 6556 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_JQOVF);
AnnaBridge 163:e59c8e839560 6557 }
AnnaBridge 163:e59c8e839560 6558
AnnaBridge 163:e59c8e839560 6559 /**
AnnaBridge 163:e59c8e839560 6560 * @brief Clear flag ADC analog watchdog 1.
AnnaBridge 163:e59c8e839560 6561 * @rmtoll ISR AWD1 LL_ADC_ClearFlag_AWD1
AnnaBridge 163:e59c8e839560 6562 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6563 * @retval None
AnnaBridge 163:e59c8e839560 6564 */
AnnaBridge 163:e59c8e839560 6565 __STATIC_INLINE void LL_ADC_ClearFlag_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6566 {
AnnaBridge 163:e59c8e839560 6567 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_AWD1);
AnnaBridge 163:e59c8e839560 6568 }
AnnaBridge 163:e59c8e839560 6569
AnnaBridge 163:e59c8e839560 6570 /**
AnnaBridge 163:e59c8e839560 6571 * @brief Clear flag ADC analog watchdog 2.
AnnaBridge 163:e59c8e839560 6572 * @rmtoll ISR AWD2 LL_ADC_ClearFlag_AWD2
AnnaBridge 163:e59c8e839560 6573 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6574 * @retval None
AnnaBridge 163:e59c8e839560 6575 */
AnnaBridge 163:e59c8e839560 6576 __STATIC_INLINE void LL_ADC_ClearFlag_AWD2(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6577 {
AnnaBridge 163:e59c8e839560 6578 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_AWD2);
AnnaBridge 163:e59c8e839560 6579 }
AnnaBridge 163:e59c8e839560 6580
AnnaBridge 163:e59c8e839560 6581 /**
AnnaBridge 163:e59c8e839560 6582 * @brief Clear flag ADC analog watchdog 3.
AnnaBridge 163:e59c8e839560 6583 * @rmtoll ISR AWD3 LL_ADC_ClearFlag_AWD3
AnnaBridge 163:e59c8e839560 6584 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6585 * @retval None
AnnaBridge 163:e59c8e839560 6586 */
AnnaBridge 163:e59c8e839560 6587 __STATIC_INLINE void LL_ADC_ClearFlag_AWD3(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6588 {
AnnaBridge 163:e59c8e839560 6589 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_AWD3);
AnnaBridge 163:e59c8e839560 6590 }
AnnaBridge 163:e59c8e839560 6591
AnnaBridge 163:e59c8e839560 6592 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 163:e59c8e839560 6593 /**
AnnaBridge 163:e59c8e839560 6594 * @brief Get flag multimode ADC ready of the ADC master.
AnnaBridge 163:e59c8e839560 6595 * @rmtoll CSR ADRDY_MST LL_ADC_IsActiveFlag_MST_ADRDY
AnnaBridge 163:e59c8e839560 6596 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6597 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6598 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6599 */
AnnaBridge 163:e59c8e839560 6600 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_ADRDY(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6601 {
AnnaBridge 163:e59c8e839560 6602 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_ADRDY_MST) == (LL_ADC_FLAG_ADRDY_MST));
AnnaBridge 163:e59c8e839560 6603 }
AnnaBridge 163:e59c8e839560 6604
AnnaBridge 163:e59c8e839560 6605 /**
AnnaBridge 163:e59c8e839560 6606 * @brief Get flag multimode ADC ready of the ADC slave.
AnnaBridge 163:e59c8e839560 6607 * @rmtoll CSR ADRDY_SLV LL_ADC_IsActiveFlag_SLV_ADRDY
AnnaBridge 163:e59c8e839560 6608 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6609 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6610 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6611 */
AnnaBridge 163:e59c8e839560 6612 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_ADRDY(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6613 {
AnnaBridge 163:e59c8e839560 6614 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_ADRDY_SLV) == (LL_ADC_FLAG_ADRDY_SLV));
AnnaBridge 163:e59c8e839560 6615 }
AnnaBridge 163:e59c8e839560 6616
AnnaBridge 163:e59c8e839560 6617 /**
AnnaBridge 163:e59c8e839560 6618 * @brief Get flag multimode ADC group regular end of unitary conversion of the ADC master.
AnnaBridge 163:e59c8e839560 6619 * @rmtoll CSR EOC_MST LL_ADC_IsActiveFlag_MST_EOC
AnnaBridge 163:e59c8e839560 6620 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6621 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6622 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6623 */
AnnaBridge 163:e59c8e839560 6624 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOC(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6625 {
AnnaBridge 163:e59c8e839560 6626 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOC_SLV) == (LL_ADC_FLAG_EOC_SLV));
AnnaBridge 163:e59c8e839560 6627 }
AnnaBridge 163:e59c8e839560 6628
AnnaBridge 163:e59c8e839560 6629 /**
AnnaBridge 163:e59c8e839560 6630 * @brief Get flag multimode ADC group regular end of unitary conversion of the ADC slave.
AnnaBridge 163:e59c8e839560 6631 * @rmtoll CSR EOC_SLV LL_ADC_IsActiveFlag_SLV_EOC
AnnaBridge 163:e59c8e839560 6632 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6633 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6634 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6635 */
AnnaBridge 163:e59c8e839560 6636 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOC(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6637 {
AnnaBridge 163:e59c8e839560 6638 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOC_SLV) == (LL_ADC_FLAG_EOC_SLV));
AnnaBridge 163:e59c8e839560 6639 }
AnnaBridge 163:e59c8e839560 6640
AnnaBridge 163:e59c8e839560 6641 /**
AnnaBridge 163:e59c8e839560 6642 * @brief Get flag multimode ADC group regular end of sequence conversions of the ADC master.
AnnaBridge 163:e59c8e839560 6643 * @rmtoll CSR EOS_MST LL_ADC_IsActiveFlag_MST_EOS
AnnaBridge 163:e59c8e839560 6644 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6645 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6646 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6647 */
AnnaBridge 163:e59c8e839560 6648 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOS(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6649 {
AnnaBridge 163:e59c8e839560 6650 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOS_MST) == (LL_ADC_FLAG_EOS_MST));
AnnaBridge 163:e59c8e839560 6651 }
AnnaBridge 163:e59c8e839560 6652
AnnaBridge 163:e59c8e839560 6653 /**
AnnaBridge 163:e59c8e839560 6654 * @brief Get flag multimode ADC group regular end of sequence conversions of the ADC slave.
AnnaBridge 163:e59c8e839560 6655 * @rmtoll CSR EOS_SLV LL_ADC_IsActiveFlag_SLV_EOS
AnnaBridge 163:e59c8e839560 6656 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6657 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6658 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6659 */
AnnaBridge 163:e59c8e839560 6660 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOS(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6661 {
AnnaBridge 163:e59c8e839560 6662 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOS_SLV) == (LL_ADC_FLAG_EOS_SLV));
AnnaBridge 163:e59c8e839560 6663 }
AnnaBridge 163:e59c8e839560 6664
AnnaBridge 163:e59c8e839560 6665 /**
AnnaBridge 163:e59c8e839560 6666 * @brief Get flag multimode ADC group regular overrun of the ADC master.
AnnaBridge 163:e59c8e839560 6667 * @rmtoll CSR OVR_MST LL_ADC_IsActiveFlag_MST_OVR
AnnaBridge 163:e59c8e839560 6668 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6669 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6670 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6671 */
AnnaBridge 163:e59c8e839560 6672 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_OVR(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6673 {
AnnaBridge 163:e59c8e839560 6674 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_MST) == (LL_ADC_FLAG_OVR_MST));
AnnaBridge 163:e59c8e839560 6675 }
AnnaBridge 163:e59c8e839560 6676
AnnaBridge 163:e59c8e839560 6677 /**
AnnaBridge 163:e59c8e839560 6678 * @brief Get flag multimode ADC group regular overrun of the ADC slave.
AnnaBridge 163:e59c8e839560 6679 * @rmtoll CSR OVR_SLV LL_ADC_IsActiveFlag_SLV_OVR
AnnaBridge 163:e59c8e839560 6680 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6681 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6682 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6683 */
AnnaBridge 163:e59c8e839560 6684 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_OVR(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6685 {
AnnaBridge 163:e59c8e839560 6686 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_SLV) == (LL_ADC_FLAG_OVR_SLV));
AnnaBridge 163:e59c8e839560 6687 }
AnnaBridge 163:e59c8e839560 6688
AnnaBridge 163:e59c8e839560 6689 /**
AnnaBridge 163:e59c8e839560 6690 * @brief Get flag multimode ADC group regular end of sampling of the ADC master.
AnnaBridge 163:e59c8e839560 6691 * @rmtoll CSR EOSMP_MST LL_ADC_IsActiveFlag_MST_EOSMP
AnnaBridge 163:e59c8e839560 6692 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6693 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6694 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6695 */
AnnaBridge 163:e59c8e839560 6696 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOSMP(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6697 {
AnnaBridge 163:e59c8e839560 6698 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOSMP_MST) == (LL_ADC_FLAG_EOSMP_MST));
AnnaBridge 163:e59c8e839560 6699 }
AnnaBridge 163:e59c8e839560 6700
AnnaBridge 163:e59c8e839560 6701 /**
AnnaBridge 163:e59c8e839560 6702 * @brief Get flag multimode ADC group regular end of sampling of the ADC slave.
AnnaBridge 163:e59c8e839560 6703 * @rmtoll CSR EOSMP_SLV LL_ADC_IsActiveFlag_SLV_EOSMP
AnnaBridge 163:e59c8e839560 6704 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6705 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6706 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6707 */
AnnaBridge 163:e59c8e839560 6708 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOSMP(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6709 {
AnnaBridge 163:e59c8e839560 6710 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOSMP_SLV) == (LL_ADC_FLAG_EOSMP_SLV));
AnnaBridge 163:e59c8e839560 6711 }
AnnaBridge 163:e59c8e839560 6712
AnnaBridge 163:e59c8e839560 6713 /**
AnnaBridge 163:e59c8e839560 6714 * @brief Get flag multimode ADC group injected end of unitary conversion of the ADC master.
AnnaBridge 163:e59c8e839560 6715 * @rmtoll CSR JEOC_MST LL_ADC_IsActiveFlag_MST_JEOC
AnnaBridge 163:e59c8e839560 6716 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6717 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6718 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6719 */
AnnaBridge 163:e59c8e839560 6720 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOC(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6721 {
AnnaBridge 163:e59c8e839560 6722 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOC_MST) == (LL_ADC_FLAG_JEOC_MST));
AnnaBridge 163:e59c8e839560 6723 }
AnnaBridge 163:e59c8e839560 6724
AnnaBridge 163:e59c8e839560 6725 /**
AnnaBridge 163:e59c8e839560 6726 * @brief Get flag multimode ADC group injected end of unitary conversion of the ADC slave.
AnnaBridge 163:e59c8e839560 6727 * @rmtoll CSR JEOC_SLV LL_ADC_IsActiveFlag_SLV_JEOC
AnnaBridge 163:e59c8e839560 6728 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6729 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6730 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6731 */
AnnaBridge 163:e59c8e839560 6732 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOC(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6733 {
AnnaBridge 163:e59c8e839560 6734 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOC_SLV) == (LL_ADC_FLAG_JEOC_SLV));
AnnaBridge 163:e59c8e839560 6735 }
AnnaBridge 163:e59c8e839560 6736
AnnaBridge 163:e59c8e839560 6737 /**
AnnaBridge 163:e59c8e839560 6738 * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC master.
AnnaBridge 163:e59c8e839560 6739 * @rmtoll CSR JEOS_MST LL_ADC_IsActiveFlag_MST_JEOS
AnnaBridge 163:e59c8e839560 6740 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6741 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6742 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6743 */
AnnaBridge 163:e59c8e839560 6744 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOS(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6745 {
AnnaBridge 163:e59c8e839560 6746 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOS_MST) == (LL_ADC_FLAG_JEOS_MST));
AnnaBridge 163:e59c8e839560 6747 }
AnnaBridge 163:e59c8e839560 6748
AnnaBridge 163:e59c8e839560 6749 /**
AnnaBridge 163:e59c8e839560 6750 * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC slave.
AnnaBridge 163:e59c8e839560 6751 * @rmtoll CSR JEOS_SLV LL_ADC_IsActiveFlag_SLV_JEOS
AnnaBridge 163:e59c8e839560 6752 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6753 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6754 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6755 */
AnnaBridge 163:e59c8e839560 6756 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOS(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6757 {
AnnaBridge 163:e59c8e839560 6758 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOS_SLV) == (LL_ADC_FLAG_JEOS_SLV));
AnnaBridge 163:e59c8e839560 6759 }
AnnaBridge 163:e59c8e839560 6760
AnnaBridge 163:e59c8e839560 6761 /**
AnnaBridge 163:e59c8e839560 6762 * @brief Get flag multimode ADC group injected context queue overflow of the ADC master.
AnnaBridge 163:e59c8e839560 6763 * @rmtoll CSR JQOVF_MST LL_ADC_IsActiveFlag_MST_JQOVF
AnnaBridge 163:e59c8e839560 6764 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6765 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6766 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6767 */
AnnaBridge 163:e59c8e839560 6768 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JQOVF(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6769 {
AnnaBridge 163:e59c8e839560 6770 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JQOVF_MST) == (LL_ADC_FLAG_JQOVF_MST));
AnnaBridge 163:e59c8e839560 6771 }
AnnaBridge 163:e59c8e839560 6772
AnnaBridge 163:e59c8e839560 6773 /**
AnnaBridge 163:e59c8e839560 6774 * @brief Get flag multimode ADC group injected context queue overflow of the ADC slave.
AnnaBridge 163:e59c8e839560 6775 * @rmtoll CSR JQOVF_SLV LL_ADC_IsActiveFlag_SLV_JQOVF
AnnaBridge 163:e59c8e839560 6776 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6777 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6778 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6779 */
AnnaBridge 163:e59c8e839560 6780 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JQOVF(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6781 {
AnnaBridge 163:e59c8e839560 6782 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JQOVF_SLV) == (LL_ADC_FLAG_JQOVF_SLV));
AnnaBridge 163:e59c8e839560 6783 }
AnnaBridge 163:e59c8e839560 6784
AnnaBridge 163:e59c8e839560 6785 /**
AnnaBridge 163:e59c8e839560 6786 * @brief Get flag multimode ADC analog watchdog 1 of the ADC master.
AnnaBridge 163:e59c8e839560 6787 * @rmtoll CSR AWD1_MST LL_ADC_IsActiveFlag_MST_AWD1
AnnaBridge 163:e59c8e839560 6788 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6789 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6790 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6791 */
AnnaBridge 163:e59c8e839560 6792 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD1(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6793 {
AnnaBridge 163:e59c8e839560 6794 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_MST) == (LL_ADC_FLAG_AWD1_MST));
AnnaBridge 163:e59c8e839560 6795 }
AnnaBridge 163:e59c8e839560 6796
AnnaBridge 163:e59c8e839560 6797 /**
AnnaBridge 163:e59c8e839560 6798 * @brief Get flag multimode analog watchdog 1 of the ADC slave.
AnnaBridge 163:e59c8e839560 6799 * @rmtoll CSR AWD1_SLV LL_ADC_IsActiveFlag_SLV_AWD1
AnnaBridge 163:e59c8e839560 6800 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6801 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6802 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6803 */
AnnaBridge 163:e59c8e839560 6804 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD1(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6805 {
AnnaBridge 163:e59c8e839560 6806 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_SLV) == (LL_ADC_FLAG_AWD1_SLV));
AnnaBridge 163:e59c8e839560 6807 }
AnnaBridge 163:e59c8e839560 6808
AnnaBridge 163:e59c8e839560 6809 /**
AnnaBridge 163:e59c8e839560 6810 * @brief Get flag multimode ADC analog watchdog 2 of the ADC master.
AnnaBridge 163:e59c8e839560 6811 * @rmtoll CSR AWD2_MST LL_ADC_IsActiveFlag_MST_AWD2
AnnaBridge 163:e59c8e839560 6812 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6813 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6814 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6815 */
AnnaBridge 163:e59c8e839560 6816 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD2(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6817 {
AnnaBridge 163:e59c8e839560 6818 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD2_MST) == (LL_ADC_FLAG_AWD2_MST));
AnnaBridge 163:e59c8e839560 6819 }
AnnaBridge 163:e59c8e839560 6820
AnnaBridge 163:e59c8e839560 6821 /**
AnnaBridge 163:e59c8e839560 6822 * @brief Get flag multimode ADC analog watchdog 2 of the ADC slave.
AnnaBridge 163:e59c8e839560 6823 * @rmtoll CSR AWD2_SLV LL_ADC_IsActiveFlag_SLV_AWD2
AnnaBridge 163:e59c8e839560 6824 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6825 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6826 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6827 */
AnnaBridge 163:e59c8e839560 6828 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD2(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6829 {
AnnaBridge 163:e59c8e839560 6830 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD2_SLV) == (LL_ADC_FLAG_AWD2_SLV));
AnnaBridge 163:e59c8e839560 6831 }
AnnaBridge 163:e59c8e839560 6832
AnnaBridge 163:e59c8e839560 6833 /**
AnnaBridge 163:e59c8e839560 6834 * @brief Get flag multimode ADC analog watchdog 3 of the ADC master.
AnnaBridge 163:e59c8e839560 6835 * @rmtoll CSR AWD3_MST LL_ADC_IsActiveFlag_MST_AWD3
AnnaBridge 163:e59c8e839560 6836 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6837 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6838 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6839 */
AnnaBridge 163:e59c8e839560 6840 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD3(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6841 {
AnnaBridge 163:e59c8e839560 6842 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD3_MST) == (LL_ADC_FLAG_AWD3_MST));
AnnaBridge 163:e59c8e839560 6843 }
AnnaBridge 163:e59c8e839560 6844
AnnaBridge 163:e59c8e839560 6845 /**
AnnaBridge 163:e59c8e839560 6846 * @brief Get flag multimode ADC analog watchdog 3 of the ADC slave.
AnnaBridge 163:e59c8e839560 6847 * @rmtoll CSR AWD3_SLV LL_ADC_IsActiveFlag_SLV_AWD3
AnnaBridge 163:e59c8e839560 6848 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 6849 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 6850 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 6851 */
AnnaBridge 163:e59c8e839560 6852 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD3(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 6853 {
AnnaBridge 163:e59c8e839560 6854 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD3_SLV) == (LL_ADC_FLAG_AWD3_SLV));
AnnaBridge 163:e59c8e839560 6855 }
AnnaBridge 163:e59c8e839560 6856 #endif /* ADC_MULTIMODE_SUPPORT */
AnnaBridge 163:e59c8e839560 6857
AnnaBridge 163:e59c8e839560 6858 /**
AnnaBridge 163:e59c8e839560 6859 * @}
AnnaBridge 163:e59c8e839560 6860 */
AnnaBridge 163:e59c8e839560 6861
AnnaBridge 163:e59c8e839560 6862 /** @defgroup ADC_LL_EF_IT_Management ADC IT management
AnnaBridge 163:e59c8e839560 6863 * @{
AnnaBridge 163:e59c8e839560 6864 */
AnnaBridge 163:e59c8e839560 6865
AnnaBridge 163:e59c8e839560 6866 /**
AnnaBridge 163:e59c8e839560 6867 * @brief Enable ADC ready.
AnnaBridge 163:e59c8e839560 6868 * @rmtoll IER ADRDYIE LL_ADC_EnableIT_ADRDY
AnnaBridge 163:e59c8e839560 6869 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6870 * @retval None
AnnaBridge 163:e59c8e839560 6871 */
AnnaBridge 163:e59c8e839560 6872 __STATIC_INLINE void LL_ADC_EnableIT_ADRDY(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6873 {
AnnaBridge 163:e59c8e839560 6874 SET_BIT(ADCx->IER, LL_ADC_IT_ADRDY);
AnnaBridge 163:e59c8e839560 6875 }
AnnaBridge 163:e59c8e839560 6876
AnnaBridge 163:e59c8e839560 6877 /**
AnnaBridge 163:e59c8e839560 6878 * @brief Enable interruption ADC group regular end of unitary conversion.
AnnaBridge 163:e59c8e839560 6879 * @rmtoll IER EOCIE LL_ADC_EnableIT_EOC
AnnaBridge 163:e59c8e839560 6880 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6881 * @retval None
AnnaBridge 163:e59c8e839560 6882 */
AnnaBridge 163:e59c8e839560 6883 __STATIC_INLINE void LL_ADC_EnableIT_EOC(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6884 {
AnnaBridge 163:e59c8e839560 6885 SET_BIT(ADCx->IER, LL_ADC_IT_EOC);
AnnaBridge 163:e59c8e839560 6886 }
AnnaBridge 163:e59c8e839560 6887
AnnaBridge 163:e59c8e839560 6888 /**
AnnaBridge 163:e59c8e839560 6889 * @brief Enable interruption ADC group regular end of sequence conversions.
AnnaBridge 163:e59c8e839560 6890 * @rmtoll IER EOSIE LL_ADC_EnableIT_EOS
AnnaBridge 163:e59c8e839560 6891 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6892 * @retval None
AnnaBridge 163:e59c8e839560 6893 */
AnnaBridge 163:e59c8e839560 6894 __STATIC_INLINE void LL_ADC_EnableIT_EOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6895 {
AnnaBridge 163:e59c8e839560 6896 SET_BIT(ADCx->IER, LL_ADC_IT_EOS);
AnnaBridge 163:e59c8e839560 6897 }
AnnaBridge 163:e59c8e839560 6898
AnnaBridge 163:e59c8e839560 6899 /**
AnnaBridge 163:e59c8e839560 6900 * @brief Enable ADC group regular interruption overrun.
AnnaBridge 163:e59c8e839560 6901 * @rmtoll IER OVRIE LL_ADC_EnableIT_OVR
AnnaBridge 163:e59c8e839560 6902 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6903 * @retval None
AnnaBridge 163:e59c8e839560 6904 */
AnnaBridge 163:e59c8e839560 6905 __STATIC_INLINE void LL_ADC_EnableIT_OVR(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6906 {
AnnaBridge 163:e59c8e839560 6907 SET_BIT(ADCx->IER, LL_ADC_IT_OVR);
AnnaBridge 163:e59c8e839560 6908 }
AnnaBridge 163:e59c8e839560 6909
AnnaBridge 163:e59c8e839560 6910 /**
AnnaBridge 163:e59c8e839560 6911 * @brief Enable interruption ADC group regular end of sampling.
AnnaBridge 163:e59c8e839560 6912 * @rmtoll IER EOSMPIE LL_ADC_EnableIT_EOSMP
AnnaBridge 163:e59c8e839560 6913 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6914 * @retval None
AnnaBridge 163:e59c8e839560 6915 */
AnnaBridge 163:e59c8e839560 6916 __STATIC_INLINE void LL_ADC_EnableIT_EOSMP(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6917 {
AnnaBridge 163:e59c8e839560 6918 SET_BIT(ADCx->IER, LL_ADC_IT_EOSMP);
AnnaBridge 163:e59c8e839560 6919 }
AnnaBridge 163:e59c8e839560 6920
AnnaBridge 163:e59c8e839560 6921 /**
AnnaBridge 163:e59c8e839560 6922 * @brief Enable interruption ADC group injected end of unitary conversion.
AnnaBridge 163:e59c8e839560 6923 * @rmtoll IER JEOCIE LL_ADC_EnableIT_JEOC
AnnaBridge 163:e59c8e839560 6924 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6925 * @retval None
AnnaBridge 163:e59c8e839560 6926 */
AnnaBridge 163:e59c8e839560 6927 __STATIC_INLINE void LL_ADC_EnableIT_JEOC(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6928 {
AnnaBridge 163:e59c8e839560 6929 SET_BIT(ADCx->IER, LL_ADC_IT_JEOC);
AnnaBridge 163:e59c8e839560 6930 }
AnnaBridge 163:e59c8e839560 6931
AnnaBridge 163:e59c8e839560 6932 /**
AnnaBridge 163:e59c8e839560 6933 * @brief Enable interruption ADC group injected end of sequence conversions.
AnnaBridge 163:e59c8e839560 6934 * @rmtoll IER JEOSIE LL_ADC_EnableIT_JEOS
AnnaBridge 163:e59c8e839560 6935 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6936 * @retval None
AnnaBridge 163:e59c8e839560 6937 */
AnnaBridge 163:e59c8e839560 6938 __STATIC_INLINE void LL_ADC_EnableIT_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6939 {
AnnaBridge 163:e59c8e839560 6940 SET_BIT(ADCx->IER, LL_ADC_IT_JEOS);
AnnaBridge 163:e59c8e839560 6941 }
AnnaBridge 163:e59c8e839560 6942
AnnaBridge 163:e59c8e839560 6943 /**
AnnaBridge 163:e59c8e839560 6944 * @brief Enable interruption ADC group injected context queue overflow.
AnnaBridge 163:e59c8e839560 6945 * @rmtoll IER JQOVFIE LL_ADC_EnableIT_JQOVF
AnnaBridge 163:e59c8e839560 6946 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6947 * @retval None
AnnaBridge 163:e59c8e839560 6948 */
AnnaBridge 163:e59c8e839560 6949 __STATIC_INLINE void LL_ADC_EnableIT_JQOVF(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6950 {
AnnaBridge 163:e59c8e839560 6951 SET_BIT(ADCx->IER, LL_ADC_IT_JQOVF);
AnnaBridge 163:e59c8e839560 6952 }
AnnaBridge 163:e59c8e839560 6953
AnnaBridge 163:e59c8e839560 6954 /**
AnnaBridge 163:e59c8e839560 6955 * @brief Enable interruption ADC analog watchdog 1.
AnnaBridge 163:e59c8e839560 6956 * @rmtoll IER AWD1IE LL_ADC_EnableIT_AWD1
AnnaBridge 163:e59c8e839560 6957 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6958 * @retval None
AnnaBridge 163:e59c8e839560 6959 */
AnnaBridge 163:e59c8e839560 6960 __STATIC_INLINE void LL_ADC_EnableIT_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6961 {
AnnaBridge 163:e59c8e839560 6962 SET_BIT(ADCx->IER, LL_ADC_IT_AWD1);
AnnaBridge 163:e59c8e839560 6963 }
AnnaBridge 163:e59c8e839560 6964
AnnaBridge 163:e59c8e839560 6965 /**
AnnaBridge 163:e59c8e839560 6966 * @brief Enable interruption ADC analog watchdog 2.
AnnaBridge 163:e59c8e839560 6967 * @rmtoll IER AWD2IE LL_ADC_EnableIT_AWD2
AnnaBridge 163:e59c8e839560 6968 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6969 * @retval None
AnnaBridge 163:e59c8e839560 6970 */
AnnaBridge 163:e59c8e839560 6971 __STATIC_INLINE void LL_ADC_EnableIT_AWD2(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6972 {
AnnaBridge 163:e59c8e839560 6973 SET_BIT(ADCx->IER, LL_ADC_IT_AWD2);
AnnaBridge 163:e59c8e839560 6974 }
AnnaBridge 163:e59c8e839560 6975
AnnaBridge 163:e59c8e839560 6976 /**
AnnaBridge 163:e59c8e839560 6977 * @brief Enable interruption ADC analog watchdog 3.
AnnaBridge 163:e59c8e839560 6978 * @rmtoll IER AWD3IE LL_ADC_EnableIT_AWD3
AnnaBridge 163:e59c8e839560 6979 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6980 * @retval None
AnnaBridge 163:e59c8e839560 6981 */
AnnaBridge 163:e59c8e839560 6982 __STATIC_INLINE void LL_ADC_EnableIT_AWD3(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6983 {
AnnaBridge 163:e59c8e839560 6984 SET_BIT(ADCx->IER, LL_ADC_IT_AWD3);
AnnaBridge 163:e59c8e839560 6985 }
AnnaBridge 163:e59c8e839560 6986
AnnaBridge 163:e59c8e839560 6987 /**
AnnaBridge 163:e59c8e839560 6988 * @brief Disable interruption ADC ready.
AnnaBridge 163:e59c8e839560 6989 * @rmtoll IER ADRDYIE LL_ADC_DisableIT_ADRDY
AnnaBridge 163:e59c8e839560 6990 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 6991 * @retval None
AnnaBridge 163:e59c8e839560 6992 */
AnnaBridge 163:e59c8e839560 6993 __STATIC_INLINE void LL_ADC_DisableIT_ADRDY(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 6994 {
AnnaBridge 163:e59c8e839560 6995 CLEAR_BIT(ADCx->IER, LL_ADC_IT_ADRDY);
AnnaBridge 163:e59c8e839560 6996 }
AnnaBridge 163:e59c8e839560 6997
AnnaBridge 163:e59c8e839560 6998 /**
AnnaBridge 163:e59c8e839560 6999 * @brief Disable interruption ADC group regular end of unitary conversion.
AnnaBridge 163:e59c8e839560 7000 * @rmtoll IER EOCIE LL_ADC_DisableIT_EOC
AnnaBridge 163:e59c8e839560 7001 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7002 * @retval None
AnnaBridge 163:e59c8e839560 7003 */
AnnaBridge 163:e59c8e839560 7004 __STATIC_INLINE void LL_ADC_DisableIT_EOC(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7005 {
AnnaBridge 163:e59c8e839560 7006 CLEAR_BIT(ADCx->IER, LL_ADC_IT_EOC);
AnnaBridge 163:e59c8e839560 7007 }
AnnaBridge 163:e59c8e839560 7008
AnnaBridge 163:e59c8e839560 7009 /**
AnnaBridge 163:e59c8e839560 7010 * @brief Disable interruption ADC group regular end of sequence conversions.
AnnaBridge 163:e59c8e839560 7011 * @rmtoll IER EOSIE LL_ADC_DisableIT_EOS
AnnaBridge 163:e59c8e839560 7012 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7013 * @retval None
AnnaBridge 163:e59c8e839560 7014 */
AnnaBridge 163:e59c8e839560 7015 __STATIC_INLINE void LL_ADC_DisableIT_EOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7016 {
AnnaBridge 163:e59c8e839560 7017 CLEAR_BIT(ADCx->IER, LL_ADC_IT_EOS);
AnnaBridge 163:e59c8e839560 7018 }
AnnaBridge 163:e59c8e839560 7019
AnnaBridge 163:e59c8e839560 7020 /**
AnnaBridge 163:e59c8e839560 7021 * @brief Disable interruption ADC group regular overrun.
AnnaBridge 163:e59c8e839560 7022 * @rmtoll IER OVRIE LL_ADC_DisableIT_OVR
AnnaBridge 163:e59c8e839560 7023 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7024 * @retval None
AnnaBridge 163:e59c8e839560 7025 */
AnnaBridge 163:e59c8e839560 7026 __STATIC_INLINE void LL_ADC_DisableIT_OVR(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7027 {
AnnaBridge 163:e59c8e839560 7028 CLEAR_BIT(ADCx->IER, LL_ADC_IT_OVR);
AnnaBridge 163:e59c8e839560 7029 }
AnnaBridge 163:e59c8e839560 7030
AnnaBridge 163:e59c8e839560 7031 /**
AnnaBridge 163:e59c8e839560 7032 * @brief Disable interruption ADC group regular end of sampling.
AnnaBridge 163:e59c8e839560 7033 * @rmtoll IER EOSMPIE LL_ADC_DisableIT_EOSMP
AnnaBridge 163:e59c8e839560 7034 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7035 * @retval None
AnnaBridge 163:e59c8e839560 7036 */
AnnaBridge 163:e59c8e839560 7037 __STATIC_INLINE void LL_ADC_DisableIT_EOSMP(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7038 {
AnnaBridge 163:e59c8e839560 7039 CLEAR_BIT(ADCx->IER, LL_ADC_IT_EOSMP);
AnnaBridge 163:e59c8e839560 7040 }
AnnaBridge 163:e59c8e839560 7041
AnnaBridge 163:e59c8e839560 7042 /**
AnnaBridge 163:e59c8e839560 7043 * @brief Disable interruption ADC group regular end of unitary conversion.
AnnaBridge 163:e59c8e839560 7044 * @rmtoll IER JEOCIE LL_ADC_DisableIT_JEOC
AnnaBridge 163:e59c8e839560 7045 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7046 * @retval None
AnnaBridge 163:e59c8e839560 7047 */
AnnaBridge 163:e59c8e839560 7048 __STATIC_INLINE void LL_ADC_DisableIT_JEOC(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7049 {
AnnaBridge 163:e59c8e839560 7050 CLEAR_BIT(ADCx->IER, LL_ADC_IT_JEOC);
AnnaBridge 163:e59c8e839560 7051 }
AnnaBridge 163:e59c8e839560 7052
AnnaBridge 163:e59c8e839560 7053 /**
AnnaBridge 163:e59c8e839560 7054 * @brief Disable interruption ADC group injected end of sequence conversions.
AnnaBridge 163:e59c8e839560 7055 * @rmtoll IER JEOSIE LL_ADC_DisableIT_JEOS
AnnaBridge 163:e59c8e839560 7056 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7057 * @retval None
AnnaBridge 163:e59c8e839560 7058 */
AnnaBridge 163:e59c8e839560 7059 __STATIC_INLINE void LL_ADC_DisableIT_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7060 {
AnnaBridge 163:e59c8e839560 7061 CLEAR_BIT(ADCx->IER, LL_ADC_IT_JEOS);
AnnaBridge 163:e59c8e839560 7062 }
AnnaBridge 163:e59c8e839560 7063
AnnaBridge 163:e59c8e839560 7064 /**
AnnaBridge 163:e59c8e839560 7065 * @brief Disable interruption ADC group injected context queue overflow.
AnnaBridge 163:e59c8e839560 7066 * @rmtoll IER JQOVFIE LL_ADC_DisableIT_JQOVF
AnnaBridge 163:e59c8e839560 7067 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7068 * @retval None
AnnaBridge 163:e59c8e839560 7069 */
AnnaBridge 163:e59c8e839560 7070 __STATIC_INLINE void LL_ADC_DisableIT_JQOVF(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7071 {
AnnaBridge 163:e59c8e839560 7072 CLEAR_BIT(ADCx->IER, LL_ADC_IT_JQOVF);
AnnaBridge 163:e59c8e839560 7073 }
AnnaBridge 163:e59c8e839560 7074
AnnaBridge 163:e59c8e839560 7075 /**
AnnaBridge 163:e59c8e839560 7076 * @brief Disable interruption ADC analog watchdog 1.
AnnaBridge 163:e59c8e839560 7077 * @rmtoll IER AWD1IE LL_ADC_DisableIT_AWD1
AnnaBridge 163:e59c8e839560 7078 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7079 * @retval None
AnnaBridge 163:e59c8e839560 7080 */
AnnaBridge 163:e59c8e839560 7081 __STATIC_INLINE void LL_ADC_DisableIT_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7082 {
AnnaBridge 163:e59c8e839560 7083 CLEAR_BIT(ADCx->IER, LL_ADC_IT_AWD1);
AnnaBridge 163:e59c8e839560 7084 }
AnnaBridge 163:e59c8e839560 7085
AnnaBridge 163:e59c8e839560 7086 /**
AnnaBridge 163:e59c8e839560 7087 * @brief Disable interruption ADC analog watchdog 2.
AnnaBridge 163:e59c8e839560 7088 * @rmtoll IER AWD2IE LL_ADC_DisableIT_AWD2
AnnaBridge 163:e59c8e839560 7089 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7090 * @retval None
AnnaBridge 163:e59c8e839560 7091 */
AnnaBridge 163:e59c8e839560 7092 __STATIC_INLINE void LL_ADC_DisableIT_AWD2(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7093 {
AnnaBridge 163:e59c8e839560 7094 CLEAR_BIT(ADCx->IER, LL_ADC_IT_AWD2);
AnnaBridge 163:e59c8e839560 7095 }
AnnaBridge 163:e59c8e839560 7096
AnnaBridge 163:e59c8e839560 7097 /**
AnnaBridge 163:e59c8e839560 7098 * @brief Disable interruption ADC analog watchdog 3.
AnnaBridge 163:e59c8e839560 7099 * @rmtoll IER AWD3IE LL_ADC_DisableIT_AWD3
AnnaBridge 163:e59c8e839560 7100 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7101 * @retval None
AnnaBridge 163:e59c8e839560 7102 */
AnnaBridge 163:e59c8e839560 7103 __STATIC_INLINE void LL_ADC_DisableIT_AWD3(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7104 {
AnnaBridge 163:e59c8e839560 7105 CLEAR_BIT(ADCx->IER, LL_ADC_IT_AWD3);
AnnaBridge 163:e59c8e839560 7106 }
AnnaBridge 163:e59c8e839560 7107
AnnaBridge 163:e59c8e839560 7108 /**
AnnaBridge 163:e59c8e839560 7109 * @brief Get state of interruption ADC ready
AnnaBridge 163:e59c8e839560 7110 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7111 * @rmtoll IER ADRDYIE LL_ADC_IsEnabledIT_ADRDY
AnnaBridge 163:e59c8e839560 7112 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7113 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7114 */
AnnaBridge 163:e59c8e839560 7115 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_ADRDY(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7116 {
AnnaBridge 163:e59c8e839560 7117 return (READ_BIT(ADCx->IER, LL_ADC_IT_ADRDY) == (LL_ADC_IT_ADRDY));
AnnaBridge 163:e59c8e839560 7118 }
AnnaBridge 163:e59c8e839560 7119
AnnaBridge 163:e59c8e839560 7120 /**
AnnaBridge 163:e59c8e839560 7121 * @brief Get state of interruption ADC group regular end of unitary conversion
AnnaBridge 163:e59c8e839560 7122 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7123 * @rmtoll IER EOCIE LL_ADC_IsEnabledIT_EOC
AnnaBridge 163:e59c8e839560 7124 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7125 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7126 */
AnnaBridge 163:e59c8e839560 7127 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOC(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7128 {
AnnaBridge 163:e59c8e839560 7129 return (READ_BIT(ADCx->IER, LL_ADC_IT_EOC) == (LL_ADC_IT_EOC));
AnnaBridge 163:e59c8e839560 7130 }
AnnaBridge 163:e59c8e839560 7131
AnnaBridge 163:e59c8e839560 7132 /**
AnnaBridge 163:e59c8e839560 7133 * @brief Get state of interruption ADC group regular end of sequence conversions
AnnaBridge 163:e59c8e839560 7134 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7135 * @rmtoll IER EOSIE LL_ADC_IsEnabledIT_EOS
AnnaBridge 163:e59c8e839560 7136 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7137 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7138 */
AnnaBridge 163:e59c8e839560 7139 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7140 {
AnnaBridge 163:e59c8e839560 7141 return (READ_BIT(ADCx->IER, LL_ADC_IT_EOS) == (LL_ADC_IT_EOS));
AnnaBridge 163:e59c8e839560 7142 }
AnnaBridge 163:e59c8e839560 7143
AnnaBridge 163:e59c8e839560 7144 /**
AnnaBridge 163:e59c8e839560 7145 * @brief Get state of interruption ADC group regular overrun
AnnaBridge 163:e59c8e839560 7146 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7147 * @rmtoll IER OVRIE LL_ADC_IsEnabledIT_OVR
AnnaBridge 163:e59c8e839560 7148 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7149 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7150 */
AnnaBridge 163:e59c8e839560 7151 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_OVR(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7152 {
AnnaBridge 163:e59c8e839560 7153 return (READ_BIT(ADCx->IER, LL_ADC_IT_OVR) == (LL_ADC_IT_OVR));
AnnaBridge 163:e59c8e839560 7154 }
AnnaBridge 163:e59c8e839560 7155
AnnaBridge 163:e59c8e839560 7156 /**
AnnaBridge 163:e59c8e839560 7157 * @brief Get state of interruption ADC group regular end of sampling
AnnaBridge 163:e59c8e839560 7158 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7159 * @rmtoll IER EOSMPIE LL_ADC_IsEnabledIT_EOSMP
AnnaBridge 163:e59c8e839560 7160 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7161 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7162 */
AnnaBridge 163:e59c8e839560 7163 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOSMP(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7164 {
AnnaBridge 163:e59c8e839560 7165 return (READ_BIT(ADCx->IER, LL_ADC_IT_EOSMP) == (LL_ADC_IT_EOSMP));
AnnaBridge 163:e59c8e839560 7166 }
AnnaBridge 163:e59c8e839560 7167
AnnaBridge 163:e59c8e839560 7168 /**
AnnaBridge 163:e59c8e839560 7169 * @brief Get state of interruption ADC group injected end of unitary conversion
AnnaBridge 163:e59c8e839560 7170 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7171 * @rmtoll IER JEOCIE LL_ADC_IsEnabledIT_JEOC
AnnaBridge 163:e59c8e839560 7172 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7173 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7174 */
AnnaBridge 163:e59c8e839560 7175 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOC(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7176 {
AnnaBridge 163:e59c8e839560 7177 return (READ_BIT(ADCx->IER, LL_ADC_IT_JEOC) == (LL_ADC_IT_JEOC));
AnnaBridge 163:e59c8e839560 7178 }
AnnaBridge 163:e59c8e839560 7179
AnnaBridge 163:e59c8e839560 7180 /**
AnnaBridge 163:e59c8e839560 7181 * @brief Get state of interruption ADC group injected end of sequence conversions
AnnaBridge 163:e59c8e839560 7182 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7183 * @rmtoll IER JEOSIE LL_ADC_IsEnabledIT_JEOS
AnnaBridge 163:e59c8e839560 7184 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7185 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7186 */
AnnaBridge 163:e59c8e839560 7187 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7188 {
AnnaBridge 163:e59c8e839560 7189 return (READ_BIT(ADCx->IER, LL_ADC_IT_JEOS) == (LL_ADC_IT_JEOS));
AnnaBridge 163:e59c8e839560 7190 }
AnnaBridge 163:e59c8e839560 7191
AnnaBridge 163:e59c8e839560 7192 /**
AnnaBridge 163:e59c8e839560 7193 * @brief Get state of interruption ADC group injected context queue overflow interrupt state
AnnaBridge 163:e59c8e839560 7194 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7195 * @rmtoll IER JQOVFIE LL_ADC_IsEnabledIT_JQOVF
AnnaBridge 163:e59c8e839560 7196 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7197 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7198 */
AnnaBridge 163:e59c8e839560 7199 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JQOVF(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7200 {
AnnaBridge 163:e59c8e839560 7201 return (READ_BIT(ADCx->IER, LL_ADC_IT_JQOVF) == (LL_ADC_IT_JQOVF));
AnnaBridge 163:e59c8e839560 7202 }
AnnaBridge 163:e59c8e839560 7203
AnnaBridge 163:e59c8e839560 7204 /**
AnnaBridge 163:e59c8e839560 7205 * @brief Get state of interruption ADC analog watchdog 1
AnnaBridge 163:e59c8e839560 7206 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7207 * @rmtoll IER AWD1IE LL_ADC_IsEnabledIT_AWD1
AnnaBridge 163:e59c8e839560 7208 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7209 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7210 */
AnnaBridge 163:e59c8e839560 7211 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7212 {
AnnaBridge 163:e59c8e839560 7213 return (READ_BIT(ADCx->IER, LL_ADC_IT_AWD1) == (LL_ADC_IT_AWD1));
AnnaBridge 163:e59c8e839560 7214 }
AnnaBridge 163:e59c8e839560 7215
AnnaBridge 163:e59c8e839560 7216 /**
AnnaBridge 163:e59c8e839560 7217 * @brief Get state of interruption Get ADC analog watchdog 2
AnnaBridge 163:e59c8e839560 7218 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7219 * @rmtoll IER AWD2IE LL_ADC_IsEnabledIT_AWD2
AnnaBridge 163:e59c8e839560 7220 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7221 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7222 */
AnnaBridge 163:e59c8e839560 7223 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD2(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7224 {
AnnaBridge 163:e59c8e839560 7225 return (READ_BIT(ADCx->IER, LL_ADC_IT_AWD2) == (LL_ADC_IT_AWD2));
AnnaBridge 163:e59c8e839560 7226 }
AnnaBridge 163:e59c8e839560 7227
AnnaBridge 163:e59c8e839560 7228 /**
AnnaBridge 163:e59c8e839560 7229 * @brief Get state of interruption Get ADC analog watchdog 3
AnnaBridge 163:e59c8e839560 7230 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 7231 * @rmtoll IER AWD3IE LL_ADC_IsEnabledIT_AWD3
AnnaBridge 163:e59c8e839560 7232 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 7233 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 7234 */
AnnaBridge 163:e59c8e839560 7235 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD3(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 7236 {
AnnaBridge 163:e59c8e839560 7237 return (READ_BIT(ADCx->IER, LL_ADC_IT_AWD3) == (LL_ADC_IT_AWD3));
AnnaBridge 163:e59c8e839560 7238 }
AnnaBridge 163:e59c8e839560 7239
AnnaBridge 163:e59c8e839560 7240 /**
AnnaBridge 163:e59c8e839560 7241 * @}
AnnaBridge 163:e59c8e839560 7242 */
AnnaBridge 163:e59c8e839560 7243
AnnaBridge 163:e59c8e839560 7244 #if defined(USE_FULL_LL_DRIVER)
AnnaBridge 163:e59c8e839560 7245 /** @defgroup ADC_LL_EF_Init Initialization and de-initialization functions
AnnaBridge 163:e59c8e839560 7246 * @{
AnnaBridge 163:e59c8e839560 7247 */
AnnaBridge 163:e59c8e839560 7248
AnnaBridge 163:e59c8e839560 7249 /* Initialization of some features of ADC common parameters and multimode */
AnnaBridge 163:e59c8e839560 7250 ErrorStatus LL_ADC_CommonDeInit(ADC_Common_TypeDef *ADCxy_COMMON);
AnnaBridge 163:e59c8e839560 7251 ErrorStatus LL_ADC_CommonInit(ADC_Common_TypeDef *ADCxy_COMMON, LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct);
AnnaBridge 163:e59c8e839560 7252 void LL_ADC_CommonStructInit(LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct);
AnnaBridge 163:e59c8e839560 7253
AnnaBridge 163:e59c8e839560 7254 /* De-initialization of ADC instance, ADC group regular and ADC group injected */
AnnaBridge 163:e59c8e839560 7255 /* (availability of ADC group injected depends on STM32 families) */
AnnaBridge 163:e59c8e839560 7256 ErrorStatus LL_ADC_DeInit(ADC_TypeDef *ADCx);
AnnaBridge 163:e59c8e839560 7257
AnnaBridge 163:e59c8e839560 7258 /* Initialization of some features of ADC instance */
AnnaBridge 163:e59c8e839560 7259 ErrorStatus LL_ADC_Init(ADC_TypeDef *ADCx, LL_ADC_InitTypeDef *ADC_InitStruct);
AnnaBridge 163:e59c8e839560 7260 void LL_ADC_StructInit(LL_ADC_InitTypeDef *ADC_InitStruct);
AnnaBridge 163:e59c8e839560 7261
AnnaBridge 163:e59c8e839560 7262 /* Initialization of some features of ADC instance and ADC group regular */
AnnaBridge 163:e59c8e839560 7263 ErrorStatus LL_ADC_REG_Init(ADC_TypeDef *ADCx, LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct);
AnnaBridge 163:e59c8e839560 7264 void LL_ADC_REG_StructInit(LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct);
AnnaBridge 163:e59c8e839560 7265
AnnaBridge 163:e59c8e839560 7266 /* Initialization of some features of ADC instance and ADC group injected */
AnnaBridge 163:e59c8e839560 7267 ErrorStatus LL_ADC_INJ_Init(ADC_TypeDef *ADCx, LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct);
AnnaBridge 163:e59c8e839560 7268 void LL_ADC_INJ_StructInit(LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct);
AnnaBridge 163:e59c8e839560 7269
AnnaBridge 163:e59c8e839560 7270 /**
AnnaBridge 163:e59c8e839560 7271 * @}
AnnaBridge 163:e59c8e839560 7272 */
AnnaBridge 163:e59c8e839560 7273 #endif /* USE_FULL_LL_DRIVER */
AnnaBridge 163:e59c8e839560 7274
AnnaBridge 163:e59c8e839560 7275 /**
AnnaBridge 163:e59c8e839560 7276 * @}
AnnaBridge 163:e59c8e839560 7277 */
AnnaBridge 163:e59c8e839560 7278
AnnaBridge 163:e59c8e839560 7279 /**
AnnaBridge 163:e59c8e839560 7280 * @}
AnnaBridge 163:e59c8e839560 7281 */
AnnaBridge 163:e59c8e839560 7282
AnnaBridge 163:e59c8e839560 7283 #endif /* ADC1 || ADC2 || ADC3 || ADC4 */
AnnaBridge 163:e59c8e839560 7284
AnnaBridge 163:e59c8e839560 7285
AnnaBridge 163:e59c8e839560 7286 #endif /* STM32F301x8 || STM32F302x8 || STM32F302xC || STM32F302xE || STM32F303x8 || STM32F303xC || STM32F303xE || STM32F318xx || STM32F328xx || STM32F334x8 || STM32F358xx || STM32F398xx */
AnnaBridge 163:e59c8e839560 7287
AnnaBridge 163:e59c8e839560 7288 #if defined (ADC1_V2_5)
AnnaBridge 163:e59c8e839560 7289
AnnaBridge 163:e59c8e839560 7290 #if defined (ADC1)
AnnaBridge 163:e59c8e839560 7291
AnnaBridge 163:e59c8e839560 7292 /** @defgroup ADC_LL ADC
AnnaBridge 163:e59c8e839560 7293 * @{
AnnaBridge 163:e59c8e839560 7294 */
AnnaBridge 163:e59c8e839560 7295
AnnaBridge 163:e59c8e839560 7296 /* Private types -------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 7297 /* Private variables ---------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 7298
AnnaBridge 163:e59c8e839560 7299 /* Private constants ---------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 7300 /** @defgroup ADC_LL_Private_Constants ADC Private Constants
AnnaBridge 163:e59c8e839560 7301 * @{
AnnaBridge 163:e59c8e839560 7302 */
AnnaBridge 163:e59c8e839560 7303
AnnaBridge 163:e59c8e839560 7304 /* Internal mask for ADC group regular sequencer: */
AnnaBridge 163:e59c8e839560 7305 /* To select into literal LL_ADC_REG_RANK_x the relevant bits for: */
AnnaBridge 163:e59c8e839560 7306 /* - sequencer register offset */
AnnaBridge 163:e59c8e839560 7307 /* - sequencer rank bits position into the selected register */
AnnaBridge 163:e59c8e839560 7308
AnnaBridge 163:e59c8e839560 7309 /* Internal register offset for ADC group regular sequencer configuration */
AnnaBridge 163:e59c8e839560 7310 /* (offset placed into a spare area of literal definition) */
AnnaBridge 163:e59c8e839560 7311 #define ADC_SQR1_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 7312 #define ADC_SQR2_REGOFFSET ((uint32_t)0x00000100U)
AnnaBridge 163:e59c8e839560 7313 #define ADC_SQR3_REGOFFSET ((uint32_t)0x00000200U)
AnnaBridge 163:e59c8e839560 7314 #define ADC_SQR4_REGOFFSET ((uint32_t)0x00000300U)
AnnaBridge 163:e59c8e839560 7315
AnnaBridge 163:e59c8e839560 7316 #define ADC_REG_SQRX_REGOFFSET_MASK (ADC_SQR1_REGOFFSET | ADC_SQR2_REGOFFSET | ADC_SQR3_REGOFFSET | ADC_SQR4_REGOFFSET)
AnnaBridge 163:e59c8e839560 7317 #define ADC_REG_RANK_ID_SQRX_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0)
AnnaBridge 163:e59c8e839560 7318
AnnaBridge 163:e59c8e839560 7319 /* Definition of ADC group regular sequencer bits information to be inserted */
AnnaBridge 163:e59c8e839560 7320 /* into ADC group regular sequencer ranks literals definition. */
AnnaBridge 163:e59c8e839560 7321 #define ADC_REG_RANK_1_SQRX_BITOFFSET_POS ((uint32_t) 0U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ1) */
AnnaBridge 163:e59c8e839560 7322 #define ADC_REG_RANK_2_SQRX_BITOFFSET_POS ((uint32_t) 5U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ2) */
AnnaBridge 163:e59c8e839560 7323 #define ADC_REG_RANK_3_SQRX_BITOFFSET_POS ((uint32_t)10U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ3) */
AnnaBridge 163:e59c8e839560 7324 #define ADC_REG_RANK_4_SQRX_BITOFFSET_POS ((uint32_t)15U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ4) */
AnnaBridge 163:e59c8e839560 7325 #define ADC_REG_RANK_5_SQRX_BITOFFSET_POS ((uint32_t)20U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ5) */
AnnaBridge 163:e59c8e839560 7326 #define ADC_REG_RANK_6_SQRX_BITOFFSET_POS ((uint32_t)25U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ6) */
AnnaBridge 163:e59c8e839560 7327 #define ADC_REG_RANK_7_SQRX_BITOFFSET_POS ((uint32_t) 0U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ7) */
AnnaBridge 163:e59c8e839560 7328 #define ADC_REG_RANK_8_SQRX_BITOFFSET_POS ((uint32_t) 5U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ8) */
AnnaBridge 163:e59c8e839560 7329 #define ADC_REG_RANK_9_SQRX_BITOFFSET_POS ((uint32_t)10U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ9) */
AnnaBridge 163:e59c8e839560 7330 #define ADC_REG_RANK_10_SQRX_BITOFFSET_POS ((uint32_t)15U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ10) */
AnnaBridge 163:e59c8e839560 7331 #define ADC_REG_RANK_11_SQRX_BITOFFSET_POS ((uint32_t)20U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ11) */
AnnaBridge 163:e59c8e839560 7332 #define ADC_REG_RANK_12_SQRX_BITOFFSET_POS ((uint32_t)25U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ12) */
AnnaBridge 163:e59c8e839560 7333 #define ADC_REG_RANK_13_SQRX_BITOFFSET_POS ((uint32_t) 0U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ13) */
AnnaBridge 163:e59c8e839560 7334 #define ADC_REG_RANK_14_SQRX_BITOFFSET_POS ((uint32_t) 5U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ14) */
AnnaBridge 163:e59c8e839560 7335 #define ADC_REG_RANK_15_SQRX_BITOFFSET_POS ((uint32_t)10U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ15) */
AnnaBridge 163:e59c8e839560 7336 #define ADC_REG_RANK_16_SQRX_BITOFFSET_POS ((uint32_t)15U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ16) */
AnnaBridge 163:e59c8e839560 7337
AnnaBridge 163:e59c8e839560 7338
AnnaBridge 163:e59c8e839560 7339
AnnaBridge 163:e59c8e839560 7340 /* Internal mask for ADC group injected sequencer: */
AnnaBridge 163:e59c8e839560 7341 /* To select into literal LL_ADC_INJ_RANK_x the relevant bits for: */
AnnaBridge 163:e59c8e839560 7342 /* - data register offset */
AnnaBridge 163:e59c8e839560 7343 /* - offset register offset */
AnnaBridge 163:e59c8e839560 7344 /* - sequencer rank bits position into the selected register */
AnnaBridge 163:e59c8e839560 7345
AnnaBridge 163:e59c8e839560 7346 /* Internal register offset for ADC group injected data register */
AnnaBridge 163:e59c8e839560 7347 /* (offset placed into a spare area of literal definition) */
AnnaBridge 163:e59c8e839560 7348 #define ADC_JDR1_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 7349 #define ADC_JDR2_REGOFFSET ((uint32_t)0x00000100U)
AnnaBridge 163:e59c8e839560 7350 #define ADC_JDR3_REGOFFSET ((uint32_t)0x00000200U)
AnnaBridge 163:e59c8e839560 7351 #define ADC_JDR4_REGOFFSET ((uint32_t)0x00000300U)
AnnaBridge 163:e59c8e839560 7352
AnnaBridge 163:e59c8e839560 7353 /* Internal register offset for ADC group injected offset configuration */
AnnaBridge 163:e59c8e839560 7354 /* (offset placed into a spare area of literal definition) */
AnnaBridge 163:e59c8e839560 7355 #define ADC_JOFR1_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 7356 #define ADC_JOFR2_REGOFFSET ((uint32_t)0x00001000U)
AnnaBridge 163:e59c8e839560 7357 #define ADC_JOFR3_REGOFFSET ((uint32_t)0x00002000U)
AnnaBridge 163:e59c8e839560 7358 #define ADC_JOFR4_REGOFFSET ((uint32_t)0x00003000U)
AnnaBridge 163:e59c8e839560 7359
AnnaBridge 163:e59c8e839560 7360 #define ADC_INJ_JDRX_REGOFFSET_MASK (ADC_JDR1_REGOFFSET | ADC_JDR2_REGOFFSET | ADC_JDR3_REGOFFSET | ADC_JDR4_REGOFFSET)
AnnaBridge 163:e59c8e839560 7361 #define ADC_INJ_JOFRX_REGOFFSET_MASK (ADC_JOFR1_REGOFFSET | ADC_JOFR2_REGOFFSET | ADC_JOFR3_REGOFFSET | ADC_JOFR4_REGOFFSET)
AnnaBridge 163:e59c8e839560 7362 #define ADC_INJ_RANK_ID_JSQR_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0)
AnnaBridge 163:e59c8e839560 7363
AnnaBridge 163:e59c8e839560 7364 /* Definition of ADC group injected sequencer bits information to be inserted */
AnnaBridge 163:e59c8e839560 7365 /* into ADC group injected sequencer ranks literals definition. */
AnnaBridge 163:e59c8e839560 7366 #define ADC_INJ_RANK_1_JSQR_BITOFFSET_POS ((uint32_t) 0U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ1) */
AnnaBridge 163:e59c8e839560 7367 #define ADC_INJ_RANK_2_JSQR_BITOFFSET_POS ((uint32_t) 5U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ2) */
AnnaBridge 163:e59c8e839560 7368 #define ADC_INJ_RANK_3_JSQR_BITOFFSET_POS ((uint32_t)10U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ3) */
AnnaBridge 163:e59c8e839560 7369 #define ADC_INJ_RANK_4_JSQR_BITOFFSET_POS ((uint32_t)15U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ4) */
AnnaBridge 163:e59c8e839560 7370
AnnaBridge 163:e59c8e839560 7371
AnnaBridge 163:e59c8e839560 7372
AnnaBridge 163:e59c8e839560 7373 /* Internal mask for ADC channel: */
AnnaBridge 163:e59c8e839560 7374 /* To select into literal LL_ADC_CHANNEL_x the relevant bits for: */
AnnaBridge 163:e59c8e839560 7375 /* - channel identifier defined by number */
AnnaBridge 163:e59c8e839560 7376 /* - channel differentiation between external channels (connected to */
AnnaBridge 163:e59c8e839560 7377 /* GPIO pins) and internal channels (connected to internal paths) */
AnnaBridge 163:e59c8e839560 7378 /* - channel sampling time defined by SMPRx register offset */
AnnaBridge 163:e59c8e839560 7379 /* and SMPx bits positions into SMPRx register */
AnnaBridge 163:e59c8e839560 7380 #define ADC_CHANNEL_ID_NUMBER_MASK (ADC_CR1_AWDCH)
AnnaBridge 163:e59c8e839560 7381 #define ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS ((uint32_t) 0U)/* Value equivalent to POSITION_VAL(ADC_CHANNEL_ID_NUMBER_MASK) */
AnnaBridge 163:e59c8e839560 7382 #define ADC_CHANNEL_ID_MASK (ADC_CHANNEL_ID_NUMBER_MASK | ADC_CHANNEL_ID_INTERNAL_CH_MASK)
AnnaBridge 163:e59c8e839560 7383 /* Equivalent mask of ADC_CHANNEL_NUMBER_MASK aligned on register LSB (bit 0) */
AnnaBridge 163:e59c8e839560 7384 #define ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 ((uint32_t)0x0000001FU) /* Equivalent to shift: (ADC_CHANNEL_NUMBER_MASK >> POSITION_VAL(ADC_CHANNEL_NUMBER_MASK)) */
AnnaBridge 163:e59c8e839560 7385
AnnaBridge 163:e59c8e839560 7386 /* Channel differentiation between external and internal channels */
AnnaBridge 163:e59c8e839560 7387 #define ADC_CHANNEL_ID_INTERNAL_CH ((uint32_t)0x80000000U) /* Marker of internal channel */
AnnaBridge 163:e59c8e839560 7388 #define ADC_CHANNEL_ID_INTERNAL_CH_2 ((uint32_t)0x40000000U) /* Marker of internal channel for other ADC instances, in case of different ADC internal channels mapped on same channel number on different ADC instances */
AnnaBridge 163:e59c8e839560 7389 #define ADC_CHANNEL_ID_INTERNAL_CH_MASK (ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2)
AnnaBridge 163:e59c8e839560 7390
AnnaBridge 163:e59c8e839560 7391 /* Internal register offset for ADC channel sampling time configuration */
AnnaBridge 163:e59c8e839560 7392 /* (offset placed into a spare area of literal definition) */
AnnaBridge 163:e59c8e839560 7393 #define ADC_SMPR1_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 7394 #define ADC_SMPR2_REGOFFSET ((uint32_t)0x02000000U)
AnnaBridge 163:e59c8e839560 7395 #define ADC_CHANNEL_SMPRX_REGOFFSET_MASK (ADC_SMPR1_REGOFFSET | ADC_SMPR2_REGOFFSET)
AnnaBridge 163:e59c8e839560 7396
AnnaBridge 163:e59c8e839560 7397 #define ADC_CHANNEL_SMPx_BITOFFSET_MASK ((uint32_t)0x01F00000U)
AnnaBridge 163:e59c8e839560 7398 #define ADC_CHANNEL_SMPx_BITOFFSET_POS ((uint32_t)20U) /* Value equivalent to POSITION_VAL(ADC_CHANNEL_SMPx_BITOFFSET_MASK) */
AnnaBridge 163:e59c8e839560 7399
AnnaBridge 163:e59c8e839560 7400 /* Definition of channels ID number information to be inserted into */
AnnaBridge 163:e59c8e839560 7401 /* channels literals definition. */
AnnaBridge 163:e59c8e839560 7402 #define ADC_CHANNEL_0_NUMBER ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 7403 #define ADC_CHANNEL_1_NUMBER ( ADC_CR1_AWDCH_0)
AnnaBridge 163:e59c8e839560 7404 #define ADC_CHANNEL_2_NUMBER ( ADC_CR1_AWDCH_1 )
AnnaBridge 163:e59c8e839560 7405 #define ADC_CHANNEL_3_NUMBER ( ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)
AnnaBridge 163:e59c8e839560 7406 #define ADC_CHANNEL_4_NUMBER ( ADC_CR1_AWDCH_2 )
AnnaBridge 163:e59c8e839560 7407 #define ADC_CHANNEL_5_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0)
AnnaBridge 163:e59c8e839560 7408 #define ADC_CHANNEL_6_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 )
AnnaBridge 163:e59c8e839560 7409 #define ADC_CHANNEL_7_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)
AnnaBridge 163:e59c8e839560 7410 #define ADC_CHANNEL_8_NUMBER ( ADC_CR1_AWDCH_3 )
AnnaBridge 163:e59c8e839560 7411 #define ADC_CHANNEL_9_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_0)
AnnaBridge 163:e59c8e839560 7412 #define ADC_CHANNEL_10_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 )
AnnaBridge 163:e59c8e839560 7413 #define ADC_CHANNEL_11_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)
AnnaBridge 163:e59c8e839560 7414 #define ADC_CHANNEL_12_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 )
AnnaBridge 163:e59c8e839560 7415 #define ADC_CHANNEL_13_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0)
AnnaBridge 163:e59c8e839560 7416 #define ADC_CHANNEL_14_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 )
AnnaBridge 163:e59c8e839560 7417 #define ADC_CHANNEL_15_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)
AnnaBridge 163:e59c8e839560 7418 #define ADC_CHANNEL_16_NUMBER (ADC_CR1_AWDCH_4 )
AnnaBridge 163:e59c8e839560 7419 #define ADC_CHANNEL_17_NUMBER (ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_0)
AnnaBridge 163:e59c8e839560 7420
AnnaBridge 163:e59c8e839560 7421 /* Definition of channels sampling time information to be inserted into */
AnnaBridge 163:e59c8e839560 7422 /* channels literals definition. */
AnnaBridge 163:e59c8e839560 7423 #define ADC_CHANNEL_0_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t) 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP0) */
AnnaBridge 163:e59c8e839560 7424 #define ADC_CHANNEL_1_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t) 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP1) */
AnnaBridge 163:e59c8e839560 7425 #define ADC_CHANNEL_2_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t) 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP2) */
AnnaBridge 163:e59c8e839560 7426 #define ADC_CHANNEL_3_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t) 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP3) */
AnnaBridge 163:e59c8e839560 7427 #define ADC_CHANNEL_4_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP4) */
AnnaBridge 163:e59c8e839560 7428 #define ADC_CHANNEL_5_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP5) */
AnnaBridge 163:e59c8e839560 7429 #define ADC_CHANNEL_6_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP6) */
AnnaBridge 163:e59c8e839560 7430 #define ADC_CHANNEL_7_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP7) */
AnnaBridge 163:e59c8e839560 7431 #define ADC_CHANNEL_8_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)24U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP8) */
AnnaBridge 163:e59c8e839560 7432 #define ADC_CHANNEL_9_SMP (ADC_SMPR2_REGOFFSET | (((uint32_t)27U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP9) */
AnnaBridge 163:e59c8e839560 7433 #define ADC_CHANNEL_10_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t) 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP10) */
AnnaBridge 163:e59c8e839560 7434 #define ADC_CHANNEL_11_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t) 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP11) */
AnnaBridge 163:e59c8e839560 7435 #define ADC_CHANNEL_12_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t) 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP12) */
AnnaBridge 163:e59c8e839560 7436 #define ADC_CHANNEL_13_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t) 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP13) */
AnnaBridge 163:e59c8e839560 7437 #define ADC_CHANNEL_14_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t)12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP14) */
AnnaBridge 163:e59c8e839560 7438 #define ADC_CHANNEL_15_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t)15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP15) */
AnnaBridge 163:e59c8e839560 7439 #define ADC_CHANNEL_16_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t)18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP16) */
AnnaBridge 163:e59c8e839560 7440 #define ADC_CHANNEL_17_SMP (ADC_SMPR1_REGOFFSET | (((uint32_t)21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP17) */
AnnaBridge 163:e59c8e839560 7441
AnnaBridge 163:e59c8e839560 7442
AnnaBridge 163:e59c8e839560 7443 /* Internal mask for ADC analog watchdog: */
AnnaBridge 163:e59c8e839560 7444 /* To select into literals LL_ADC_AWD_CHANNELx_xxx the relevant bits for: */
AnnaBridge 163:e59c8e839560 7445 /* (concatenation of multiple bits used in different analog watchdogs, */
AnnaBridge 163:e59c8e839560 7446 /* (feature of several watchdogs not available on all STM32 families)). */
AnnaBridge 163:e59c8e839560 7447 /* - analog watchdog 1: monitored channel defined by number, */
AnnaBridge 163:e59c8e839560 7448 /* selection of ADC group (ADC groups regular and-or injected). */
AnnaBridge 163:e59c8e839560 7449
AnnaBridge 163:e59c8e839560 7450 /* Internal register offset for ADC analog watchdog channel configuration */
AnnaBridge 163:e59c8e839560 7451 #define ADC_AWD_CR1_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 7452
AnnaBridge 163:e59c8e839560 7453 #define ADC_AWD_CRX_REGOFFSET_MASK (ADC_AWD_CR1_REGOFFSET)
AnnaBridge 163:e59c8e839560 7454
AnnaBridge 163:e59c8e839560 7455 #define ADC_AWD_CR1_CHANNEL_MASK (ADC_CR1_AWDCH | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL)
AnnaBridge 163:e59c8e839560 7456 #define ADC_AWD_CR_ALL_CHANNEL_MASK (ADC_AWD_CR1_CHANNEL_MASK)
AnnaBridge 163:e59c8e839560 7457
AnnaBridge 163:e59c8e839560 7458 /* Internal register offset for ADC analog watchdog threshold configuration */
AnnaBridge 163:e59c8e839560 7459 #define ADC_AWD_TR1_HIGH_REGOFFSET ((uint32_t)0x00000000U)
AnnaBridge 163:e59c8e839560 7460 #define ADC_AWD_TR1_LOW_REGOFFSET ((uint32_t)0x00000001U)
AnnaBridge 163:e59c8e839560 7461 #define ADC_AWD_TRX_REGOFFSET_MASK (ADC_AWD_TR1_HIGH_REGOFFSET | ADC_AWD_TR1_LOW_REGOFFSET)
AnnaBridge 163:e59c8e839560 7462
AnnaBridge 163:e59c8e839560 7463
AnnaBridge 163:e59c8e839560 7464 /* ADC registers bits positions */
AnnaBridge 163:e59c8e839560 7465 #define ADC_CR1_DUALMOD_BITOFFSET_POS ((uint32_t)16U) /* Value equivalent to POSITION_VAL(ADC_CR1_DUALMOD) */
AnnaBridge 163:e59c8e839560 7466
AnnaBridge 163:e59c8e839560 7467
AnnaBridge 163:e59c8e839560 7468 /* ADC internal channels related definitions */
AnnaBridge 163:e59c8e839560 7469 /* Internal voltage reference VrefInt */
AnnaBridge 163:e59c8e839560 7470 #define VREFINT_CAL_ADDR ((uint16_t*) ((uint32_t)0x1FFFF7BAU)) /* Internal voltage reference, address of parameter VREFINT_CAL: VrefInt ADC raw data acquired at temperature 30 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */
AnnaBridge 163:e59c8e839560 7471 #define VREFINT_CAL_VREF ((uint32_t) 3300U) /* Analog voltage reference (Vref+) value with which temperature sensor has been calibrated in production (tolerance: +-10 mV) (unit: mV). */
AnnaBridge 163:e59c8e839560 7472 /* Temperature sensor */
AnnaBridge 168:b9e159c1930a 7473 #define TEMPSENSOR_CAL1_ADDR ((uint16_t*) ((uint32_t)0x1FFFF7B8U)) /* Internal temperature sensor, address of parameter TS_CAL1: On STM32F37x, temperature sensor ADC raw data acquired at temperature 30 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */
AnnaBridge 163:e59c8e839560 7474 #define TEMPSENSOR_CAL2_ADDR ((uint16_t*) ((uint32_t)0x1FFFF7C2U)) /* Internal temperature sensor, address of parameter TS_CAL2: On STM32F37x, temperature sensor ADC raw data acquired at temperature 110 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */
AnnaBridge 168:b9e159c1930a 7475 #define TEMPSENSOR_CAL1_TEMP (( int32_t) 30) /* Internal temperature sensor, temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL1_ADDR (tolerance: +-5 DegC) (unit: DegC). */
AnnaBridge 163:e59c8e839560 7476 #define TEMPSENSOR_CAL2_TEMP (( int32_t) 110) /* Internal temperature sensor, temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL2_ADDR (tolerance: +-5 DegC) (unit: DegC). */
AnnaBridge 163:e59c8e839560 7477 #define TEMPSENSOR_CAL_VREFANALOG ((uint32_t) 3300U) /* Analog voltage reference (Vref+) voltage with which temperature sensor has been calibrated in production (+-10 mV) (unit: mV). */
AnnaBridge 163:e59c8e839560 7478
AnnaBridge 163:e59c8e839560 7479
AnnaBridge 163:e59c8e839560 7480 /**
AnnaBridge 163:e59c8e839560 7481 * @}
AnnaBridge 163:e59c8e839560 7482 */
AnnaBridge 163:e59c8e839560 7483
AnnaBridge 163:e59c8e839560 7484
AnnaBridge 163:e59c8e839560 7485 /* Private macros ------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 7486 /** @defgroup ADC_LL_Private_Macros ADC Private Macros
AnnaBridge 163:e59c8e839560 7487 * @{
AnnaBridge 163:e59c8e839560 7488 */
AnnaBridge 163:e59c8e839560 7489
AnnaBridge 163:e59c8e839560 7490 /**
AnnaBridge 163:e59c8e839560 7491 * @brief Driver macro reserved for internal use: isolate bits with the
AnnaBridge 163:e59c8e839560 7492 * selected mask and shift them to the register LSB
AnnaBridge 163:e59c8e839560 7493 * (shift mask on register position bit 0).
AnnaBridge 163:e59c8e839560 7494 * @param __BITS__ Bits in register 32 bits
AnnaBridge 163:e59c8e839560 7495 * @param __MASK__ Mask in register 32 bits
AnnaBridge 163:e59c8e839560 7496 * @retval Bits in register 32 bits
AnnaBridge 163:e59c8e839560 7497 */
AnnaBridge 163:e59c8e839560 7498 #define __ADC_MASK_SHIFT(__BITS__, __MASK__) \
AnnaBridge 163:e59c8e839560 7499 (((__BITS__) & (__MASK__)) >> POSITION_VAL((__MASK__)))
AnnaBridge 163:e59c8e839560 7500
AnnaBridge 163:e59c8e839560 7501 /**
AnnaBridge 163:e59c8e839560 7502 * @brief Driver macro reserved for internal use: set a pointer to
AnnaBridge 163:e59c8e839560 7503 * a register from a register basis from which an offset
AnnaBridge 163:e59c8e839560 7504 * is applied.
AnnaBridge 163:e59c8e839560 7505 * @param __REG__ Register basis from which the offset is applied.
AnnaBridge 163:e59c8e839560 7506 * @param __REG_OFFFSET__ Offset to be applied (unit: number of registers).
AnnaBridge 163:e59c8e839560 7507 * @retval Pointer to register address
AnnaBridge 163:e59c8e839560 7508 */
AnnaBridge 163:e59c8e839560 7509 #define __ADC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \
AnnaBridge 163:e59c8e839560 7510 ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U))))
AnnaBridge 163:e59c8e839560 7511
AnnaBridge 163:e59c8e839560 7512 /**
AnnaBridge 163:e59c8e839560 7513 * @}
AnnaBridge 163:e59c8e839560 7514 */
AnnaBridge 163:e59c8e839560 7515
AnnaBridge 163:e59c8e839560 7516
AnnaBridge 163:e59c8e839560 7517 /* Exported types ------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 7518 #if defined(USE_FULL_LL_DRIVER)
AnnaBridge 163:e59c8e839560 7519 /** @defgroup ADC_LL_ES_INIT ADC Exported Init structure
AnnaBridge 163:e59c8e839560 7520 * @{
AnnaBridge 163:e59c8e839560 7521 */
AnnaBridge 163:e59c8e839560 7522
AnnaBridge 163:e59c8e839560 7523 /**
AnnaBridge 163:e59c8e839560 7524 * @brief Structure definition of some features of ADC instance.
AnnaBridge 163:e59c8e839560 7525 * @note These parameters have an impact on ADC scope: ADC instance.
AnnaBridge 163:e59c8e839560 7526 * Affects both group regular and group injected (availability
AnnaBridge 163:e59c8e839560 7527 * of ADC group injected depends on STM32 families).
AnnaBridge 163:e59c8e839560 7528 * Refer to corresponding unitary functions into
AnnaBridge 163:e59c8e839560 7529 * @ref ADC_LL_EF_Configuration_ADC_Instance .
AnnaBridge 163:e59c8e839560 7530 * @note The setting of these parameters by function @ref LL_ADC_Init()
AnnaBridge 163:e59c8e839560 7531 * is conditioned to ADC state:
AnnaBridge 163:e59c8e839560 7532 * ADC instance must be disabled.
AnnaBridge 163:e59c8e839560 7533 * This condition is applied to all ADC features, for efficiency
AnnaBridge 163:e59c8e839560 7534 * and compatibility over all STM32 families. However, the different
AnnaBridge 163:e59c8e839560 7535 * features can be set under different ADC state conditions
AnnaBridge 163:e59c8e839560 7536 * (setting possible with ADC enabled without conversion on going,
AnnaBridge 163:e59c8e839560 7537 * ADC enabled with conversion on going, ...)
AnnaBridge 163:e59c8e839560 7538 * Each feature can be updated afterwards with a unitary function
AnnaBridge 163:e59c8e839560 7539 * and potentially with ADC in a different state than disabled,
AnnaBridge 163:e59c8e839560 7540 * refer to description of each function for setting
AnnaBridge 163:e59c8e839560 7541 * conditioned to ADC state.
AnnaBridge 163:e59c8e839560 7542 */
AnnaBridge 163:e59c8e839560 7543 typedef struct
AnnaBridge 163:e59c8e839560 7544 {
AnnaBridge 163:e59c8e839560 7545 uint32_t DataAlignment; /*!< Set ADC conversion data alignment.
AnnaBridge 163:e59c8e839560 7546 This parameter can be a value of @ref ADC_LL_EC_DATA_ALIGN
AnnaBridge 163:e59c8e839560 7547
AnnaBridge 163:e59c8e839560 7548 This feature can be modified afterwards using unitary function @ref LL_ADC_SetDataAlignment(). */
AnnaBridge 163:e59c8e839560 7549
AnnaBridge 163:e59c8e839560 7550 uint32_t SequencersScanMode; /*!< Set ADC scan selection.
AnnaBridge 163:e59c8e839560 7551 This parameter can be a value of @ref ADC_LL_EC_SCAN_SELECTION
AnnaBridge 163:e59c8e839560 7552
AnnaBridge 163:e59c8e839560 7553 This feature can be modified afterwards using unitary function @ref LL_ADC_SetSequencersScanMode(). */
AnnaBridge 163:e59c8e839560 7554
AnnaBridge 163:e59c8e839560 7555 } LL_ADC_InitTypeDef;
AnnaBridge 163:e59c8e839560 7556
AnnaBridge 163:e59c8e839560 7557 /**
AnnaBridge 163:e59c8e839560 7558 * @brief Structure definition of some features of ADC group regular.
AnnaBridge 163:e59c8e839560 7559 * @note These parameters have an impact on ADC scope: ADC group regular.
AnnaBridge 163:e59c8e839560 7560 * Refer to corresponding unitary functions into
AnnaBridge 163:e59c8e839560 7561 * @ref ADC_LL_EF_Configuration_ADC_Group_Regular
AnnaBridge 163:e59c8e839560 7562 * (functions with prefix "REG").
AnnaBridge 163:e59c8e839560 7563 * @note The setting of these parameters by function @ref LL_ADC_REG_Init()
AnnaBridge 163:e59c8e839560 7564 * is conditioned to ADC state:
AnnaBridge 163:e59c8e839560 7565 * ADC instance must be disabled.
AnnaBridge 163:e59c8e839560 7566 * This condition is applied to all ADC features, for efficiency
AnnaBridge 163:e59c8e839560 7567 * and compatibility over all STM32 families. However, the different
AnnaBridge 163:e59c8e839560 7568 * features can be set under different ADC state conditions
AnnaBridge 163:e59c8e839560 7569 * (setting possible with ADC enabled without conversion on going,
AnnaBridge 163:e59c8e839560 7570 * ADC enabled with conversion on going, ...)
AnnaBridge 163:e59c8e839560 7571 * Each feature can be updated afterwards with a unitary function
AnnaBridge 163:e59c8e839560 7572 * and potentially with ADC in a different state than disabled,
AnnaBridge 163:e59c8e839560 7573 * refer to description of each function for setting
AnnaBridge 163:e59c8e839560 7574 * conditioned to ADC state.
AnnaBridge 163:e59c8e839560 7575 */
AnnaBridge 163:e59c8e839560 7576 typedef struct
AnnaBridge 163:e59c8e839560 7577 {
AnnaBridge 163:e59c8e839560 7578 uint32_t TriggerSource; /*!< Set ADC group regular conversion trigger source: internal (SW start) or external from timer or external interrupt.
AnnaBridge 163:e59c8e839560 7579 This parameter can be a value of @ref ADC_LL_EC_REG_TRIGGER_SOURCE
AnnaBridge 163:e59c8e839560 7580 @note On this STM32 serie, external trigger is set with trigger polarity: rising edge
AnnaBridge 163:e59c8e839560 7581 (only trigger polarity available on this STM32 serie).
AnnaBridge 163:e59c8e839560 7582
AnnaBridge 163:e59c8e839560 7583 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetTriggerSource(). */
AnnaBridge 163:e59c8e839560 7584
AnnaBridge 163:e59c8e839560 7585 uint32_t SequencerLength; /*!< Set ADC group regular sequencer length.
AnnaBridge 163:e59c8e839560 7586 This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_SCAN_LENGTH
AnnaBridge 163:e59c8e839560 7587 @note This parameter is discarded if scan mode is disabled (refer to parameter 'ADC_SequencersScanMode').
AnnaBridge 163:e59c8e839560 7588
AnnaBridge 163:e59c8e839560 7589 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerLength(). */
AnnaBridge 163:e59c8e839560 7590
AnnaBridge 163:e59c8e839560 7591 uint32_t SequencerDiscont; /*!< Set ADC group regular sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks.
AnnaBridge 163:e59c8e839560 7592 This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_DISCONT_MODE
AnnaBridge 163:e59c8e839560 7593 @note This parameter has an effect only if group regular sequencer is enabled
AnnaBridge 163:e59c8e839560 7594 (scan length of 2 ranks or more).
AnnaBridge 163:e59c8e839560 7595
AnnaBridge 163:e59c8e839560 7596 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerDiscont(). */
AnnaBridge 163:e59c8e839560 7597
AnnaBridge 163:e59c8e839560 7598 uint32_t ContinuousMode; /*!< Set ADC continuous conversion mode on ADC group regular, whether ADC conversions are performed in single mode (one conversion per trigger) or in continuous mode (after the first trigger, following conversions launched successively automatically).
AnnaBridge 163:e59c8e839560 7599 This parameter can be a value of @ref ADC_LL_EC_REG_CONTINUOUS_MODE
AnnaBridge 163:e59c8e839560 7600 Note: It is not possible to enable both ADC group regular continuous mode and discontinuous mode.
AnnaBridge 163:e59c8e839560 7601
AnnaBridge 163:e59c8e839560 7602 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetContinuousMode(). */
AnnaBridge 163:e59c8e839560 7603
AnnaBridge 163:e59c8e839560 7604 uint32_t DMATransfer; /*!< Set ADC group regular conversion data transfer: no transfer or transfer by DMA, and DMA requests mode.
AnnaBridge 163:e59c8e839560 7605 This parameter can be a value of @ref ADC_LL_EC_REG_DMA_TRANSFER
AnnaBridge 163:e59c8e839560 7606
AnnaBridge 163:e59c8e839560 7607 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetDMATransfer(). */
AnnaBridge 163:e59c8e839560 7608
AnnaBridge 163:e59c8e839560 7609 } LL_ADC_REG_InitTypeDef;
AnnaBridge 163:e59c8e839560 7610
AnnaBridge 163:e59c8e839560 7611 /**
AnnaBridge 163:e59c8e839560 7612 * @brief Structure definition of some features of ADC group injected.
AnnaBridge 163:e59c8e839560 7613 * @note These parameters have an impact on ADC scope: ADC group injected.
AnnaBridge 163:e59c8e839560 7614 * Refer to corresponding unitary functions into
AnnaBridge 163:e59c8e839560 7615 * @ref ADC_LL_EF_Configuration_ADC_Group_Regular
AnnaBridge 163:e59c8e839560 7616 * (functions with prefix "INJ").
AnnaBridge 163:e59c8e839560 7617 * @note The setting of these parameters by function @ref LL_ADC_INJ_Init()
AnnaBridge 163:e59c8e839560 7618 * is conditioned to ADC state:
AnnaBridge 163:e59c8e839560 7619 * ADC instance must be disabled.
AnnaBridge 163:e59c8e839560 7620 * This condition is applied to all ADC features, for efficiency
AnnaBridge 163:e59c8e839560 7621 * and compatibility over all STM32 families. However, the different
AnnaBridge 163:e59c8e839560 7622 * features can be set under different ADC state conditions
AnnaBridge 163:e59c8e839560 7623 * (setting possible with ADC enabled without conversion on going,
AnnaBridge 163:e59c8e839560 7624 * ADC enabled with conversion on going, ...)
AnnaBridge 163:e59c8e839560 7625 * Each feature can be updated afterwards with a unitary function
AnnaBridge 163:e59c8e839560 7626 * and potentially with ADC in a different state than disabled,
AnnaBridge 163:e59c8e839560 7627 * refer to description of each function for setting
AnnaBridge 163:e59c8e839560 7628 * conditioned to ADC state.
AnnaBridge 163:e59c8e839560 7629 */
AnnaBridge 163:e59c8e839560 7630 typedef struct
AnnaBridge 163:e59c8e839560 7631 {
AnnaBridge 163:e59c8e839560 7632 uint32_t TriggerSource; /*!< Set ADC group injected conversion trigger source: internal (SW start) or external from timer or external interrupt.
AnnaBridge 163:e59c8e839560 7633 This parameter can be a value of @ref ADC_LL_EC_INJ_TRIGGER_SOURCE
AnnaBridge 163:e59c8e839560 7634 @note On this STM32 serie, external trigger is set with trigger polarity: rising edge
AnnaBridge 163:e59c8e839560 7635 (only trigger polarity available on this STM32 serie).
AnnaBridge 163:e59c8e839560 7636
AnnaBridge 163:e59c8e839560 7637 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTriggerSource(). */
AnnaBridge 163:e59c8e839560 7638
AnnaBridge 163:e59c8e839560 7639 uint32_t SequencerLength; /*!< Set ADC group injected sequencer length.
AnnaBridge 163:e59c8e839560 7640 This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_SCAN_LENGTH
AnnaBridge 163:e59c8e839560 7641 @note This parameter is discarded if scan mode is disabled (refer to parameter 'ADC_SequencersScanMode').
AnnaBridge 163:e59c8e839560 7642
AnnaBridge 163:e59c8e839560 7643 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerLength(). */
AnnaBridge 163:e59c8e839560 7644
AnnaBridge 163:e59c8e839560 7645 uint32_t SequencerDiscont; /*!< Set ADC group injected sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks.
AnnaBridge 163:e59c8e839560 7646 This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_DISCONT_MODE
AnnaBridge 163:e59c8e839560 7647 @note This parameter has an effect only if group injected sequencer is enabled
AnnaBridge 163:e59c8e839560 7648 (scan length of 2 ranks or more).
AnnaBridge 163:e59c8e839560 7649
AnnaBridge 163:e59c8e839560 7650 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerDiscont(). */
AnnaBridge 163:e59c8e839560 7651
AnnaBridge 163:e59c8e839560 7652 uint32_t TrigAuto; /*!< Set ADC group injected conversion trigger: independent or from ADC group regular.
AnnaBridge 163:e59c8e839560 7653 This parameter can be a value of @ref ADC_LL_EC_INJ_TRIG_AUTO
AnnaBridge 163:e59c8e839560 7654 Note: This parameter must be set to set to independent trigger if injected trigger source is set to an external trigger.
AnnaBridge 163:e59c8e839560 7655
AnnaBridge 163:e59c8e839560 7656 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTrigAuto(). */
AnnaBridge 163:e59c8e839560 7657
AnnaBridge 163:e59c8e839560 7658 } LL_ADC_INJ_InitTypeDef;
AnnaBridge 163:e59c8e839560 7659
AnnaBridge 163:e59c8e839560 7660 /**
AnnaBridge 163:e59c8e839560 7661 * @}
AnnaBridge 163:e59c8e839560 7662 */
AnnaBridge 163:e59c8e839560 7663 #endif /* USE_FULL_LL_DRIVER */
AnnaBridge 163:e59c8e839560 7664
AnnaBridge 163:e59c8e839560 7665 /* Exported constants --------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 7666 /** @defgroup ADC_LL_Exported_Constants ADC Exported Constants
AnnaBridge 163:e59c8e839560 7667 * @{
AnnaBridge 163:e59c8e839560 7668 */
AnnaBridge 163:e59c8e839560 7669
AnnaBridge 163:e59c8e839560 7670 /** @defgroup ADC_LL_EC_FLAG ADC flags
AnnaBridge 163:e59c8e839560 7671 * @brief Flags defines which can be used with LL_ADC_ReadReg function
AnnaBridge 163:e59c8e839560 7672 * @{
AnnaBridge 163:e59c8e839560 7673 */
AnnaBridge 163:e59c8e839560 7674 #define LL_ADC_FLAG_STRT ADC_SR_STRT /*!< ADC flag ADC group regular conversion start */
AnnaBridge 163:e59c8e839560 7675 #define LL_ADC_FLAG_EOS ADC_SR_EOC /*!< ADC flag ADC group regular end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group regular end of unitary conversion. Flag noted as "EOC" is corresponding to flag "EOS" in other STM32 families) */
AnnaBridge 163:e59c8e839560 7676 #define LL_ADC_FLAG_JSTRT ADC_SR_JSTRT /*!< ADC flag ADC group injected conversion start */
AnnaBridge 163:e59c8e839560 7677 #define LL_ADC_FLAG_JEOS ADC_SR_JEOC /*!< ADC flag ADC group injected end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) */
AnnaBridge 163:e59c8e839560 7678 #define LL_ADC_FLAG_AWD1 ADC_SR_AWD /*!< ADC flag ADC analog watchdog 1 */
AnnaBridge 163:e59c8e839560 7679 /**
AnnaBridge 163:e59c8e839560 7680 * @}
AnnaBridge 163:e59c8e839560 7681 */
AnnaBridge 163:e59c8e839560 7682
AnnaBridge 163:e59c8e839560 7683 /** @defgroup ADC_LL_EC_IT ADC interruptions for configuration (interruption enable or disable)
AnnaBridge 163:e59c8e839560 7684 * @brief IT defines which can be used with LL_ADC_ReadReg and LL_ADC_WriteReg functions
AnnaBridge 163:e59c8e839560 7685 * @{
AnnaBridge 163:e59c8e839560 7686 */
AnnaBridge 163:e59c8e839560 7687 #define LL_ADC_IT_EOS ADC_CR1_EOCIE /*!< ADC interruption ADC group regular end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group regular end of unitary conversion. Flag noted as "EOC" is corresponding to flag "EOS" in other STM32 families) */
AnnaBridge 163:e59c8e839560 7688 #define LL_ADC_IT_JEOS ADC_CR1_JEOCIE /*!< ADC interruption ADC group injected end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) */
AnnaBridge 163:e59c8e839560 7689 #define LL_ADC_IT_AWD1 ADC_CR1_AWDIE /*!< ADC interruption ADC analog watchdog 1 */
AnnaBridge 163:e59c8e839560 7690 /**
AnnaBridge 163:e59c8e839560 7691 * @}
AnnaBridge 163:e59c8e839560 7692 */
AnnaBridge 163:e59c8e839560 7693
AnnaBridge 163:e59c8e839560 7694 /** @defgroup ADC_LL_EC_REGISTERS ADC registers compliant with specific purpose
AnnaBridge 163:e59c8e839560 7695 * @{
AnnaBridge 163:e59c8e839560 7696 */
AnnaBridge 163:e59c8e839560 7697 /* List of ADC registers intended to be used (most commonly) with */
AnnaBridge 163:e59c8e839560 7698 /* DMA transfer. */
AnnaBridge 163:e59c8e839560 7699 /* Refer to function @ref LL_ADC_DMA_GetRegAddr(). */
AnnaBridge 163:e59c8e839560 7700 #define LL_ADC_DMA_REG_REGULAR_DATA ((uint32_t)0x00000000U) /* ADC group regular conversion data register (corresponding to register DR) to be used with ADC configured in independent mode. Without DMA transfer, register accessed by LL function @ref LL_ADC_REG_ReadConversionData32() and other functions @ref LL_ADC_REG_ReadConversionDatax() */
AnnaBridge 163:e59c8e839560 7701 /**
AnnaBridge 163:e59c8e839560 7702 * @}
AnnaBridge 163:e59c8e839560 7703 */
AnnaBridge 163:e59c8e839560 7704
AnnaBridge 163:e59c8e839560 7705 /** @defgroup ADC_LL_EC_COMMON_PATH_INTERNAL ADC common - Measurement path to internal channels
AnnaBridge 163:e59c8e839560 7706 * @{
AnnaBridge 163:e59c8e839560 7707 */
AnnaBridge 163:e59c8e839560 7708 /* Note: Other measurement paths to internal channels may be available */
AnnaBridge 163:e59c8e839560 7709 /* (connections to other peripherals). */
AnnaBridge 163:e59c8e839560 7710 /* If they are not listed below, they do not require any specific */
AnnaBridge 163:e59c8e839560 7711 /* path enable. In this case, Access to measurement path is done */
AnnaBridge 163:e59c8e839560 7712 /* only by selecting the corresponding ADC internal channel. */
AnnaBridge 163:e59c8e839560 7713 #define LL_ADC_PATH_INTERNAL_NONE ((uint32_t)0x00000000U)/*!< ADC measurement pathes all disabled */
AnnaBridge 163:e59c8e839560 7714 #define LL_ADC_PATH_INTERNAL_VREFINT (ADC_CR2_TSVREFE) /*!< ADC measurement path to internal channel VrefInt */
AnnaBridge 163:e59c8e839560 7715 #define LL_ADC_PATH_INTERNAL_TEMPSENSOR (ADC_CR2_TSVREFE) /*!< ADC measurement path to internal channel temperature sensor */
AnnaBridge 163:e59c8e839560 7716 /**
AnnaBridge 163:e59c8e839560 7717 * @}
AnnaBridge 163:e59c8e839560 7718 */
AnnaBridge 163:e59c8e839560 7719
AnnaBridge 163:e59c8e839560 7720 /** @defgroup ADC_LL_EC_RESOLUTION ADC instance - Resolution
AnnaBridge 163:e59c8e839560 7721 * @{
AnnaBridge 163:e59c8e839560 7722 */
AnnaBridge 163:e59c8e839560 7723 #define LL_ADC_RESOLUTION_12B ((uint32_t)0x00000000U) /*!< ADC resolution 12 bits */
AnnaBridge 163:e59c8e839560 7724 /**
AnnaBridge 163:e59c8e839560 7725 * @}
AnnaBridge 163:e59c8e839560 7726 */
AnnaBridge 163:e59c8e839560 7727
AnnaBridge 163:e59c8e839560 7728 /** @defgroup ADC_LL_EC_DATA_ALIGN ADC instance - Data alignment
AnnaBridge 163:e59c8e839560 7729 * @{
AnnaBridge 163:e59c8e839560 7730 */
AnnaBridge 163:e59c8e839560 7731 #define LL_ADC_DATA_ALIGN_RIGHT ((uint32_t)0x00000000U)/*!< ADC conversion data alignment: right aligned (alignment on data register LSB bit 0)*/
AnnaBridge 163:e59c8e839560 7732 #define LL_ADC_DATA_ALIGN_LEFT (ADC_CR2_ALIGN) /*!< ADC conversion data alignment: left aligned (aligment on data register MSB bit 15)*/
AnnaBridge 163:e59c8e839560 7733 /**
AnnaBridge 163:e59c8e839560 7734 * @}
AnnaBridge 163:e59c8e839560 7735 */
AnnaBridge 163:e59c8e839560 7736
AnnaBridge 163:e59c8e839560 7737 /** @defgroup ADC_LL_EC_SCAN_SELECTION ADC instance - Scan selection
AnnaBridge 163:e59c8e839560 7738 * @{
AnnaBridge 163:e59c8e839560 7739 */
AnnaBridge 163:e59c8e839560 7740 #define LL_ADC_SEQ_SCAN_DISABLE ((uint32_t)0x00000000U) /*!< ADC conversion is performed in unitary conversion mode (one channel converted, that defined in rank 1). Configuration of both groups regular and injected sequencers (sequence length, ...) is discarded: equivalent to length of 1 rank.*/
AnnaBridge 163:e59c8e839560 7741 #define LL_ADC_SEQ_SCAN_ENABLE ((uint32_t)ADC_CR1_SCAN) /*!< ADC conversions are performed in sequence conversions mode, according to configuration of both groups regular and injected sequencers (sequence length, ...). */
AnnaBridge 163:e59c8e839560 7742 /**
AnnaBridge 163:e59c8e839560 7743 * @}
AnnaBridge 163:e59c8e839560 7744 */
AnnaBridge 163:e59c8e839560 7745
AnnaBridge 163:e59c8e839560 7746 /** @defgroup ADC_LL_EC_GROUPS ADC instance - Groups
AnnaBridge 163:e59c8e839560 7747 * @{
AnnaBridge 163:e59c8e839560 7748 */
AnnaBridge 163:e59c8e839560 7749 #define LL_ADC_GROUP_REGULAR ((uint32_t)0x00000001U) /*!< ADC group regular (available on all STM32 devices) */
AnnaBridge 163:e59c8e839560 7750 #define LL_ADC_GROUP_INJECTED ((uint32_t)0x00000002U) /*!< ADC group injected (not available on all STM32 devices)*/
AnnaBridge 163:e59c8e839560 7751 #define LL_ADC_GROUP_REGULAR_INJECTED ((uint32_t)0x00000003U) /*!< ADC both groups regular and injected */
AnnaBridge 163:e59c8e839560 7752 /**
AnnaBridge 163:e59c8e839560 7753 * @}
AnnaBridge 163:e59c8e839560 7754 */
AnnaBridge 163:e59c8e839560 7755
AnnaBridge 163:e59c8e839560 7756 /** @defgroup ADC_LL_EC_CHANNEL ADC instance - Channel number
AnnaBridge 163:e59c8e839560 7757 * @{
AnnaBridge 163:e59c8e839560 7758 */
AnnaBridge 163:e59c8e839560 7759 #define LL_ADC_CHANNEL_0 (ADC_CHANNEL_0_NUMBER | ADC_CHANNEL_0_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN0 */
AnnaBridge 163:e59c8e839560 7760 #define LL_ADC_CHANNEL_1 (ADC_CHANNEL_1_NUMBER | ADC_CHANNEL_1_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN1 */
AnnaBridge 163:e59c8e839560 7761 #define LL_ADC_CHANNEL_2 (ADC_CHANNEL_2_NUMBER | ADC_CHANNEL_2_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN2 */
AnnaBridge 163:e59c8e839560 7762 #define LL_ADC_CHANNEL_3 (ADC_CHANNEL_3_NUMBER | ADC_CHANNEL_3_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN3 */
AnnaBridge 163:e59c8e839560 7763 #define LL_ADC_CHANNEL_4 (ADC_CHANNEL_4_NUMBER | ADC_CHANNEL_4_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN4 */
AnnaBridge 163:e59c8e839560 7764 #define LL_ADC_CHANNEL_5 (ADC_CHANNEL_5_NUMBER | ADC_CHANNEL_5_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN5 */
AnnaBridge 163:e59c8e839560 7765 #define LL_ADC_CHANNEL_6 (ADC_CHANNEL_6_NUMBER | ADC_CHANNEL_6_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN6 */
AnnaBridge 163:e59c8e839560 7766 #define LL_ADC_CHANNEL_7 (ADC_CHANNEL_7_NUMBER | ADC_CHANNEL_7_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN7 */
AnnaBridge 163:e59c8e839560 7767 #define LL_ADC_CHANNEL_8 (ADC_CHANNEL_8_NUMBER | ADC_CHANNEL_8_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN8 */
AnnaBridge 163:e59c8e839560 7768 #define LL_ADC_CHANNEL_9 (ADC_CHANNEL_9_NUMBER | ADC_CHANNEL_9_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN9 */
AnnaBridge 163:e59c8e839560 7769 #define LL_ADC_CHANNEL_10 (ADC_CHANNEL_10_NUMBER | ADC_CHANNEL_10_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN10 */
AnnaBridge 163:e59c8e839560 7770 #define LL_ADC_CHANNEL_11 (ADC_CHANNEL_11_NUMBER | ADC_CHANNEL_11_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN11 */
AnnaBridge 163:e59c8e839560 7771 #define LL_ADC_CHANNEL_12 (ADC_CHANNEL_12_NUMBER | ADC_CHANNEL_12_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN12 */
AnnaBridge 163:e59c8e839560 7772 #define LL_ADC_CHANNEL_13 (ADC_CHANNEL_13_NUMBER | ADC_CHANNEL_13_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN13 */
AnnaBridge 163:e59c8e839560 7773 #define LL_ADC_CHANNEL_14 (ADC_CHANNEL_14_NUMBER | ADC_CHANNEL_14_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN14 */
AnnaBridge 163:e59c8e839560 7774 #define LL_ADC_CHANNEL_15 (ADC_CHANNEL_15_NUMBER | ADC_CHANNEL_15_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN15 */
AnnaBridge 163:e59c8e839560 7775 #define LL_ADC_CHANNEL_16 (ADC_CHANNEL_16_NUMBER | ADC_CHANNEL_16_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN16 */
AnnaBridge 163:e59c8e839560 7776 #define LL_ADC_CHANNEL_17 (ADC_CHANNEL_17_NUMBER | ADC_CHANNEL_17_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN17 */
AnnaBridge 163:e59c8e839560 7777 #define LL_ADC_CHANNEL_VREFINT (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to VrefInt: Internal voltage reference. On STM32F37x, ADC channel available only on ADC instance: ADC1. */
AnnaBridge 163:e59c8e839560 7778 #define LL_ADC_CHANNEL_TEMPSENSOR (LL_ADC_CHANNEL_16 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to Temperature sensor. */
AnnaBridge 163:e59c8e839560 7779 /**
AnnaBridge 163:e59c8e839560 7780 * @}
AnnaBridge 163:e59c8e839560 7781 */
AnnaBridge 163:e59c8e839560 7782
AnnaBridge 163:e59c8e839560 7783 /** @defgroup ADC_LL_EC_REG_TRIGGER_SOURCE ADC group regular - Trigger source
AnnaBridge 163:e59c8e839560 7784 * @{
AnnaBridge 163:e59c8e839560 7785 */
AnnaBridge 163:e59c8e839560 7786 #define LL_ADC_REG_TRIG_SOFTWARE (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0) /*!< ADC group regular conversion trigger internal (SW start) */
AnnaBridge 163:e59c8e839560 7787 #define LL_ADC_REG_TRIG_EXT_TIM2_CH2 (ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0) /*!< ADC group regular conversion trigger external from TIM2 CC2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7788 #define LL_ADC_REG_TRIG_EXT_TIM3_TRGO (ADC_CR2_EXTSEL_2) /*!< ADC group regular conversion trigger external from TIM3 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7789 #define LL_ADC_REG_TRIG_EXT_TIM4_CH2 (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0) /*!< ADC group regular conversion trigger external from TIM4 CC4. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7790 #define LL_ADC_REG_TRIG_EXT_TIM19_TRGO ((uint32_t)0x00000000U) /*!< ADC group regular conversion trigger external from TIM19 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7791 #define LL_ADC_REG_TRIG_EXT_TIM19_CH3 (ADC_CR2_EXTSEL_0) /*!< ADC group regular conversion trigger external from TIM19 CC3. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7792 #define LL_ADC_REG_TRIG_EXT_TIM19_CH4 (ADC_CR2_EXTSEL_1) /*!< ADC group regular conversion trigger external from TIM19 CC4. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7793 #define LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1) /*!< ADC group regular conversion trigger external interrupt line 11. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7794 /**
AnnaBridge 163:e59c8e839560 7795 * @}
AnnaBridge 163:e59c8e839560 7796 */
AnnaBridge 163:e59c8e839560 7797
AnnaBridge 163:e59c8e839560 7798 /** @defgroup ADC_LL_EC_REG_TRIGGER_EDGE ADC group regular - Trigger edge
AnnaBridge 163:e59c8e839560 7799 * @{
AnnaBridge 163:e59c8e839560 7800 */
AnnaBridge 163:e59c8e839560 7801 #define LL_ADC_REG_TRIG_EXT_RISING ((uint32_t)0x00000000U) /*!< ADC group regular conversion trigger polarity set to rising edge */
AnnaBridge 163:e59c8e839560 7802 /**
AnnaBridge 163:e59c8e839560 7803 * @}
AnnaBridge 163:e59c8e839560 7804 */
AnnaBridge 163:e59c8e839560 7805
AnnaBridge 163:e59c8e839560 7806 /** @defgroup ADC_LL_EC_REG_CONTINUOUS_MODE ADC group regular - Continuous mode
AnnaBridge 163:e59c8e839560 7807 * @{
AnnaBridge 163:e59c8e839560 7808 */
AnnaBridge 163:e59c8e839560 7809 #define LL_ADC_REG_CONV_SINGLE ((uint32_t)0x00000000U)/*!< ADC conversions are performed in single mode: one conversion per trigger */
AnnaBridge 163:e59c8e839560 7810 #define LL_ADC_REG_CONV_CONTINUOUS (ADC_CR2_CONT) /*!< ADC conversions are performed in continuous mode: after the first trigger, following conversions launched successively automatically */
AnnaBridge 163:e59c8e839560 7811 /**
AnnaBridge 163:e59c8e839560 7812 * @}
AnnaBridge 163:e59c8e839560 7813 */
AnnaBridge 163:e59c8e839560 7814
AnnaBridge 163:e59c8e839560 7815 /** @defgroup ADC_LL_EC_REG_DMA_TRANSFER ADC group regular - DMA transfer
AnnaBridge 163:e59c8e839560 7816 * @{
AnnaBridge 163:e59c8e839560 7817 */
AnnaBridge 163:e59c8e839560 7818 #define LL_ADC_REG_DMA_TRANSFER_NONE ((uint32_t)0x00000000U) /*!< ADC conversions are not transferred by DMA */
AnnaBridge 163:e59c8e839560 7819 #define LL_ADC_REG_DMA_TRANSFER_UNLIMITED (ADC_CR2_DMA) /*!< ADC conversions are transferred by DMA, in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions). This ADC mode is intended to be used with DMA mode circular. */
AnnaBridge 163:e59c8e839560 7820 /**
AnnaBridge 163:e59c8e839560 7821 * @}
AnnaBridge 163:e59c8e839560 7822 */
AnnaBridge 163:e59c8e839560 7823
AnnaBridge 163:e59c8e839560 7824 /** @defgroup ADC_LL_EC_REG_SEQ_SCAN_LENGTH ADC group regular - Sequencer scan length
AnnaBridge 163:e59c8e839560 7825 * @{
AnnaBridge 163:e59c8e839560 7826 */
AnnaBridge 163:e59c8e839560 7827 #define LL_ADC_REG_SEQ_SCAN_DISABLE ((uint32_t)0x00000000U) /*!< ADC group regular sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */
AnnaBridge 163:e59c8e839560 7828 #define LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS ( ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 2 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7829 #define LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS ( ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 3 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7830 #define LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS ( ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 4 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7831 #define LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS ( ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 5 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7832 #define LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 6 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7833 #define LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 7 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7834 #define LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 8 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7835 #define LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS (ADC_SQR1_L_3 ) /*!< ADC group regular sequencer enable with 9 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7836 #define LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 10 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7837 #define LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 11 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7838 #define LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 12 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7839 #define LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 13 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7840 #define LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 14 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7841 #define LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 15 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7842 #define LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 16 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7843 /**
AnnaBridge 163:e59c8e839560 7844 * @}
AnnaBridge 163:e59c8e839560 7845 */
AnnaBridge 163:e59c8e839560 7846
AnnaBridge 163:e59c8e839560 7847 /** @defgroup ADC_LL_EC_REG_SEQ_DISCONT_MODE ADC group regular - Sequencer discontinuous mode
AnnaBridge 163:e59c8e839560 7848 * @{
AnnaBridge 163:e59c8e839560 7849 */
AnnaBridge 163:e59c8e839560 7850 #define LL_ADC_REG_SEQ_DISCONT_DISABLE ((uint32_t)0x00000000U) /*!< ADC group regular sequencer discontinuous mode disable */
AnnaBridge 163:e59c8e839560 7851 #define LL_ADC_REG_SEQ_DISCONT_1RANK ( ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every rank */
AnnaBridge 163:e59c8e839560 7852 #define LL_ADC_REG_SEQ_DISCONT_2RANKS ( ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enabled with sequence interruption every 2 ranks */
AnnaBridge 163:e59c8e839560 7853 #define LL_ADC_REG_SEQ_DISCONT_3RANKS ( ADC_CR1_DISCNUM_1 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 3 ranks */
AnnaBridge 163:e59c8e839560 7854 #define LL_ADC_REG_SEQ_DISCONT_4RANKS ( ADC_CR1_DISCNUM_1 | ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 4 ranks */
AnnaBridge 163:e59c8e839560 7855 #define LL_ADC_REG_SEQ_DISCONT_5RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 5 ranks */
AnnaBridge 163:e59c8e839560 7856 #define LL_ADC_REG_SEQ_DISCONT_6RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 6 ranks */
AnnaBridge 163:e59c8e839560 7857 #define LL_ADC_REG_SEQ_DISCONT_7RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCNUM_1 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 7 ranks */
AnnaBridge 163:e59c8e839560 7858 #define LL_ADC_REG_SEQ_DISCONT_8RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCNUM_1 | ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 8 ranks */
AnnaBridge 163:e59c8e839560 7859 /**
AnnaBridge 163:e59c8e839560 7860 * @}
AnnaBridge 163:e59c8e839560 7861 */
AnnaBridge 163:e59c8e839560 7862
AnnaBridge 163:e59c8e839560 7863 /** @defgroup ADC_LL_EC_REG_RANKS ADC group regular - Sequencer ranks
AnnaBridge 163:e59c8e839560 7864 * @{
AnnaBridge 163:e59c8e839560 7865 */
AnnaBridge 163:e59c8e839560 7866 #define LL_ADC_REG_RANK_1 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_1_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 1 */
AnnaBridge 163:e59c8e839560 7867 #define LL_ADC_REG_RANK_2 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_2_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 2 */
AnnaBridge 163:e59c8e839560 7868 #define LL_ADC_REG_RANK_3 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_3_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 3 */
AnnaBridge 163:e59c8e839560 7869 #define LL_ADC_REG_RANK_4 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_4_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 4 */
AnnaBridge 163:e59c8e839560 7870 #define LL_ADC_REG_RANK_5 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_5_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 5 */
AnnaBridge 163:e59c8e839560 7871 #define LL_ADC_REG_RANK_6 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_6_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 6 */
AnnaBridge 163:e59c8e839560 7872 #define LL_ADC_REG_RANK_7 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_7_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 7 */
AnnaBridge 163:e59c8e839560 7873 #define LL_ADC_REG_RANK_8 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_8_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 8 */
AnnaBridge 163:e59c8e839560 7874 #define LL_ADC_REG_RANK_9 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_9_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 9 */
AnnaBridge 163:e59c8e839560 7875 #define LL_ADC_REG_RANK_10 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_10_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 10 */
AnnaBridge 163:e59c8e839560 7876 #define LL_ADC_REG_RANK_11 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_11_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 11 */
AnnaBridge 163:e59c8e839560 7877 #define LL_ADC_REG_RANK_12 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_12_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 12 */
AnnaBridge 163:e59c8e839560 7878 #define LL_ADC_REG_RANK_13 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_13_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 13 */
AnnaBridge 163:e59c8e839560 7879 #define LL_ADC_REG_RANK_14 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_14_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 14 */
AnnaBridge 163:e59c8e839560 7880 #define LL_ADC_REG_RANK_15 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_15_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 15 */
AnnaBridge 163:e59c8e839560 7881 #define LL_ADC_REG_RANK_16 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_16_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 16 */
AnnaBridge 163:e59c8e839560 7882 /**
AnnaBridge 163:e59c8e839560 7883 * @}
AnnaBridge 163:e59c8e839560 7884 */
AnnaBridge 163:e59c8e839560 7885
AnnaBridge 163:e59c8e839560 7886 /** @defgroup ADC_LL_EC_INJ_TRIGGER_SOURCE ADC group injected - Trigger source
AnnaBridge 163:e59c8e839560 7887 * @{
AnnaBridge 163:e59c8e839560 7888 */
AnnaBridge 163:e59c8e839560 7889 #define LL_ADC_INJ_TRIG_SOFTWARE (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0) /*!< ADC group injected conversion trigger internal (SW start) */
AnnaBridge 163:e59c8e839560 7890 #define LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (ADC_CR2_JEXTSEL_1) /*!< ADC group injected conversion trigger external from TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7891 #define LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0) /*!< ADC group injected conversion trigger external from TIM2 CC1. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7892 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (ADC_CR2_JEXTSEL_2) /*!< ADC group injected conversion trigger external from TIM3 CC4. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7893 #define LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0) /*!< ADC group injected conversion trigger external from TIM4 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7894 #define LL_ADC_INJ_TRIG_EXT_TIM19_CH1 ((uint32_t)0x00000000U) /*!< ADC group injected conversion trigger external from TIM19 CC1. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7895 #define LL_ADC_INJ_TRIG_EXT_TIM19_CH2 (ADC_CR2_JEXTSEL_0) /*!< ADC group injected conversion trigger external from TIM19 CC2. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7896 #define LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1) /*!< ADC group injected conversion trigger external interrupt line 15. Trigger edge set to rising edge (default setting). */
AnnaBridge 163:e59c8e839560 7897 /**
AnnaBridge 163:e59c8e839560 7898 * @}
AnnaBridge 163:e59c8e839560 7899 */
AnnaBridge 163:e59c8e839560 7900
AnnaBridge 163:e59c8e839560 7901 /** @defgroup ADC_LL_EC_INJ_TRIGGER_EDGE ADC group injected - Trigger edge
AnnaBridge 163:e59c8e839560 7902 * @{
AnnaBridge 163:e59c8e839560 7903 */
AnnaBridge 163:e59c8e839560 7904 #define LL_ADC_INJ_TRIG_EXT_RISING ((uint32_t)0x00000000U) /*!< ADC group injected conversion trigger polarity set to rising edge */
AnnaBridge 163:e59c8e839560 7905 /**
AnnaBridge 163:e59c8e839560 7906 * @}
AnnaBridge 163:e59c8e839560 7907 */
AnnaBridge 163:e59c8e839560 7908
AnnaBridge 163:e59c8e839560 7909 /** @defgroup ADC_LL_EC_INJ_TRIG_AUTO ADC group injected - Automatic trigger mode
AnnaBridge 163:e59c8e839560 7910 * @{
AnnaBridge 163:e59c8e839560 7911 */
AnnaBridge 163:e59c8e839560 7912 #define LL_ADC_INJ_TRIG_INDEPENDENT ((uint32_t)0x00000000U)/*!< ADC group injected conversion trigger independent. Setting mandatory if ADC group injected injected trigger source is set to an external trigger. */
AnnaBridge 163:e59c8e839560 7913 #define LL_ADC_INJ_TRIG_FROM_GRP_REGULAR (ADC_CR1_JAUTO) /*!< ADC group injected conversion trigger from ADC group regular. Setting compliant only with group injected trigger source set to SW start, without any further action on ADC group injected conversion start or stop: in this case, ADC group injected is controlled only from ADC group regular. */
AnnaBridge 163:e59c8e839560 7914 /**
AnnaBridge 163:e59c8e839560 7915 * @}
AnnaBridge 163:e59c8e839560 7916 */
AnnaBridge 163:e59c8e839560 7917
AnnaBridge 163:e59c8e839560 7918
AnnaBridge 163:e59c8e839560 7919 /** @defgroup ADC_LL_EC_INJ_SEQ_SCAN_LENGTH ADC group injected - Sequencer scan length
AnnaBridge 163:e59c8e839560 7920 * @{
AnnaBridge 163:e59c8e839560 7921 */
AnnaBridge 163:e59c8e839560 7922 #define LL_ADC_INJ_SEQ_SCAN_DISABLE ((uint32_t)0x00000000U) /*!< ADC group injected sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */
AnnaBridge 163:e59c8e839560 7923 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS ( ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 2 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7924 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS (ADC_JSQR_JL_1 ) /*!< ADC group injected sequencer enable with 3 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7925 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS (ADC_JSQR_JL_1 | ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 4 ranks in the sequence */
AnnaBridge 163:e59c8e839560 7926 /**
AnnaBridge 163:e59c8e839560 7927 * @}
AnnaBridge 163:e59c8e839560 7928 */
AnnaBridge 163:e59c8e839560 7929
AnnaBridge 163:e59c8e839560 7930 /** @defgroup ADC_LL_EC_INJ_SEQ_DISCONT_MODE ADC group injected - Sequencer discontinuous mode
AnnaBridge 163:e59c8e839560 7931 * @{
AnnaBridge 163:e59c8e839560 7932 */
AnnaBridge 163:e59c8e839560 7933 #define LL_ADC_INJ_SEQ_DISCONT_DISABLE ((uint32_t)0x00000000U)/*!< ADC group injected sequencer discontinuous mode disable */
AnnaBridge 163:e59c8e839560 7934 #define LL_ADC_INJ_SEQ_DISCONT_1RANK (ADC_CR1_JDISCEN) /*!< ADC group injected sequencer discontinuous mode enable with sequence interruption every rank */
AnnaBridge 163:e59c8e839560 7935 /**
AnnaBridge 163:e59c8e839560 7936 * @}
AnnaBridge 163:e59c8e839560 7937 */
AnnaBridge 163:e59c8e839560 7938
AnnaBridge 163:e59c8e839560 7939 /** @defgroup ADC_LL_EC_INJ_RANKS ADC group injected - Sequencer ranks
AnnaBridge 163:e59c8e839560 7940 * @{
AnnaBridge 163:e59c8e839560 7941 */
AnnaBridge 163:e59c8e839560 7942 #define LL_ADC_INJ_RANK_1 (ADC_JDR1_REGOFFSET | ADC_JOFR1_REGOFFSET | ADC_INJ_RANK_1_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 1 */
AnnaBridge 163:e59c8e839560 7943 #define LL_ADC_INJ_RANK_2 (ADC_JDR2_REGOFFSET | ADC_JOFR2_REGOFFSET | ADC_INJ_RANK_2_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 2 */
AnnaBridge 163:e59c8e839560 7944 #define LL_ADC_INJ_RANK_3 (ADC_JDR3_REGOFFSET | ADC_JOFR3_REGOFFSET | ADC_INJ_RANK_3_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 3 */
AnnaBridge 163:e59c8e839560 7945 #define LL_ADC_INJ_RANK_4 (ADC_JDR4_REGOFFSET | ADC_JOFR4_REGOFFSET | ADC_INJ_RANK_4_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 4 */
AnnaBridge 163:e59c8e839560 7946 /**
AnnaBridge 163:e59c8e839560 7947 * @}
AnnaBridge 163:e59c8e839560 7948 */
AnnaBridge 163:e59c8e839560 7949
AnnaBridge 163:e59c8e839560 7950 /** @defgroup ADC_LL_EC_SAMPLINGTIME Channel - Sampling time
AnnaBridge 163:e59c8e839560 7951 * @{
AnnaBridge 163:e59c8e839560 7952 */
AnnaBridge 163:e59c8e839560 7953 #define LL_ADC_SAMPLINGTIME_1CYCLE_5 ((uint32_t)0x00000000U) /*!< Sampling time 1.5 ADC clock cycle */
AnnaBridge 163:e59c8e839560 7954 #define LL_ADC_SAMPLINGTIME_7CYCLES_5 (ADC_SMPR2_SMP0_0) /*!< Sampling time 7.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 7955 #define LL_ADC_SAMPLINGTIME_13CYCLES_5 (ADC_SMPR2_SMP0_1) /*!< Sampling time 13.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 7956 #define LL_ADC_SAMPLINGTIME_28CYCLES_5 (ADC_SMPR2_SMP0_1 | ADC_SMPR2_SMP0_0) /*!< Sampling time 28.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 7957 #define LL_ADC_SAMPLINGTIME_41CYCLES_5 (ADC_SMPR2_SMP0_2) /*!< Sampling time 41.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 7958 #define LL_ADC_SAMPLINGTIME_55CYCLES_5 (ADC_SMPR2_SMP0_2 | ADC_SMPR2_SMP0_0) /*!< Sampling time 55.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 7959 #define LL_ADC_SAMPLINGTIME_71CYCLES_5 (ADC_SMPR2_SMP0_2 | ADC_SMPR2_SMP0_1) /*!< Sampling time 71.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 7960 #define LL_ADC_SAMPLINGTIME_239CYCLES_5 (ADC_SMPR2_SMP0_2 | ADC_SMPR2_SMP0_1 | ADC_SMPR2_SMP0_0) /*!< Sampling time 239.5 ADC clock cycles */
AnnaBridge 163:e59c8e839560 7961 /**
AnnaBridge 163:e59c8e839560 7962 * @}
AnnaBridge 163:e59c8e839560 7963 */
AnnaBridge 163:e59c8e839560 7964
AnnaBridge 163:e59c8e839560 7965 /** @defgroup ADC_LL_EC_AWD_NUMBER Analog watchdog - Analog watchdog number
AnnaBridge 163:e59c8e839560 7966 * @{
AnnaBridge 163:e59c8e839560 7967 */
AnnaBridge 163:e59c8e839560 7968 #define LL_ADC_AWD1 (ADC_AWD_CR1_CHANNEL_MASK | ADC_AWD_CR1_REGOFFSET) /*!< ADC analog watchdog number 1 */
AnnaBridge 163:e59c8e839560 7969 /**
AnnaBridge 163:e59c8e839560 7970 * @}
AnnaBridge 163:e59c8e839560 7971 */
AnnaBridge 163:e59c8e839560 7972
AnnaBridge 163:e59c8e839560 7973 /** @defgroup ADC_LL_EC_AWD_CHANNELS Analog watchdog - Monitored channels
AnnaBridge 163:e59c8e839560 7974 * @{
AnnaBridge 163:e59c8e839560 7975 */
AnnaBridge 163:e59c8e839560 7976 #define LL_ADC_AWD_DISABLE ((uint32_t)0x00000000U) /*!< ADC analog watchdog monitoring disabled */
AnnaBridge 163:e59c8e839560 7977 #define LL_ADC_AWD_ALL_CHANNELS_REG ( ADC_CR1_AWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by group regular only */
AnnaBridge 163:e59c8e839560 7978 #define LL_ADC_AWD_ALL_CHANNELS_INJ ( ADC_CR1_JAWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by group injected only */
AnnaBridge 163:e59c8e839560 7979 #define LL_ADC_AWD_ALL_CHANNELS_REG_INJ ( ADC_CR1_JAWDEN | ADC_CR1_AWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 7980 #define LL_ADC_AWD_CHANNEL_0_REG ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by group regular only */
AnnaBridge 163:e59c8e839560 7981 #define LL_ADC_AWD_CHANNEL_0_INJ ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by group injected only */
AnnaBridge 163:e59c8e839560 7982 #define LL_ADC_AWD_CHANNEL_0_REG_INJ ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 7983 #define LL_ADC_AWD_CHANNEL_1_REG ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by group regular only */
AnnaBridge 163:e59c8e839560 7984 #define LL_ADC_AWD_CHANNEL_1_INJ ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by group injected only */
AnnaBridge 163:e59c8e839560 7985 #define LL_ADC_AWD_CHANNEL_1_REG_INJ ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 7986 #define LL_ADC_AWD_CHANNEL_2_REG ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by group regular only */
AnnaBridge 163:e59c8e839560 7987 #define LL_ADC_AWD_CHANNEL_2_INJ ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by group injected only */
AnnaBridge 163:e59c8e839560 7988 #define LL_ADC_AWD_CHANNEL_2_REG_INJ ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 7989 #define LL_ADC_AWD_CHANNEL_3_REG ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by group regular only */
AnnaBridge 163:e59c8e839560 7990 #define LL_ADC_AWD_CHANNEL_3_INJ ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by group injected only */
AnnaBridge 163:e59c8e839560 7991 #define LL_ADC_AWD_CHANNEL_3_REG_INJ ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 7992 #define LL_ADC_AWD_CHANNEL_4_REG ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by group regular only */
AnnaBridge 163:e59c8e839560 7993 #define LL_ADC_AWD_CHANNEL_4_INJ ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by group injected only */
AnnaBridge 163:e59c8e839560 7994 #define LL_ADC_AWD_CHANNEL_4_REG_INJ ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 7995 #define LL_ADC_AWD_CHANNEL_5_REG ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by group regular only */
AnnaBridge 163:e59c8e839560 7996 #define LL_ADC_AWD_CHANNEL_5_INJ ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by group injected only */
AnnaBridge 163:e59c8e839560 7997 #define LL_ADC_AWD_CHANNEL_5_REG_INJ ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 7998 #define LL_ADC_AWD_CHANNEL_6_REG ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by group regular only */
AnnaBridge 163:e59c8e839560 7999 #define LL_ADC_AWD_CHANNEL_6_INJ ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by group injected only */
AnnaBridge 163:e59c8e839560 8000 #define LL_ADC_AWD_CHANNEL_6_REG_INJ ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8001 #define LL_ADC_AWD_CHANNEL_7_REG ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by group regular only */
AnnaBridge 163:e59c8e839560 8002 #define LL_ADC_AWD_CHANNEL_7_INJ ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by group injected only */
AnnaBridge 163:e59c8e839560 8003 #define LL_ADC_AWD_CHANNEL_7_REG_INJ ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8004 #define LL_ADC_AWD_CHANNEL_8_REG ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by group regular only */
AnnaBridge 163:e59c8e839560 8005 #define LL_ADC_AWD_CHANNEL_8_INJ ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by group injected only */
AnnaBridge 163:e59c8e839560 8006 #define LL_ADC_AWD_CHANNEL_8_REG_INJ ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8007 #define LL_ADC_AWD_CHANNEL_9_REG ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by group regular only */
AnnaBridge 163:e59c8e839560 8008 #define LL_ADC_AWD_CHANNEL_9_INJ ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by group injected only */
AnnaBridge 163:e59c8e839560 8009 #define LL_ADC_AWD_CHANNEL_9_REG_INJ ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8010 #define LL_ADC_AWD_CHANNEL_10_REG ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by group regular only */
AnnaBridge 163:e59c8e839560 8011 #define LL_ADC_AWD_CHANNEL_10_INJ ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by group injected only */
AnnaBridge 163:e59c8e839560 8012 #define LL_ADC_AWD_CHANNEL_10_REG_INJ ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8013 #define LL_ADC_AWD_CHANNEL_11_REG ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by group regular only */
AnnaBridge 163:e59c8e839560 8014 #define LL_ADC_AWD_CHANNEL_11_INJ ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by group injected only */
AnnaBridge 163:e59c8e839560 8015 #define LL_ADC_AWD_CHANNEL_11_REG_INJ ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8016 #define LL_ADC_AWD_CHANNEL_12_REG ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by group regular only */
AnnaBridge 163:e59c8e839560 8017 #define LL_ADC_AWD_CHANNEL_12_INJ ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by group injected only */
AnnaBridge 163:e59c8e839560 8018 #define LL_ADC_AWD_CHANNEL_12_REG_INJ ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8019 #define LL_ADC_AWD_CHANNEL_13_REG ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by group regular only */
AnnaBridge 163:e59c8e839560 8020 #define LL_ADC_AWD_CHANNEL_13_INJ ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by group injected only */
AnnaBridge 163:e59c8e839560 8021 #define LL_ADC_AWD_CHANNEL_13_REG_INJ ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8022 #define LL_ADC_AWD_CHANNEL_14_REG ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by group regular only */
AnnaBridge 163:e59c8e839560 8023 #define LL_ADC_AWD_CHANNEL_14_INJ ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by group injected only */
AnnaBridge 163:e59c8e839560 8024 #define LL_ADC_AWD_CHANNEL_14_REG_INJ ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8025 #define LL_ADC_AWD_CHANNEL_15_REG ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by group regular only */
AnnaBridge 163:e59c8e839560 8026 #define LL_ADC_AWD_CHANNEL_15_INJ ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by group injected only */
AnnaBridge 163:e59c8e839560 8027 #define LL_ADC_AWD_CHANNEL_15_REG_INJ ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8028 #define LL_ADC_AWD_CHANNEL_16_REG ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by group regular only */
AnnaBridge 163:e59c8e839560 8029 #define LL_ADC_AWD_CHANNEL_16_INJ ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by group injected only */
AnnaBridge 163:e59c8e839560 8030 #define LL_ADC_AWD_CHANNEL_16_REG_INJ ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8031 #define LL_ADC_AWD_CHANNEL_17_REG ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by group regular only */
AnnaBridge 163:e59c8e839560 8032 #define LL_ADC_AWD_CHANNEL_17_INJ ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by group injected only */
AnnaBridge 163:e59c8e839560 8033 #define LL_ADC_AWD_CHANNEL_17_REG_INJ ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8034 #define LL_ADC_AWD_CH_VREFINT_REG ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by group regular only */
AnnaBridge 163:e59c8e839560 8035 #define LL_ADC_AWD_CH_VREFINT_INJ ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by group injected only */
AnnaBridge 163:e59c8e839560 8036 #define LL_ADC_AWD_CH_VREFINT_REG_INJ ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8037 #define LL_ADC_AWD_CH_TEMPSENSOR_REG ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by group regular only */
AnnaBridge 163:e59c8e839560 8038 #define LL_ADC_AWD_CH_TEMPSENSOR_INJ ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by group injected only */
AnnaBridge 163:e59c8e839560 8039 #define LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by either group regular or injected */
AnnaBridge 163:e59c8e839560 8040 /**
AnnaBridge 163:e59c8e839560 8041 * @}
AnnaBridge 163:e59c8e839560 8042 */
AnnaBridge 163:e59c8e839560 8043
AnnaBridge 163:e59c8e839560 8044 /** @defgroup ADC_LL_EC_AWD_THRESHOLDS Analog watchdog - Thresholds
AnnaBridge 163:e59c8e839560 8045 * @{
AnnaBridge 163:e59c8e839560 8046 */
AnnaBridge 163:e59c8e839560 8047 #define LL_ADC_AWD_THRESHOLD_HIGH (ADC_AWD_TR1_HIGH_REGOFFSET) /*!< ADC analog watchdog threshold high */
AnnaBridge 163:e59c8e839560 8048 #define LL_ADC_AWD_THRESHOLD_LOW (ADC_AWD_TR1_LOW_REGOFFSET) /*!< ADC analog watchdog threshold low */
AnnaBridge 163:e59c8e839560 8049 /**
AnnaBridge 163:e59c8e839560 8050 * @}
AnnaBridge 163:e59c8e839560 8051 */
AnnaBridge 163:e59c8e839560 8052
AnnaBridge 163:e59c8e839560 8053
AnnaBridge 163:e59c8e839560 8054 /** @defgroup ADC_LL_EC_HW_DELAYS Definitions of ADC hardware constraints delays
AnnaBridge 163:e59c8e839560 8055 * @note Only ADC IP HW delays are defined in ADC LL driver driver,
AnnaBridge 163:e59c8e839560 8056 * not timeout values.
AnnaBridge 163:e59c8e839560 8057 * For details on delays values, refer to descriptions in source code
AnnaBridge 163:e59c8e839560 8058 * above each literal definition.
AnnaBridge 163:e59c8e839560 8059 * @{
AnnaBridge 163:e59c8e839560 8060 */
AnnaBridge 163:e59c8e839560 8061
AnnaBridge 163:e59c8e839560 8062 /* Note: Only ADC IP HW delays are defined in ADC LL driver driver, */
AnnaBridge 163:e59c8e839560 8063 /* not timeout values. */
AnnaBridge 163:e59c8e839560 8064 /* Timeout values for ADC operations are dependent to device clock */
AnnaBridge 163:e59c8e839560 8065 /* configuration (system clock versus ADC clock), */
AnnaBridge 163:e59c8e839560 8066 /* and therefore must be defined in user application. */
AnnaBridge 163:e59c8e839560 8067 /* Indications for estimation of ADC timeout delays, for this */
AnnaBridge 163:e59c8e839560 8068 /* STM32 serie: */
AnnaBridge 163:e59c8e839560 8069 /* - ADC enable time: maximum delay is 1us */
AnnaBridge 163:e59c8e839560 8070 /* (refer to device datasheet, parameter "tSTAB") */
AnnaBridge 163:e59c8e839560 8071 /* - ADC conversion time: duration depending on ADC clock and ADC */
AnnaBridge 163:e59c8e839560 8072 /* configuration. */
AnnaBridge 163:e59c8e839560 8073 /* (refer to device reference manual, section "Timing") */
AnnaBridge 163:e59c8e839560 8074
AnnaBridge 163:e59c8e839560 8075 /* Delay for temperature sensor stabilization time. */
AnnaBridge 163:e59c8e839560 8076 /* Literal set to maximum value (refer to device datasheet, */
AnnaBridge 163:e59c8e839560 8077 /* parameter "tSTART"). */
AnnaBridge 163:e59c8e839560 8078 /* Unit: us */
AnnaBridge 163:e59c8e839560 8079 #define LL_ADC_DELAY_TEMPSENSOR_STAB_US ((uint32_t) 10U) /*!< Delay for internal voltage reference stabilization time */
AnnaBridge 163:e59c8e839560 8080
AnnaBridge 163:e59c8e839560 8081 /* Delay required between ADC disable and ADC calibration start. */
AnnaBridge 163:e59c8e839560 8082 /* Note: On this STM32 serie, before starting a calibration, */
AnnaBridge 163:e59c8e839560 8083 /* ADC must be disabled. */
AnnaBridge 163:e59c8e839560 8084 /* A minimum number of ADC clock cycles are required */
AnnaBridge 163:e59c8e839560 8085 /* between ADC disable state and calibration start. */
AnnaBridge 163:e59c8e839560 8086 /* Refer to literal @ref LL_ADC_DELAY_CALIB_ENABLE_ADC_CYCLES. */
AnnaBridge 163:e59c8e839560 8087 /* Wait time can be computed in user application by waiting for the */
AnnaBridge 163:e59c8e839560 8088 /* equivalent number of CPU cycles, by taking into account */
AnnaBridge 163:e59c8e839560 8089 /* ratio of CPU clock versus ADC clock prescalers. */
AnnaBridge 163:e59c8e839560 8090 /* Unit: ADC clock cycles. */
AnnaBridge 163:e59c8e839560 8091 #define LL_ADC_DELAY_DISABLE_CALIB_ADC_CYCLES ((uint32_t) 2U) /*!< Delay required between ADC disable and ADC calibration start */
AnnaBridge 163:e59c8e839560 8092
AnnaBridge 163:e59c8e839560 8093 /**
AnnaBridge 163:e59c8e839560 8094 * @}
AnnaBridge 163:e59c8e839560 8095 */
AnnaBridge 163:e59c8e839560 8096
AnnaBridge 163:e59c8e839560 8097 /**
AnnaBridge 163:e59c8e839560 8098 * @}
AnnaBridge 163:e59c8e839560 8099 */
AnnaBridge 163:e59c8e839560 8100
AnnaBridge 163:e59c8e839560 8101
AnnaBridge 163:e59c8e839560 8102 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 8103 /** @defgroup ADC_LL_Exported_Macros ADC Exported Macros
AnnaBridge 163:e59c8e839560 8104 * @{
AnnaBridge 163:e59c8e839560 8105 */
AnnaBridge 163:e59c8e839560 8106
AnnaBridge 163:e59c8e839560 8107 /** @defgroup ADC_LL_EM_WRITE_READ Common write and read registers Macros
AnnaBridge 163:e59c8e839560 8108 * @{
AnnaBridge 163:e59c8e839560 8109 */
AnnaBridge 163:e59c8e839560 8110
AnnaBridge 163:e59c8e839560 8111 /**
AnnaBridge 163:e59c8e839560 8112 * @brief Write a value in ADC register
AnnaBridge 163:e59c8e839560 8113 * @param __INSTANCE__ ADC Instance
AnnaBridge 163:e59c8e839560 8114 * @param __REG__ Register to be written
AnnaBridge 163:e59c8e839560 8115 * @param __VALUE__ Value to be written in the register
AnnaBridge 163:e59c8e839560 8116 * @retval None
AnnaBridge 163:e59c8e839560 8117 */
AnnaBridge 163:e59c8e839560 8118 #define LL_ADC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
AnnaBridge 163:e59c8e839560 8119
AnnaBridge 163:e59c8e839560 8120 /**
AnnaBridge 163:e59c8e839560 8121 * @brief Read a value in ADC register
AnnaBridge 163:e59c8e839560 8122 * @param __INSTANCE__ ADC Instance
AnnaBridge 163:e59c8e839560 8123 * @param __REG__ Register to be read
AnnaBridge 163:e59c8e839560 8124 * @retval Register value
AnnaBridge 163:e59c8e839560 8125 */
AnnaBridge 163:e59c8e839560 8126 #define LL_ADC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
AnnaBridge 163:e59c8e839560 8127 /**
AnnaBridge 163:e59c8e839560 8128 * @}
AnnaBridge 163:e59c8e839560 8129 */
AnnaBridge 163:e59c8e839560 8130
AnnaBridge 163:e59c8e839560 8131 /** @defgroup ADC_LL_EM_HELPER_MACRO ADC helper macro
AnnaBridge 163:e59c8e839560 8132 * @{
AnnaBridge 163:e59c8e839560 8133 */
AnnaBridge 163:e59c8e839560 8134
AnnaBridge 163:e59c8e839560 8135 /**
AnnaBridge 163:e59c8e839560 8136 * @brief Helper macro to get ADC channel number in decimal format
AnnaBridge 163:e59c8e839560 8137 * from literals LL_ADC_CHANNEL_x.
AnnaBridge 163:e59c8e839560 8138 * @note Example:
AnnaBridge 163:e59c8e839560 8139 * __LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_CHANNEL_4)
AnnaBridge 163:e59c8e839560 8140 * will return decimal number "4".
AnnaBridge 163:e59c8e839560 8141 * @note The input can be a value from functions where a channel
AnnaBridge 163:e59c8e839560 8142 * number is returned, either defined with number
AnnaBridge 163:e59c8e839560 8143 * or with bitfield (only one bit must be set).
AnnaBridge 163:e59c8e839560 8144 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8145 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 8146 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 8147 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 8148 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 8149 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 8150 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 8151 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 8152 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 8153 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 8154 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 8155 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 8156 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 8157 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 8158 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 8159 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 8160 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 8161 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 8162 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 8163 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 8164 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 8165 *
AnnaBridge 163:e59c8e839560 8166 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 8167 * @retval Value between Min_Data=0 and Max_Data=18
AnnaBridge 163:e59c8e839560 8168 */
AnnaBridge 163:e59c8e839560 8169 #define __LL_ADC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \
AnnaBridge 163:e59c8e839560 8170 (((__CHANNEL__) & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS)
AnnaBridge 163:e59c8e839560 8171
AnnaBridge 163:e59c8e839560 8172 /**
AnnaBridge 163:e59c8e839560 8173 * @brief Helper macro to get ADC channel in literal format LL_ADC_CHANNEL_x
AnnaBridge 163:e59c8e839560 8174 * from number in decimal format.
AnnaBridge 163:e59c8e839560 8175 * @note Example:
AnnaBridge 163:e59c8e839560 8176 * __LL_ADC_DECIMAL_NB_TO_CHANNEL(4)
AnnaBridge 163:e59c8e839560 8177 * will return a data equivalent to "LL_ADC_CHANNEL_4".
AnnaBridge 168:b9e159c1930a 8178 * @param __DECIMAL_NB__ Value between Min_Data=0 and Max_Data=18
AnnaBridge 163:e59c8e839560 8179 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 8180 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 8181 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 8182 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 8183 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 8184 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 8185 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 8186 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 8187 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 8188 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 8189 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 8190 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 8191 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 8192 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 8193 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 8194 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 8195 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 8196 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 8197 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 8198 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 8199 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 8200 *
AnnaBridge 163:e59c8e839560 8201 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 8202 * (1) For ADC channel read back from ADC register,
AnnaBridge 163:e59c8e839560 8203 * comparison with internal channel parameter to be done
AnnaBridge 163:e59c8e839560 8204 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 163:e59c8e839560 8205 */
AnnaBridge 163:e59c8e839560 8206 #define __LL_ADC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
AnnaBridge 163:e59c8e839560 8207 (((__DECIMAL_NB__) <= 9U) \
AnnaBridge 163:e59c8e839560 8208 ? ( \
AnnaBridge 163:e59c8e839560 8209 ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \
AnnaBridge 163:e59c8e839560 8210 (ADC_SMPR2_REGOFFSET | (((uint32_t) (3U * (__DECIMAL_NB__))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \
AnnaBridge 163:e59c8e839560 8211 ) \
AnnaBridge 163:e59c8e839560 8212 : \
AnnaBridge 163:e59c8e839560 8213 ( \
AnnaBridge 163:e59c8e839560 8214 ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \
AnnaBridge 163:e59c8e839560 8215 (ADC_SMPR1_REGOFFSET | (((uint32_t) (3U * ((__DECIMAL_NB__) - 10U))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \
AnnaBridge 163:e59c8e839560 8216 ) \
AnnaBridge 163:e59c8e839560 8217 )
AnnaBridge 163:e59c8e839560 8218
AnnaBridge 163:e59c8e839560 8219 /**
AnnaBridge 163:e59c8e839560 8220 * @brief Helper macro to determine whether the selected channel
AnnaBridge 163:e59c8e839560 8221 * corresponds to literal definitions of driver.
AnnaBridge 163:e59c8e839560 8222 * @note The different literal definitions of ADC channels are:
AnnaBridge 163:e59c8e839560 8223 * - ADC internal channel:
AnnaBridge 163:e59c8e839560 8224 * LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ...
AnnaBridge 163:e59c8e839560 8225 * - ADC external channel (channel connected to a GPIO pin):
AnnaBridge 163:e59c8e839560 8226 * LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...
AnnaBridge 163:e59c8e839560 8227 * @note The channel parameter must be a value defined from literal
AnnaBridge 163:e59c8e839560 8228 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
AnnaBridge 163:e59c8e839560 8229 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 163:e59c8e839560 8230 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...),
AnnaBridge 163:e59c8e839560 8231 * must not be a value from functions where a channel number is
AnnaBridge 163:e59c8e839560 8232 * returned from ADC registers,
AnnaBridge 163:e59c8e839560 8233 * because internal and external channels share the same channel
AnnaBridge 163:e59c8e839560 8234 * number in ADC registers. The differentiation is made only with
AnnaBridge 163:e59c8e839560 8235 * parameters definitions of driver.
AnnaBridge 163:e59c8e839560 8236 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8237 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 8238 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 8239 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 8240 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 8241 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 8242 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 8243 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 8244 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 8245 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 8246 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 8247 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 8248 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 8249 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 8250 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 8251 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 8252 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 8253 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 8254 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 8255 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 8256 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 8257 *
AnnaBridge 163:e59c8e839560 8258 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 8259 * @retval Value "0" if the channel corresponds to a parameter definition of a ADC external channel (channel connected to a GPIO pin)
AnnaBridge 163:e59c8e839560 8260 * Value "1" if the channel corresponds to a parameter definition of a ADC internal channel
AnnaBridge 163:e59c8e839560 8261 */
AnnaBridge 163:e59c8e839560 8262 #define __LL_ADC_IS_CHANNEL_INTERNAL(__CHANNEL__) \
AnnaBridge 163:e59c8e839560 8263 (((__CHANNEL__) & ADC_CHANNEL_ID_INTERNAL_CH_MASK) != 0U)
AnnaBridge 163:e59c8e839560 8264
AnnaBridge 163:e59c8e839560 8265 /**
AnnaBridge 163:e59c8e839560 8266 * @brief Helper macro to convert a channel defined from parameter
AnnaBridge 163:e59c8e839560 8267 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
AnnaBridge 163:e59c8e839560 8268 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 163:e59c8e839560 8269 * to its equivalent parameter definition of a ADC external channel
AnnaBridge 163:e59c8e839560 8270 * (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...).
AnnaBridge 163:e59c8e839560 8271 * @note The channel parameter can be, additionally to a value
AnnaBridge 163:e59c8e839560 8272 * defined from parameter definition of a ADC internal channel
AnnaBridge 163:e59c8e839560 8273 * (LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 163:e59c8e839560 8274 * a value defined from parameter definition of
AnnaBridge 163:e59c8e839560 8275 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...)
AnnaBridge 163:e59c8e839560 8276 * or a value from functions where a channel number is returned
AnnaBridge 163:e59c8e839560 8277 * from ADC registers.
AnnaBridge 163:e59c8e839560 8278 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8279 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 8280 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 8281 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 8282 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 8283 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 8284 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 8285 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 8286 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 8287 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 8288 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 8289 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 8290 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 8291 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 8292 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 8293 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 8294 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 8295 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 8296 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 8297 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 8298 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 8299 *
AnnaBridge 163:e59c8e839560 8300 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 8301 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 8302 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 8303 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 8304 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 8305 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 8306 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 8307 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 8308 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 8309 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 8310 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 8311 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 8312 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 8313 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 8314 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 8315 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 8316 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 8317 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 8318 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 8319 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 8320 */
AnnaBridge 163:e59c8e839560 8321 #define __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(__CHANNEL__) \
AnnaBridge 163:e59c8e839560 8322 ((__CHANNEL__) & ~ADC_CHANNEL_ID_INTERNAL_CH_MASK)
AnnaBridge 163:e59c8e839560 8323
AnnaBridge 163:e59c8e839560 8324 /**
AnnaBridge 163:e59c8e839560 8325 * @brief Helper macro to determine whether the internal channel
AnnaBridge 163:e59c8e839560 8326 * selected is available on the ADC instance selected.
AnnaBridge 163:e59c8e839560 8327 * @note The channel parameter must be a value defined from parameter
AnnaBridge 163:e59c8e839560 8328 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
AnnaBridge 163:e59c8e839560 8329 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 163:e59c8e839560 8330 * must not be a value defined from parameter definition of
AnnaBridge 163:e59c8e839560 8331 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...)
AnnaBridge 163:e59c8e839560 8332 * or a value from functions where a channel number is
AnnaBridge 163:e59c8e839560 8333 * returned from ADC registers,
AnnaBridge 163:e59c8e839560 8334 * because internal and external channels share the same channel
AnnaBridge 163:e59c8e839560 8335 * number in ADC registers. The differentiation is made only with
AnnaBridge 163:e59c8e839560 8336 * parameters definitions of driver.
AnnaBridge 163:e59c8e839560 8337 * @param __ADC_INSTANCE__ ADC instance
AnnaBridge 163:e59c8e839560 8338 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8339 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 8340 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 8341 *
AnnaBridge 163:e59c8e839560 8342 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 8343 * @retval Value "0" if the internal channel selected is not available on the ADC instance selected.
AnnaBridge 163:e59c8e839560 8344 * Value "1" if the internal channel selected is available on the ADC instance selected.
AnnaBridge 163:e59c8e839560 8345 */
AnnaBridge 163:e59c8e839560 8346 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 163:e59c8e839560 8347 (((__ADC_INSTANCE__) == ADC1) \
AnnaBridge 163:e59c8e839560 8348 ? ( \
AnnaBridge 163:e59c8e839560 8349 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 163:e59c8e839560 8350 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) \
AnnaBridge 163:e59c8e839560 8351 ) \
AnnaBridge 163:e59c8e839560 8352 : \
AnnaBridge 163:e59c8e839560 8353 (0U) \
AnnaBridge 163:e59c8e839560 8354 )
AnnaBridge 163:e59c8e839560 8355
AnnaBridge 163:e59c8e839560 8356 /**
AnnaBridge 163:e59c8e839560 8357 * @brief Helper macro to define ADC analog watchdog parameter:
AnnaBridge 163:e59c8e839560 8358 * define a single channel to monitor with analog watchdog
AnnaBridge 163:e59c8e839560 8359 * from sequencer channel and groups definition.
AnnaBridge 163:e59c8e839560 8360 * @note To be used with function @ref LL_ADC_SetAnalogWDMonitChannels().
AnnaBridge 163:e59c8e839560 8361 * Example:
AnnaBridge 163:e59c8e839560 8362 * LL_ADC_SetAnalogWDMonitChannels(
AnnaBridge 163:e59c8e839560 8363 * ADC1, LL_ADC_AWD1,
AnnaBridge 163:e59c8e839560 8364 * __LL_ADC_ANALOGWD_CHANNEL_GROUP(LL_ADC_CHANNEL4, LL_ADC_GROUP_REGULAR))
AnnaBridge 163:e59c8e839560 8365 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8366 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 8367 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 8368 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 8369 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 8370 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 8371 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 8372 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 8373 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 8374 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 8375 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 8376 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 8377 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 8378 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 8379 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 8380 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 8381 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 8382 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 8383 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 8384 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 8385 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 8386 *
AnnaBridge 163:e59c8e839560 8387 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 8388 * (1) For ADC channel read back from ADC register,
AnnaBridge 163:e59c8e839560 8389 * comparison with internal channel parameter to be done
AnnaBridge 163:e59c8e839560 8390 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 163:e59c8e839560 8391 * @param __GROUP__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8392 * @arg @ref LL_ADC_GROUP_REGULAR
AnnaBridge 163:e59c8e839560 8393 * @arg @ref LL_ADC_GROUP_INJECTED
AnnaBridge 163:e59c8e839560 8394 * @arg @ref LL_ADC_GROUP_REGULAR_INJECTED
AnnaBridge 163:e59c8e839560 8395 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 8396 * @arg @ref LL_ADC_AWD_DISABLE
AnnaBridge 163:e59c8e839560 8397 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG
AnnaBridge 163:e59c8e839560 8398 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ
AnnaBridge 163:e59c8e839560 8399 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
AnnaBridge 163:e59c8e839560 8400 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG
AnnaBridge 163:e59c8e839560 8401 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ
AnnaBridge 163:e59c8e839560 8402 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
AnnaBridge 163:e59c8e839560 8403 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG
AnnaBridge 163:e59c8e839560 8404 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ
AnnaBridge 163:e59c8e839560 8405 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
AnnaBridge 163:e59c8e839560 8406 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG
AnnaBridge 163:e59c8e839560 8407 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ
AnnaBridge 163:e59c8e839560 8408 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
AnnaBridge 163:e59c8e839560 8409 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG
AnnaBridge 163:e59c8e839560 8410 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ
AnnaBridge 163:e59c8e839560 8411 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
AnnaBridge 163:e59c8e839560 8412 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG
AnnaBridge 163:e59c8e839560 8413 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ
AnnaBridge 163:e59c8e839560 8414 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
AnnaBridge 163:e59c8e839560 8415 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG
AnnaBridge 163:e59c8e839560 8416 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ
AnnaBridge 163:e59c8e839560 8417 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
AnnaBridge 163:e59c8e839560 8418 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG
AnnaBridge 163:e59c8e839560 8419 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ
AnnaBridge 163:e59c8e839560 8420 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
AnnaBridge 163:e59c8e839560 8421 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG
AnnaBridge 163:e59c8e839560 8422 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ
AnnaBridge 163:e59c8e839560 8423 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
AnnaBridge 163:e59c8e839560 8424 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG
AnnaBridge 163:e59c8e839560 8425 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ
AnnaBridge 163:e59c8e839560 8426 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
AnnaBridge 163:e59c8e839560 8427 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG
AnnaBridge 163:e59c8e839560 8428 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ
AnnaBridge 163:e59c8e839560 8429 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
AnnaBridge 163:e59c8e839560 8430 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG
AnnaBridge 163:e59c8e839560 8431 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ
AnnaBridge 163:e59c8e839560 8432 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
AnnaBridge 163:e59c8e839560 8433 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG
AnnaBridge 163:e59c8e839560 8434 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ
AnnaBridge 163:e59c8e839560 8435 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
AnnaBridge 163:e59c8e839560 8436 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG
AnnaBridge 163:e59c8e839560 8437 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ
AnnaBridge 163:e59c8e839560 8438 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
AnnaBridge 163:e59c8e839560 8439 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG
AnnaBridge 163:e59c8e839560 8440 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ
AnnaBridge 163:e59c8e839560 8441 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
AnnaBridge 163:e59c8e839560 8442 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG
AnnaBridge 163:e59c8e839560 8443 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ
AnnaBridge 163:e59c8e839560 8444 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
AnnaBridge 163:e59c8e839560 8445 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG
AnnaBridge 163:e59c8e839560 8446 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ
AnnaBridge 163:e59c8e839560 8447 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
AnnaBridge 163:e59c8e839560 8448 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG
AnnaBridge 163:e59c8e839560 8449 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ
AnnaBridge 163:e59c8e839560 8450 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
AnnaBridge 163:e59c8e839560 8451 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG
AnnaBridge 163:e59c8e839560 8452 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ
AnnaBridge 163:e59c8e839560 8453 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
AnnaBridge 163:e59c8e839560 8454 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (1)
AnnaBridge 163:e59c8e839560 8455 * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (1)
AnnaBridge 163:e59c8e839560 8456 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (1)
AnnaBridge 163:e59c8e839560 8457 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (1)
AnnaBridge 163:e59c8e839560 8458 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (1)
AnnaBridge 163:e59c8e839560 8459 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (1)
AnnaBridge 163:e59c8e839560 8460 *
AnnaBridge 163:e59c8e839560 8461 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 8462 */
AnnaBridge 163:e59c8e839560 8463 #define __LL_ADC_ANALOGWD_CHANNEL_GROUP(__CHANNEL__, __GROUP__) \
AnnaBridge 163:e59c8e839560 8464 (((__GROUP__) == LL_ADC_GROUP_REGULAR) \
AnnaBridge 163:e59c8e839560 8465 ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) \
AnnaBridge 163:e59c8e839560 8466 : \
AnnaBridge 163:e59c8e839560 8467 ((__GROUP__) == LL_ADC_GROUP_INJECTED) \
AnnaBridge 163:e59c8e839560 8468 ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) \
AnnaBridge 163:e59c8e839560 8469 : \
AnnaBridge 163:e59c8e839560 8470 (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) \
AnnaBridge 163:e59c8e839560 8471 )
AnnaBridge 163:e59c8e839560 8472
AnnaBridge 163:e59c8e839560 8473 /**
AnnaBridge 163:e59c8e839560 8474 * @brief Helper macro to set the value of ADC analog watchdog threshold high
AnnaBridge 163:e59c8e839560 8475 * or low in function of ADC resolution, when ADC resolution is
AnnaBridge 163:e59c8e839560 8476 * different of 12 bits.
AnnaBridge 163:e59c8e839560 8477 * @note To be used with function @ref LL_ADC_SetAnalogWDThresholds().
AnnaBridge 163:e59c8e839560 8478 * Example, with a ADC resolution of 8 bits, to set the value of
AnnaBridge 163:e59c8e839560 8479 * analog watchdog threshold high (on 8 bits):
AnnaBridge 163:e59c8e839560 8480 * LL_ADC_SetAnalogWDThresholds
AnnaBridge 163:e59c8e839560 8481 * (< ADCx param >,
AnnaBridge 163:e59c8e839560 8482 * __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(LL_ADC_RESOLUTION_8B, <threshold_value_8_bits>)
AnnaBridge 163:e59c8e839560 8483 * );
AnnaBridge 163:e59c8e839560 8484 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8485 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 8486 * @param __AWD_THRESHOLD__ Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 8487 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 8488 */
AnnaBridge 163:e59c8e839560 8489 /* Note: On this STM32 serie, ADC is fixed to resolution 12 bits. */
AnnaBridge 163:e59c8e839560 8490 /* This macro has been kept anyway for compatibility with other */
AnnaBridge 163:e59c8e839560 8491 /* STM32 families featuring different ADC resolutions. */
AnnaBridge 163:e59c8e839560 8492 #define __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD__) \
AnnaBridge 163:e59c8e839560 8493 ((__AWD_THRESHOLD__) << (0U))
AnnaBridge 163:e59c8e839560 8494
AnnaBridge 163:e59c8e839560 8495 /**
AnnaBridge 163:e59c8e839560 8496 * @brief Helper macro to get the value of ADC analog watchdog threshold high
AnnaBridge 163:e59c8e839560 8497 * or low in function of ADC resolution, when ADC resolution is
AnnaBridge 163:e59c8e839560 8498 * different of 12 bits.
AnnaBridge 163:e59c8e839560 8499 * @note To be used with function @ref LL_ADC_GetAnalogWDThresholds().
AnnaBridge 163:e59c8e839560 8500 * Example, with a ADC resolution of 8 bits, to get the value of
AnnaBridge 163:e59c8e839560 8501 * analog watchdog threshold high (on 8 bits):
AnnaBridge 163:e59c8e839560 8502 * < threshold_value_6_bits > = __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION
AnnaBridge 163:e59c8e839560 8503 * (LL_ADC_RESOLUTION_8B,
AnnaBridge 163:e59c8e839560 8504 * LL_ADC_GetAnalogWDThresholds(<ADCx param>, LL_ADC_AWD_THRESHOLD_HIGH)
AnnaBridge 163:e59c8e839560 8505 * );
AnnaBridge 163:e59c8e839560 8506 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8507 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 8508 * @param __AWD_THRESHOLD_12_BITS__ Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 8509 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 8510 */
AnnaBridge 163:e59c8e839560 8511 /* Note: On this STM32 serie, ADC is fixed to resolution 12 bits. */
AnnaBridge 163:e59c8e839560 8512 /* This macro has been kept anyway for compatibility with other */
AnnaBridge 163:e59c8e839560 8513 /* STM32 families featuring different ADC resolutions. */
AnnaBridge 163:e59c8e839560 8514 #define __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD_12_BITS__) \
AnnaBridge 163:e59c8e839560 8515 (__AWD_THRESHOLD_12_BITS__)
AnnaBridge 163:e59c8e839560 8516
AnnaBridge 163:e59c8e839560 8517 /**
AnnaBridge 163:e59c8e839560 8518 * @brief Helper macro to select the ADC common instance
AnnaBridge 163:e59c8e839560 8519 * to which is belonging the selected ADC instance.
AnnaBridge 163:e59c8e839560 8520 * @note ADC common register instance can be used for:
AnnaBridge 163:e59c8e839560 8521 * - Set parameters common to several ADC instances
AnnaBridge 163:e59c8e839560 8522 * - Multimode (for devices with several ADC instances)
AnnaBridge 163:e59c8e839560 8523 * Refer to functions having argument "ADCxy_COMMON" as parameter.
AnnaBridge 163:e59c8e839560 8524 * @note On STM32F37x, there is no common ADC instance.
AnnaBridge 163:e59c8e839560 8525 * However, ADC instance ADC1 has a role of common ADC instance
AnnaBridge 163:e59c8e839560 8526 * (equivalence with other STM32 families featuring several
AnnaBridge 163:e59c8e839560 8527 * ADC instances).
AnnaBridge 163:e59c8e839560 8528 * @param __ADCx__ ADC instance
AnnaBridge 163:e59c8e839560 8529 * @retval ADC common register instance
AnnaBridge 163:e59c8e839560 8530 */
AnnaBridge 163:e59c8e839560 8531 #define __LL_ADC_COMMON_INSTANCE(__ADCx__) \
AnnaBridge 163:e59c8e839560 8532 (ADC1_COMMON)
AnnaBridge 163:e59c8e839560 8533
AnnaBridge 163:e59c8e839560 8534 /**
AnnaBridge 163:e59c8e839560 8535 * @brief Helper macro to check if all ADC instances sharing the same
AnnaBridge 163:e59c8e839560 8536 * ADC common instance are disabled.
AnnaBridge 163:e59c8e839560 8537 * @note This check is required by functions with setting conditioned to
AnnaBridge 163:e59c8e839560 8538 * ADC state:
AnnaBridge 163:e59c8e839560 8539 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 163:e59c8e839560 8540 * Refer to functions having argument "ADCxy_COMMON" as parameter.
AnnaBridge 163:e59c8e839560 8541 * @note On devices with only 1 ADC common instance, parameter of this macro
AnnaBridge 163:e59c8e839560 8542 * is useless and can be ignored (parameter kept for compatibility
AnnaBridge 163:e59c8e839560 8543 * with devices featuring several ADC common instances).
AnnaBridge 163:e59c8e839560 8544 * @note On STM32F37x, there is no common ADC instance.
AnnaBridge 163:e59c8e839560 8545 * However, ADC instance ADC1 has a role of common ADC instance
AnnaBridge 163:e59c8e839560 8546 * (equivalence with other STM32 families featuring several
AnnaBridge 163:e59c8e839560 8547 * ADC instances).
AnnaBridge 163:e59c8e839560 8548 * @param __ADCXY_COMMON__ ADC common instance
AnnaBridge 163:e59c8e839560 8549 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 8550 * @retval Value "0" All ADC instances sharing the same ADC common instance
AnnaBridge 163:e59c8e839560 8551 * are disabled.
AnnaBridge 163:e59c8e839560 8552 * Value "1" At least one ADC instance sharing the same ADC common instance
AnnaBridge 163:e59c8e839560 8553 * is enabled
AnnaBridge 163:e59c8e839560 8554 */
AnnaBridge 163:e59c8e839560 8555 #define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
AnnaBridge 163:e59c8e839560 8556 LL_ADC_IsEnabled(ADC1)
AnnaBridge 163:e59c8e839560 8557
AnnaBridge 163:e59c8e839560 8558 /**
AnnaBridge 163:e59c8e839560 8559 * @brief Helper macro to define the ADC conversion data full-scale digital
AnnaBridge 163:e59c8e839560 8560 * value corresponding to the selected ADC resolution.
AnnaBridge 163:e59c8e839560 8561 * @note ADC conversion data full-scale corresponds to voltage range
AnnaBridge 163:e59c8e839560 8562 * determined by analog voltage references Vref+ and Vref-
AnnaBridge 163:e59c8e839560 8563 * (refer to reference manual).
AnnaBridge 163:e59c8e839560 8564 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8565 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 8566 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
AnnaBridge 163:e59c8e839560 8567 */
AnnaBridge 163:e59c8e839560 8568 #define __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 8569 ((uint32_t)0xFFFU)
AnnaBridge 163:e59c8e839560 8570
AnnaBridge 163:e59c8e839560 8571 /**
AnnaBridge 163:e59c8e839560 8572 * @brief Helper macro to convert the ADC conversion data from
AnnaBridge 163:e59c8e839560 8573 * a resolution to another resolution.
AnnaBridge 163:e59c8e839560 8574 * @note On STM32F37x, the only ADC resolution available is 12 bits.
AnnaBridge 163:e59c8e839560 8575 * This macro has been kept for compatibility purpose over other
AnnaBridge 163:e59c8e839560 8576 * STM32 families.
AnnaBridge 163:e59c8e839560 8577 * @param __DATA__ ADC conversion data to be converted
AnnaBridge 163:e59c8e839560 8578 * @param __ADC_RESOLUTION_CURRENT__ Resolution of to the data to be converted
AnnaBridge 163:e59c8e839560 8579 * This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8580 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 8581 * @param __ADC_RESOLUTION_TARGET__ Resolution of the data after conversion
AnnaBridge 163:e59c8e839560 8582 * This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8583 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 8584 * @retval ADC conversion data to the requested resolution
AnnaBridge 163:e59c8e839560 8585 */
AnnaBridge 163:e59c8e839560 8586 #define __LL_ADC_CONVERT_DATA_RESOLUTION(__DATA__,\
AnnaBridge 163:e59c8e839560 8587 __ADC_RESOLUTION_CURRENT__,\
AnnaBridge 163:e59c8e839560 8588 __ADC_RESOLUTION_TARGET__) \
AnnaBridge 163:e59c8e839560 8589 (((__DATA__) \
AnnaBridge 163:e59c8e839560 8590 << ((__ADC_RESOLUTION_CURRENT__) >> (0U))) \
AnnaBridge 163:e59c8e839560 8591 >> ((__ADC_RESOLUTION_TARGET__) >> (0U)) \
AnnaBridge 163:e59c8e839560 8592 )
AnnaBridge 163:e59c8e839560 8593
AnnaBridge 163:e59c8e839560 8594 /**
AnnaBridge 163:e59c8e839560 8595 * @brief Helper macro to calculate the voltage (unit: mVolt)
AnnaBridge 163:e59c8e839560 8596 * corresponding to a ADC conversion data (unit: digital value).
AnnaBridge 163:e59c8e839560 8597 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 163:e59c8e839560 8598 * user board environment or can be calculated using ADC measurement
AnnaBridge 163:e59c8e839560 8599 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 163:e59c8e839560 8600 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
AnnaBridge 163:e59c8e839560 8601 * @param __ADC_DATA__ ADC conversion data (resolution 12 bits)
AnnaBridge 163:e59c8e839560 8602 * (unit: digital value).
AnnaBridge 163:e59c8e839560 8603 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8604 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 8605 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
AnnaBridge 163:e59c8e839560 8606 */
AnnaBridge 163:e59c8e839560 8607 #define __LL_ADC_CALC_DATA_TO_VOLTAGE(__VREFANALOG_VOLTAGE__,\
AnnaBridge 163:e59c8e839560 8608 __ADC_DATA__,\
AnnaBridge 163:e59c8e839560 8609 __ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 8610 ((__ADC_DATA__) * (__VREFANALOG_VOLTAGE__) \
AnnaBridge 163:e59c8e839560 8611 / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 8612 )
AnnaBridge 163:e59c8e839560 8613
AnnaBridge 163:e59c8e839560 8614
AnnaBridge 163:e59c8e839560 8615 /**
AnnaBridge 163:e59c8e839560 8616 * @brief Helper macro to calculate analog reference voltage (Vref+)
AnnaBridge 163:e59c8e839560 8617 * (unit: mVolt) from ADC conversion data of internal voltage
AnnaBridge 163:e59c8e839560 8618 * reference VrefInt.
AnnaBridge 163:e59c8e839560 8619 * @note Computation is using VrefInt calibration value
AnnaBridge 163:e59c8e839560 8620 * stored in system memory for each device during production.
AnnaBridge 163:e59c8e839560 8621 * @note This voltage depends on user board environment: voltage level
AnnaBridge 163:e59c8e839560 8622 * connected to pin Vref+.
AnnaBridge 163:e59c8e839560 8623 * On devices with small package, the pin Vref+ is not present
AnnaBridge 163:e59c8e839560 8624 * and internally bonded to pin Vdda.
AnnaBridge 163:e59c8e839560 8625 * @note On this STM32 serie, calibration data of internal voltage reference
AnnaBridge 163:e59c8e839560 8626 * VrefInt corresponds to a resolution of 12 bits,
AnnaBridge 163:e59c8e839560 8627 * this is the recommended ADC resolution to convert voltage of
AnnaBridge 163:e59c8e839560 8628 * internal voltage reference VrefInt.
AnnaBridge 163:e59c8e839560 8629 * On STM32F37x, the only ADC resolution available is 12 bits.
AnnaBridge 163:e59c8e839560 8630 * The parameter of ADC resolution is kept for compatibility purpose
AnnaBridge 163:e59c8e839560 8631 * over other STM32 families.
AnnaBridge 168:b9e159c1930a 8632 * @param __VREFINT_ADC_DATA__ ADC conversion data (resolution 12 bits)
AnnaBridge 163:e59c8e839560 8633 * of internal voltage reference VrefInt (unit: digital value).
AnnaBridge 163:e59c8e839560 8634 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8635 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 8636 * @retval Analog reference voltage (unit: mV)
AnnaBridge 163:e59c8e839560 8637 */
AnnaBridge 163:e59c8e839560 8638 #define __LL_ADC_CALC_VREFANALOG_VOLTAGE(__VREFINT_ADC_DATA__,\
AnnaBridge 163:e59c8e839560 8639 __ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 8640 (((uint32_t)(*VREFINT_CAL_ADDR) * VREFINT_CAL_VREF) \
AnnaBridge 163:e59c8e839560 8641 / __LL_ADC_CONVERT_DATA_RESOLUTION((__VREFINT_ADC_DATA__), \
AnnaBridge 163:e59c8e839560 8642 (__ADC_RESOLUTION__), \
AnnaBridge 163:e59c8e839560 8643 LL_ADC_RESOLUTION_12B) \
AnnaBridge 163:e59c8e839560 8644 )
AnnaBridge 163:e59c8e839560 8645
AnnaBridge 163:e59c8e839560 8646 /**
AnnaBridge 163:e59c8e839560 8647 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
AnnaBridge 163:e59c8e839560 8648 * from ADC conversion data of internal temperature sensor.
AnnaBridge 163:e59c8e839560 8649 * @note Computation is using temperature sensor calibration values
AnnaBridge 163:e59c8e839560 8650 * stored in system memory for each device during production.
AnnaBridge 163:e59c8e839560 8651 * @note Calculation formula:
AnnaBridge 163:e59c8e839560 8652 * Temperature = ((TS_ADC_DATA - TS_CAL1)
AnnaBridge 163:e59c8e839560 8653 * * (TS_CAL2_TEMP - TS_CAL1_TEMP))
AnnaBridge 163:e59c8e839560 8654 * / (TS_CAL2 - TS_CAL1) + TS_CAL1_TEMP
AnnaBridge 163:e59c8e839560 8655 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
AnnaBridge 163:e59c8e839560 8656 * Avg_Slope = (TS_CAL2 - TS_CAL1)
AnnaBridge 163:e59c8e839560 8657 * / (TS_CAL2_TEMP - TS_CAL1_TEMP)
AnnaBridge 163:e59c8e839560 8658 * TS_CAL1 = equivalent TS_ADC_DATA at temperature
AnnaBridge 163:e59c8e839560 8659 * TEMP_DEGC_CAL1 (calibrated in factory)
AnnaBridge 163:e59c8e839560 8660 * TS_CAL2 = equivalent TS_ADC_DATA at temperature
AnnaBridge 163:e59c8e839560 8661 * TEMP_DEGC_CAL2 (calibrated in factory)
AnnaBridge 163:e59c8e839560 8662 * Caution: Calculation relevancy under reserve that calibration
AnnaBridge 163:e59c8e839560 8663 * parameters are correct (address and data).
AnnaBridge 163:e59c8e839560 8664 * To calculate temperature using temperature sensor
AnnaBridge 163:e59c8e839560 8665 * datasheet typical values (generic values less, therefore
AnnaBridge 163:e59c8e839560 8666 * less accurate than calibrated values),
AnnaBridge 163:e59c8e839560 8667 * use helper macro @ref __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS().
AnnaBridge 163:e59c8e839560 8668 * @note As calculation input, the analog reference voltage (Vref+) must be
AnnaBridge 163:e59c8e839560 8669 * defined as it impacts the ADC LSB equivalent voltage.
AnnaBridge 163:e59c8e839560 8670 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 163:e59c8e839560 8671 * user board environment or can be calculated using ADC measurement
AnnaBridge 163:e59c8e839560 8672 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 163:e59c8e839560 8673 * @note On this STM32 serie, calibration data of temperature sensor
AnnaBridge 163:e59c8e839560 8674 * corresponds to a resolution of 12 bits,
AnnaBridge 163:e59c8e839560 8675 * this is the recommended ADC resolution to convert voltage of
AnnaBridge 163:e59c8e839560 8676 * temperature sensor.
AnnaBridge 163:e59c8e839560 8677 * On STM32F37x, the only ADC resolution available is 12 bits.
AnnaBridge 163:e59c8e839560 8678 * The parameter of ADC resolution is kept for compatibility purpose
AnnaBridge 163:e59c8e839560 8679 * over other STM32 families.
AnnaBridge 163:e59c8e839560 8680 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
AnnaBridge 163:e59c8e839560 8681 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal
AnnaBridge 163:e59c8e839560 8682 * temperature sensor (unit: digital value).
AnnaBridge 163:e59c8e839560 8683 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature
AnnaBridge 163:e59c8e839560 8684 * sensor voltage has been measured.
AnnaBridge 163:e59c8e839560 8685 * This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8686 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 8687 * @retval Temperature (unit: degree Celsius)
AnnaBridge 163:e59c8e839560 8688 */
AnnaBridge 163:e59c8e839560 8689 #define __LL_ADC_CALC_TEMPERATURE(__VREFANALOG_VOLTAGE__,\
AnnaBridge 163:e59c8e839560 8690 __TEMPSENSOR_ADC_DATA__,\
AnnaBridge 163:e59c8e839560 8691 __ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 8692 (((( ((int32_t)((__LL_ADC_CONVERT_DATA_RESOLUTION((__TEMPSENSOR_ADC_DATA__), \
AnnaBridge 163:e59c8e839560 8693 (__ADC_RESOLUTION__), \
AnnaBridge 163:e59c8e839560 8694 LL_ADC_RESOLUTION_12B) \
AnnaBridge 163:e59c8e839560 8695 * (__VREFANALOG_VOLTAGE__)) \
AnnaBridge 163:e59c8e839560 8696 / TEMPSENSOR_CAL_VREFANALOG) \
AnnaBridge 163:e59c8e839560 8697 - (int32_t) *TEMPSENSOR_CAL1_ADDR) \
AnnaBridge 163:e59c8e839560 8698 ) * (int32_t)(TEMPSENSOR_CAL2_TEMP - TEMPSENSOR_CAL1_TEMP) \
AnnaBridge 163:e59c8e839560 8699 ) / (int32_t)((int32_t)*TEMPSENSOR_CAL2_ADDR - (int32_t)*TEMPSENSOR_CAL1_ADDR) \
AnnaBridge 163:e59c8e839560 8700 ) + TEMPSENSOR_CAL1_TEMP \
AnnaBridge 163:e59c8e839560 8701 )
AnnaBridge 163:e59c8e839560 8702
AnnaBridge 163:e59c8e839560 8703 /**
AnnaBridge 163:e59c8e839560 8704 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
AnnaBridge 163:e59c8e839560 8705 * from ADC conversion data of internal temperature sensor.
AnnaBridge 163:e59c8e839560 8706 * @note Computation is using temperature sensor typical values
AnnaBridge 163:e59c8e839560 8707 * (refer to device datasheet).
AnnaBridge 163:e59c8e839560 8708 * @note Calculation formula:
AnnaBridge 163:e59c8e839560 8709 * Temperature = (TS_TYP_CALx_VOLT(uV) - TS_ADC_DATA * Conversion_uV)
AnnaBridge 163:e59c8e839560 8710 * / Avg_Slope + CALx_TEMP
AnnaBridge 163:e59c8e839560 8711 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
AnnaBridge 163:e59c8e839560 8712 * (unit: digital value)
AnnaBridge 163:e59c8e839560 8713 * Avg_Slope = temperature sensor slope
AnnaBridge 163:e59c8e839560 8714 * (unit: uV/Degree Celsius)
AnnaBridge 163:e59c8e839560 8715 * TS_TYP_CALx_VOLT = temperature sensor digital value at
AnnaBridge 163:e59c8e839560 8716 * temperature CALx_TEMP (unit: mV)
AnnaBridge 163:e59c8e839560 8717 * Caution: Calculation relevancy under reserve the temperature sensor
AnnaBridge 163:e59c8e839560 8718 * of the current device has characteristics in line with
AnnaBridge 163:e59c8e839560 8719 * datasheet typical values.
AnnaBridge 163:e59c8e839560 8720 * If temperature sensor calibration values are available on
AnnaBridge 163:e59c8e839560 8721 * on this device (presence of macro __LL_ADC_CALC_TEMPERATURE()),
AnnaBridge 163:e59c8e839560 8722 * temperature calculation will be more accurate using
AnnaBridge 163:e59c8e839560 8723 * helper macro @ref __LL_ADC_CALC_TEMPERATURE().
AnnaBridge 163:e59c8e839560 8724 * @note As calculation input, the analog reference voltage (Vref+) must be
AnnaBridge 163:e59c8e839560 8725 * defined as it impacts the ADC LSB equivalent voltage.
AnnaBridge 163:e59c8e839560 8726 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 163:e59c8e839560 8727 * user board environment or can be calculated using ADC measurement
AnnaBridge 163:e59c8e839560 8728 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 163:e59c8e839560 8729 * @note ADC measurement data must correspond to a resolution of 12bits
AnnaBridge 163:e59c8e839560 8730 * (full scale digital value 4095). If not the case, the data must be
AnnaBridge 163:e59c8e839560 8731 * preliminarily rescaled to an equivalent resolution of 12 bits.
AnnaBridge 163:e59c8e839560 8732 * @param __TEMPSENSOR_TYP_AVGSLOPE__ Device datasheet data: Temperature sensor slope typical value (unit: uV/DegCelsius).
AnnaBridge 163:e59c8e839560 8733 * On STM32F37x, refer to device datasheet parameter "Avg_Slope".
AnnaBridge 163:e59c8e839560 8734 * @param __TEMPSENSOR_TYP_CALX_V__ Device datasheet data: Temperature sensor voltage typical value (at temperature and Vref+ defined in parameters below) (unit: mV).
AnnaBridge 163:e59c8e839560 8735 * On STM32F37x, refer to device datasheet parameter "V25".
AnnaBridge 163:e59c8e839560 8736 * @param __TEMPSENSOR_CALX_TEMP__ Device datasheet data: Temperature at which temperature sensor voltage (see parameter above) is corresponding (unit: mV)
AnnaBridge 163:e59c8e839560 8737 * @param __VREFANALOG_VOLTAGE__ Analog voltage reference (Vref+) voltage (unit: mV)
AnnaBridge 163:e59c8e839560 8738 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal temperature sensor (unit: digital value).
AnnaBridge 163:e59c8e839560 8739 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature sensor voltage has been measured.
AnnaBridge 163:e59c8e839560 8740 * This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8741 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 163:e59c8e839560 8742 * @retval Temperature (unit: degree Celsius)
AnnaBridge 163:e59c8e839560 8743 */
AnnaBridge 163:e59c8e839560 8744 #define __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS(__TEMPSENSOR_TYP_AVGSLOPE__,\
AnnaBridge 163:e59c8e839560 8745 __TEMPSENSOR_TYP_CALX_V__,\
AnnaBridge 163:e59c8e839560 8746 __TEMPSENSOR_CALX_TEMP__,\
AnnaBridge 163:e59c8e839560 8747 __VREFANALOG_VOLTAGE__,\
AnnaBridge 163:e59c8e839560 8748 __TEMPSENSOR_ADC_DATA__,\
AnnaBridge 163:e59c8e839560 8749 __ADC_RESOLUTION__) \
AnnaBridge 163:e59c8e839560 8750 ((( ( \
AnnaBridge 163:e59c8e839560 8751 (int32_t)(((__TEMPSENSOR_TYP_CALX_V__)) \
AnnaBridge 163:e59c8e839560 8752 * 1000) \
AnnaBridge 163:e59c8e839560 8753 - \
AnnaBridge 163:e59c8e839560 8754 (int32_t)((((__TEMPSENSOR_ADC_DATA__) * (__VREFANALOG_VOLTAGE__)) \
AnnaBridge 163:e59c8e839560 8755 / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__)) \
AnnaBridge 163:e59c8e839560 8756 * 1000) \
AnnaBridge 163:e59c8e839560 8757 ) \
AnnaBridge 163:e59c8e839560 8758 ) / (__TEMPSENSOR_TYP_AVGSLOPE__) \
AnnaBridge 163:e59c8e839560 8759 ) + (__TEMPSENSOR_CALX_TEMP__) \
AnnaBridge 163:e59c8e839560 8760 )
AnnaBridge 163:e59c8e839560 8761
AnnaBridge 163:e59c8e839560 8762 /**
AnnaBridge 163:e59c8e839560 8763 * @}
AnnaBridge 163:e59c8e839560 8764 */
AnnaBridge 163:e59c8e839560 8765
AnnaBridge 163:e59c8e839560 8766 /**
AnnaBridge 163:e59c8e839560 8767 * @}
AnnaBridge 163:e59c8e839560 8768 */
AnnaBridge 163:e59c8e839560 8769
AnnaBridge 163:e59c8e839560 8770
AnnaBridge 163:e59c8e839560 8771 /* Exported functions --------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 8772 /** @defgroup ADC_LL_Exported_Functions ADC Exported Functions
AnnaBridge 163:e59c8e839560 8773 * @{
AnnaBridge 163:e59c8e839560 8774 */
AnnaBridge 163:e59c8e839560 8775
AnnaBridge 163:e59c8e839560 8776 /** @defgroup ADC_LL_EF_DMA_Management ADC DMA management
AnnaBridge 163:e59c8e839560 8777 * @{
AnnaBridge 163:e59c8e839560 8778 */
AnnaBridge 163:e59c8e839560 8779 /* Note: LL ADC functions to set DMA transfer are located into sections of */
AnnaBridge 163:e59c8e839560 8780 /* configuration of ADC instance, groups and multimode (if available): */
AnnaBridge 163:e59c8e839560 8781 /* @ref LL_ADC_REG_SetDMATransfer(), ... */
AnnaBridge 163:e59c8e839560 8782
AnnaBridge 163:e59c8e839560 8783 /**
AnnaBridge 163:e59c8e839560 8784 * @brief Function to help to configure DMA transfer from ADC: retrieve the
AnnaBridge 163:e59c8e839560 8785 * ADC register address from ADC instance and a list of ADC registers
AnnaBridge 163:e59c8e839560 8786 * intended to be used (most commonly) with DMA transfer.
AnnaBridge 163:e59c8e839560 8787 * @note These ADC registers are data registers:
AnnaBridge 163:e59c8e839560 8788 * when ADC conversion data is available in ADC data registers,
AnnaBridge 163:e59c8e839560 8789 * ADC generates a DMA transfer request.
AnnaBridge 163:e59c8e839560 8790 * @note This macro is intended to be used with LL DMA driver, refer to
AnnaBridge 163:e59c8e839560 8791 * function "LL_DMA_ConfigAddresses()".
AnnaBridge 163:e59c8e839560 8792 * Example:
AnnaBridge 163:e59c8e839560 8793 * LL_DMA_ConfigAddresses(DMA1,
AnnaBridge 163:e59c8e839560 8794 * LL_DMA_CHANNEL_1,
AnnaBridge 163:e59c8e839560 8795 * LL_ADC_DMA_GetRegAddr(ADC1, LL_ADC_DMA_REG_REGULAR_DATA),
AnnaBridge 163:e59c8e839560 8796 * (uint32_t)&< array or variable >,
AnnaBridge 163:e59c8e839560 8797 * LL_DMA_DIRECTION_PERIPH_TO_MEMORY);
AnnaBridge 163:e59c8e839560 8798 * @note For devices with several ADC: in multimode, some devices
AnnaBridge 163:e59c8e839560 8799 * use a different data register outside of ADC instance scope
AnnaBridge 163:e59c8e839560 8800 * (common data register). This macro manages this register difference,
AnnaBridge 163:e59c8e839560 8801 * only ADC instance has to be set as parameter.
AnnaBridge 163:e59c8e839560 8802 * @rmtoll DR DATA LL_ADC_DMA_GetRegAddr
AnnaBridge 163:e59c8e839560 8803 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 8804 * @param Register This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8805 * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA
AnnaBridge 163:e59c8e839560 8806 * @retval ADC register address
AnnaBridge 163:e59c8e839560 8807 */
AnnaBridge 163:e59c8e839560 8808 __STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register)
AnnaBridge 163:e59c8e839560 8809 {
AnnaBridge 163:e59c8e839560 8810 /* Retrieve address of register DR */
AnnaBridge 163:e59c8e839560 8811 return (uint32_t)&(ADCx->DR);
AnnaBridge 163:e59c8e839560 8812 }
AnnaBridge 163:e59c8e839560 8813
AnnaBridge 163:e59c8e839560 8814 /**
AnnaBridge 163:e59c8e839560 8815 * @}
AnnaBridge 163:e59c8e839560 8816 */
AnnaBridge 163:e59c8e839560 8817
AnnaBridge 163:e59c8e839560 8818 /** @defgroup ADC_LL_EF_Configuration_ADC_Common Configuration of ADC hierarchical scope: common to several ADC instances
AnnaBridge 163:e59c8e839560 8819 * @{
AnnaBridge 163:e59c8e839560 8820 */
AnnaBridge 163:e59c8e839560 8821
AnnaBridge 163:e59c8e839560 8822 /**
AnnaBridge 163:e59c8e839560 8823 * @brief Set parameter common to several ADC: measurement path to internal
AnnaBridge 163:e59c8e839560 8824 * channels (VrefInt, temperature sensor, ...).
AnnaBridge 163:e59c8e839560 8825 * @note One or several values can be selected.
AnnaBridge 163:e59c8e839560 8826 * Example: (LL_ADC_PATH_INTERNAL_VREFINT |
AnnaBridge 163:e59c8e839560 8827 * LL_ADC_PATH_INTERNAL_TEMPSENSOR)
AnnaBridge 163:e59c8e839560 8828 * @note Stabilization time of measurement path to internal channel:
AnnaBridge 163:e59c8e839560 8829 * After enabling internal paths, before starting ADC conversion,
AnnaBridge 163:e59c8e839560 8830 * a delay is required for internal voltage reference and
AnnaBridge 163:e59c8e839560 8831 * temperature sensor stabilization time.
AnnaBridge 163:e59c8e839560 8832 * Refer to device datasheet.
AnnaBridge 163:e59c8e839560 8833 * Refer to literal @ref LL_ADC_DELAY_TEMPSENSOR_STAB_US.
AnnaBridge 163:e59c8e839560 8834 * @note ADC internal channel sampling time constraint:
AnnaBridge 163:e59c8e839560 8835 * For ADC conversion of internal channels,
AnnaBridge 163:e59c8e839560 8836 * a sampling time minimum value is required.
AnnaBridge 163:e59c8e839560 8837 * Refer to device datasheet.
AnnaBridge 163:e59c8e839560 8838 * @rmtoll CR2 TSVREFE LL_ADC_SetCommonPathInternalCh
AnnaBridge 163:e59c8e839560 8839 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 8840 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 8841 * @param PathInternal This parameter can be a combination of the following values:
AnnaBridge 163:e59c8e839560 8842 * @arg @ref LL_ADC_PATH_INTERNAL_NONE
AnnaBridge 163:e59c8e839560 8843 * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT
AnnaBridge 163:e59c8e839560 8844 * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR
AnnaBridge 163:e59c8e839560 8845 * @retval None
AnnaBridge 163:e59c8e839560 8846 */
AnnaBridge 163:e59c8e839560 8847 __STATIC_INLINE void LL_ADC_SetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t PathInternal)
AnnaBridge 163:e59c8e839560 8848 {
AnnaBridge 163:e59c8e839560 8849 MODIFY_REG(ADCxy_COMMON->CR2, (ADC_CR2_TSVREFE), PathInternal);
AnnaBridge 163:e59c8e839560 8850 }
AnnaBridge 163:e59c8e839560 8851
AnnaBridge 163:e59c8e839560 8852 /**
AnnaBridge 163:e59c8e839560 8853 * @brief Get parameter common to several ADC: measurement path to internal
AnnaBridge 163:e59c8e839560 8854 * channels (VrefInt, temperature sensor, ...).
AnnaBridge 163:e59c8e839560 8855 * @note One or several values can be selected.
AnnaBridge 163:e59c8e839560 8856 * Example: (LL_ADC_PATH_INTERNAL_VREFINT |
AnnaBridge 163:e59c8e839560 8857 * LL_ADC_PATH_INTERNAL_TEMPSENSOR)
AnnaBridge 163:e59c8e839560 8858 * @rmtoll CR2 TSVREFE LL_ADC_GetCommonPathInternalCh
AnnaBridge 163:e59c8e839560 8859 * @param ADCxy_COMMON ADC common instance
AnnaBridge 163:e59c8e839560 8860 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 163:e59c8e839560 8861 * @retval Returned value can be a combination of the following values:
AnnaBridge 163:e59c8e839560 8862 * @arg @ref LL_ADC_PATH_INTERNAL_NONE
AnnaBridge 163:e59c8e839560 8863 * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT
AnnaBridge 163:e59c8e839560 8864 * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR
AnnaBridge 163:e59c8e839560 8865 */
AnnaBridge 163:e59c8e839560 8866 __STATIC_INLINE uint32_t LL_ADC_GetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 163:e59c8e839560 8867 {
AnnaBridge 163:e59c8e839560 8868 return (uint32_t)(READ_BIT(ADCxy_COMMON->CR2, ADC_CR2_TSVREFE));
AnnaBridge 163:e59c8e839560 8869 }
AnnaBridge 163:e59c8e839560 8870
AnnaBridge 163:e59c8e839560 8871 /**
AnnaBridge 163:e59c8e839560 8872 * @}
AnnaBridge 163:e59c8e839560 8873 */
AnnaBridge 163:e59c8e839560 8874
AnnaBridge 163:e59c8e839560 8875 /** @defgroup ADC_LL_EF_Configuration_ADC_Instance Configuration of ADC hierarchical scope: ADC instance
AnnaBridge 163:e59c8e839560 8876 * @{
AnnaBridge 163:e59c8e839560 8877 */
AnnaBridge 163:e59c8e839560 8878
AnnaBridge 163:e59c8e839560 8879 /**
AnnaBridge 163:e59c8e839560 8880 * @brief Set ADC conversion data alignment.
AnnaBridge 163:e59c8e839560 8881 * @note Refer to reference manual for alignments formats
AnnaBridge 163:e59c8e839560 8882 * dependencies to ADC resolutions.
AnnaBridge 163:e59c8e839560 8883 * @rmtoll CR2 ALIGN LL_ADC_SetDataAlignment
AnnaBridge 163:e59c8e839560 8884 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 8885 * @param DataAlignment This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8886 * @arg @ref LL_ADC_DATA_ALIGN_RIGHT
AnnaBridge 163:e59c8e839560 8887 * @arg @ref LL_ADC_DATA_ALIGN_LEFT
AnnaBridge 163:e59c8e839560 8888 * @retval None
AnnaBridge 163:e59c8e839560 8889 */
AnnaBridge 163:e59c8e839560 8890 __STATIC_INLINE void LL_ADC_SetDataAlignment(ADC_TypeDef *ADCx, uint32_t DataAlignment)
AnnaBridge 163:e59c8e839560 8891 {
AnnaBridge 163:e59c8e839560 8892 MODIFY_REG(ADCx->CR2, ADC_CR2_ALIGN, DataAlignment);
AnnaBridge 163:e59c8e839560 8893 }
AnnaBridge 163:e59c8e839560 8894
AnnaBridge 163:e59c8e839560 8895 /**
AnnaBridge 163:e59c8e839560 8896 * @brief Get ADC conversion data alignment.
AnnaBridge 163:e59c8e839560 8897 * @note Refer to reference manual for alignments formats
AnnaBridge 163:e59c8e839560 8898 * dependencies to ADC resolutions.
AnnaBridge 163:e59c8e839560 8899 * @rmtoll CR2 ALIGN LL_ADC_SetDataAlignment
AnnaBridge 163:e59c8e839560 8900 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 8901 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 8902 * @arg @ref LL_ADC_DATA_ALIGN_RIGHT
AnnaBridge 163:e59c8e839560 8903 * @arg @ref LL_ADC_DATA_ALIGN_LEFT
AnnaBridge 163:e59c8e839560 8904 */
AnnaBridge 163:e59c8e839560 8905 __STATIC_INLINE uint32_t LL_ADC_GetDataAlignment(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 8906 {
AnnaBridge 163:e59c8e839560 8907 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_ALIGN));
AnnaBridge 163:e59c8e839560 8908 }
AnnaBridge 163:e59c8e839560 8909
AnnaBridge 163:e59c8e839560 8910 /**
AnnaBridge 163:e59c8e839560 8911 * @brief Set ADC sequencers scan mode, for all ADC groups
AnnaBridge 163:e59c8e839560 8912 * (group regular, group injected).
AnnaBridge 163:e59c8e839560 8913 * @note According to sequencers scan mode :
AnnaBridge 163:e59c8e839560 8914 * - If disabled: ADC conversion is performed in unitary conversion
AnnaBridge 163:e59c8e839560 8915 * mode (one channel converted, that defined in rank 1).
AnnaBridge 163:e59c8e839560 8916 * Configuration of sequencers of all ADC groups
AnnaBridge 163:e59c8e839560 8917 * (sequencer scan length, ...) is discarded: equivalent to
AnnaBridge 163:e59c8e839560 8918 * scan length of 1 rank.
AnnaBridge 163:e59c8e839560 8919 * - If enabled: ADC conversions are performed in sequence conversions
AnnaBridge 163:e59c8e839560 8920 * mode, according to configuration of sequencers of
AnnaBridge 163:e59c8e839560 8921 * each ADC group (sequencer scan length, ...).
AnnaBridge 163:e59c8e839560 8922 * Refer to function @ref LL_ADC_REG_SetSequencerLength()
AnnaBridge 163:e59c8e839560 8923 * and to function @ref LL_ADC_INJ_SetSequencerLength().
AnnaBridge 163:e59c8e839560 8924 * @rmtoll CR1 SCAN LL_ADC_SetSequencersScanMode
AnnaBridge 163:e59c8e839560 8925 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 8926 * @param ScanMode This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8927 * @arg @ref LL_ADC_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 8928 * @arg @ref LL_ADC_SEQ_SCAN_ENABLE
AnnaBridge 163:e59c8e839560 8929 * @retval None
AnnaBridge 163:e59c8e839560 8930 */
AnnaBridge 163:e59c8e839560 8931 __STATIC_INLINE void LL_ADC_SetSequencersScanMode(ADC_TypeDef *ADCx, uint32_t ScanMode)
AnnaBridge 163:e59c8e839560 8932 {
AnnaBridge 163:e59c8e839560 8933 MODIFY_REG(ADCx->CR1, ADC_CR1_SCAN, ScanMode);
AnnaBridge 163:e59c8e839560 8934 }
AnnaBridge 163:e59c8e839560 8935
AnnaBridge 163:e59c8e839560 8936 /**
AnnaBridge 163:e59c8e839560 8937 * @brief Get ADC sequencers scan mode, for all ADC groups
AnnaBridge 163:e59c8e839560 8938 * (group regular, group injected).
AnnaBridge 163:e59c8e839560 8939 * @note According to sequencers scan mode :
AnnaBridge 163:e59c8e839560 8940 * - If disabled: ADC conversion is performed in unitary conversion
AnnaBridge 163:e59c8e839560 8941 * mode (one channel converted, that defined in rank 1).
AnnaBridge 163:e59c8e839560 8942 * Configuration of sequencers of all ADC groups
AnnaBridge 163:e59c8e839560 8943 * (sequencer scan length, ...) is discarded: equivalent to
AnnaBridge 163:e59c8e839560 8944 * scan length of 1 rank.
AnnaBridge 163:e59c8e839560 8945 * - If enabled: ADC conversions are performed in sequence conversions
AnnaBridge 163:e59c8e839560 8946 * mode, according to configuration of sequencers of
AnnaBridge 163:e59c8e839560 8947 * each ADC group (sequencer scan length, ...).
AnnaBridge 163:e59c8e839560 8948 * Refer to function @ref LL_ADC_REG_SetSequencerLength()
AnnaBridge 163:e59c8e839560 8949 * and to function @ref LL_ADC_INJ_SetSequencerLength().
AnnaBridge 163:e59c8e839560 8950 * @rmtoll CR1 SCAN LL_ADC_GetSequencersScanMode
AnnaBridge 163:e59c8e839560 8951 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 8952 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 8953 * @arg @ref LL_ADC_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 8954 * @arg @ref LL_ADC_SEQ_SCAN_ENABLE
AnnaBridge 163:e59c8e839560 8955 */
AnnaBridge 163:e59c8e839560 8956 __STATIC_INLINE uint32_t LL_ADC_GetSequencersScanMode(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 8957 {
AnnaBridge 163:e59c8e839560 8958 return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_SCAN));
AnnaBridge 163:e59c8e839560 8959 }
AnnaBridge 163:e59c8e839560 8960
AnnaBridge 163:e59c8e839560 8961 /**
AnnaBridge 163:e59c8e839560 8962 * @}
AnnaBridge 163:e59c8e839560 8963 */
AnnaBridge 163:e59c8e839560 8964
AnnaBridge 163:e59c8e839560 8965 /** @defgroup ADC_LL_EF_Configuration_ADC_Group_Regular Configuration of ADC hierarchical scope: group regular
AnnaBridge 163:e59c8e839560 8966 * @{
AnnaBridge 163:e59c8e839560 8967 */
AnnaBridge 163:e59c8e839560 8968
AnnaBridge 163:e59c8e839560 8969 /**
AnnaBridge 163:e59c8e839560 8970 * @brief Set ADC group regular conversion trigger source:
AnnaBridge 163:e59c8e839560 8971 * internal (SW start) or external from timer or external interrupt.
AnnaBridge 163:e59c8e839560 8972 * @note On this STM32 serie, external trigger is set with trigger polarity:
AnnaBridge 163:e59c8e839560 8973 * rising edge (only trigger polarity available on this STM32 serie).
AnnaBridge 163:e59c8e839560 8974 * @note Availability of parameters of trigger sources from timer
AnnaBridge 163:e59c8e839560 8975 * depends on timers availability on the selected device.
AnnaBridge 163:e59c8e839560 8976 * @rmtoll CR2 EXTSEL LL_ADC_REG_SetTriggerSource
AnnaBridge 163:e59c8e839560 8977 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 8978 * @param TriggerSource This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 8979 * @arg @ref LL_ADC_REG_TRIG_SOFTWARE
AnnaBridge 163:e59c8e839560 8980 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2
AnnaBridge 163:e59c8e839560 8981 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO
AnnaBridge 163:e59c8e839560 8982 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH2
AnnaBridge 163:e59c8e839560 8983 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM19_TRGO
AnnaBridge 163:e59c8e839560 8984 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM19_CH3
AnnaBridge 163:e59c8e839560 8985 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM19_CH4
AnnaBridge 163:e59c8e839560 8986 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11
AnnaBridge 163:e59c8e839560 8987 * @retval None
AnnaBridge 163:e59c8e839560 8988 */
AnnaBridge 163:e59c8e839560 8989 __STATIC_INLINE void LL_ADC_REG_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource)
AnnaBridge 163:e59c8e839560 8990 {
AnnaBridge 163:e59c8e839560 8991 /* Note: On this STM32 serie, ADC group regular external trigger edge */
AnnaBridge 163:e59c8e839560 8992 /* is used to perform a ADC conversion start. */
AnnaBridge 163:e59c8e839560 8993 /* This function does not set external trigger edge. */
AnnaBridge 163:e59c8e839560 8994 /* This feature is set using function */
AnnaBridge 163:e59c8e839560 8995 /* @ref LL_ADC_REG_StartConversionExtTrig(). */
AnnaBridge 163:e59c8e839560 8996 MODIFY_REG(ADCx->CR2, ADC_CR2_EXTSEL, (TriggerSource & ADC_CR2_EXTSEL));
AnnaBridge 163:e59c8e839560 8997 }
AnnaBridge 163:e59c8e839560 8998
AnnaBridge 163:e59c8e839560 8999 /**
AnnaBridge 163:e59c8e839560 9000 * @brief Get ADC group regular conversion trigger source:
AnnaBridge 163:e59c8e839560 9001 * internal (SW start) or external from timer or external interrupt.
AnnaBridge 163:e59c8e839560 9002 * @note To determine whether group regular trigger source is
AnnaBridge 163:e59c8e839560 9003 * internal (SW start) or external, without detail
AnnaBridge 163:e59c8e839560 9004 * of which peripheral is selected as external trigger,
AnnaBridge 163:e59c8e839560 9005 * (equivalent to
AnnaBridge 163:e59c8e839560 9006 * "if(LL_ADC_REG_GetTriggerSource(ADC1) == LL_ADC_REG_TRIG_SOFTWARE)")
AnnaBridge 163:e59c8e839560 9007 * use function @ref LL_ADC_REG_IsTriggerSourceSWStart.
AnnaBridge 163:e59c8e839560 9008 * @note Availability of parameters of trigger sources from timer
AnnaBridge 163:e59c8e839560 9009 * depends on timers availability on the selected device.
AnnaBridge 163:e59c8e839560 9010 * @rmtoll CR2 EXTSEL LL_ADC_REG_GetTriggerSource
AnnaBridge 163:e59c8e839560 9011 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9012 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9013 * @arg @ref LL_ADC_REG_TRIG_SOFTWARE
AnnaBridge 163:e59c8e839560 9014 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2
AnnaBridge 163:e59c8e839560 9015 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO
AnnaBridge 163:e59c8e839560 9016 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH2
AnnaBridge 163:e59c8e839560 9017 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM19_TRGO
AnnaBridge 163:e59c8e839560 9018 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM19_CH3
AnnaBridge 163:e59c8e839560 9019 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM19_CH4
AnnaBridge 163:e59c8e839560 9020 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11
AnnaBridge 163:e59c8e839560 9021 */
AnnaBridge 163:e59c8e839560 9022 __STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerSource(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9023 {
AnnaBridge 163:e59c8e839560 9024 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_EXTSEL));
AnnaBridge 163:e59c8e839560 9025 }
AnnaBridge 163:e59c8e839560 9026
AnnaBridge 163:e59c8e839560 9027 /**
AnnaBridge 163:e59c8e839560 9028 * @brief Get ADC group regular conversion trigger source internal (SW start)
AnnaBridge 163:e59c8e839560 9029 or external.
AnnaBridge 163:e59c8e839560 9030 * @note In case of group regular trigger source set to external trigger,
AnnaBridge 163:e59c8e839560 9031 * to determine which peripheral is selected as external trigger,
AnnaBridge 163:e59c8e839560 9032 * use function @ref LL_ADC_REG_GetTriggerSource().
AnnaBridge 163:e59c8e839560 9033 * @rmtoll CR2 EXTSEL LL_ADC_REG_IsTriggerSourceSWStart
AnnaBridge 163:e59c8e839560 9034 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9035 * @retval Value "0" trigger source external trigger
AnnaBridge 163:e59c8e839560 9036 * Value "1" trigger source SW start.
AnnaBridge 163:e59c8e839560 9037 */
AnnaBridge 163:e59c8e839560 9038 __STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9039 {
AnnaBridge 163:e59c8e839560 9040 return (READ_BIT(ADCx->CR2, ADC_CR2_EXTSEL) == (LL_ADC_REG_TRIG_SOFTWARE));
AnnaBridge 163:e59c8e839560 9041 }
AnnaBridge 163:e59c8e839560 9042
AnnaBridge 163:e59c8e839560 9043
AnnaBridge 163:e59c8e839560 9044 /**
AnnaBridge 163:e59c8e839560 9045 * @brief Set ADC group regular sequencer length and scan direction.
AnnaBridge 163:e59c8e839560 9046 * @note Description of ADC group regular sequencer features:
AnnaBridge 163:e59c8e839560 9047 * - For devices with sequencer fully configurable
AnnaBridge 163:e59c8e839560 9048 * (function "LL_ADC_REG_SetSequencerRanks()" available):
AnnaBridge 163:e59c8e839560 9049 * sequencer length and each rank affectation to a channel
AnnaBridge 163:e59c8e839560 9050 * are configurable.
AnnaBridge 163:e59c8e839560 9051 * This function performs configuration of:
AnnaBridge 163:e59c8e839560 9052 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 163:e59c8e839560 9053 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 9054 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 163:e59c8e839560 9055 * Sequencer ranks are selected using
AnnaBridge 163:e59c8e839560 9056 * function "LL_ADC_REG_SetSequencerRanks()".
AnnaBridge 163:e59c8e839560 9057 * - For devices with sequencer not fully configurable
AnnaBridge 163:e59c8e839560 9058 * (function "LL_ADC_REG_SetSequencerChannels()" available):
AnnaBridge 163:e59c8e839560 9059 * sequencer length and each rank affectation to a channel
AnnaBridge 163:e59c8e839560 9060 * are defined by channel number.
AnnaBridge 163:e59c8e839560 9061 * This function performs configuration of:
AnnaBridge 163:e59c8e839560 9062 * - Sequence length: Number of ranks in the scan sequence is
AnnaBridge 163:e59c8e839560 9063 * defined by number of channels set in the sequence,
AnnaBridge 163:e59c8e839560 9064 * rank of each channel is fixed by channel HW number.
AnnaBridge 163:e59c8e839560 9065 * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...).
AnnaBridge 163:e59c8e839560 9066 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 9067 * scan direction is forward (from lowest channel number to
AnnaBridge 163:e59c8e839560 9068 * highest channel number).
AnnaBridge 163:e59c8e839560 9069 * Sequencer ranks are selected using
AnnaBridge 163:e59c8e839560 9070 * function "LL_ADC_REG_SetSequencerChannels()".
AnnaBridge 163:e59c8e839560 9071 * @note On this STM32 serie, group regular sequencer configuration
AnnaBridge 163:e59c8e839560 9072 * is conditioned to ADC instance sequencer mode.
AnnaBridge 163:e59c8e839560 9073 * If ADC instance sequencer mode is disabled, sequencers of
AnnaBridge 163:e59c8e839560 9074 * all groups (group regular, group injected) can be configured
AnnaBridge 163:e59c8e839560 9075 * but their execution is disabled (limited to rank 1).
AnnaBridge 163:e59c8e839560 9076 * Refer to function @ref LL_ADC_SetSequencersScanMode().
AnnaBridge 163:e59c8e839560 9077 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 163:e59c8e839560 9078 * ADC conversion on only 1 channel.
AnnaBridge 163:e59c8e839560 9079 * @rmtoll SQR1 L LL_ADC_REG_SetSequencerLength
AnnaBridge 163:e59c8e839560 9080 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9081 * @param SequencerNbRanks This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9082 * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 9083 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 163:e59c8e839560 9084 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 163:e59c8e839560 9085 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 163:e59c8e839560 9086 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS
AnnaBridge 163:e59c8e839560 9087 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS
AnnaBridge 163:e59c8e839560 9088 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS
AnnaBridge 163:e59c8e839560 9089 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS
AnnaBridge 163:e59c8e839560 9090 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS
AnnaBridge 163:e59c8e839560 9091 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS
AnnaBridge 163:e59c8e839560 9092 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS
AnnaBridge 163:e59c8e839560 9093 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS
AnnaBridge 163:e59c8e839560 9094 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS
AnnaBridge 163:e59c8e839560 9095 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS
AnnaBridge 163:e59c8e839560 9096 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS
AnnaBridge 163:e59c8e839560 9097 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS
AnnaBridge 163:e59c8e839560 9098 * @retval None
AnnaBridge 163:e59c8e839560 9099 */
AnnaBridge 163:e59c8e839560 9100 __STATIC_INLINE void LL_ADC_REG_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks)
AnnaBridge 163:e59c8e839560 9101 {
AnnaBridge 163:e59c8e839560 9102 MODIFY_REG(ADCx->SQR1, ADC_SQR1_L, SequencerNbRanks);
AnnaBridge 163:e59c8e839560 9103 }
AnnaBridge 163:e59c8e839560 9104
AnnaBridge 163:e59c8e839560 9105 /**
AnnaBridge 163:e59c8e839560 9106 * @brief Get ADC group regular sequencer length and scan direction.
AnnaBridge 163:e59c8e839560 9107 * @note Description of ADC group regular sequencer features:
AnnaBridge 163:e59c8e839560 9108 * - For devices with sequencer fully configurable
AnnaBridge 163:e59c8e839560 9109 * (function "LL_ADC_REG_SetSequencerRanks()" available):
AnnaBridge 163:e59c8e839560 9110 * sequencer length and each rank affectation to a channel
AnnaBridge 163:e59c8e839560 9111 * are configurable.
AnnaBridge 163:e59c8e839560 9112 * This function retrieves:
AnnaBridge 163:e59c8e839560 9113 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 163:e59c8e839560 9114 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 9115 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 163:e59c8e839560 9116 * Sequencer ranks are selected using
AnnaBridge 163:e59c8e839560 9117 * function "LL_ADC_REG_SetSequencerRanks()".
AnnaBridge 163:e59c8e839560 9118 * - For devices with sequencer not fully configurable
AnnaBridge 163:e59c8e839560 9119 * (function "LL_ADC_REG_SetSequencerChannels()" available):
AnnaBridge 163:e59c8e839560 9120 * sequencer length and each rank affectation to a channel
AnnaBridge 163:e59c8e839560 9121 * are defined by channel number.
AnnaBridge 163:e59c8e839560 9122 * This function retrieves:
AnnaBridge 163:e59c8e839560 9123 * - Sequence length: Number of ranks in the scan sequence is
AnnaBridge 163:e59c8e839560 9124 * defined by number of channels set in the sequence,
AnnaBridge 163:e59c8e839560 9125 * rank of each channel is fixed by channel HW number.
AnnaBridge 163:e59c8e839560 9126 * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...).
AnnaBridge 163:e59c8e839560 9127 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 9128 * scan direction is forward (from lowest channel number to
AnnaBridge 163:e59c8e839560 9129 * highest channel number).
AnnaBridge 163:e59c8e839560 9130 * Sequencer ranks are selected using
AnnaBridge 163:e59c8e839560 9131 * function "LL_ADC_REG_SetSequencerChannels()".
AnnaBridge 163:e59c8e839560 9132 * @note On this STM32 serie, group regular sequencer configuration
AnnaBridge 163:e59c8e839560 9133 * is conditioned to ADC instance sequencer mode.
AnnaBridge 163:e59c8e839560 9134 * If ADC instance sequencer mode is disabled, sequencers of
AnnaBridge 163:e59c8e839560 9135 * all groups (group regular, group injected) can be configured
AnnaBridge 163:e59c8e839560 9136 * but their execution is disabled (limited to rank 1).
AnnaBridge 163:e59c8e839560 9137 * Refer to function @ref LL_ADC_SetSequencersScanMode().
AnnaBridge 163:e59c8e839560 9138 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 163:e59c8e839560 9139 * ADC conversion on only 1 channel.
AnnaBridge 163:e59c8e839560 9140 * @rmtoll SQR1 L LL_ADC_REG_SetSequencerLength
AnnaBridge 163:e59c8e839560 9141 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9142 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9143 * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 9144 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 163:e59c8e839560 9145 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 163:e59c8e839560 9146 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 163:e59c8e839560 9147 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS
AnnaBridge 163:e59c8e839560 9148 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS
AnnaBridge 163:e59c8e839560 9149 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS
AnnaBridge 163:e59c8e839560 9150 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS
AnnaBridge 163:e59c8e839560 9151 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS
AnnaBridge 163:e59c8e839560 9152 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS
AnnaBridge 163:e59c8e839560 9153 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS
AnnaBridge 163:e59c8e839560 9154 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS
AnnaBridge 163:e59c8e839560 9155 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS
AnnaBridge 163:e59c8e839560 9156 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS
AnnaBridge 163:e59c8e839560 9157 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS
AnnaBridge 163:e59c8e839560 9158 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS
AnnaBridge 163:e59c8e839560 9159 */
AnnaBridge 163:e59c8e839560 9160 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerLength(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9161 {
AnnaBridge 163:e59c8e839560 9162 return (uint32_t)(READ_BIT(ADCx->SQR1, ADC_SQR1_L));
AnnaBridge 163:e59c8e839560 9163 }
AnnaBridge 163:e59c8e839560 9164
AnnaBridge 163:e59c8e839560 9165 /**
AnnaBridge 163:e59c8e839560 9166 * @brief Set ADC group regular sequencer discontinuous mode:
AnnaBridge 163:e59c8e839560 9167 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 163:e59c8e839560 9168 * number of ranks.
AnnaBridge 163:e59c8e839560 9169 * @note It is not possible to enable both ADC group regular
AnnaBridge 163:e59c8e839560 9170 * continuous mode and sequencer discontinuous mode.
AnnaBridge 163:e59c8e839560 9171 * @note It is not possible to enable both ADC auto-injected mode
AnnaBridge 163:e59c8e839560 9172 * and ADC group regular sequencer discontinuous mode.
AnnaBridge 163:e59c8e839560 9173 * @rmtoll CR1 DISCEN LL_ADC_REG_SetSequencerDiscont\n
AnnaBridge 163:e59c8e839560 9174 * CR1 DISCNUM LL_ADC_REG_SetSequencerDiscont
AnnaBridge 163:e59c8e839560 9175 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9176 * @param SeqDiscont This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9177 * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE
AnnaBridge 163:e59c8e839560 9178 * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK
AnnaBridge 163:e59c8e839560 9179 * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS
AnnaBridge 163:e59c8e839560 9180 * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS
AnnaBridge 163:e59c8e839560 9181 * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS
AnnaBridge 163:e59c8e839560 9182 * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS
AnnaBridge 163:e59c8e839560 9183 * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS
AnnaBridge 163:e59c8e839560 9184 * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS
AnnaBridge 163:e59c8e839560 9185 * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS
AnnaBridge 163:e59c8e839560 9186 * @retval None
AnnaBridge 163:e59c8e839560 9187 */
AnnaBridge 163:e59c8e839560 9188 __STATIC_INLINE void LL_ADC_REG_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont)
AnnaBridge 163:e59c8e839560 9189 {
AnnaBridge 163:e59c8e839560 9190 MODIFY_REG(ADCx->CR1, ADC_CR1_DISCEN | ADC_CR1_DISCNUM, SeqDiscont);
AnnaBridge 163:e59c8e839560 9191 }
AnnaBridge 163:e59c8e839560 9192
AnnaBridge 163:e59c8e839560 9193 /**
AnnaBridge 163:e59c8e839560 9194 * @brief Get ADC group regular sequencer discontinuous mode:
AnnaBridge 163:e59c8e839560 9195 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 163:e59c8e839560 9196 * number of ranks.
AnnaBridge 163:e59c8e839560 9197 * @rmtoll CR1 DISCEN LL_ADC_REG_GetSequencerDiscont\n
AnnaBridge 163:e59c8e839560 9198 * CR1 DISCNUM LL_ADC_REG_GetSequencerDiscont
AnnaBridge 163:e59c8e839560 9199 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9200 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9201 * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE
AnnaBridge 163:e59c8e839560 9202 * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK
AnnaBridge 163:e59c8e839560 9203 * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS
AnnaBridge 163:e59c8e839560 9204 * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS
AnnaBridge 163:e59c8e839560 9205 * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS
AnnaBridge 163:e59c8e839560 9206 * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS
AnnaBridge 163:e59c8e839560 9207 * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS
AnnaBridge 163:e59c8e839560 9208 * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS
AnnaBridge 163:e59c8e839560 9209 * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS
AnnaBridge 163:e59c8e839560 9210 */
AnnaBridge 163:e59c8e839560 9211 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerDiscont(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9212 {
AnnaBridge 163:e59c8e839560 9213 return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_DISCEN | ADC_CR1_DISCNUM));
AnnaBridge 163:e59c8e839560 9214 }
AnnaBridge 163:e59c8e839560 9215
AnnaBridge 163:e59c8e839560 9216 /**
AnnaBridge 163:e59c8e839560 9217 * @brief Set ADC group regular sequence: channel on the selected
AnnaBridge 163:e59c8e839560 9218 * scan sequence rank.
AnnaBridge 163:e59c8e839560 9219 * @note This function performs configuration of:
AnnaBridge 163:e59c8e839560 9220 * - Channels ordering into each rank of scan sequence:
AnnaBridge 163:e59c8e839560 9221 * whatever channel can be placed into whatever rank.
AnnaBridge 163:e59c8e839560 9222 * @note On this STM32 serie, ADC group regular sequencer is
AnnaBridge 163:e59c8e839560 9223 * fully configurable: sequencer length and each rank
AnnaBridge 163:e59c8e839560 9224 * affectation to a channel are configurable.
AnnaBridge 163:e59c8e839560 9225 * Refer to description of function @ref LL_ADC_REG_SetSequencerLength().
AnnaBridge 163:e59c8e839560 9226 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 163:e59c8e839560 9227 * Refer to device datasheet for channels availability.
AnnaBridge 163:e59c8e839560 9228 * @note On this STM32 serie, to measure internal channels (VrefInt,
AnnaBridge 163:e59c8e839560 9229 * TempSensor, ...), measurement paths to internal channels must be
AnnaBridge 163:e59c8e839560 9230 * enabled separately.
AnnaBridge 163:e59c8e839560 9231 * This can be done using function @ref LL_ADC_SetCommonPathInternalCh().
AnnaBridge 163:e59c8e839560 9232 * @rmtoll SQR3 SQ1 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9233 * SQR3 SQ2 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9234 * SQR3 SQ3 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9235 * SQR3 SQ4 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9236 * SQR3 SQ5 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9237 * SQR3 SQ6 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9238 * SQR2 SQ7 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9239 * SQR2 SQ8 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9240 * SQR2 SQ9 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9241 * SQR2 SQ10 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9242 * SQR2 SQ11 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9243 * SQR2 SQ12 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9244 * SQR1 SQ13 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9245 * SQR1 SQ14 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9246 * SQR1 SQ15 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9247 * SQR1 SQ16 LL_ADC_REG_SetSequencerRanks
AnnaBridge 163:e59c8e839560 9248 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9249 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9250 * @arg @ref LL_ADC_REG_RANK_1
AnnaBridge 163:e59c8e839560 9251 * @arg @ref LL_ADC_REG_RANK_2
AnnaBridge 163:e59c8e839560 9252 * @arg @ref LL_ADC_REG_RANK_3
AnnaBridge 163:e59c8e839560 9253 * @arg @ref LL_ADC_REG_RANK_4
AnnaBridge 163:e59c8e839560 9254 * @arg @ref LL_ADC_REG_RANK_5
AnnaBridge 163:e59c8e839560 9255 * @arg @ref LL_ADC_REG_RANK_6
AnnaBridge 163:e59c8e839560 9256 * @arg @ref LL_ADC_REG_RANK_7
AnnaBridge 163:e59c8e839560 9257 * @arg @ref LL_ADC_REG_RANK_8
AnnaBridge 163:e59c8e839560 9258 * @arg @ref LL_ADC_REG_RANK_9
AnnaBridge 163:e59c8e839560 9259 * @arg @ref LL_ADC_REG_RANK_10
AnnaBridge 163:e59c8e839560 9260 * @arg @ref LL_ADC_REG_RANK_11
AnnaBridge 163:e59c8e839560 9261 * @arg @ref LL_ADC_REG_RANK_12
AnnaBridge 163:e59c8e839560 9262 * @arg @ref LL_ADC_REG_RANK_13
AnnaBridge 163:e59c8e839560 9263 * @arg @ref LL_ADC_REG_RANK_14
AnnaBridge 163:e59c8e839560 9264 * @arg @ref LL_ADC_REG_RANK_15
AnnaBridge 163:e59c8e839560 9265 * @arg @ref LL_ADC_REG_RANK_16
AnnaBridge 163:e59c8e839560 9266 * @param Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9267 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 9268 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 9269 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 9270 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 9271 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 9272 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 9273 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 9274 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 9275 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 9276 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 9277 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 9278 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 9279 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 9280 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 9281 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 9282 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 9283 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 9284 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 9285 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 9286 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 9287 *
AnnaBridge 163:e59c8e839560 9288 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 9289 * @retval None
AnnaBridge 163:e59c8e839560 9290 */
AnnaBridge 163:e59c8e839560 9291 __STATIC_INLINE void LL_ADC_REG_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
AnnaBridge 163:e59c8e839560 9292 {
AnnaBridge 163:e59c8e839560 9293 /* Set bits with content of parameter "Channel" with bits position */
AnnaBridge 163:e59c8e839560 9294 /* in register and register position depending on parameter "Rank". */
AnnaBridge 163:e59c8e839560 9295 /* Parameters "Rank" and "Channel" are used with masks because containing */
AnnaBridge 163:e59c8e839560 9296 /* other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 9297 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 9298
AnnaBridge 163:e59c8e839560 9299 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 9300 ADC_CHANNEL_ID_NUMBER_MASK << (Rank & ADC_REG_RANK_ID_SQRX_MASK),
AnnaBridge 163:e59c8e839560 9301 (Channel & ADC_CHANNEL_ID_NUMBER_MASK) << (Rank & ADC_REG_RANK_ID_SQRX_MASK));
AnnaBridge 163:e59c8e839560 9302 }
AnnaBridge 163:e59c8e839560 9303
AnnaBridge 163:e59c8e839560 9304 /**
AnnaBridge 163:e59c8e839560 9305 * @brief Get ADC group regular sequence: channel on the selected
AnnaBridge 163:e59c8e839560 9306 * scan sequence rank.
AnnaBridge 163:e59c8e839560 9307 * @note On this STM32 serie, ADC group regular sequencer is
AnnaBridge 163:e59c8e839560 9308 * fully configurable: sequencer length and each rank
AnnaBridge 163:e59c8e839560 9309 * affectation to a channel are configurable.
AnnaBridge 163:e59c8e839560 9310 * Refer to description of function @ref LL_ADC_REG_SetSequencerLength().
AnnaBridge 163:e59c8e839560 9311 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 163:e59c8e839560 9312 * Refer to device datasheet for channels availability.
AnnaBridge 163:e59c8e839560 9313 * @note Usage of the returned channel number:
AnnaBridge 163:e59c8e839560 9314 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 163:e59c8e839560 9315 * the returned channel number is only partly formatted on definition
AnnaBridge 163:e59c8e839560 9316 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 163:e59c8e839560 9317 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 163:e59c8e839560 9318 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 9319 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 163:e59c8e839560 9320 * as parameter for another function.
AnnaBridge 163:e59c8e839560 9321 * - To get the channel number in decimal format:
AnnaBridge 163:e59c8e839560 9322 * process the returned value with the helper macro
AnnaBridge 163:e59c8e839560 9323 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 9324 * @rmtoll SQR3 SQ1 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9325 * SQR3 SQ2 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9326 * SQR3 SQ3 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9327 * SQR3 SQ4 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9328 * SQR3 SQ5 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9329 * SQR3 SQ6 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9330 * SQR2 SQ7 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9331 * SQR2 SQ8 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9332 * SQR2 SQ9 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9333 * SQR2 SQ10 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9334 * SQR2 SQ11 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9335 * SQR2 SQ12 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9336 * SQR1 SQ13 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9337 * SQR1 SQ14 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9338 * SQR1 SQ15 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9339 * SQR1 SQ16 LL_ADC_REG_GetSequencerRanks
AnnaBridge 163:e59c8e839560 9340 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9341 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9342 * @arg @ref LL_ADC_REG_RANK_1
AnnaBridge 163:e59c8e839560 9343 * @arg @ref LL_ADC_REG_RANK_2
AnnaBridge 163:e59c8e839560 9344 * @arg @ref LL_ADC_REG_RANK_3
AnnaBridge 163:e59c8e839560 9345 * @arg @ref LL_ADC_REG_RANK_4
AnnaBridge 163:e59c8e839560 9346 * @arg @ref LL_ADC_REG_RANK_5
AnnaBridge 163:e59c8e839560 9347 * @arg @ref LL_ADC_REG_RANK_6
AnnaBridge 163:e59c8e839560 9348 * @arg @ref LL_ADC_REG_RANK_7
AnnaBridge 163:e59c8e839560 9349 * @arg @ref LL_ADC_REG_RANK_8
AnnaBridge 163:e59c8e839560 9350 * @arg @ref LL_ADC_REG_RANK_9
AnnaBridge 163:e59c8e839560 9351 * @arg @ref LL_ADC_REG_RANK_10
AnnaBridge 163:e59c8e839560 9352 * @arg @ref LL_ADC_REG_RANK_11
AnnaBridge 163:e59c8e839560 9353 * @arg @ref LL_ADC_REG_RANK_12
AnnaBridge 163:e59c8e839560 9354 * @arg @ref LL_ADC_REG_RANK_13
AnnaBridge 163:e59c8e839560 9355 * @arg @ref LL_ADC_REG_RANK_14
AnnaBridge 163:e59c8e839560 9356 * @arg @ref LL_ADC_REG_RANK_15
AnnaBridge 163:e59c8e839560 9357 * @arg @ref LL_ADC_REG_RANK_16
AnnaBridge 163:e59c8e839560 9358 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9359 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 9360 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 9361 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 9362 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 9363 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 9364 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 9365 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 9366 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 9367 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 9368 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 9369 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 9370 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 9371 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 9372 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 9373 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 9374 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 9375 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 9376 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 9377 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 9378 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 9379 *
AnnaBridge 163:e59c8e839560 9380 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 9381 * (1) For ADC channel read back from ADC register,
AnnaBridge 163:e59c8e839560 9382 * comparison with internal channel parameter to be done
AnnaBridge 163:e59c8e839560 9383 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 163:e59c8e839560 9384 */
AnnaBridge 163:e59c8e839560 9385 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 9386 {
AnnaBridge 163:e59c8e839560 9387 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 9388
AnnaBridge 163:e59c8e839560 9389 return (uint32_t) (READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 9390 ADC_CHANNEL_ID_NUMBER_MASK << (Rank & ADC_REG_RANK_ID_SQRX_MASK))
AnnaBridge 163:e59c8e839560 9391 >> (Rank & ADC_REG_RANK_ID_SQRX_MASK)
AnnaBridge 163:e59c8e839560 9392 );
AnnaBridge 163:e59c8e839560 9393 }
AnnaBridge 163:e59c8e839560 9394
AnnaBridge 163:e59c8e839560 9395 /**
AnnaBridge 163:e59c8e839560 9396 * @brief Set ADC continuous conversion mode on ADC group regular.
AnnaBridge 163:e59c8e839560 9397 * @note Description of ADC continuous conversion mode:
AnnaBridge 163:e59c8e839560 9398 * - single mode: one conversion per trigger
AnnaBridge 163:e59c8e839560 9399 * - continuous mode: after the first trigger, following
AnnaBridge 163:e59c8e839560 9400 * conversions launched successively automatically.
AnnaBridge 163:e59c8e839560 9401 * @note It is not possible to enable both ADC group regular
AnnaBridge 163:e59c8e839560 9402 * continuous mode and sequencer discontinuous mode.
AnnaBridge 163:e59c8e839560 9403 * @rmtoll CR2 CONT LL_ADC_REG_SetContinuousMode
AnnaBridge 163:e59c8e839560 9404 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9405 * @param Continuous This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9406 * @arg @ref LL_ADC_REG_CONV_SINGLE
AnnaBridge 163:e59c8e839560 9407 * @arg @ref LL_ADC_REG_CONV_CONTINUOUS
AnnaBridge 163:e59c8e839560 9408 * @retval None
AnnaBridge 163:e59c8e839560 9409 */
AnnaBridge 163:e59c8e839560 9410 __STATIC_INLINE void LL_ADC_REG_SetContinuousMode(ADC_TypeDef *ADCx, uint32_t Continuous)
AnnaBridge 163:e59c8e839560 9411 {
AnnaBridge 163:e59c8e839560 9412 MODIFY_REG(ADCx->CR2, ADC_CR2_CONT, Continuous);
AnnaBridge 163:e59c8e839560 9413 }
AnnaBridge 163:e59c8e839560 9414
AnnaBridge 163:e59c8e839560 9415 /**
AnnaBridge 163:e59c8e839560 9416 * @brief Get ADC continuous conversion mode on ADC group regular.
AnnaBridge 163:e59c8e839560 9417 * @note Description of ADC continuous conversion mode:
AnnaBridge 163:e59c8e839560 9418 * - single mode: one conversion per trigger
AnnaBridge 163:e59c8e839560 9419 * - continuous mode: after the first trigger, following
AnnaBridge 163:e59c8e839560 9420 * conversions launched successively automatically.
AnnaBridge 163:e59c8e839560 9421 * @rmtoll CR2 CONT LL_ADC_REG_GetContinuousMode
AnnaBridge 163:e59c8e839560 9422 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9423 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9424 * @arg @ref LL_ADC_REG_CONV_SINGLE
AnnaBridge 163:e59c8e839560 9425 * @arg @ref LL_ADC_REG_CONV_CONTINUOUS
AnnaBridge 163:e59c8e839560 9426 */
AnnaBridge 163:e59c8e839560 9427 __STATIC_INLINE uint32_t LL_ADC_REG_GetContinuousMode(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9428 {
AnnaBridge 163:e59c8e839560 9429 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_CONT));
AnnaBridge 163:e59c8e839560 9430 }
AnnaBridge 163:e59c8e839560 9431
AnnaBridge 163:e59c8e839560 9432 /**
AnnaBridge 163:e59c8e839560 9433 * @brief Set ADC group regular conversion data transfer: no transfer or
AnnaBridge 163:e59c8e839560 9434 * transfer by DMA, and DMA requests mode.
AnnaBridge 163:e59c8e839560 9435 * @note If transfer by DMA selected, specifies the DMA requests
AnnaBridge 163:e59c8e839560 9436 * mode:
AnnaBridge 163:e59c8e839560 9437 * - Limited mode (One shot mode): DMA transfer requests are stopped
AnnaBridge 163:e59c8e839560 9438 * when number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 9439 * ADC conversions) is reached.
AnnaBridge 163:e59c8e839560 9440 * This ADC mode is intended to be used with DMA mode non-circular.
AnnaBridge 163:e59c8e839560 9441 * - Unlimited mode: DMA transfer requests are unlimited,
AnnaBridge 163:e59c8e839560 9442 * whatever number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 9443 * ADC conversions).
AnnaBridge 163:e59c8e839560 9444 * This ADC mode is intended to be used with DMA mode circular.
AnnaBridge 163:e59c8e839560 9445 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
AnnaBridge 163:e59c8e839560 9446 * mode non-circular:
AnnaBridge 163:e59c8e839560 9447 * when DMA transfers size will be reached, DMA will stop transfers of
AnnaBridge 163:e59c8e839560 9448 * ADC conversions data ADC will raise an overrun error
AnnaBridge 163:e59c8e839560 9449 * (overrun flag and interruption if enabled).
AnnaBridge 163:e59c8e839560 9450 * @note To configure DMA source address (peripheral address),
AnnaBridge 163:e59c8e839560 9451 * use function @ref LL_ADC_DMA_GetRegAddr().
AnnaBridge 163:e59c8e839560 9452 * @rmtoll CR2 DMA LL_ADC_REG_SetDMATransfer
AnnaBridge 163:e59c8e839560 9453 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9454 * @param DMATransfer This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9455 * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE
AnnaBridge 163:e59c8e839560 9456 * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED
AnnaBridge 163:e59c8e839560 9457 * @retval None
AnnaBridge 163:e59c8e839560 9458 */
AnnaBridge 163:e59c8e839560 9459 __STATIC_INLINE void LL_ADC_REG_SetDMATransfer(ADC_TypeDef *ADCx, uint32_t DMATransfer)
AnnaBridge 163:e59c8e839560 9460 {
AnnaBridge 163:e59c8e839560 9461 MODIFY_REG(ADCx->CR2, ADC_CR2_DMA, DMATransfer);
AnnaBridge 163:e59c8e839560 9462 }
AnnaBridge 163:e59c8e839560 9463
AnnaBridge 163:e59c8e839560 9464 /**
AnnaBridge 163:e59c8e839560 9465 * @brief Get ADC group regular conversion data transfer: no transfer or
AnnaBridge 163:e59c8e839560 9466 * transfer by DMA, and DMA requests mode.
AnnaBridge 163:e59c8e839560 9467 * @note If transfer by DMA selected, specifies the DMA requests
AnnaBridge 163:e59c8e839560 9468 * mode:
AnnaBridge 163:e59c8e839560 9469 * - Limited mode (One shot mode): DMA transfer requests are stopped
AnnaBridge 163:e59c8e839560 9470 * when number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 9471 * ADC conversions) is reached.
AnnaBridge 163:e59c8e839560 9472 * This ADC mode is intended to be used with DMA mode non-circular.
AnnaBridge 163:e59c8e839560 9473 * - Unlimited mode: DMA transfer requests are unlimited,
AnnaBridge 163:e59c8e839560 9474 * whatever number of DMA data transfers (number of
AnnaBridge 163:e59c8e839560 9475 * ADC conversions).
AnnaBridge 163:e59c8e839560 9476 * This ADC mode is intended to be used with DMA mode circular.
AnnaBridge 163:e59c8e839560 9477 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
AnnaBridge 163:e59c8e839560 9478 * mode non-circular:
AnnaBridge 163:e59c8e839560 9479 * when DMA transfers size will be reached, DMA will stop transfers of
AnnaBridge 163:e59c8e839560 9480 * ADC conversions data ADC will raise an overrun error
AnnaBridge 163:e59c8e839560 9481 * (overrun flag and interruption if enabled).
AnnaBridge 163:e59c8e839560 9482 * @note To configure DMA source address (peripheral address),
AnnaBridge 163:e59c8e839560 9483 * use function @ref LL_ADC_DMA_GetRegAddr().
AnnaBridge 163:e59c8e839560 9484 * @rmtoll CR2 DMA LL_ADC_REG_GetDMATransfer
AnnaBridge 163:e59c8e839560 9485 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9486 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9487 * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE
AnnaBridge 163:e59c8e839560 9488 * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED
AnnaBridge 163:e59c8e839560 9489 */
AnnaBridge 163:e59c8e839560 9490 __STATIC_INLINE uint32_t LL_ADC_REG_GetDMATransfer(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9491 {
AnnaBridge 163:e59c8e839560 9492 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_DMA));
AnnaBridge 163:e59c8e839560 9493 }
AnnaBridge 163:e59c8e839560 9494
AnnaBridge 163:e59c8e839560 9495 /**
AnnaBridge 163:e59c8e839560 9496 * @}
AnnaBridge 163:e59c8e839560 9497 */
AnnaBridge 163:e59c8e839560 9498
AnnaBridge 163:e59c8e839560 9499 /** @defgroup ADC_LL_EF_Configuration_ADC_Group_Injected Configuration of ADC hierarchical scope: group injected
AnnaBridge 163:e59c8e839560 9500 * @{
AnnaBridge 163:e59c8e839560 9501 */
AnnaBridge 163:e59c8e839560 9502
AnnaBridge 163:e59c8e839560 9503 /**
AnnaBridge 163:e59c8e839560 9504 * @brief Set ADC group injected conversion trigger source:
AnnaBridge 163:e59c8e839560 9505 * internal (SW start) or external from timer or external interrupt.
AnnaBridge 163:e59c8e839560 9506 * @note On this STM32 serie, external trigger is set with trigger polarity:
AnnaBridge 163:e59c8e839560 9507 * rising edge (only trigger polarity available on this STM32 serie).
AnnaBridge 163:e59c8e839560 9508 * @note Availability of parameters of trigger sources from timer
AnnaBridge 163:e59c8e839560 9509 * depends on timers availability on the selected device.
AnnaBridge 163:e59c8e839560 9510 * @rmtoll CR2 JEXTSEL LL_ADC_INJ_SetTriggerSource
AnnaBridge 163:e59c8e839560 9511 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9512 * @param TriggerSource This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9513 * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE
AnnaBridge 163:e59c8e839560 9514 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO
AnnaBridge 163:e59c8e839560 9515 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1
AnnaBridge 163:e59c8e839560 9516 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4
AnnaBridge 163:e59c8e839560 9517 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO
AnnaBridge 163:e59c8e839560 9518 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM19_CH1
AnnaBridge 163:e59c8e839560 9519 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM19_CH2
AnnaBridge 163:e59c8e839560 9520 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15
AnnaBridge 163:e59c8e839560 9521 * @retval None
AnnaBridge 163:e59c8e839560 9522 */
AnnaBridge 163:e59c8e839560 9523 __STATIC_INLINE void LL_ADC_INJ_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource)
AnnaBridge 163:e59c8e839560 9524 {
AnnaBridge 163:e59c8e839560 9525 /* Note: On this STM32 serie, ADC group injected external trigger edge */
AnnaBridge 163:e59c8e839560 9526 /* is used to perform a ADC conversion start. */
AnnaBridge 163:e59c8e839560 9527 /* This function does not set external trigger edge. */
AnnaBridge 163:e59c8e839560 9528 /* This feature is set using function */
AnnaBridge 163:e59c8e839560 9529 /* @ref LL_ADC_INJ_StartConversionExtTrig(). */
AnnaBridge 163:e59c8e839560 9530 MODIFY_REG(ADCx->CR2, ADC_CR2_JEXTSEL, (TriggerSource & ADC_CR2_JEXTSEL));
AnnaBridge 163:e59c8e839560 9531 }
AnnaBridge 163:e59c8e839560 9532
AnnaBridge 163:e59c8e839560 9533 /**
AnnaBridge 163:e59c8e839560 9534 * @brief Get ADC group injected conversion trigger source:
AnnaBridge 163:e59c8e839560 9535 * internal (SW start) or external from timer or external interrupt.
AnnaBridge 163:e59c8e839560 9536 * @note To determine whether group injected trigger source is
AnnaBridge 163:e59c8e839560 9537 * internal (SW start) or external, without detail
AnnaBridge 163:e59c8e839560 9538 * of which peripheral is selected as external trigger,
AnnaBridge 163:e59c8e839560 9539 * (equivalent to
AnnaBridge 163:e59c8e839560 9540 * "if(LL_ADC_INJ_GetTriggerSource(ADC1) == LL_ADC_INJ_TRIG_SOFTWARE)")
AnnaBridge 163:e59c8e839560 9541 * use function @ref LL_ADC_INJ_IsTriggerSourceSWStart.
AnnaBridge 163:e59c8e839560 9542 * @note Availability of parameters of trigger sources from timer
AnnaBridge 163:e59c8e839560 9543 * depends on timers availability on the selected device.
AnnaBridge 163:e59c8e839560 9544 * @rmtoll CR2 JEXTSEL LL_ADC_INJ_GetTriggerSource
AnnaBridge 163:e59c8e839560 9545 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9546 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9547 * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE
AnnaBridge 163:e59c8e839560 9548 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO
AnnaBridge 163:e59c8e839560 9549 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1
AnnaBridge 163:e59c8e839560 9550 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4
AnnaBridge 163:e59c8e839560 9551 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO
AnnaBridge 163:e59c8e839560 9552 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM19_CH1
AnnaBridge 163:e59c8e839560 9553 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM19_CH2
AnnaBridge 163:e59c8e839560 9554 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15
AnnaBridge 163:e59c8e839560 9555 */
AnnaBridge 163:e59c8e839560 9556 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerSource(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9557 {
AnnaBridge 163:e59c8e839560 9558 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_JEXTSEL));
AnnaBridge 163:e59c8e839560 9559 }
AnnaBridge 163:e59c8e839560 9560
AnnaBridge 163:e59c8e839560 9561 /**
AnnaBridge 163:e59c8e839560 9562 * @brief Get ADC group injected conversion trigger source internal (SW start)
AnnaBridge 163:e59c8e839560 9563 or external
AnnaBridge 163:e59c8e839560 9564 * @note In case of group injected trigger source set to external trigger,
AnnaBridge 163:e59c8e839560 9565 * to determine which peripheral is selected as external trigger,
AnnaBridge 163:e59c8e839560 9566 * use function @ref LL_ADC_INJ_GetTriggerSource.
AnnaBridge 163:e59c8e839560 9567 * @rmtoll CR2 JEXTSEL LL_ADC_INJ_IsTriggerSourceSWStart
AnnaBridge 163:e59c8e839560 9568 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9569 * @retval Value "0" trigger source external trigger
AnnaBridge 163:e59c8e839560 9570 * Value "1" trigger source SW start.
AnnaBridge 163:e59c8e839560 9571 */
AnnaBridge 163:e59c8e839560 9572 __STATIC_INLINE uint32_t LL_ADC_INJ_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9573 {
AnnaBridge 163:e59c8e839560 9574 return (READ_BIT(ADCx->CR2, ADC_CR2_JEXTSEL) == LL_ADC_INJ_TRIG_SOFTWARE);
AnnaBridge 163:e59c8e839560 9575 }
AnnaBridge 163:e59c8e839560 9576
AnnaBridge 163:e59c8e839560 9577 /**
AnnaBridge 163:e59c8e839560 9578 * @brief Set ADC group injected sequencer length and scan direction.
AnnaBridge 163:e59c8e839560 9579 * @note This function performs configuration of:
AnnaBridge 163:e59c8e839560 9580 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 163:e59c8e839560 9581 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 9582 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 163:e59c8e839560 9583 * @note On this STM32 serie, group injected sequencer configuration
AnnaBridge 163:e59c8e839560 9584 * is conditioned to ADC instance sequencer mode.
AnnaBridge 163:e59c8e839560 9585 * If ADC instance sequencer mode is disabled, sequencers of
AnnaBridge 163:e59c8e839560 9586 * all groups (group regular, group injected) can be configured
AnnaBridge 163:e59c8e839560 9587 * but their execution is disabled (limited to rank 1).
AnnaBridge 163:e59c8e839560 9588 * Refer to function @ref LL_ADC_SetSequencersScanMode().
AnnaBridge 163:e59c8e839560 9589 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 163:e59c8e839560 9590 * ADC conversion on only 1 channel.
AnnaBridge 163:e59c8e839560 9591 * @rmtoll JSQR JL LL_ADC_INJ_SetSequencerLength
AnnaBridge 163:e59c8e839560 9592 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9593 * @param SequencerNbRanks This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9594 * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 9595 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 163:e59c8e839560 9596 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 163:e59c8e839560 9597 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 163:e59c8e839560 9598 * @retval None
AnnaBridge 163:e59c8e839560 9599 */
AnnaBridge 163:e59c8e839560 9600 __STATIC_INLINE void LL_ADC_INJ_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks)
AnnaBridge 163:e59c8e839560 9601 {
AnnaBridge 163:e59c8e839560 9602 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JL, SequencerNbRanks);
AnnaBridge 163:e59c8e839560 9603 }
AnnaBridge 163:e59c8e839560 9604
AnnaBridge 163:e59c8e839560 9605 /**
AnnaBridge 163:e59c8e839560 9606 * @brief Get ADC group injected sequencer length and scan direction.
AnnaBridge 163:e59c8e839560 9607 * @note This function retrieves:
AnnaBridge 163:e59c8e839560 9608 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 163:e59c8e839560 9609 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 163:e59c8e839560 9610 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 163:e59c8e839560 9611 * @note On this STM32 serie, group injected sequencer configuration
AnnaBridge 163:e59c8e839560 9612 * is conditioned to ADC instance sequencer mode.
AnnaBridge 163:e59c8e839560 9613 * If ADC instance sequencer mode is disabled, sequencers of
AnnaBridge 163:e59c8e839560 9614 * all groups (group regular, group injected) can be configured
AnnaBridge 163:e59c8e839560 9615 * but their execution is disabled (limited to rank 1).
AnnaBridge 163:e59c8e839560 9616 * Refer to function @ref LL_ADC_SetSequencersScanMode().
AnnaBridge 163:e59c8e839560 9617 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 163:e59c8e839560 9618 * ADC conversion on only 1 channel.
AnnaBridge 163:e59c8e839560 9619 * @rmtoll JSQR JL LL_ADC_INJ_GetSequencerLength
AnnaBridge 163:e59c8e839560 9620 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9621 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9622 * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE
AnnaBridge 163:e59c8e839560 9623 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 163:e59c8e839560 9624 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 163:e59c8e839560 9625 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 163:e59c8e839560 9626 */
AnnaBridge 163:e59c8e839560 9627 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerLength(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9628 {
AnnaBridge 163:e59c8e839560 9629 return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JL));
AnnaBridge 163:e59c8e839560 9630 }
AnnaBridge 163:e59c8e839560 9631
AnnaBridge 163:e59c8e839560 9632 /**
AnnaBridge 163:e59c8e839560 9633 * @brief Set ADC group injected sequencer discontinuous mode:
AnnaBridge 163:e59c8e839560 9634 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 163:e59c8e839560 9635 * number of ranks.
AnnaBridge 163:e59c8e839560 9636 * @note It is not possible to enable both ADC group injected
AnnaBridge 163:e59c8e839560 9637 * auto-injected mode and sequencer discontinuous mode.
AnnaBridge 163:e59c8e839560 9638 * @rmtoll CR1 DISCEN LL_ADC_INJ_SetSequencerDiscont
AnnaBridge 163:e59c8e839560 9639 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9640 * @param SeqDiscont This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9641 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE
AnnaBridge 163:e59c8e839560 9642 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK
AnnaBridge 163:e59c8e839560 9643 * @retval None
AnnaBridge 163:e59c8e839560 9644 */
AnnaBridge 163:e59c8e839560 9645 __STATIC_INLINE void LL_ADC_INJ_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont)
AnnaBridge 163:e59c8e839560 9646 {
AnnaBridge 163:e59c8e839560 9647 MODIFY_REG(ADCx->CR1, ADC_CR1_JDISCEN, SeqDiscont);
AnnaBridge 163:e59c8e839560 9648 }
AnnaBridge 163:e59c8e839560 9649
AnnaBridge 163:e59c8e839560 9650 /**
AnnaBridge 163:e59c8e839560 9651 * @brief Get ADC group injected sequencer discontinuous mode:
AnnaBridge 163:e59c8e839560 9652 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 163:e59c8e839560 9653 * number of ranks.
AnnaBridge 163:e59c8e839560 9654 * @rmtoll CR1 DISCEN LL_ADC_REG_GetSequencerDiscont
AnnaBridge 163:e59c8e839560 9655 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9656 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9657 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE
AnnaBridge 163:e59c8e839560 9658 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK
AnnaBridge 163:e59c8e839560 9659 */
AnnaBridge 163:e59c8e839560 9660 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerDiscont(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9661 {
AnnaBridge 163:e59c8e839560 9662 return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_JDISCEN));
AnnaBridge 163:e59c8e839560 9663 }
AnnaBridge 163:e59c8e839560 9664
AnnaBridge 163:e59c8e839560 9665 /**
AnnaBridge 163:e59c8e839560 9666 * @brief Set ADC group injected sequence: channel on the selected
AnnaBridge 163:e59c8e839560 9667 * sequence rank.
AnnaBridge 163:e59c8e839560 9668 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 163:e59c8e839560 9669 * Refer to device datasheet for channels availability.
AnnaBridge 163:e59c8e839560 9670 * @note On this STM32 serie, to measure internal channels (VrefInt,
AnnaBridge 163:e59c8e839560 9671 * TempSensor, ...), measurement paths to internal channels must be
AnnaBridge 163:e59c8e839560 9672 * enabled separately.
AnnaBridge 163:e59c8e839560 9673 * This can be done using function @ref LL_ADC_SetCommonPathInternalCh().
AnnaBridge 163:e59c8e839560 9674 * @rmtoll JSQR JSQ1 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9675 * JSQR JSQ2 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9676 * JSQR JSQ3 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9677 * JSQR JSQ4 LL_ADC_INJ_SetSequencerRanks
AnnaBridge 163:e59c8e839560 9678 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9679 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9680 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 9681 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 9682 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 9683 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 9684 * @param Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9685 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 9686 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 9687 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 9688 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 9689 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 9690 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 9691 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 9692 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 9693 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 9694 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 9695 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 9696 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 9697 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 9698 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 9699 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 9700 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 9701 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 9702 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 9703 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 9704 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 9705 *
AnnaBridge 163:e59c8e839560 9706 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 9707 * @retval None
AnnaBridge 163:e59c8e839560 9708 */
AnnaBridge 163:e59c8e839560 9709 __STATIC_INLINE void LL_ADC_INJ_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
AnnaBridge 163:e59c8e839560 9710 {
AnnaBridge 163:e59c8e839560 9711 /* Set bits with content of parameter "Channel" with bits position */
AnnaBridge 163:e59c8e839560 9712 /* in register depending on parameter "Rank". */
AnnaBridge 163:e59c8e839560 9713 /* Parameters "Rank" and "Channel" are used with masks because containing */
AnnaBridge 163:e59c8e839560 9714 /* other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 9715 MODIFY_REG(ADCx->JSQR,
AnnaBridge 163:e59c8e839560 9716 ADC_CHANNEL_ID_NUMBER_MASK << (Rank & ADC_INJ_RANK_ID_JSQR_MASK),
AnnaBridge 163:e59c8e839560 9717 (Channel & ADC_CHANNEL_ID_NUMBER_MASK) << (Rank & ADC_INJ_RANK_ID_JSQR_MASK));
AnnaBridge 163:e59c8e839560 9718 }
AnnaBridge 163:e59c8e839560 9719
AnnaBridge 163:e59c8e839560 9720 /**
AnnaBridge 163:e59c8e839560 9721 * @brief Get ADC group injected sequence: channel on the selected
AnnaBridge 163:e59c8e839560 9722 * sequence rank.
AnnaBridge 163:e59c8e839560 9723 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 163:e59c8e839560 9724 * Refer to device datasheet for channels availability.
AnnaBridge 163:e59c8e839560 9725 * @note Usage of the returned channel number:
AnnaBridge 163:e59c8e839560 9726 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 163:e59c8e839560 9727 * the returned channel number is only partly formatted on definition
AnnaBridge 163:e59c8e839560 9728 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 163:e59c8e839560 9729 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 163:e59c8e839560 9730 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 9731 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 163:e59c8e839560 9732 * as parameter for another function.
AnnaBridge 163:e59c8e839560 9733 * - To get the channel number in decimal format:
AnnaBridge 163:e59c8e839560 9734 * process the returned value with the helper macro
AnnaBridge 163:e59c8e839560 9735 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 9736 * @rmtoll JSQR JSQ1 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9737 * JSQR JSQ2 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9738 * JSQR JSQ3 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 163:e59c8e839560 9739 * JSQR JSQ4 LL_ADC_INJ_SetSequencerRanks
AnnaBridge 163:e59c8e839560 9740 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9741 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9742 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 9743 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 9744 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 9745 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 9746 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9747 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 9748 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 9749 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 9750 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 9751 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 9752 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 9753 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 9754 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 9755 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 9756 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 9757 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 9758 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 9759 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 9760 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 9761 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 9762 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 9763 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 9764 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 9765 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 9766 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 9767 *
AnnaBridge 163:e59c8e839560 9768 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.\n
AnnaBridge 163:e59c8e839560 9769 * (1) For ADC channel read back from ADC register,
AnnaBridge 163:e59c8e839560 9770 * comparison with internal channel parameter to be done
AnnaBridge 163:e59c8e839560 9771 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 163:e59c8e839560 9772 */
AnnaBridge 163:e59c8e839560 9773 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 9774 {
AnnaBridge 163:e59c8e839560 9775 return (uint32_t)(READ_BIT(ADCx->JSQR,
AnnaBridge 163:e59c8e839560 9776 ADC_CHANNEL_ID_NUMBER_MASK << (Rank & ADC_INJ_RANK_ID_JSQR_MASK))
AnnaBridge 163:e59c8e839560 9777 >> (Rank & ADC_INJ_RANK_ID_JSQR_MASK)
AnnaBridge 163:e59c8e839560 9778 );
AnnaBridge 163:e59c8e839560 9779 }
AnnaBridge 163:e59c8e839560 9780
AnnaBridge 163:e59c8e839560 9781 /**
AnnaBridge 163:e59c8e839560 9782 * @brief Set ADC group injected conversion trigger:
AnnaBridge 163:e59c8e839560 9783 * independent or from ADC group regular.
AnnaBridge 163:e59c8e839560 9784 * @note This mode can be used to extend number of data registers
AnnaBridge 163:e59c8e839560 9785 * updated after one ADC conversion trigger and with data
AnnaBridge 163:e59c8e839560 9786 * permanently kept (not erased by successive conversions of scan of
AnnaBridge 163:e59c8e839560 9787 * ADC sequencer ranks), up to 5 data registers:
AnnaBridge 163:e59c8e839560 9788 * 1 data register on ADC group regular, 4 data registers
AnnaBridge 163:e59c8e839560 9789 * on ADC group injected.
AnnaBridge 163:e59c8e839560 9790 * @note If ADC group injected injected trigger source is set to an
AnnaBridge 163:e59c8e839560 9791 * external trigger, this feature must be must be set to
AnnaBridge 163:e59c8e839560 9792 * independent trigger.
AnnaBridge 163:e59c8e839560 9793 * ADC group injected automatic trigger is compliant only with
AnnaBridge 163:e59c8e839560 9794 * group injected trigger source set to SW start, without any
AnnaBridge 163:e59c8e839560 9795 * further action on ADC group injected conversion start or stop:
AnnaBridge 163:e59c8e839560 9796 * in this case, ADC group injected is controlled only
AnnaBridge 163:e59c8e839560 9797 * from ADC group regular.
AnnaBridge 163:e59c8e839560 9798 * @note It is not possible to enable both ADC group injected
AnnaBridge 163:e59c8e839560 9799 * auto-injected mode and sequencer discontinuous mode.
AnnaBridge 163:e59c8e839560 9800 * @rmtoll CR1 JAUTO LL_ADC_INJ_SetTrigAuto
AnnaBridge 163:e59c8e839560 9801 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9802 * @param TrigAuto This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9803 * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT
AnnaBridge 163:e59c8e839560 9804 * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR
AnnaBridge 163:e59c8e839560 9805 * @retval None
AnnaBridge 163:e59c8e839560 9806 */
AnnaBridge 163:e59c8e839560 9807 __STATIC_INLINE void LL_ADC_INJ_SetTrigAuto(ADC_TypeDef *ADCx, uint32_t TrigAuto)
AnnaBridge 163:e59c8e839560 9808 {
AnnaBridge 163:e59c8e839560 9809 MODIFY_REG(ADCx->CR1, ADC_CR1_JAUTO, TrigAuto);
AnnaBridge 163:e59c8e839560 9810 }
AnnaBridge 163:e59c8e839560 9811
AnnaBridge 163:e59c8e839560 9812 /**
AnnaBridge 163:e59c8e839560 9813 * @brief Get ADC group injected conversion trigger:
AnnaBridge 163:e59c8e839560 9814 * independent or from ADC group regular.
AnnaBridge 163:e59c8e839560 9815 * @rmtoll CR1 JAUTO LL_ADC_INJ_GetTrigAuto
AnnaBridge 163:e59c8e839560 9816 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9817 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 9818 * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT
AnnaBridge 163:e59c8e839560 9819 * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR
AnnaBridge 163:e59c8e839560 9820 */
AnnaBridge 163:e59c8e839560 9821 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTrigAuto(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 9822 {
AnnaBridge 163:e59c8e839560 9823 return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_JAUTO));
AnnaBridge 163:e59c8e839560 9824 }
AnnaBridge 163:e59c8e839560 9825
AnnaBridge 163:e59c8e839560 9826 /**
AnnaBridge 163:e59c8e839560 9827 * @brief Set ADC group injected offset.
AnnaBridge 163:e59c8e839560 9828 * @note It sets:
AnnaBridge 163:e59c8e839560 9829 * - ADC group injected rank to which the offset programmed
AnnaBridge 163:e59c8e839560 9830 * will be applied
AnnaBridge 163:e59c8e839560 9831 * - Offset level (offset to be subtracted from the raw
AnnaBridge 163:e59c8e839560 9832 * converted data).
AnnaBridge 163:e59c8e839560 9833 * Caution: Offset format is dependent to ADC resolution:
AnnaBridge 163:e59c8e839560 9834 * offset has to be left-aligned on bit 11, the LSB (right bits)
AnnaBridge 163:e59c8e839560 9835 * are set to 0.
AnnaBridge 163:e59c8e839560 9836 * @note Offset cannot be enabled or disabled.
AnnaBridge 163:e59c8e839560 9837 * To emulate offset disabled, set an offset value equal to 0.
AnnaBridge 163:e59c8e839560 9838 * @rmtoll JOFR1 JOFFSET1 LL_ADC_INJ_SetOffset\n
AnnaBridge 163:e59c8e839560 9839 * JOFR2 JOFFSET2 LL_ADC_INJ_SetOffset\n
AnnaBridge 163:e59c8e839560 9840 * JOFR3 JOFFSET3 LL_ADC_INJ_SetOffset\n
AnnaBridge 163:e59c8e839560 9841 * JOFR4 JOFFSET4 LL_ADC_INJ_SetOffset
AnnaBridge 163:e59c8e839560 9842 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9843 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9844 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 9845 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 9846 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 9847 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 9848 * @param OffsetLevel Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 9849 * @retval None
AnnaBridge 163:e59c8e839560 9850 */
AnnaBridge 163:e59c8e839560 9851 __STATIC_INLINE void LL_ADC_INJ_SetOffset(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t OffsetLevel)
AnnaBridge 163:e59c8e839560 9852 {
AnnaBridge 163:e59c8e839560 9853 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JOFR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JOFRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 9854
AnnaBridge 163:e59c8e839560 9855 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 9856 ADC_JOFR1_JOFFSET1,
AnnaBridge 163:e59c8e839560 9857 OffsetLevel);
AnnaBridge 163:e59c8e839560 9858 }
AnnaBridge 163:e59c8e839560 9859
AnnaBridge 163:e59c8e839560 9860 /**
AnnaBridge 163:e59c8e839560 9861 * @brief Get ADC group injected offset.
AnnaBridge 163:e59c8e839560 9862 * @note It gives offset level (offset to be subtracted from the raw converted data).
AnnaBridge 163:e59c8e839560 9863 * Caution: Offset format is dependent to ADC resolution:
AnnaBridge 163:e59c8e839560 9864 * offset has to be left-aligned on bit 11, the LSB (right bits)
AnnaBridge 163:e59c8e839560 9865 * are set to 0.
AnnaBridge 163:e59c8e839560 9866 * @rmtoll JOFR1 JOFFSET1 LL_ADC_INJ_GetOffset\n
AnnaBridge 163:e59c8e839560 9867 * JOFR2 JOFFSET2 LL_ADC_INJ_GetOffset\n
AnnaBridge 163:e59c8e839560 9868 * JOFR3 JOFFSET3 LL_ADC_INJ_GetOffset\n
AnnaBridge 163:e59c8e839560 9869 * JOFR4 JOFFSET4 LL_ADC_INJ_GetOffset
AnnaBridge 163:e59c8e839560 9870 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9871 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9872 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 9873 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 9874 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 9875 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 9876 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 9877 */
AnnaBridge 163:e59c8e839560 9878 __STATIC_INLINE uint32_t LL_ADC_INJ_GetOffset(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 9879 {
AnnaBridge 163:e59c8e839560 9880 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JOFR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JOFRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 9881
AnnaBridge 163:e59c8e839560 9882 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 9883 ADC_JOFR1_JOFFSET1)
AnnaBridge 163:e59c8e839560 9884 );
AnnaBridge 163:e59c8e839560 9885 }
AnnaBridge 163:e59c8e839560 9886
AnnaBridge 163:e59c8e839560 9887 /**
AnnaBridge 163:e59c8e839560 9888 * @}
AnnaBridge 163:e59c8e839560 9889 */
AnnaBridge 163:e59c8e839560 9890
AnnaBridge 163:e59c8e839560 9891 /** @defgroup ADC_LL_EF_Configuration_Channels Configuration of ADC hierarchical scope: channels
AnnaBridge 163:e59c8e839560 9892 * @{
AnnaBridge 163:e59c8e839560 9893 */
AnnaBridge 163:e59c8e839560 9894
AnnaBridge 163:e59c8e839560 9895 /**
AnnaBridge 163:e59c8e839560 9896 * @brief Set sampling time of the selected ADC channel
AnnaBridge 163:e59c8e839560 9897 * Unit: ADC clock cycles.
AnnaBridge 163:e59c8e839560 9898 * @note On this device, sampling time is on channel scope: independently
AnnaBridge 163:e59c8e839560 9899 * of channel mapped on ADC group regular or injected.
AnnaBridge 163:e59c8e839560 9900 * @note In case of internal channel (VrefInt, TempSensor, ...) to be
AnnaBridge 163:e59c8e839560 9901 * converted:
AnnaBridge 163:e59c8e839560 9902 * sampling time constraints must be respected (sampling time can be
AnnaBridge 163:e59c8e839560 9903 * adjusted in function of ADC clock frequency and sampling time
AnnaBridge 163:e59c8e839560 9904 * setting).
AnnaBridge 163:e59c8e839560 9905 * Refer to device datasheet for timings values (parameters TS_vrefint,
AnnaBridge 163:e59c8e839560 9906 * TS_temp, ...).
AnnaBridge 163:e59c8e839560 9907 * @note Conversion time is the addition of sampling time and processing time.
AnnaBridge 163:e59c8e839560 9908 * Refer to reference manual for ADC processing time of
AnnaBridge 163:e59c8e839560 9909 * this STM32 serie.
AnnaBridge 163:e59c8e839560 9910 * @note In case of ADC conversion of internal channel (VrefInt,
AnnaBridge 163:e59c8e839560 9911 * temperature sensor, ...), a sampling time minimum value
AnnaBridge 163:e59c8e839560 9912 * is required.
AnnaBridge 163:e59c8e839560 9913 * Refer to device datasheet.
AnnaBridge 163:e59c8e839560 9914 * @rmtoll SMPR1 SMP17 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9915 * SMPR1 SMP16 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9916 * SMPR1 SMP15 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9917 * SMPR1 SMP14 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9918 * SMPR1 SMP13 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9919 * SMPR1 SMP12 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9920 * SMPR1 SMP11 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9921 * SMPR1 SMP10 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9922 * SMPR2 SMP9 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9923 * SMPR2 SMP8 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9924 * SMPR2 SMP7 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9925 * SMPR2 SMP6 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9926 * SMPR2 SMP5 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9927 * SMPR2 SMP4 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9928 * SMPR2 SMP3 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9929 * SMPR2 SMP2 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9930 * SMPR2 SMP1 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9931 * SMPR2 SMP0 LL_ADC_SetChannelSamplingTime
AnnaBridge 163:e59c8e839560 9932 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 9933 * @param Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9934 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 9935 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 9936 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 9937 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 9938 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 9939 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 9940 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 9941 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 9942 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 9943 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 9944 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 9945 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 9946 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 9947 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 9948 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 9949 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 9950 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 9951 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 9952 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 9953 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 9954 *
AnnaBridge 163:e59c8e839560 9955 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 9956 * @param SamplingTime This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 9957 * @arg @ref LL_ADC_SAMPLINGTIME_1CYCLE_5
AnnaBridge 163:e59c8e839560 9958 * @arg @ref LL_ADC_SAMPLINGTIME_7CYCLES_5
AnnaBridge 163:e59c8e839560 9959 * @arg @ref LL_ADC_SAMPLINGTIME_13CYCLES_5
AnnaBridge 163:e59c8e839560 9960 * @arg @ref LL_ADC_SAMPLINGTIME_28CYCLES_5
AnnaBridge 163:e59c8e839560 9961 * @arg @ref LL_ADC_SAMPLINGTIME_41CYCLES_5
AnnaBridge 163:e59c8e839560 9962 * @arg @ref LL_ADC_SAMPLINGTIME_55CYCLES_5
AnnaBridge 163:e59c8e839560 9963 * @arg @ref LL_ADC_SAMPLINGTIME_71CYCLES_5
AnnaBridge 163:e59c8e839560 9964 * @arg @ref LL_ADC_SAMPLINGTIME_239CYCLES_5
AnnaBridge 163:e59c8e839560 9965 * @retval None
AnnaBridge 163:e59c8e839560 9966 */
AnnaBridge 163:e59c8e839560 9967 __STATIC_INLINE void LL_ADC_SetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime)
AnnaBridge 163:e59c8e839560 9968 {
AnnaBridge 163:e59c8e839560 9969 /* Set bits with content of parameter "SamplingTime" with bits position */
AnnaBridge 163:e59c8e839560 9970 /* in register and register position depending on parameter "Channel". */
AnnaBridge 163:e59c8e839560 9971 /* Parameter "Channel" is used with masks because containing */
AnnaBridge 163:e59c8e839560 9972 /* other bits reserved for other purpose. */
AnnaBridge 163:e59c8e839560 9973 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 9974
AnnaBridge 163:e59c8e839560 9975 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 9976 ADC_SMPR2_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK),
AnnaBridge 163:e59c8e839560 9977 SamplingTime << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK));
AnnaBridge 163:e59c8e839560 9978 }
AnnaBridge 163:e59c8e839560 9979
AnnaBridge 163:e59c8e839560 9980 /**
AnnaBridge 163:e59c8e839560 9981 * @brief Get sampling time of the selected ADC channel
AnnaBridge 163:e59c8e839560 9982 * Unit: ADC clock cycles.
AnnaBridge 163:e59c8e839560 9983 * @note On this device, sampling time is on channel scope: independently
AnnaBridge 163:e59c8e839560 9984 * of channel mapped on ADC group regular or injected.
AnnaBridge 163:e59c8e839560 9985 * @note Conversion time is the addition of sampling time and processing time.
AnnaBridge 163:e59c8e839560 9986 * Refer to reference manual for ADC processing time of
AnnaBridge 163:e59c8e839560 9987 * this STM32 serie.
AnnaBridge 163:e59c8e839560 9988 * @rmtoll SMPR1 SMP17 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9989 * SMPR1 SMP16 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9990 * SMPR1 SMP15 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9991 * SMPR1 SMP14 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9992 * SMPR1 SMP13 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9993 * SMPR1 SMP12 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9994 * SMPR1 SMP11 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9995 * SMPR1 SMP10 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9996 * SMPR2 SMP9 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9997 * SMPR2 SMP8 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9998 * SMPR2 SMP7 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 9999 * SMPR2 SMP6 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 10000 * SMPR2 SMP5 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 10001 * SMPR2 SMP4 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 10002 * SMPR2 SMP3 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 10003 * SMPR2 SMP2 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 10004 * SMPR2 SMP1 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 163:e59c8e839560 10005 * SMPR2 SMP0 LL_ADC_GetChannelSamplingTime
AnnaBridge 163:e59c8e839560 10006 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10007 * @param Channel This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 10008 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 163:e59c8e839560 10009 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 163:e59c8e839560 10010 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 163:e59c8e839560 10011 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 163:e59c8e839560 10012 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 163:e59c8e839560 10013 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 163:e59c8e839560 10014 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 163:e59c8e839560 10015 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 163:e59c8e839560 10016 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 163:e59c8e839560 10017 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 163:e59c8e839560 10018 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 163:e59c8e839560 10019 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 163:e59c8e839560 10020 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 163:e59c8e839560 10021 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 163:e59c8e839560 10022 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 163:e59c8e839560 10023 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 163:e59c8e839560 10024 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 163:e59c8e839560 10025 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 163:e59c8e839560 10026 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 163:e59c8e839560 10027 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)
AnnaBridge 163:e59c8e839560 10028 *
AnnaBridge 163:e59c8e839560 10029 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 10030 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 10031 * @arg @ref LL_ADC_SAMPLINGTIME_1CYCLE_5
AnnaBridge 163:e59c8e839560 10032 * @arg @ref LL_ADC_SAMPLINGTIME_7CYCLES_5
AnnaBridge 163:e59c8e839560 10033 * @arg @ref LL_ADC_SAMPLINGTIME_13CYCLES_5
AnnaBridge 163:e59c8e839560 10034 * @arg @ref LL_ADC_SAMPLINGTIME_28CYCLES_5
AnnaBridge 163:e59c8e839560 10035 * @arg @ref LL_ADC_SAMPLINGTIME_41CYCLES_5
AnnaBridge 163:e59c8e839560 10036 * @arg @ref LL_ADC_SAMPLINGTIME_55CYCLES_5
AnnaBridge 163:e59c8e839560 10037 * @arg @ref LL_ADC_SAMPLINGTIME_71CYCLES_5
AnnaBridge 163:e59c8e839560 10038 * @arg @ref LL_ADC_SAMPLINGTIME_239CYCLES_5
AnnaBridge 163:e59c8e839560 10039 */
AnnaBridge 163:e59c8e839560 10040 __STATIC_INLINE uint32_t LL_ADC_GetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel)
AnnaBridge 163:e59c8e839560 10041 {
AnnaBridge 163:e59c8e839560 10042 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 10043
AnnaBridge 163:e59c8e839560 10044 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 10045 ADC_SMPR2_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK))
AnnaBridge 163:e59c8e839560 10046 >> __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK)
AnnaBridge 163:e59c8e839560 10047 );
AnnaBridge 163:e59c8e839560 10048 }
AnnaBridge 163:e59c8e839560 10049
AnnaBridge 163:e59c8e839560 10050 /**
AnnaBridge 163:e59c8e839560 10051 * @}
AnnaBridge 163:e59c8e839560 10052 */
AnnaBridge 163:e59c8e839560 10053
AnnaBridge 163:e59c8e839560 10054 /** @defgroup ADC_LL_EF_Configuration_ADC_AnalogWatchdog Configuration of ADC transversal scope: analog watchdog
AnnaBridge 163:e59c8e839560 10055 * @{
AnnaBridge 163:e59c8e839560 10056 */
AnnaBridge 163:e59c8e839560 10057
AnnaBridge 163:e59c8e839560 10058 /**
AnnaBridge 163:e59c8e839560 10059 * @brief Set ADC analog watchdog monitored channels:
AnnaBridge 163:e59c8e839560 10060 * a single channel or all channels,
AnnaBridge 163:e59c8e839560 10061 * on ADC groups regular and-or injected.
AnnaBridge 163:e59c8e839560 10062 * @note Once monitored channels are selected, analog watchdog
AnnaBridge 163:e59c8e839560 10063 * is enabled.
AnnaBridge 163:e59c8e839560 10064 * @note In case of need to define a single channel to monitor
AnnaBridge 163:e59c8e839560 10065 * with analog watchdog from sequencer channel definition,
AnnaBridge 163:e59c8e839560 10066 * use helper macro @ref __LL_ADC_ANALOGWD_CHANNEL_GROUP().
AnnaBridge 163:e59c8e839560 10067 * @note On this STM32 serie, there is only 1 kind of analog watchdog
AnnaBridge 163:e59c8e839560 10068 * instance:
AnnaBridge 163:e59c8e839560 10069 * - AWD standard (instance AWD1):
AnnaBridge 163:e59c8e839560 10070 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 163:e59c8e839560 10071 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 163:e59c8e839560 10072 * - resolution: resolution is not limited (corresponds to
AnnaBridge 163:e59c8e839560 10073 * ADC resolution configured).
AnnaBridge 163:e59c8e839560 10074 * @rmtoll CR1 AWD1CH LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 10075 * CR1 AWD1SGL LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 10076 * CR1 AWD1EN LL_ADC_SetAnalogWDMonitChannels
AnnaBridge 163:e59c8e839560 10077 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10078 * @param AWDChannelGroup This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 10079 * @arg @ref LL_ADC_AWD_DISABLE
AnnaBridge 163:e59c8e839560 10080 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG
AnnaBridge 163:e59c8e839560 10081 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ
AnnaBridge 163:e59c8e839560 10082 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
AnnaBridge 163:e59c8e839560 10083 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG
AnnaBridge 163:e59c8e839560 10084 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ
AnnaBridge 163:e59c8e839560 10085 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
AnnaBridge 163:e59c8e839560 10086 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG
AnnaBridge 163:e59c8e839560 10087 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ
AnnaBridge 163:e59c8e839560 10088 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
AnnaBridge 163:e59c8e839560 10089 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG
AnnaBridge 163:e59c8e839560 10090 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ
AnnaBridge 163:e59c8e839560 10091 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
AnnaBridge 163:e59c8e839560 10092 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG
AnnaBridge 163:e59c8e839560 10093 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ
AnnaBridge 163:e59c8e839560 10094 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
AnnaBridge 163:e59c8e839560 10095 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG
AnnaBridge 163:e59c8e839560 10096 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ
AnnaBridge 163:e59c8e839560 10097 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
AnnaBridge 163:e59c8e839560 10098 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG
AnnaBridge 163:e59c8e839560 10099 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ
AnnaBridge 163:e59c8e839560 10100 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
AnnaBridge 163:e59c8e839560 10101 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG
AnnaBridge 163:e59c8e839560 10102 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ
AnnaBridge 163:e59c8e839560 10103 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
AnnaBridge 163:e59c8e839560 10104 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG
AnnaBridge 163:e59c8e839560 10105 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ
AnnaBridge 163:e59c8e839560 10106 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
AnnaBridge 163:e59c8e839560 10107 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG
AnnaBridge 163:e59c8e839560 10108 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ
AnnaBridge 163:e59c8e839560 10109 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
AnnaBridge 163:e59c8e839560 10110 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG
AnnaBridge 163:e59c8e839560 10111 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ
AnnaBridge 163:e59c8e839560 10112 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
AnnaBridge 163:e59c8e839560 10113 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG
AnnaBridge 163:e59c8e839560 10114 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ
AnnaBridge 163:e59c8e839560 10115 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
AnnaBridge 163:e59c8e839560 10116 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG
AnnaBridge 163:e59c8e839560 10117 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ
AnnaBridge 163:e59c8e839560 10118 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
AnnaBridge 163:e59c8e839560 10119 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG
AnnaBridge 163:e59c8e839560 10120 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ
AnnaBridge 163:e59c8e839560 10121 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
AnnaBridge 163:e59c8e839560 10122 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG
AnnaBridge 163:e59c8e839560 10123 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ
AnnaBridge 163:e59c8e839560 10124 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
AnnaBridge 163:e59c8e839560 10125 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG
AnnaBridge 163:e59c8e839560 10126 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ
AnnaBridge 163:e59c8e839560 10127 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
AnnaBridge 163:e59c8e839560 10128 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG
AnnaBridge 163:e59c8e839560 10129 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ
AnnaBridge 163:e59c8e839560 10130 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
AnnaBridge 163:e59c8e839560 10131 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG
AnnaBridge 163:e59c8e839560 10132 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ
AnnaBridge 163:e59c8e839560 10133 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
AnnaBridge 163:e59c8e839560 10134 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG
AnnaBridge 163:e59c8e839560 10135 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ
AnnaBridge 163:e59c8e839560 10136 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
AnnaBridge 163:e59c8e839560 10137 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (1)
AnnaBridge 163:e59c8e839560 10138 * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (1)
AnnaBridge 163:e59c8e839560 10139 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (1)
AnnaBridge 163:e59c8e839560 10140 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (1)
AnnaBridge 163:e59c8e839560 10141 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (1)
AnnaBridge 163:e59c8e839560 10142 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (1)
AnnaBridge 163:e59c8e839560 10143 *
AnnaBridge 163:e59c8e839560 10144 * (1) On STM32F37x, parameter available only on ADC instance: ADC1.
AnnaBridge 163:e59c8e839560 10145 * @retval None
AnnaBridge 163:e59c8e839560 10146 */
AnnaBridge 163:e59c8e839560 10147 __STATIC_INLINE void LL_ADC_SetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t AWDChannelGroup)
AnnaBridge 163:e59c8e839560 10148 {
AnnaBridge 163:e59c8e839560 10149 MODIFY_REG(ADCx->CR1,
AnnaBridge 163:e59c8e839560 10150 (ADC_CR1_AWDEN | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL | ADC_CR1_AWDCH),
AnnaBridge 163:e59c8e839560 10151 AWDChannelGroup);
AnnaBridge 163:e59c8e839560 10152 }
AnnaBridge 163:e59c8e839560 10153
AnnaBridge 163:e59c8e839560 10154 /**
AnnaBridge 163:e59c8e839560 10155 * @brief Get ADC analog watchdog monitored channel.
AnnaBridge 163:e59c8e839560 10156 * @note Usage of the returned channel number:
AnnaBridge 163:e59c8e839560 10157 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 163:e59c8e839560 10158 * the returned channel number is only partly formatted on definition
AnnaBridge 163:e59c8e839560 10159 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 163:e59c8e839560 10160 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 163:e59c8e839560 10161 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 10162 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 163:e59c8e839560 10163 * as parameter for another function.
AnnaBridge 163:e59c8e839560 10164 * - To get the channel number in decimal format:
AnnaBridge 163:e59c8e839560 10165 * process the returned value with the helper macro
AnnaBridge 163:e59c8e839560 10166 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 163:e59c8e839560 10167 * Applicable only when the analog watchdog is set to monitor
AnnaBridge 163:e59c8e839560 10168 * one channel.
AnnaBridge 163:e59c8e839560 10169 * @note On this STM32 serie, there is only 1 kind of analog watchdog
AnnaBridge 163:e59c8e839560 10170 * instance:
AnnaBridge 163:e59c8e839560 10171 * - AWD standard (instance AWD1):
AnnaBridge 163:e59c8e839560 10172 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 163:e59c8e839560 10173 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 163:e59c8e839560 10174 * - resolution: resolution is not limited (corresponds to
AnnaBridge 163:e59c8e839560 10175 * ADC resolution configured).
AnnaBridge 163:e59c8e839560 10176 * @rmtoll CR1 AWD1CH LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 10177 * CR1 AWD1SGL LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 163:e59c8e839560 10178 * CR1 AWD1EN LL_ADC_GetAnalogWDMonitChannels
AnnaBridge 163:e59c8e839560 10179 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10180 * @retval Returned value can be one of the following values:
AnnaBridge 163:e59c8e839560 10181 * @arg @ref LL_ADC_AWD_DISABLE
AnnaBridge 163:e59c8e839560 10182 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG
AnnaBridge 163:e59c8e839560 10183 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ
AnnaBridge 163:e59c8e839560 10184 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
AnnaBridge 163:e59c8e839560 10185 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG
AnnaBridge 163:e59c8e839560 10186 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ
AnnaBridge 163:e59c8e839560 10187 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
AnnaBridge 163:e59c8e839560 10188 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG
AnnaBridge 163:e59c8e839560 10189 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ
AnnaBridge 163:e59c8e839560 10190 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
AnnaBridge 163:e59c8e839560 10191 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG
AnnaBridge 163:e59c8e839560 10192 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ
AnnaBridge 163:e59c8e839560 10193 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
AnnaBridge 163:e59c8e839560 10194 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG
AnnaBridge 163:e59c8e839560 10195 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ
AnnaBridge 163:e59c8e839560 10196 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
AnnaBridge 163:e59c8e839560 10197 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG
AnnaBridge 163:e59c8e839560 10198 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ
AnnaBridge 163:e59c8e839560 10199 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
AnnaBridge 163:e59c8e839560 10200 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG
AnnaBridge 163:e59c8e839560 10201 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ
AnnaBridge 163:e59c8e839560 10202 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
AnnaBridge 163:e59c8e839560 10203 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG
AnnaBridge 163:e59c8e839560 10204 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ
AnnaBridge 163:e59c8e839560 10205 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
AnnaBridge 163:e59c8e839560 10206 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG
AnnaBridge 163:e59c8e839560 10207 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ
AnnaBridge 163:e59c8e839560 10208 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
AnnaBridge 163:e59c8e839560 10209 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG
AnnaBridge 163:e59c8e839560 10210 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ
AnnaBridge 163:e59c8e839560 10211 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
AnnaBridge 163:e59c8e839560 10212 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG
AnnaBridge 163:e59c8e839560 10213 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ
AnnaBridge 163:e59c8e839560 10214 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
AnnaBridge 163:e59c8e839560 10215 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG
AnnaBridge 163:e59c8e839560 10216 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ
AnnaBridge 163:e59c8e839560 10217 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
AnnaBridge 163:e59c8e839560 10218 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG
AnnaBridge 163:e59c8e839560 10219 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ
AnnaBridge 163:e59c8e839560 10220 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
AnnaBridge 163:e59c8e839560 10221 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG
AnnaBridge 163:e59c8e839560 10222 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ
AnnaBridge 163:e59c8e839560 10223 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
AnnaBridge 163:e59c8e839560 10224 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG
AnnaBridge 163:e59c8e839560 10225 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ
AnnaBridge 163:e59c8e839560 10226 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
AnnaBridge 163:e59c8e839560 10227 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG
AnnaBridge 163:e59c8e839560 10228 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ
AnnaBridge 163:e59c8e839560 10229 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
AnnaBridge 163:e59c8e839560 10230 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG
AnnaBridge 163:e59c8e839560 10231 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ
AnnaBridge 163:e59c8e839560 10232 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
AnnaBridge 163:e59c8e839560 10233 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG
AnnaBridge 163:e59c8e839560 10234 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ
AnnaBridge 163:e59c8e839560 10235 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
AnnaBridge 163:e59c8e839560 10236 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG
AnnaBridge 163:e59c8e839560 10237 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ
AnnaBridge 163:e59c8e839560 10238 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
AnnaBridge 163:e59c8e839560 10239 */
AnnaBridge 163:e59c8e839560 10240 __STATIC_INLINE uint32_t LL_ADC_GetAnalogWDMonitChannels(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10241 {
AnnaBridge 163:e59c8e839560 10242 return (uint32_t)(READ_BIT(ADCx->CR1, (ADC_CR1_AWDEN | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL | ADC_CR1_AWDCH)));
AnnaBridge 163:e59c8e839560 10243 }
AnnaBridge 163:e59c8e839560 10244
AnnaBridge 163:e59c8e839560 10245 /**
AnnaBridge 163:e59c8e839560 10246 * @brief Set ADC analog watchdog threshold value of threshold
AnnaBridge 163:e59c8e839560 10247 * high or low.
AnnaBridge 163:e59c8e839560 10248 * @note On this STM32 serie, there is only 1 kind of analog watchdog
AnnaBridge 163:e59c8e839560 10249 * instance:
AnnaBridge 163:e59c8e839560 10250 * - AWD standard (instance AWD1):
AnnaBridge 163:e59c8e839560 10251 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 163:e59c8e839560 10252 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 163:e59c8e839560 10253 * - resolution: resolution is not limited (corresponds to
AnnaBridge 163:e59c8e839560 10254 * ADC resolution configured).
AnnaBridge 163:e59c8e839560 10255 * @rmtoll HTR HT LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 10256 * LTR LT LL_ADC_SetAnalogWDThresholds
AnnaBridge 163:e59c8e839560 10257 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10258 * @param AWDThresholdsHighLow This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 10259 * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH
AnnaBridge 163:e59c8e839560 10260 * @arg @ref LL_ADC_AWD_THRESHOLD_LOW
AnnaBridge 168:b9e159c1930a 10261 * @param AWDThresholdValue Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 10262 * @retval None
AnnaBridge 163:e59c8e839560 10263 */
AnnaBridge 163:e59c8e839560 10264 __STATIC_INLINE void LL_ADC_SetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDThresholdsHighLow, uint32_t AWDThresholdValue)
AnnaBridge 163:e59c8e839560 10265 {
AnnaBridge 163:e59c8e839560 10266 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->HTR, AWDThresholdsHighLow);
AnnaBridge 163:e59c8e839560 10267
AnnaBridge 163:e59c8e839560 10268 MODIFY_REG(*preg,
AnnaBridge 163:e59c8e839560 10269 ADC_HTR_HT,
AnnaBridge 163:e59c8e839560 10270 AWDThresholdValue);
AnnaBridge 163:e59c8e839560 10271 }
AnnaBridge 163:e59c8e839560 10272
AnnaBridge 163:e59c8e839560 10273 /**
AnnaBridge 163:e59c8e839560 10274 * @brief Get ADC analog watchdog threshold value of threshold high or
AnnaBridge 163:e59c8e839560 10275 * threshold low.
AnnaBridge 163:e59c8e839560 10276 * @note In case of ADC resolution different of 12 bits,
AnnaBridge 163:e59c8e839560 10277 * analog watchdog thresholds data require a specific shift.
AnnaBridge 163:e59c8e839560 10278 * Use helper macro @ref __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION().
AnnaBridge 163:e59c8e839560 10279 * @rmtoll HTR HT LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 163:e59c8e839560 10280 * LTR LT LL_ADC_GetAnalogWDThresholds
AnnaBridge 163:e59c8e839560 10281 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10282 * @param AWDThresholdsHighLow This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 10283 * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH
AnnaBridge 163:e59c8e839560 10284 * @arg @ref LL_ADC_AWD_THRESHOLD_LOW
AnnaBridge 163:e59c8e839560 10285 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 10286 */
AnnaBridge 163:e59c8e839560 10287 __STATIC_INLINE uint32_t LL_ADC_GetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDThresholdsHighLow)
AnnaBridge 163:e59c8e839560 10288 {
AnnaBridge 163:e59c8e839560 10289 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->HTR, AWDThresholdsHighLow);
AnnaBridge 163:e59c8e839560 10290
AnnaBridge 163:e59c8e839560 10291 return (uint32_t)(READ_BIT(*preg, ADC_HTR_HT));
AnnaBridge 163:e59c8e839560 10292 }
AnnaBridge 163:e59c8e839560 10293
AnnaBridge 163:e59c8e839560 10294 /**
AnnaBridge 163:e59c8e839560 10295 * @}
AnnaBridge 163:e59c8e839560 10296 */
AnnaBridge 163:e59c8e839560 10297
AnnaBridge 163:e59c8e839560 10298 /** @defgroup ADC_LL_EF_Operation_ADC_Instance Operation on ADC hierarchical scope: ADC instance
AnnaBridge 163:e59c8e839560 10299 * @{
AnnaBridge 163:e59c8e839560 10300 */
AnnaBridge 163:e59c8e839560 10301
AnnaBridge 163:e59c8e839560 10302 /**
AnnaBridge 163:e59c8e839560 10303 * @brief Enable the selected ADC instance.
AnnaBridge 163:e59c8e839560 10304 * @note On this STM32 serie, after ADC enable, a delay for
AnnaBridge 163:e59c8e839560 10305 * ADC internal analog stabilization is required before performing a
AnnaBridge 163:e59c8e839560 10306 * ADC conversion start.
AnnaBridge 163:e59c8e839560 10307 * Refer to device datasheet, parameter tSTAB.
AnnaBridge 163:e59c8e839560 10308 * @rmtoll CR2 ADON LL_ADC_Enable
AnnaBridge 163:e59c8e839560 10309 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10310 * @retval None
AnnaBridge 163:e59c8e839560 10311 */
AnnaBridge 163:e59c8e839560 10312 __STATIC_INLINE void LL_ADC_Enable(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10313 {
AnnaBridge 163:e59c8e839560 10314 SET_BIT(ADCx->CR2, ADC_CR2_ADON);
AnnaBridge 163:e59c8e839560 10315 }
AnnaBridge 163:e59c8e839560 10316
AnnaBridge 163:e59c8e839560 10317 /**
AnnaBridge 163:e59c8e839560 10318 * @brief Disable the selected ADC instance.
AnnaBridge 163:e59c8e839560 10319 * @rmtoll CR2 ADON LL_ADC_Disable
AnnaBridge 163:e59c8e839560 10320 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10321 * @retval None
AnnaBridge 163:e59c8e839560 10322 */
AnnaBridge 163:e59c8e839560 10323 __STATIC_INLINE void LL_ADC_Disable(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10324 {
AnnaBridge 163:e59c8e839560 10325 CLEAR_BIT(ADCx->CR2, ADC_CR2_ADON);
AnnaBridge 163:e59c8e839560 10326 }
AnnaBridge 163:e59c8e839560 10327
AnnaBridge 163:e59c8e839560 10328 /**
AnnaBridge 163:e59c8e839560 10329 * @brief Get the selected ADC instance enable state.
AnnaBridge 163:e59c8e839560 10330 * @rmtoll CR2 ADON LL_ADC_IsEnabled
AnnaBridge 163:e59c8e839560 10331 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10332 * @retval 0: ADC is disabled, 1: ADC is enabled.
AnnaBridge 163:e59c8e839560 10333 */
AnnaBridge 163:e59c8e839560 10334 __STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10335 {
AnnaBridge 163:e59c8e839560 10336 return (READ_BIT(ADCx->CR2, ADC_CR2_ADON) == (ADC_CR2_ADON));
AnnaBridge 163:e59c8e839560 10337 }
AnnaBridge 163:e59c8e839560 10338
AnnaBridge 163:e59c8e839560 10339 /**
AnnaBridge 163:e59c8e839560 10340 * @brief Start ADC calibration in the mode single-ended
AnnaBridge 163:e59c8e839560 10341 * or differential (for devices with differential mode available).
AnnaBridge 163:e59c8e839560 10342 * @note On this STM32 serie, before starting a calibration,
AnnaBridge 163:e59c8e839560 10343 * ADC must be disabled.
AnnaBridge 163:e59c8e839560 10344 * A minimum number of ADC clock cycles are required
AnnaBridge 163:e59c8e839560 10345 * between ADC disable state and calibration start.
AnnaBridge 163:e59c8e839560 10346 * Refer to literal @ref LL_ADC_DELAY_DISABLE_CALIB_ADC_CYCLES.
AnnaBridge 163:e59c8e839560 10347 * @note On this STM32 serie, hardware prerequisite before starting a calibration:
AnnaBridge 163:e59c8e839560 10348 the ADC must have been in power-on state for at least
AnnaBridge 163:e59c8e839560 10349 two ADC clock cycles.
AnnaBridge 163:e59c8e839560 10350 * @rmtoll CR2 CAL LL_ADC_StartCalibration
AnnaBridge 163:e59c8e839560 10351 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10352 * @retval None
AnnaBridge 163:e59c8e839560 10353 */
AnnaBridge 163:e59c8e839560 10354 __STATIC_INLINE void LL_ADC_StartCalibration(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10355 {
AnnaBridge 163:e59c8e839560 10356 SET_BIT(ADCx->CR2, ADC_CR2_CAL);
AnnaBridge 163:e59c8e839560 10357 }
AnnaBridge 163:e59c8e839560 10358
AnnaBridge 163:e59c8e839560 10359 /**
AnnaBridge 163:e59c8e839560 10360 * @brief Get ADC calibration state.
AnnaBridge 163:e59c8e839560 10361 * @rmtoll CR2 CAL LL_ADC_IsCalibrationOnGoing
AnnaBridge 163:e59c8e839560 10362 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10363 * @retval 0: calibration complete, 1: calibration in progress.
AnnaBridge 163:e59c8e839560 10364 */
AnnaBridge 163:e59c8e839560 10365 __STATIC_INLINE uint32_t LL_ADC_IsCalibrationOnGoing(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10366 {
AnnaBridge 163:e59c8e839560 10367 return (READ_BIT(ADCx->CR2, ADC_CR2_CAL) == (ADC_CR2_CAL));
AnnaBridge 163:e59c8e839560 10368 }
AnnaBridge 163:e59c8e839560 10369
AnnaBridge 163:e59c8e839560 10370 /**
AnnaBridge 163:e59c8e839560 10371 * @}
AnnaBridge 163:e59c8e839560 10372 */
AnnaBridge 163:e59c8e839560 10373
AnnaBridge 163:e59c8e839560 10374 /** @defgroup ADC_LL_EF_Operation_ADC_Group_Regular Operation on ADC hierarchical scope: group regular
AnnaBridge 163:e59c8e839560 10375 * @{
AnnaBridge 163:e59c8e839560 10376 */
AnnaBridge 163:e59c8e839560 10377
AnnaBridge 163:e59c8e839560 10378 /**
AnnaBridge 163:e59c8e839560 10379 * @brief Start ADC group regular conversion.
AnnaBridge 163:e59c8e839560 10380 * @note On this STM32 serie, this function is relevant for both
AnnaBridge 163:e59c8e839560 10381 * internal trigger (SW start) and external trigger:
AnnaBridge 163:e59c8e839560 10382 * - If ADC trigger has been set to software start, ADC conversion
AnnaBridge 163:e59c8e839560 10383 * starts immediately.
AnnaBridge 163:e59c8e839560 10384 * - If ADC trigger has been set to external trigger, ADC conversion
AnnaBridge 163:e59c8e839560 10385 * will start at next trigger event (on the selected trigger edge)
AnnaBridge 163:e59c8e839560 10386 * following the ADC start conversion command.
AnnaBridge 163:e59c8e839560 10387 * @rmtoll CR2 EXTTRIG LL_ADC_REG_StartConversion
AnnaBridge 163:e59c8e839560 10388 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10389 * @retval None
AnnaBridge 163:e59c8e839560 10390 */
AnnaBridge 163:e59c8e839560 10391 __STATIC_INLINE void LL_ADC_REG_StartConversion(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10392 {
AnnaBridge 163:e59c8e839560 10393 /* Note: Set bit ADC_CR2_SWSTART for case of trigger source set to */
AnnaBridge 163:e59c8e839560 10394 /* SW start. In case of external trigger selected, this bit */
AnnaBridge 163:e59c8e839560 10395 /* has no effect. */
AnnaBridge 163:e59c8e839560 10396 SET_BIT(ADCx->CR2, (ADC_CR2_SWSTART | ADC_CR2_EXTTRIG));
AnnaBridge 163:e59c8e839560 10397 }
AnnaBridge 163:e59c8e839560 10398
AnnaBridge 163:e59c8e839560 10399 /**
AnnaBridge 163:e59c8e839560 10400 * @brief Stop ADC group regular conversion from external trigger.
AnnaBridge 163:e59c8e839560 10401 * @note No more ADC conversion will start at next trigger event
AnnaBridge 163:e59c8e839560 10402 * following the ADC stop conversion command.
AnnaBridge 163:e59c8e839560 10403 * If a conversion is on-going, it will be completed.
AnnaBridge 163:e59c8e839560 10404 * @note On this STM32 serie, there is no specific command
AnnaBridge 163:e59c8e839560 10405 * to stop a conversion on-going or to stop ADC converting
AnnaBridge 163:e59c8e839560 10406 * in continuous mode. These actions can be performed
AnnaBridge 163:e59c8e839560 10407 * using function @ref LL_ADC_Disable().
AnnaBridge 163:e59c8e839560 10408 * @rmtoll CR2 EXTSEL LL_ADC_REG_StopConversionExtTrig
AnnaBridge 163:e59c8e839560 10409 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10410 * @retval None
AnnaBridge 163:e59c8e839560 10411 */
AnnaBridge 163:e59c8e839560 10412 __STATIC_INLINE void LL_ADC_REG_StopConversionExtTrig(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10413 {
AnnaBridge 163:e59c8e839560 10414 SET_BIT(ADCx->CR2, ADC_CR2_EXTSEL);
AnnaBridge 163:e59c8e839560 10415 }
AnnaBridge 163:e59c8e839560 10416
AnnaBridge 163:e59c8e839560 10417 /**
AnnaBridge 163:e59c8e839560 10418 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 163:e59c8e839560 10419 * all ADC configurations: all ADC resolutions and
AnnaBridge 163:e59c8e839560 10420 * all oversampling increased data width (for devices
AnnaBridge 163:e59c8e839560 10421 * with feature oversampling).
AnnaBridge 163:e59c8e839560 10422 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData32
AnnaBridge 163:e59c8e839560 10423 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10424 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 163:e59c8e839560 10425 */
AnnaBridge 163:e59c8e839560 10426 __STATIC_INLINE uint32_t LL_ADC_REG_ReadConversionData32(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10427 {
AnnaBridge 163:e59c8e839560 10428 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA));
AnnaBridge 163:e59c8e839560 10429 }
AnnaBridge 163:e59c8e839560 10430
AnnaBridge 163:e59c8e839560 10431 /**
AnnaBridge 163:e59c8e839560 10432 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 163:e59c8e839560 10433 * ADC resolution 12 bits.
AnnaBridge 163:e59c8e839560 10434 * @note For devices with feature oversampling: Oversampling
AnnaBridge 163:e59c8e839560 10435 * can increase data width, function for extended range
AnnaBridge 163:e59c8e839560 10436 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
AnnaBridge 163:e59c8e839560 10437 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData12
AnnaBridge 163:e59c8e839560 10438 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10439 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 10440 */
AnnaBridge 163:e59c8e839560 10441 __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData12(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10442 {
AnnaBridge 163:e59c8e839560 10443 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA));
AnnaBridge 163:e59c8e839560 10444 }
AnnaBridge 163:e59c8e839560 10445
AnnaBridge 163:e59c8e839560 10446 /**
AnnaBridge 163:e59c8e839560 10447 * @}
AnnaBridge 163:e59c8e839560 10448 */
AnnaBridge 163:e59c8e839560 10449
AnnaBridge 163:e59c8e839560 10450 /** @defgroup ADC_LL_EF_Operation_ADC_Group_Injected Operation on ADC hierarchical scope: group injected
AnnaBridge 163:e59c8e839560 10451 * @{
AnnaBridge 163:e59c8e839560 10452 */
AnnaBridge 163:e59c8e839560 10453
AnnaBridge 163:e59c8e839560 10454 /**
AnnaBridge 163:e59c8e839560 10455 * @brief Start ADC group injected conversion.
AnnaBridge 163:e59c8e839560 10456 * @note On this STM32 serie, this function is relevant for both
AnnaBridge 163:e59c8e839560 10457 * internal trigger (SW start) and external trigger:
AnnaBridge 163:e59c8e839560 10458 * - If ADC trigger has been set to software start, ADC conversion
AnnaBridge 163:e59c8e839560 10459 * starts immediately.
AnnaBridge 163:e59c8e839560 10460 * - If ADC trigger has been set to external trigger, ADC conversion
AnnaBridge 163:e59c8e839560 10461 * will start at next trigger event (on the selected trigger edge)
AnnaBridge 163:e59c8e839560 10462 * following the ADC start conversion command.
AnnaBridge 163:e59c8e839560 10463 * @rmtoll CR2 JEXTTRIG LL_ADC_REG_StartConversion
AnnaBridge 163:e59c8e839560 10464 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10465 * @retval None
AnnaBridge 163:e59c8e839560 10466 */
AnnaBridge 163:e59c8e839560 10467 __STATIC_INLINE void LL_ADC_INJ_StartConversion(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10468 {
AnnaBridge 163:e59c8e839560 10469 /* Note: Set bit ADC_CR2_JSWSTART for case of trigger source set to */
AnnaBridge 163:e59c8e839560 10470 /* SW start. In case of external trigger selected, this bit */
AnnaBridge 163:e59c8e839560 10471 /* has no effect. */
AnnaBridge 163:e59c8e839560 10472 SET_BIT(ADCx->CR2, (ADC_CR2_JSWSTART | ADC_CR2_JEXTTRIG));
AnnaBridge 163:e59c8e839560 10473 }
AnnaBridge 163:e59c8e839560 10474
AnnaBridge 163:e59c8e839560 10475 /**
AnnaBridge 163:e59c8e839560 10476 * @brief Stop ADC group injected conversion from external trigger.
AnnaBridge 163:e59c8e839560 10477 * @note No more ADC conversion will start at next trigger event
AnnaBridge 163:e59c8e839560 10478 * following the ADC stop conversion command.
AnnaBridge 163:e59c8e839560 10479 * If a conversion is on-going, it will be completed.
AnnaBridge 163:e59c8e839560 10480 * @note On this STM32 serie, there is no specific command
AnnaBridge 163:e59c8e839560 10481 * to stop a conversion on-going or to stop ADC converting
AnnaBridge 163:e59c8e839560 10482 * in continuous mode. These actions can be performed
AnnaBridge 163:e59c8e839560 10483 * using function @ref LL_ADC_Disable().
AnnaBridge 163:e59c8e839560 10484 * @rmtoll CR2 JEXTSEL LL_ADC_INJ_StopConversionExtTrig
AnnaBridge 163:e59c8e839560 10485 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10486 * @retval None
AnnaBridge 163:e59c8e839560 10487 */
AnnaBridge 163:e59c8e839560 10488 __STATIC_INLINE void LL_ADC_INJ_StopConversionExtTrig(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10489 {
AnnaBridge 163:e59c8e839560 10490 SET_BIT(ADCx->CR2, ADC_CR2_JEXTSEL);
AnnaBridge 163:e59c8e839560 10491 }
AnnaBridge 163:e59c8e839560 10492
AnnaBridge 163:e59c8e839560 10493 /**
AnnaBridge 163:e59c8e839560 10494 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 163:e59c8e839560 10495 * all ADC configurations: all ADC resolutions and
AnnaBridge 163:e59c8e839560 10496 * all oversampling increased data width (for devices
AnnaBridge 163:e59c8e839560 10497 * with feature oversampling).
AnnaBridge 163:e59c8e839560 10498 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData32\n
AnnaBridge 163:e59c8e839560 10499 * JDR2 JDATA LL_ADC_INJ_ReadConversionData32\n
AnnaBridge 163:e59c8e839560 10500 * JDR3 JDATA LL_ADC_INJ_ReadConversionData32\n
AnnaBridge 163:e59c8e839560 10501 * JDR4 JDATA LL_ADC_INJ_ReadConversionData32
AnnaBridge 163:e59c8e839560 10502 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10503 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 10504 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 10505 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 10506 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 10507 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 10508 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 163:e59c8e839560 10509 */
AnnaBridge 163:e59c8e839560 10510 __STATIC_INLINE uint32_t LL_ADC_INJ_ReadConversionData32(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 10511 {
AnnaBridge 163:e59c8e839560 10512 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 10513
AnnaBridge 163:e59c8e839560 10514 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 10515 ADC_JDR1_JDATA)
AnnaBridge 163:e59c8e839560 10516 );
AnnaBridge 163:e59c8e839560 10517 }
AnnaBridge 163:e59c8e839560 10518
AnnaBridge 163:e59c8e839560 10519 /**
AnnaBridge 163:e59c8e839560 10520 * @brief Get ADC group injected conversion data, range fit for
AnnaBridge 163:e59c8e839560 10521 * ADC resolution 12 bits.
AnnaBridge 163:e59c8e839560 10522 * @note For devices with feature oversampling: Oversampling
AnnaBridge 163:e59c8e839560 10523 * can increase data width, function for extended range
AnnaBridge 163:e59c8e839560 10524 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
AnnaBridge 163:e59c8e839560 10525 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData12\n
AnnaBridge 163:e59c8e839560 10526 * JDR2 JDATA LL_ADC_INJ_ReadConversionData12\n
AnnaBridge 163:e59c8e839560 10527 * JDR3 JDATA LL_ADC_INJ_ReadConversionData12\n
AnnaBridge 163:e59c8e839560 10528 * JDR4 JDATA LL_ADC_INJ_ReadConversionData12
AnnaBridge 163:e59c8e839560 10529 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10530 * @param Rank This parameter can be one of the following values:
AnnaBridge 163:e59c8e839560 10531 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 163:e59c8e839560 10532 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 163:e59c8e839560 10533 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 163:e59c8e839560 10534 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 163:e59c8e839560 10535 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 163:e59c8e839560 10536 */
AnnaBridge 163:e59c8e839560 10537 __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData12(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 163:e59c8e839560 10538 {
AnnaBridge 163:e59c8e839560 10539 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 163:e59c8e839560 10540
AnnaBridge 163:e59c8e839560 10541 return (uint16_t)(READ_BIT(*preg,
AnnaBridge 163:e59c8e839560 10542 ADC_JDR1_JDATA)
AnnaBridge 163:e59c8e839560 10543 );
AnnaBridge 163:e59c8e839560 10544 }
AnnaBridge 163:e59c8e839560 10545
AnnaBridge 163:e59c8e839560 10546 /**
AnnaBridge 163:e59c8e839560 10547 * @}
AnnaBridge 163:e59c8e839560 10548 */
AnnaBridge 163:e59c8e839560 10549
AnnaBridge 163:e59c8e839560 10550 /** @defgroup ADC_LL_EF_FLAG_Management ADC flag management
AnnaBridge 163:e59c8e839560 10551 * @{
AnnaBridge 163:e59c8e839560 10552 */
AnnaBridge 163:e59c8e839560 10553
AnnaBridge 163:e59c8e839560 10554 /**
AnnaBridge 163:e59c8e839560 10555 * @brief Get flag ADC group regular end of sequence conversions.
AnnaBridge 163:e59c8e839560 10556 * @rmtoll SR EOC LL_ADC_IsActiveFlag_EOS
AnnaBridge 163:e59c8e839560 10557 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10558 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 10559 */
AnnaBridge 163:e59c8e839560 10560 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10561 {
AnnaBridge 163:e59c8e839560 10562 /* Note: on this STM32 serie, there is no flag ADC group regular */
AnnaBridge 163:e59c8e839560 10563 /* end of unitary conversion. */
AnnaBridge 163:e59c8e839560 10564 /* Flag noted as "EOC" is corresponding to flag "EOS" */
AnnaBridge 163:e59c8e839560 10565 /* in other STM32 families). */
AnnaBridge 163:e59c8e839560 10566 return (READ_BIT(ADCx->SR, LL_ADC_FLAG_EOS) == (LL_ADC_FLAG_EOS));
AnnaBridge 163:e59c8e839560 10567 }
AnnaBridge 163:e59c8e839560 10568
AnnaBridge 163:e59c8e839560 10569
AnnaBridge 163:e59c8e839560 10570 /**
AnnaBridge 163:e59c8e839560 10571 * @brief Get flag ADC group injected end of sequence conversions.
AnnaBridge 163:e59c8e839560 10572 * @rmtoll SR JEOC LL_ADC_IsActiveFlag_JEOS
AnnaBridge 163:e59c8e839560 10573 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10574 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 10575 */
AnnaBridge 163:e59c8e839560 10576 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10577 {
AnnaBridge 163:e59c8e839560 10578 /* Note: on this STM32 serie, there is no flag ADC group injected */
AnnaBridge 163:e59c8e839560 10579 /* end of unitary conversion. */
AnnaBridge 163:e59c8e839560 10580 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
AnnaBridge 163:e59c8e839560 10581 /* in other STM32 families). */
AnnaBridge 163:e59c8e839560 10582 return (READ_BIT(ADCx->SR, LL_ADC_FLAG_JEOS) == (LL_ADC_FLAG_JEOS));
AnnaBridge 163:e59c8e839560 10583 }
AnnaBridge 163:e59c8e839560 10584
AnnaBridge 163:e59c8e839560 10585 /**
AnnaBridge 163:e59c8e839560 10586 * @brief Get flag ADC analog watchdog 1 flag
AnnaBridge 163:e59c8e839560 10587 * @rmtoll SR AWD LL_ADC_IsActiveFlag_AWD1
AnnaBridge 163:e59c8e839560 10588 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10589 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 10590 */
AnnaBridge 163:e59c8e839560 10591 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10592 {
AnnaBridge 163:e59c8e839560 10593 return (READ_BIT(ADCx->SR, LL_ADC_FLAG_AWD1) == (LL_ADC_FLAG_AWD1));
AnnaBridge 163:e59c8e839560 10594 }
AnnaBridge 163:e59c8e839560 10595
AnnaBridge 163:e59c8e839560 10596 /**
AnnaBridge 163:e59c8e839560 10597 * @brief Clear flag ADC group regular end of sequence conversions.
AnnaBridge 163:e59c8e839560 10598 * @rmtoll SR EOC LL_ADC_ClearFlag_EOS
AnnaBridge 163:e59c8e839560 10599 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10600 * @retval None
AnnaBridge 163:e59c8e839560 10601 */
AnnaBridge 163:e59c8e839560 10602 __STATIC_INLINE void LL_ADC_ClearFlag_EOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10603 {
AnnaBridge 163:e59c8e839560 10604 /* Note: on this STM32 serie, there is no flag ADC group regular */
AnnaBridge 163:e59c8e839560 10605 /* end of unitary conversion. */
AnnaBridge 163:e59c8e839560 10606 /* Flag noted as "EOC" is corresponding to flag "EOS" */
AnnaBridge 163:e59c8e839560 10607 /* in other STM32 families). */
AnnaBridge 163:e59c8e839560 10608 WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_EOS);
AnnaBridge 163:e59c8e839560 10609 }
AnnaBridge 163:e59c8e839560 10610
AnnaBridge 163:e59c8e839560 10611
AnnaBridge 163:e59c8e839560 10612 /**
AnnaBridge 163:e59c8e839560 10613 * @brief Clear flag ADC group injected end of sequence conversions.
AnnaBridge 163:e59c8e839560 10614 * @rmtoll SR JEOC LL_ADC_ClearFlag_JEOS
AnnaBridge 163:e59c8e839560 10615 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10616 * @retval None
AnnaBridge 163:e59c8e839560 10617 */
AnnaBridge 163:e59c8e839560 10618 __STATIC_INLINE void LL_ADC_ClearFlag_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10619 {
AnnaBridge 163:e59c8e839560 10620 /* Note: on this STM32 serie, there is no flag ADC group injected */
AnnaBridge 163:e59c8e839560 10621 /* end of unitary conversion. */
AnnaBridge 163:e59c8e839560 10622 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
AnnaBridge 163:e59c8e839560 10623 /* in other STM32 families). */
AnnaBridge 163:e59c8e839560 10624 WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_JEOS);
AnnaBridge 163:e59c8e839560 10625 }
AnnaBridge 163:e59c8e839560 10626
AnnaBridge 163:e59c8e839560 10627 /**
AnnaBridge 163:e59c8e839560 10628 * @brief Clear flag ADC analog watchdog 1.
AnnaBridge 163:e59c8e839560 10629 * @rmtoll SR AWD LL_ADC_ClearFlag_AWD1
AnnaBridge 163:e59c8e839560 10630 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10631 * @retval None
AnnaBridge 163:e59c8e839560 10632 */
AnnaBridge 163:e59c8e839560 10633 __STATIC_INLINE void LL_ADC_ClearFlag_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10634 {
AnnaBridge 163:e59c8e839560 10635 WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_AWD1);
AnnaBridge 163:e59c8e839560 10636 }
AnnaBridge 163:e59c8e839560 10637
AnnaBridge 163:e59c8e839560 10638 /**
AnnaBridge 163:e59c8e839560 10639 * @}
AnnaBridge 163:e59c8e839560 10640 */
AnnaBridge 163:e59c8e839560 10641
AnnaBridge 163:e59c8e839560 10642 /** @defgroup ADC_LL_EF_IT_Management ADC IT management
AnnaBridge 163:e59c8e839560 10643 * @{
AnnaBridge 163:e59c8e839560 10644 */
AnnaBridge 163:e59c8e839560 10645
AnnaBridge 163:e59c8e839560 10646 /**
AnnaBridge 163:e59c8e839560 10647 * @brief Enable interruption ADC group regular end of sequence conversions.
AnnaBridge 163:e59c8e839560 10648 * @rmtoll CR1 EOCIE LL_ADC_EnableIT_EOS
AnnaBridge 163:e59c8e839560 10649 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10650 * @retval None
AnnaBridge 163:e59c8e839560 10651 */
AnnaBridge 163:e59c8e839560 10652 __STATIC_INLINE void LL_ADC_EnableIT_EOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10653 {
AnnaBridge 163:e59c8e839560 10654 /* Note: on this STM32 serie, there is no flag ADC group regular */
AnnaBridge 163:e59c8e839560 10655 /* end of unitary conversion. */
AnnaBridge 163:e59c8e839560 10656 /* Flag noted as "EOC" is corresponding to flag "EOS" */
AnnaBridge 163:e59c8e839560 10657 /* in other STM32 families). */
AnnaBridge 163:e59c8e839560 10658 SET_BIT(ADCx->CR1, ADC_CR1_EOCIE);
AnnaBridge 163:e59c8e839560 10659 }
AnnaBridge 163:e59c8e839560 10660
AnnaBridge 163:e59c8e839560 10661
AnnaBridge 163:e59c8e839560 10662 /**
AnnaBridge 163:e59c8e839560 10663 * @brief Enable interruption ADC group injected end of sequence conversions.
AnnaBridge 163:e59c8e839560 10664 * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS
AnnaBridge 163:e59c8e839560 10665 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10666 * @retval None
AnnaBridge 163:e59c8e839560 10667 */
AnnaBridge 163:e59c8e839560 10668 __STATIC_INLINE void LL_ADC_EnableIT_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10669 {
AnnaBridge 163:e59c8e839560 10670 /* Note: on this STM32 serie, there is no flag ADC group injected */
AnnaBridge 163:e59c8e839560 10671 /* end of unitary conversion. */
AnnaBridge 163:e59c8e839560 10672 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
AnnaBridge 163:e59c8e839560 10673 /* in other STM32 families). */
AnnaBridge 163:e59c8e839560 10674 SET_BIT(ADCx->CR1, LL_ADC_IT_JEOS);
AnnaBridge 163:e59c8e839560 10675 }
AnnaBridge 163:e59c8e839560 10676
AnnaBridge 163:e59c8e839560 10677 /**
AnnaBridge 163:e59c8e839560 10678 * @brief Enable interruption ADC analog watchdog 1.
AnnaBridge 163:e59c8e839560 10679 * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1
AnnaBridge 163:e59c8e839560 10680 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10681 * @retval None
AnnaBridge 163:e59c8e839560 10682 */
AnnaBridge 163:e59c8e839560 10683 __STATIC_INLINE void LL_ADC_EnableIT_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10684 {
AnnaBridge 163:e59c8e839560 10685 SET_BIT(ADCx->CR1, LL_ADC_IT_AWD1);
AnnaBridge 163:e59c8e839560 10686 }
AnnaBridge 163:e59c8e839560 10687
AnnaBridge 163:e59c8e839560 10688 /**
AnnaBridge 163:e59c8e839560 10689 * @brief Disable interruption ADC group regular end of sequence conversions.
AnnaBridge 163:e59c8e839560 10690 * @rmtoll CR1 EOCIE LL_ADC_DisableIT_EOS
AnnaBridge 163:e59c8e839560 10691 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10692 * @retval None
AnnaBridge 163:e59c8e839560 10693 */
AnnaBridge 163:e59c8e839560 10694 __STATIC_INLINE void LL_ADC_DisableIT_EOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10695 {
AnnaBridge 163:e59c8e839560 10696 /* Note: on this STM32 serie, there is no flag ADC group regular */
AnnaBridge 163:e59c8e839560 10697 /* end of unitary conversion. */
AnnaBridge 163:e59c8e839560 10698 /* Flag noted as "EOC" is corresponding to flag "EOS" */
AnnaBridge 163:e59c8e839560 10699 /* in other STM32 families). */
AnnaBridge 163:e59c8e839560 10700 CLEAR_BIT(ADCx->CR1, ADC_CR1_EOCIE);
AnnaBridge 163:e59c8e839560 10701 }
AnnaBridge 163:e59c8e839560 10702
AnnaBridge 163:e59c8e839560 10703
AnnaBridge 163:e59c8e839560 10704 /**
AnnaBridge 163:e59c8e839560 10705 * @brief Disable interruption ADC group injected end of sequence conversions.
AnnaBridge 163:e59c8e839560 10706 * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS
AnnaBridge 163:e59c8e839560 10707 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10708 * @retval None
AnnaBridge 163:e59c8e839560 10709 */
AnnaBridge 163:e59c8e839560 10710 __STATIC_INLINE void LL_ADC_DisableIT_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10711 {
AnnaBridge 163:e59c8e839560 10712 /* Note: on this STM32 serie, there is no flag ADC group injected */
AnnaBridge 163:e59c8e839560 10713 /* end of unitary conversion. */
AnnaBridge 163:e59c8e839560 10714 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
AnnaBridge 163:e59c8e839560 10715 /* in other STM32 families). */
AnnaBridge 163:e59c8e839560 10716 CLEAR_BIT(ADCx->CR1, LL_ADC_IT_JEOS);
AnnaBridge 163:e59c8e839560 10717 }
AnnaBridge 163:e59c8e839560 10718
AnnaBridge 163:e59c8e839560 10719 /**
AnnaBridge 163:e59c8e839560 10720 * @brief Disable interruption ADC analog watchdog 1.
AnnaBridge 163:e59c8e839560 10721 * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1
AnnaBridge 163:e59c8e839560 10722 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10723 * @retval None
AnnaBridge 163:e59c8e839560 10724 */
AnnaBridge 163:e59c8e839560 10725 __STATIC_INLINE void LL_ADC_DisableIT_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10726 {
AnnaBridge 163:e59c8e839560 10727 CLEAR_BIT(ADCx->CR1, LL_ADC_IT_AWD1);
AnnaBridge 163:e59c8e839560 10728 }
AnnaBridge 163:e59c8e839560 10729
AnnaBridge 163:e59c8e839560 10730 /**
AnnaBridge 163:e59c8e839560 10731 * @brief Get state of interruption ADC group regular end of sequence conversions
AnnaBridge 163:e59c8e839560 10732 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 10733 * @rmtoll CR1 EOCIE LL_ADC_IsEnabledIT_EOS
AnnaBridge 163:e59c8e839560 10734 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10735 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 10736 */
AnnaBridge 163:e59c8e839560 10737 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10738 {
AnnaBridge 163:e59c8e839560 10739 /* Note: on this STM32 serie, there is no flag ADC group regular */
AnnaBridge 163:e59c8e839560 10740 /* end of unitary conversion. */
AnnaBridge 163:e59c8e839560 10741 /* Flag noted as "EOC" is corresponding to flag "EOS" */
AnnaBridge 163:e59c8e839560 10742 /* in other STM32 families). */
AnnaBridge 163:e59c8e839560 10743 return (READ_BIT(ADCx->CR1, LL_ADC_IT_EOS) == (LL_ADC_IT_EOS));
AnnaBridge 163:e59c8e839560 10744 }
AnnaBridge 163:e59c8e839560 10745
AnnaBridge 163:e59c8e839560 10746
AnnaBridge 163:e59c8e839560 10747 /**
AnnaBridge 163:e59c8e839560 10748 * @brief Get state of interruption ADC group injected end of sequence conversions
AnnaBridge 163:e59c8e839560 10749 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 10750 * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS
AnnaBridge 163:e59c8e839560 10751 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10752 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 10753 */
AnnaBridge 163:e59c8e839560 10754 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10755 {
AnnaBridge 163:e59c8e839560 10756 /* Note: on this STM32 serie, there is no flag ADC group injected */
AnnaBridge 163:e59c8e839560 10757 /* end of unitary conversion. */
AnnaBridge 163:e59c8e839560 10758 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
AnnaBridge 163:e59c8e839560 10759 /* in other STM32 families). */
AnnaBridge 163:e59c8e839560 10760 return (READ_BIT(ADCx->CR1, LL_ADC_IT_JEOS) == (LL_ADC_IT_JEOS));
AnnaBridge 163:e59c8e839560 10761 }
AnnaBridge 163:e59c8e839560 10762
AnnaBridge 163:e59c8e839560 10763 /**
AnnaBridge 163:e59c8e839560 10764 * @brief Get state of interruption ADC analog watchdog 1
AnnaBridge 163:e59c8e839560 10765 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 163:e59c8e839560 10766 * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1
AnnaBridge 163:e59c8e839560 10767 * @param ADCx ADC instance
AnnaBridge 163:e59c8e839560 10768 * @retval State of bit (1 or 0).
AnnaBridge 163:e59c8e839560 10769 */
AnnaBridge 163:e59c8e839560 10770 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 163:e59c8e839560 10771 {
AnnaBridge 163:e59c8e839560 10772 return (READ_BIT(ADCx->CR1, LL_ADC_IT_AWD1) == (LL_ADC_IT_AWD1));
AnnaBridge 163:e59c8e839560 10773 }
AnnaBridge 163:e59c8e839560 10774
AnnaBridge 163:e59c8e839560 10775 /**
AnnaBridge 163:e59c8e839560 10776 * @}
AnnaBridge 163:e59c8e839560 10777 */
AnnaBridge 163:e59c8e839560 10778
AnnaBridge 163:e59c8e839560 10779 #if defined(USE_FULL_LL_DRIVER)
AnnaBridge 163:e59c8e839560 10780 /** @defgroup ADC_LL_EF_Init Initialization and de-initialization functions
AnnaBridge 163:e59c8e839560 10781 * @{
AnnaBridge 163:e59c8e839560 10782 */
AnnaBridge 163:e59c8e839560 10783
AnnaBridge 163:e59c8e839560 10784 /* Initialization of some features of ADC common parameters and multimode */
AnnaBridge 163:e59c8e839560 10785 /* Note: On STM32F37x ADC, there is no ADC common initialization */
AnnaBridge 163:e59c8e839560 10786 /* function. */
AnnaBridge 163:e59c8e839560 10787 ErrorStatus LL_ADC_CommonDeInit(ADC_Common_TypeDef *ADCxy_COMMON);
AnnaBridge 163:e59c8e839560 10788
AnnaBridge 163:e59c8e839560 10789 /* De-initialization of ADC instance, ADC group regular and ADC group injected */
AnnaBridge 163:e59c8e839560 10790 /* (availability of ADC group injected depends on STM32 families) */
AnnaBridge 163:e59c8e839560 10791 ErrorStatus LL_ADC_DeInit(ADC_TypeDef *ADCx);
AnnaBridge 163:e59c8e839560 10792
AnnaBridge 163:e59c8e839560 10793 /* Initialization of some features of ADC instance */
AnnaBridge 163:e59c8e839560 10794 ErrorStatus LL_ADC_Init(ADC_TypeDef *ADCx, LL_ADC_InitTypeDef *ADC_InitStruct);
AnnaBridge 163:e59c8e839560 10795 void LL_ADC_StructInit(LL_ADC_InitTypeDef *ADC_InitStruct);
AnnaBridge 163:e59c8e839560 10796
AnnaBridge 163:e59c8e839560 10797 /* Initialization of some features of ADC instance and ADC group regular */
AnnaBridge 163:e59c8e839560 10798 ErrorStatus LL_ADC_REG_Init(ADC_TypeDef *ADCx, LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct);
AnnaBridge 163:e59c8e839560 10799 void LL_ADC_REG_StructInit(LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct);
AnnaBridge 163:e59c8e839560 10800
AnnaBridge 163:e59c8e839560 10801 /* Initialization of some features of ADC instance and ADC group injected */
AnnaBridge 163:e59c8e839560 10802 ErrorStatus LL_ADC_INJ_Init(ADC_TypeDef *ADCx, LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct);
AnnaBridge 163:e59c8e839560 10803 void LL_ADC_INJ_StructInit(LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct);
AnnaBridge 163:e59c8e839560 10804
AnnaBridge 163:e59c8e839560 10805 /**
AnnaBridge 163:e59c8e839560 10806 * @}
AnnaBridge 163:e59c8e839560 10807 */
AnnaBridge 163:e59c8e839560 10808 #endif /* USE_FULL_LL_DRIVER */
AnnaBridge 163:e59c8e839560 10809
AnnaBridge 163:e59c8e839560 10810 /**
AnnaBridge 163:e59c8e839560 10811 * @}
AnnaBridge 163:e59c8e839560 10812 */
AnnaBridge 163:e59c8e839560 10813
AnnaBridge 163:e59c8e839560 10814 /**
AnnaBridge 163:e59c8e839560 10815 * @}
AnnaBridge 163:e59c8e839560 10816 */
AnnaBridge 163:e59c8e839560 10817
AnnaBridge 163:e59c8e839560 10818 #endif /* ADC1 */
AnnaBridge 163:e59c8e839560 10819
AnnaBridge 163:e59c8e839560 10820
AnnaBridge 163:e59c8e839560 10821 #endif /* STM32F373xC || STM32F378xx */
AnnaBridge 163:e59c8e839560 10822
AnnaBridge 163:e59c8e839560 10823 /**
AnnaBridge 163:e59c8e839560 10824 * @}
AnnaBridge 163:e59c8e839560 10825 */
AnnaBridge 163:e59c8e839560 10826
AnnaBridge 163:e59c8e839560 10827 #ifdef __cplusplus
AnnaBridge 163:e59c8e839560 10828 }
AnnaBridge 163:e59c8e839560 10829 #endif
AnnaBridge 163:e59c8e839560 10830
AnnaBridge 163:e59c8e839560 10831 #endif /* __STM32F3xx_LL_ADC_H */
AnnaBridge 163:e59c8e839560 10832
AnnaBridge 163:e59c8e839560 10833 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/