Initial commit

Dependencies:   FastPWM

Committer:
lypinator
Date:
Wed Sep 16 01:11:49 2020 +0000
Revision:
0:bb348c97df44
Added PWM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lypinator 0:bb348c97df44 1 /**
lypinator 0:bb348c97df44 2 ******************************************************************************
lypinator 0:bb348c97df44 3 * @file stm32f4xx_ll_adc.h
lypinator 0:bb348c97df44 4 * @author MCD Application Team
lypinator 0:bb348c97df44 5 * @brief Header file of ADC LL module.
lypinator 0:bb348c97df44 6 ******************************************************************************
lypinator 0:bb348c97df44 7 * @attention
lypinator 0:bb348c97df44 8 *
lypinator 0:bb348c97df44 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
lypinator 0:bb348c97df44 10 *
lypinator 0:bb348c97df44 11 * Redistribution and use in source and binary forms, with or without modification,
lypinator 0:bb348c97df44 12 * are permitted provided that the following conditions are met:
lypinator 0:bb348c97df44 13 * 1. Redistributions of source code must retain the above copyright notice,
lypinator 0:bb348c97df44 14 * this list of conditions and the following disclaimer.
lypinator 0:bb348c97df44 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
lypinator 0:bb348c97df44 16 * this list of conditions and the following disclaimer in the documentation
lypinator 0:bb348c97df44 17 * and/or other materials provided with the distribution.
lypinator 0:bb348c97df44 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
lypinator 0:bb348c97df44 19 * may be used to endorse or promote products derived from this software
lypinator 0:bb348c97df44 20 * without specific prior written permission.
lypinator 0:bb348c97df44 21 *
lypinator 0:bb348c97df44 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
lypinator 0:bb348c97df44 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
lypinator 0:bb348c97df44 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
lypinator 0:bb348c97df44 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
lypinator 0:bb348c97df44 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
lypinator 0:bb348c97df44 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
lypinator 0:bb348c97df44 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
lypinator 0:bb348c97df44 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
lypinator 0:bb348c97df44 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
lypinator 0:bb348c97df44 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
lypinator 0:bb348c97df44 32 *
lypinator 0:bb348c97df44 33 ******************************************************************************
lypinator 0:bb348c97df44 34 */
lypinator 0:bb348c97df44 35
lypinator 0:bb348c97df44 36 /* Define to prevent recursive inclusion -------------------------------------*/
lypinator 0:bb348c97df44 37 #ifndef __STM32F4xx_LL_ADC_H
lypinator 0:bb348c97df44 38 #define __STM32F4xx_LL_ADC_H
lypinator 0:bb348c97df44 39
lypinator 0:bb348c97df44 40 #ifdef __cplusplus
lypinator 0:bb348c97df44 41 extern "C" {
lypinator 0:bb348c97df44 42 #endif
lypinator 0:bb348c97df44 43
lypinator 0:bb348c97df44 44 /* Includes ------------------------------------------------------------------*/
lypinator 0:bb348c97df44 45 #include "stm32f4xx.h"
lypinator 0:bb348c97df44 46
lypinator 0:bb348c97df44 47 /** @addtogroup STM32F4xx_LL_Driver
lypinator 0:bb348c97df44 48 * @{
lypinator 0:bb348c97df44 49 */
lypinator 0:bb348c97df44 50
lypinator 0:bb348c97df44 51 #if defined (ADC1) || defined (ADC2) || defined (ADC3)
lypinator 0:bb348c97df44 52
lypinator 0:bb348c97df44 53 /** @defgroup ADC_LL ADC
lypinator 0:bb348c97df44 54 * @{
lypinator 0:bb348c97df44 55 */
lypinator 0:bb348c97df44 56
lypinator 0:bb348c97df44 57 /* Private types -------------------------------------------------------------*/
lypinator 0:bb348c97df44 58 /* Private variables ---------------------------------------------------------*/
lypinator 0:bb348c97df44 59
lypinator 0:bb348c97df44 60 /* Private constants ---------------------------------------------------------*/
lypinator 0:bb348c97df44 61 /** @defgroup ADC_LL_Private_Constants ADC Private Constants
lypinator 0:bb348c97df44 62 * @{
lypinator 0:bb348c97df44 63 */
lypinator 0:bb348c97df44 64
lypinator 0:bb348c97df44 65 /* Internal mask for ADC group regular sequencer: */
lypinator 0:bb348c97df44 66 /* To select into literal LL_ADC_REG_RANK_x the relevant bits for: */
lypinator 0:bb348c97df44 67 /* - sequencer register offset */
lypinator 0:bb348c97df44 68 /* - sequencer rank bits position into the selected register */
lypinator 0:bb348c97df44 69
lypinator 0:bb348c97df44 70 /* Internal register offset for ADC group regular sequencer configuration */
lypinator 0:bb348c97df44 71 /* (offset placed into a spare area of literal definition) */
lypinator 0:bb348c97df44 72 #define ADC_SQR1_REGOFFSET 0x00000000U
lypinator 0:bb348c97df44 73 #define ADC_SQR2_REGOFFSET 0x00000100U
lypinator 0:bb348c97df44 74 #define ADC_SQR3_REGOFFSET 0x00000200U
lypinator 0:bb348c97df44 75 #define ADC_SQR4_REGOFFSET 0x00000300U
lypinator 0:bb348c97df44 76
lypinator 0:bb348c97df44 77 #define ADC_REG_SQRX_REGOFFSET_MASK (ADC_SQR1_REGOFFSET | ADC_SQR2_REGOFFSET | ADC_SQR3_REGOFFSET | ADC_SQR4_REGOFFSET)
lypinator 0:bb348c97df44 78 #define ADC_REG_RANK_ID_SQRX_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0)
lypinator 0:bb348c97df44 79
lypinator 0:bb348c97df44 80 /* Definition of ADC group regular sequencer bits information to be inserted */
lypinator 0:bb348c97df44 81 /* into ADC group regular sequencer ranks literals definition. */
lypinator 0:bb348c97df44 82 #define ADC_REG_RANK_1_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ1) */
lypinator 0:bb348c97df44 83 #define ADC_REG_RANK_2_SQRX_BITOFFSET_POS ( 5U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ2) */
lypinator 0:bb348c97df44 84 #define ADC_REG_RANK_3_SQRX_BITOFFSET_POS (10U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ3) */
lypinator 0:bb348c97df44 85 #define ADC_REG_RANK_4_SQRX_BITOFFSET_POS (15U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ4) */
lypinator 0:bb348c97df44 86 #define ADC_REG_RANK_5_SQRX_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ5) */
lypinator 0:bb348c97df44 87 #define ADC_REG_RANK_6_SQRX_BITOFFSET_POS (25U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ6) */
lypinator 0:bb348c97df44 88 #define ADC_REG_RANK_7_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ7) */
lypinator 0:bb348c97df44 89 #define ADC_REG_RANK_8_SQRX_BITOFFSET_POS ( 5U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ8) */
lypinator 0:bb348c97df44 90 #define ADC_REG_RANK_9_SQRX_BITOFFSET_POS (10U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ9) */
lypinator 0:bb348c97df44 91 #define ADC_REG_RANK_10_SQRX_BITOFFSET_POS (15U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ10) */
lypinator 0:bb348c97df44 92 #define ADC_REG_RANK_11_SQRX_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ11) */
lypinator 0:bb348c97df44 93 #define ADC_REG_RANK_12_SQRX_BITOFFSET_POS (25U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ12) */
lypinator 0:bb348c97df44 94 #define ADC_REG_RANK_13_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ13) */
lypinator 0:bb348c97df44 95 #define ADC_REG_RANK_14_SQRX_BITOFFSET_POS ( 5U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ14) */
lypinator 0:bb348c97df44 96 #define ADC_REG_RANK_15_SQRX_BITOFFSET_POS (10U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ15) */
lypinator 0:bb348c97df44 97 #define ADC_REG_RANK_16_SQRX_BITOFFSET_POS (15U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ16) */
lypinator 0:bb348c97df44 98
lypinator 0:bb348c97df44 99 /* Internal mask for ADC group injected sequencer: */
lypinator 0:bb348c97df44 100 /* To select into literal LL_ADC_INJ_RANK_x the relevant bits for: */
lypinator 0:bb348c97df44 101 /* - data register offset */
lypinator 0:bb348c97df44 102 /* - offset register offset */
lypinator 0:bb348c97df44 103 /* - sequencer rank bits position into the selected register */
lypinator 0:bb348c97df44 104
lypinator 0:bb348c97df44 105 /* Internal register offset for ADC group injected data register */
lypinator 0:bb348c97df44 106 /* (offset placed into a spare area of literal definition) */
lypinator 0:bb348c97df44 107 #define ADC_JDR1_REGOFFSET 0x00000000U
lypinator 0:bb348c97df44 108 #define ADC_JDR2_REGOFFSET 0x00000100U
lypinator 0:bb348c97df44 109 #define ADC_JDR3_REGOFFSET 0x00000200U
lypinator 0:bb348c97df44 110 #define ADC_JDR4_REGOFFSET 0x00000300U
lypinator 0:bb348c97df44 111
lypinator 0:bb348c97df44 112 /* Internal register offset for ADC group injected offset configuration */
lypinator 0:bb348c97df44 113 /* (offset placed into a spare area of literal definition) */
lypinator 0:bb348c97df44 114 #define ADC_JOFR1_REGOFFSET 0x00000000U
lypinator 0:bb348c97df44 115 #define ADC_JOFR2_REGOFFSET 0x00001000U
lypinator 0:bb348c97df44 116 #define ADC_JOFR3_REGOFFSET 0x00002000U
lypinator 0:bb348c97df44 117 #define ADC_JOFR4_REGOFFSET 0x00003000U
lypinator 0:bb348c97df44 118
lypinator 0:bb348c97df44 119 #define ADC_INJ_JDRX_REGOFFSET_MASK (ADC_JDR1_REGOFFSET | ADC_JDR2_REGOFFSET | ADC_JDR3_REGOFFSET | ADC_JDR4_REGOFFSET)
lypinator 0:bb348c97df44 120 #define ADC_INJ_JOFRX_REGOFFSET_MASK (ADC_JOFR1_REGOFFSET | ADC_JOFR2_REGOFFSET | ADC_JOFR3_REGOFFSET | ADC_JOFR4_REGOFFSET)
lypinator 0:bb348c97df44 121 #define ADC_INJ_RANK_ID_JSQR_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0)
lypinator 0:bb348c97df44 122
lypinator 0:bb348c97df44 123 /* Internal mask for ADC group regular trigger: */
lypinator 0:bb348c97df44 124 /* To select into literal LL_ADC_REG_TRIG_x the relevant bits for: */
lypinator 0:bb348c97df44 125 /* - regular trigger source */
lypinator 0:bb348c97df44 126 /* - regular trigger edge */
lypinator 0:bb348c97df44 127 #define ADC_REG_TRIG_EXT_EDGE_DEFAULT (ADC_CR2_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) */
lypinator 0:bb348c97df44 128
lypinator 0:bb348c97df44 129 /* Mask containing trigger source masks for each of possible */
lypinator 0:bb348c97df44 130 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
lypinator 0:bb348c97df44 131 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
lypinator 0:bb348c97df44 132 #define ADC_REG_TRIG_SOURCE_MASK (((LL_ADC_REG_TRIG_SOFTWARE & ADC_CR2_EXTSEL) >> (4U * 0U)) | \
lypinator 0:bb348c97df44 133 ((ADC_CR2_EXTSEL) >> (4U * 1U)) | \
lypinator 0:bb348c97df44 134 ((ADC_CR2_EXTSEL) >> (4U * 2U)) | \
lypinator 0:bb348c97df44 135 ((ADC_CR2_EXTSEL) >> (4U * 3U)))
lypinator 0:bb348c97df44 136
lypinator 0:bb348c97df44 137 /* Mask containing trigger edge masks for each of possible */
lypinator 0:bb348c97df44 138 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
lypinator 0:bb348c97df44 139 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
lypinator 0:bb348c97df44 140 #define ADC_REG_TRIG_EDGE_MASK (((LL_ADC_REG_TRIG_SOFTWARE & ADC_CR2_EXTEN) >> (4U * 0U)) | \
lypinator 0:bb348c97df44 141 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) >> (4U * 1U)) | \
lypinator 0:bb348c97df44 142 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) >> (4U * 2U)) | \
lypinator 0:bb348c97df44 143 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) >> (4U * 3U)))
lypinator 0:bb348c97df44 144
lypinator 0:bb348c97df44 145 /* Definition of ADC group regular trigger bits information. */
lypinator 0:bb348c97df44 146 #define ADC_REG_TRIG_EXTSEL_BITOFFSET_POS (24U) /* Value equivalent to POSITION_VAL(ADC_CR2_EXTSEL) */
lypinator 0:bb348c97df44 147 #define ADC_REG_TRIG_EXTEN_BITOFFSET_POS (28U) /* Value equivalent to POSITION_VAL(ADC_CR2_EXTEN) */
lypinator 0:bb348c97df44 148
lypinator 0:bb348c97df44 149
lypinator 0:bb348c97df44 150
lypinator 0:bb348c97df44 151 /* Internal mask for ADC group injected trigger: */
lypinator 0:bb348c97df44 152 /* To select into literal LL_ADC_INJ_TRIG_x the relevant bits for: */
lypinator 0:bb348c97df44 153 /* - injected trigger source */
lypinator 0:bb348c97df44 154 /* - injected trigger edge */
lypinator 0:bb348c97df44 155 #define ADC_INJ_TRIG_EXT_EDGE_DEFAULT (ADC_CR2_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) */
lypinator 0:bb348c97df44 156
lypinator 0:bb348c97df44 157 /* Mask containing trigger source masks for each of possible */
lypinator 0:bb348c97df44 158 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
lypinator 0:bb348c97df44 159 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
lypinator 0:bb348c97df44 160 #define ADC_INJ_TRIG_SOURCE_MASK (((LL_ADC_REG_TRIG_SOFTWARE & ADC_CR2_JEXTSEL) >> (4U * 0U)) | \
lypinator 0:bb348c97df44 161 ((ADC_CR2_JEXTSEL) >> (4U * 1U)) | \
lypinator 0:bb348c97df44 162 ((ADC_CR2_JEXTSEL) >> (4U * 2U)) | \
lypinator 0:bb348c97df44 163 ((ADC_CR2_JEXTSEL) >> (4U * 3U)))
lypinator 0:bb348c97df44 164
lypinator 0:bb348c97df44 165 /* Mask containing trigger edge masks for each of possible */
lypinator 0:bb348c97df44 166 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
lypinator 0:bb348c97df44 167 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
lypinator 0:bb348c97df44 168 #define ADC_INJ_TRIG_EDGE_MASK (((LL_ADC_INJ_TRIG_SOFTWARE & ADC_CR2_JEXTEN) >> (4U * 0U)) | \
lypinator 0:bb348c97df44 169 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) >> (4U * 1U)) | \
lypinator 0:bb348c97df44 170 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) >> (4U * 2U)) | \
lypinator 0:bb348c97df44 171 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) >> (4U * 3U)))
lypinator 0:bb348c97df44 172
lypinator 0:bb348c97df44 173 /* Definition of ADC group injected trigger bits information. */
lypinator 0:bb348c97df44 174 #define ADC_INJ_TRIG_EXTSEL_BITOFFSET_POS (16U) /* Value equivalent to POSITION_VAL(ADC_CR2_JEXTSEL) */
lypinator 0:bb348c97df44 175 #define ADC_INJ_TRIG_EXTEN_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_CR2_JEXTEN) */
lypinator 0:bb348c97df44 176
lypinator 0:bb348c97df44 177 /* Internal mask for ADC channel: */
lypinator 0:bb348c97df44 178 /* To select into literal LL_ADC_CHANNEL_x the relevant bits for: */
lypinator 0:bb348c97df44 179 /* - channel identifier defined by number */
lypinator 0:bb348c97df44 180 /* - channel differentiation between external channels (connected to */
lypinator 0:bb348c97df44 181 /* GPIO pins) and internal channels (connected to internal paths) */
lypinator 0:bb348c97df44 182 /* - channel sampling time defined by SMPRx register offset */
lypinator 0:bb348c97df44 183 /* and SMPx bits positions into SMPRx register */
lypinator 0:bb348c97df44 184 #define ADC_CHANNEL_ID_NUMBER_MASK (ADC_CR1_AWDCH)
lypinator 0:bb348c97df44 185 #define ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS ( 0U)/* Value equivalent to POSITION_VAL(ADC_CHANNEL_ID_NUMBER_MASK) */
lypinator 0:bb348c97df44 186 #define ADC_CHANNEL_ID_MASK (ADC_CHANNEL_ID_NUMBER_MASK | ADC_CHANNEL_ID_INTERNAL_CH_MASK)
lypinator 0:bb348c97df44 187 /* Equivalent mask of ADC_CHANNEL_NUMBER_MASK aligned on register LSB (bit 0) */
lypinator 0:bb348c97df44 188 #define ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 0x0000001FU /* Equivalent to shift: (ADC_CHANNEL_NUMBER_MASK >> POSITION_VAL(ADC_CHANNEL_NUMBER_MASK)) */
lypinator 0:bb348c97df44 189
lypinator 0:bb348c97df44 190 /* Channel differentiation between external and internal channels */
lypinator 0:bb348c97df44 191 #define ADC_CHANNEL_ID_INTERNAL_CH 0x80000000U /* Marker of internal channel */
lypinator 0:bb348c97df44 192 #define ADC_CHANNEL_ID_INTERNAL_CH_2 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 */
lypinator 0:bb348c97df44 193 #define ADC_CHANNEL_DIFFERENCIATION_TEMPSENSOR_VBAT 0x10000000U /* Dummy bit for driver internal usage, not used in ADC channel setting registers CR1 or SQRx */
lypinator 0:bb348c97df44 194 #define ADC_CHANNEL_ID_INTERNAL_CH_MASK (ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2 | ADC_CHANNEL_DIFFERENCIATION_TEMPSENSOR_VBAT)
lypinator 0:bb348c97df44 195
lypinator 0:bb348c97df44 196 /* Internal register offset for ADC channel sampling time configuration */
lypinator 0:bb348c97df44 197 /* (offset placed into a spare area of literal definition) */
lypinator 0:bb348c97df44 198 #define ADC_SMPR1_REGOFFSET 0x00000000U
lypinator 0:bb348c97df44 199 #define ADC_SMPR2_REGOFFSET 0x02000000U
lypinator 0:bb348c97df44 200 #define ADC_CHANNEL_SMPRX_REGOFFSET_MASK (ADC_SMPR1_REGOFFSET | ADC_SMPR2_REGOFFSET)
lypinator 0:bb348c97df44 201
lypinator 0:bb348c97df44 202 #define ADC_CHANNEL_SMPx_BITOFFSET_MASK 0x01F00000U
lypinator 0:bb348c97df44 203 #define ADC_CHANNEL_SMPx_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_CHANNEL_SMPx_BITOFFSET_MASK) */
lypinator 0:bb348c97df44 204
lypinator 0:bb348c97df44 205 /* Definition of channels ID number information to be inserted into */
lypinator 0:bb348c97df44 206 /* channels literals definition. */
lypinator 0:bb348c97df44 207 #define ADC_CHANNEL_0_NUMBER 0x00000000U
lypinator 0:bb348c97df44 208 #define ADC_CHANNEL_1_NUMBER ( ADC_CR1_AWDCH_0)
lypinator 0:bb348c97df44 209 #define ADC_CHANNEL_2_NUMBER ( ADC_CR1_AWDCH_1 )
lypinator 0:bb348c97df44 210 #define ADC_CHANNEL_3_NUMBER ( ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)
lypinator 0:bb348c97df44 211 #define ADC_CHANNEL_4_NUMBER ( ADC_CR1_AWDCH_2 )
lypinator 0:bb348c97df44 212 #define ADC_CHANNEL_5_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0)
lypinator 0:bb348c97df44 213 #define ADC_CHANNEL_6_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 )
lypinator 0:bb348c97df44 214 #define ADC_CHANNEL_7_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)
lypinator 0:bb348c97df44 215 #define ADC_CHANNEL_8_NUMBER ( ADC_CR1_AWDCH_3 )
lypinator 0:bb348c97df44 216 #define ADC_CHANNEL_9_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_0)
lypinator 0:bb348c97df44 217 #define ADC_CHANNEL_10_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 )
lypinator 0:bb348c97df44 218 #define ADC_CHANNEL_11_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)
lypinator 0:bb348c97df44 219 #define ADC_CHANNEL_12_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 )
lypinator 0:bb348c97df44 220 #define ADC_CHANNEL_13_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0)
lypinator 0:bb348c97df44 221 #define ADC_CHANNEL_14_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 )
lypinator 0:bb348c97df44 222 #define ADC_CHANNEL_15_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)
lypinator 0:bb348c97df44 223 #define ADC_CHANNEL_16_NUMBER (ADC_CR1_AWDCH_4 )
lypinator 0:bb348c97df44 224 #define ADC_CHANNEL_17_NUMBER (ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_0)
lypinator 0:bb348c97df44 225 #define ADC_CHANNEL_18_NUMBER (ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_1 )
lypinator 0:bb348c97df44 226
lypinator 0:bb348c97df44 227 /* Definition of channels sampling time information to be inserted into */
lypinator 0:bb348c97df44 228 /* channels literals definition. */
lypinator 0:bb348c97df44 229 #define ADC_CHANNEL_0_SMP (ADC_SMPR2_REGOFFSET | (( 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP0) */
lypinator 0:bb348c97df44 230 #define ADC_CHANNEL_1_SMP (ADC_SMPR2_REGOFFSET | (( 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP1) */
lypinator 0:bb348c97df44 231 #define ADC_CHANNEL_2_SMP (ADC_SMPR2_REGOFFSET | (( 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP2) */
lypinator 0:bb348c97df44 232 #define ADC_CHANNEL_3_SMP (ADC_SMPR2_REGOFFSET | (( 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP3) */
lypinator 0:bb348c97df44 233 #define ADC_CHANNEL_4_SMP (ADC_SMPR2_REGOFFSET | ((12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP4) */
lypinator 0:bb348c97df44 234 #define ADC_CHANNEL_5_SMP (ADC_SMPR2_REGOFFSET | ((15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP5) */
lypinator 0:bb348c97df44 235 #define ADC_CHANNEL_6_SMP (ADC_SMPR2_REGOFFSET | ((18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP6) */
lypinator 0:bb348c97df44 236 #define ADC_CHANNEL_7_SMP (ADC_SMPR2_REGOFFSET | ((21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP7) */
lypinator 0:bb348c97df44 237 #define ADC_CHANNEL_8_SMP (ADC_SMPR2_REGOFFSET | ((24U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP8) */
lypinator 0:bb348c97df44 238 #define ADC_CHANNEL_9_SMP (ADC_SMPR2_REGOFFSET | ((27U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP9) */
lypinator 0:bb348c97df44 239 #define ADC_CHANNEL_10_SMP (ADC_SMPR1_REGOFFSET | (( 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP10) */
lypinator 0:bb348c97df44 240 #define ADC_CHANNEL_11_SMP (ADC_SMPR1_REGOFFSET | (( 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP11) */
lypinator 0:bb348c97df44 241 #define ADC_CHANNEL_12_SMP (ADC_SMPR1_REGOFFSET | (( 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP12) */
lypinator 0:bb348c97df44 242 #define ADC_CHANNEL_13_SMP (ADC_SMPR1_REGOFFSET | (( 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP13) */
lypinator 0:bb348c97df44 243 #define ADC_CHANNEL_14_SMP (ADC_SMPR1_REGOFFSET | ((12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP14) */
lypinator 0:bb348c97df44 244 #define ADC_CHANNEL_15_SMP (ADC_SMPR1_REGOFFSET | ((15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP15) */
lypinator 0:bb348c97df44 245 #define ADC_CHANNEL_16_SMP (ADC_SMPR1_REGOFFSET | ((18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP16) */
lypinator 0:bb348c97df44 246 #define ADC_CHANNEL_17_SMP (ADC_SMPR1_REGOFFSET | ((21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP17) */
lypinator 0:bb348c97df44 247 #define ADC_CHANNEL_18_SMP (ADC_SMPR1_REGOFFSET | ((24U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP18) */
lypinator 0:bb348c97df44 248
lypinator 0:bb348c97df44 249 /* Internal mask for ADC analog watchdog: */
lypinator 0:bb348c97df44 250 /* To select into literals LL_ADC_AWD_CHANNELx_xxx the relevant bits for: */
lypinator 0:bb348c97df44 251 /* (concatenation of multiple bits used in different analog watchdogs, */
lypinator 0:bb348c97df44 252 /* (feature of several watchdogs not available on all STM32 families)). */
lypinator 0:bb348c97df44 253 /* - analog watchdog 1: monitored channel defined by number, */
lypinator 0:bb348c97df44 254 /* selection of ADC group (ADC groups regular and-or injected). */
lypinator 0:bb348c97df44 255
lypinator 0:bb348c97df44 256 /* Internal register offset for ADC analog watchdog channel configuration */
lypinator 0:bb348c97df44 257 #define ADC_AWD_CR1_REGOFFSET 0x00000000U
lypinator 0:bb348c97df44 258
lypinator 0:bb348c97df44 259 #define ADC_AWD_CRX_REGOFFSET_MASK (ADC_AWD_CR1_REGOFFSET)
lypinator 0:bb348c97df44 260
lypinator 0:bb348c97df44 261 #define ADC_AWD_CR1_CHANNEL_MASK (ADC_CR1_AWDCH | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL)
lypinator 0:bb348c97df44 262 #define ADC_AWD_CR_ALL_CHANNEL_MASK (ADC_AWD_CR1_CHANNEL_MASK)
lypinator 0:bb348c97df44 263
lypinator 0:bb348c97df44 264 /* Internal register offset for ADC analog watchdog threshold configuration */
lypinator 0:bb348c97df44 265 #define ADC_AWD_TR1_HIGH_REGOFFSET 0x00000000U
lypinator 0:bb348c97df44 266 #define ADC_AWD_TR1_LOW_REGOFFSET 0x00000001U
lypinator 0:bb348c97df44 267 #define ADC_AWD_TRX_REGOFFSET_MASK (ADC_AWD_TR1_HIGH_REGOFFSET | ADC_AWD_TR1_LOW_REGOFFSET)
lypinator 0:bb348c97df44 268
lypinator 0:bb348c97df44 269 /* ADC registers bits positions */
lypinator 0:bb348c97df44 270 #define ADC_CR1_RES_BITOFFSET_POS (24U) /* Value equivalent to POSITION_VAL(ADC_CR1_RES) */
lypinator 0:bb348c97df44 271 #define ADC_TR_HT_BITOFFSET_POS (16U) /* Value equivalent to POSITION_VAL(ADC_TR_HT) */
lypinator 0:bb348c97df44 272
lypinator 0:bb348c97df44 273 /* ADC internal channels related definitions */
lypinator 0:bb348c97df44 274 /* Internal voltage reference VrefInt */
lypinator 0:bb348c97df44 275 #define VREFINT_CAL_ADDR ((uint16_t*) (0x1FFF7A2AU)) /* 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). */
lypinator 0:bb348c97df44 276 #define VREFINT_CAL_VREF ( 3300U) /* Analog voltage reference (Vref+) value with which temperature sensor has been calibrated in production (tolerance: +-10 mV) (unit: mV). */
lypinator 0:bb348c97df44 277 /* Temperature sensor */
lypinator 0:bb348c97df44 278 #define TEMPSENSOR_CAL1_ADDR ((uint16_t*) (0x1FFF7A2CU)) /* Internal temperature sensor, address of parameter TS_CAL1: On STM32F4, temperature sensor ADC raw data acquired at temperature 30 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */
lypinator 0:bb348c97df44 279 #define TEMPSENSOR_CAL2_ADDR ((uint16_t*) (0x1FFF7A2EU)) /* Internal temperature sensor, address of parameter TS_CAL2: On STM32F4, temperature sensor ADC raw data acquired at temperature 110 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */
lypinator 0:bb348c97df44 280 #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). */
lypinator 0:bb348c97df44 281 #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). */
lypinator 0:bb348c97df44 282 #define TEMPSENSOR_CAL_VREFANALOG ( 3300U) /* Analog voltage reference (Vref+) voltage with which temperature sensor has been calibrated in production (+-10 mV) (unit: mV). */
lypinator 0:bb348c97df44 283
lypinator 0:bb348c97df44 284 /**
lypinator 0:bb348c97df44 285 * @}
lypinator 0:bb348c97df44 286 */
lypinator 0:bb348c97df44 287
lypinator 0:bb348c97df44 288
lypinator 0:bb348c97df44 289 /* Private macros ------------------------------------------------------------*/
lypinator 0:bb348c97df44 290 /** @defgroup ADC_LL_Private_Macros ADC Private Macros
lypinator 0:bb348c97df44 291 * @{
lypinator 0:bb348c97df44 292 */
lypinator 0:bb348c97df44 293
lypinator 0:bb348c97df44 294 /**
lypinator 0:bb348c97df44 295 * @brief Driver macro reserved for internal use: isolate bits with the
lypinator 0:bb348c97df44 296 * selected mask and shift them to the register LSB
lypinator 0:bb348c97df44 297 * (shift mask on register position bit 0).
lypinator 0:bb348c97df44 298 * @param __BITS__ Bits in register 32 bits
lypinator 0:bb348c97df44 299 * @param __MASK__ Mask in register 32 bits
lypinator 0:bb348c97df44 300 * @retval Bits in register 32 bits
lypinator 0:bb348c97df44 301 */
lypinator 0:bb348c97df44 302 #define __ADC_MASK_SHIFT(__BITS__, __MASK__) \
lypinator 0:bb348c97df44 303 (((__BITS__) & (__MASK__)) >> POSITION_VAL((__MASK__)))
lypinator 0:bb348c97df44 304
lypinator 0:bb348c97df44 305 /**
lypinator 0:bb348c97df44 306 * @brief Driver macro reserved for internal use: set a pointer to
lypinator 0:bb348c97df44 307 * a register from a register basis from which an offset
lypinator 0:bb348c97df44 308 * is applied.
lypinator 0:bb348c97df44 309 * @param __REG__ Register basis from which the offset is applied.
lypinator 0:bb348c97df44 310 * @param __REG_OFFFSET__ Offset to be applied (unit number of registers).
lypinator 0:bb348c97df44 311 * @retval Pointer to register address
lypinator 0:bb348c97df44 312 */
lypinator 0:bb348c97df44 313 #define __ADC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \
lypinator 0:bb348c97df44 314 ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U))))
lypinator 0:bb348c97df44 315
lypinator 0:bb348c97df44 316 /**
lypinator 0:bb348c97df44 317 * @}
lypinator 0:bb348c97df44 318 */
lypinator 0:bb348c97df44 319
lypinator 0:bb348c97df44 320
lypinator 0:bb348c97df44 321 /* Exported types ------------------------------------------------------------*/
lypinator 0:bb348c97df44 322 #if defined(USE_FULL_LL_DRIVER)
lypinator 0:bb348c97df44 323 /** @defgroup ADC_LL_ES_INIT ADC Exported Init structure
lypinator 0:bb348c97df44 324 * @{
lypinator 0:bb348c97df44 325 */
lypinator 0:bb348c97df44 326
lypinator 0:bb348c97df44 327 /**
lypinator 0:bb348c97df44 328 * @brief Structure definition of some features of ADC common parameters
lypinator 0:bb348c97df44 329 * and multimode
lypinator 0:bb348c97df44 330 * (all ADC instances belonging to the same ADC common instance).
lypinator 0:bb348c97df44 331 * @note The setting of these parameters by function @ref LL_ADC_CommonInit()
lypinator 0:bb348c97df44 332 * is conditioned to ADC instances state (all ADC instances
lypinator 0:bb348c97df44 333 * sharing the same ADC common instance):
lypinator 0:bb348c97df44 334 * All ADC instances sharing the same ADC common instance must be
lypinator 0:bb348c97df44 335 * disabled.
lypinator 0:bb348c97df44 336 */
lypinator 0:bb348c97df44 337 typedef struct
lypinator 0:bb348c97df44 338 {
lypinator 0:bb348c97df44 339 uint32_t CommonClock; /*!< Set parameter common to several ADC: Clock source and prescaler.
lypinator 0:bb348c97df44 340 This parameter can be a value of @ref ADC_LL_EC_COMMON_CLOCK_SOURCE
lypinator 0:bb348c97df44 341
lypinator 0:bb348c97df44 342 This feature can be modified afterwards using unitary function @ref LL_ADC_SetCommonClock(). */
lypinator 0:bb348c97df44 343
lypinator 0:bb348c97df44 344 #if defined(ADC_MULTIMODE_SUPPORT)
lypinator 0:bb348c97df44 345 uint32_t Multimode; /*!< Set ADC multimode configuration to operate in independent mode or multimode (for devices with several ADC instances).
lypinator 0:bb348c97df44 346 This parameter can be a value of @ref ADC_LL_EC_MULTI_MODE
lypinator 0:bb348c97df44 347
lypinator 0:bb348c97df44 348 This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultimode(). */
lypinator 0:bb348c97df44 349
lypinator 0:bb348c97df44 350 uint32_t MultiDMATransfer; /*!< Set ADC multimode conversion data transfer: no transfer or transfer by DMA.
lypinator 0:bb348c97df44 351 This parameter can be a value of @ref ADC_LL_EC_MULTI_DMA_TRANSFER
lypinator 0:bb348c97df44 352
lypinator 0:bb348c97df44 353 This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultiDMATransfer(). */
lypinator 0:bb348c97df44 354
lypinator 0:bb348c97df44 355 uint32_t MultiTwoSamplingDelay; /*!< Set ADC multimode delay between 2 sampling phases.
lypinator 0:bb348c97df44 356 This parameter can be a value of @ref ADC_LL_EC_MULTI_TWOSMP_DELAY
lypinator 0:bb348c97df44 357
lypinator 0:bb348c97df44 358 This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultiTwoSamplingDelay(). */
lypinator 0:bb348c97df44 359 #endif /* ADC_MULTIMODE_SUPPORT */
lypinator 0:bb348c97df44 360
lypinator 0:bb348c97df44 361 } LL_ADC_CommonInitTypeDef;
lypinator 0:bb348c97df44 362
lypinator 0:bb348c97df44 363 /**
lypinator 0:bb348c97df44 364 * @brief Structure definition of some features of ADC instance.
lypinator 0:bb348c97df44 365 * @note These parameters have an impact on ADC scope: ADC instance.
lypinator 0:bb348c97df44 366 * Affects both group regular and group injected (availability
lypinator 0:bb348c97df44 367 * of ADC group injected depends on STM32 families).
lypinator 0:bb348c97df44 368 * Refer to corresponding unitary functions into
lypinator 0:bb348c97df44 369 * @ref ADC_LL_EF_Configuration_ADC_Instance .
lypinator 0:bb348c97df44 370 * @note The setting of these parameters by function @ref LL_ADC_Init()
lypinator 0:bb348c97df44 371 * is conditioned to ADC state:
lypinator 0:bb348c97df44 372 * ADC instance must be disabled.
lypinator 0:bb348c97df44 373 * This condition is applied to all ADC features, for efficiency
lypinator 0:bb348c97df44 374 * and compatibility over all STM32 families. However, the different
lypinator 0:bb348c97df44 375 * features can be set under different ADC state conditions
lypinator 0:bb348c97df44 376 * (setting possible with ADC enabled without conversion on going,
lypinator 0:bb348c97df44 377 * ADC enabled with conversion on going, ...)
lypinator 0:bb348c97df44 378 * Each feature can be updated afterwards with a unitary function
lypinator 0:bb348c97df44 379 * and potentially with ADC in a different state than disabled,
lypinator 0:bb348c97df44 380 * refer to description of each function for setting
lypinator 0:bb348c97df44 381 * conditioned to ADC state.
lypinator 0:bb348c97df44 382 */
lypinator 0:bb348c97df44 383 typedef struct
lypinator 0:bb348c97df44 384 {
lypinator 0:bb348c97df44 385 uint32_t Resolution; /*!< Set ADC resolution.
lypinator 0:bb348c97df44 386 This parameter can be a value of @ref ADC_LL_EC_RESOLUTION
lypinator 0:bb348c97df44 387
lypinator 0:bb348c97df44 388 This feature can be modified afterwards using unitary function @ref LL_ADC_SetResolution(). */
lypinator 0:bb348c97df44 389
lypinator 0:bb348c97df44 390 uint32_t DataAlignment; /*!< Set ADC conversion data alignment.
lypinator 0:bb348c97df44 391 This parameter can be a value of @ref ADC_LL_EC_DATA_ALIGN
lypinator 0:bb348c97df44 392
lypinator 0:bb348c97df44 393 This feature can be modified afterwards using unitary function @ref LL_ADC_SetDataAlignment(). */
lypinator 0:bb348c97df44 394
lypinator 0:bb348c97df44 395 uint32_t SequencersScanMode; /*!< Set ADC scan selection.
lypinator 0:bb348c97df44 396 This parameter can be a value of @ref ADC_LL_EC_SCAN_SELECTION
lypinator 0:bb348c97df44 397
lypinator 0:bb348c97df44 398 This feature can be modified afterwards using unitary function @ref LL_ADC_SetSequencersScanMode(). */
lypinator 0:bb348c97df44 399
lypinator 0:bb348c97df44 400 } LL_ADC_InitTypeDef;
lypinator 0:bb348c97df44 401
lypinator 0:bb348c97df44 402 /**
lypinator 0:bb348c97df44 403 * @brief Structure definition of some features of ADC group regular.
lypinator 0:bb348c97df44 404 * @note These parameters have an impact on ADC scope: ADC group regular.
lypinator 0:bb348c97df44 405 * Refer to corresponding unitary functions into
lypinator 0:bb348c97df44 406 * @ref ADC_LL_EF_Configuration_ADC_Group_Regular
lypinator 0:bb348c97df44 407 * (functions with prefix "REG").
lypinator 0:bb348c97df44 408 * @note The setting of these parameters by function @ref LL_ADC_REG_Init()
lypinator 0:bb348c97df44 409 * is conditioned to ADC state:
lypinator 0:bb348c97df44 410 * ADC instance must be disabled.
lypinator 0:bb348c97df44 411 * This condition is applied to all ADC features, for efficiency
lypinator 0:bb348c97df44 412 * and compatibility over all STM32 families. However, the different
lypinator 0:bb348c97df44 413 * features can be set under different ADC state conditions
lypinator 0:bb348c97df44 414 * (setting possible with ADC enabled without conversion on going,
lypinator 0:bb348c97df44 415 * ADC enabled with conversion on going, ...)
lypinator 0:bb348c97df44 416 * Each feature can be updated afterwards with a unitary function
lypinator 0:bb348c97df44 417 * and potentially with ADC in a different state than disabled,
lypinator 0:bb348c97df44 418 * refer to description of each function for setting
lypinator 0:bb348c97df44 419 * conditioned to ADC state.
lypinator 0:bb348c97df44 420 */
lypinator 0:bb348c97df44 421 typedef struct
lypinator 0:bb348c97df44 422 {
lypinator 0:bb348c97df44 423 uint32_t TriggerSource; /*!< Set ADC group regular conversion trigger source: internal (SW start) or from external IP (timer event, external interrupt line).
lypinator 0:bb348c97df44 424 This parameter can be a value of @ref ADC_LL_EC_REG_TRIGGER_SOURCE
lypinator 0:bb348c97df44 425 @note On this STM32 serie, setting of external trigger edge is performed
lypinator 0:bb348c97df44 426 using function @ref LL_ADC_REG_StartConversionExtTrig().
lypinator 0:bb348c97df44 427
lypinator 0:bb348c97df44 428 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetTriggerSource(). */
lypinator 0:bb348c97df44 429
lypinator 0:bb348c97df44 430 uint32_t SequencerLength; /*!< Set ADC group regular sequencer length.
lypinator 0:bb348c97df44 431 This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_SCAN_LENGTH
lypinator 0:bb348c97df44 432 @note This parameter is discarded if scan mode is disabled (refer to parameter 'ADC_SequencersScanMode').
lypinator 0:bb348c97df44 433
lypinator 0:bb348c97df44 434 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerLength(). */
lypinator 0:bb348c97df44 435
lypinator 0:bb348c97df44 436 uint32_t SequencerDiscont; /*!< Set ADC group regular sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks.
lypinator 0:bb348c97df44 437 This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_DISCONT_MODE
lypinator 0:bb348c97df44 438 @note This parameter has an effect only if group regular sequencer is enabled
lypinator 0:bb348c97df44 439 (scan length of 2 ranks or more).
lypinator 0:bb348c97df44 440
lypinator 0:bb348c97df44 441 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerDiscont(). */
lypinator 0:bb348c97df44 442
lypinator 0:bb348c97df44 443 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).
lypinator 0:bb348c97df44 444 This parameter can be a value of @ref ADC_LL_EC_REG_CONTINUOUS_MODE
lypinator 0:bb348c97df44 445 Note: It is not possible to enable both ADC group regular continuous mode and discontinuous mode.
lypinator 0:bb348c97df44 446
lypinator 0:bb348c97df44 447 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetContinuousMode(). */
lypinator 0:bb348c97df44 448
lypinator 0:bb348c97df44 449 uint32_t DMATransfer; /*!< Set ADC group regular conversion data transfer: no transfer or transfer by DMA, and DMA requests mode.
lypinator 0:bb348c97df44 450 This parameter can be a value of @ref ADC_LL_EC_REG_DMA_TRANSFER
lypinator 0:bb348c97df44 451
lypinator 0:bb348c97df44 452 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetDMATransfer(). */
lypinator 0:bb348c97df44 453
lypinator 0:bb348c97df44 454 } LL_ADC_REG_InitTypeDef;
lypinator 0:bb348c97df44 455
lypinator 0:bb348c97df44 456 /**
lypinator 0:bb348c97df44 457 * @brief Structure definition of some features of ADC group injected.
lypinator 0:bb348c97df44 458 * @note These parameters have an impact on ADC scope: ADC group injected.
lypinator 0:bb348c97df44 459 * Refer to corresponding unitary functions into
lypinator 0:bb348c97df44 460 * @ref ADC_LL_EF_Configuration_ADC_Group_Regular
lypinator 0:bb348c97df44 461 * (functions with prefix "INJ").
lypinator 0:bb348c97df44 462 * @note The setting of these parameters by function @ref LL_ADC_INJ_Init()
lypinator 0:bb348c97df44 463 * is conditioned to ADC state:
lypinator 0:bb348c97df44 464 * ADC instance must be disabled.
lypinator 0:bb348c97df44 465 * This condition is applied to all ADC features, for efficiency
lypinator 0:bb348c97df44 466 * and compatibility over all STM32 families. However, the different
lypinator 0:bb348c97df44 467 * features can be set under different ADC state conditions
lypinator 0:bb348c97df44 468 * (setting possible with ADC enabled without conversion on going,
lypinator 0:bb348c97df44 469 * ADC enabled with conversion on going, ...)
lypinator 0:bb348c97df44 470 * Each feature can be updated afterwards with a unitary function
lypinator 0:bb348c97df44 471 * and potentially with ADC in a different state than disabled,
lypinator 0:bb348c97df44 472 * refer to description of each function for setting
lypinator 0:bb348c97df44 473 * conditioned to ADC state.
lypinator 0:bb348c97df44 474 */
lypinator 0:bb348c97df44 475 typedef struct
lypinator 0:bb348c97df44 476 {
lypinator 0:bb348c97df44 477 uint32_t TriggerSource; /*!< Set ADC group injected conversion trigger source: internal (SW start) or from external IP (timer event, external interrupt line).
lypinator 0:bb348c97df44 478 This parameter can be a value of @ref ADC_LL_EC_INJ_TRIGGER_SOURCE
lypinator 0:bb348c97df44 479 @note On this STM32 serie, setting of external trigger edge is performed
lypinator 0:bb348c97df44 480 using function @ref LL_ADC_INJ_StartConversionExtTrig().
lypinator 0:bb348c97df44 481
lypinator 0:bb348c97df44 482 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTriggerSource(). */
lypinator 0:bb348c97df44 483
lypinator 0:bb348c97df44 484 uint32_t SequencerLength; /*!< Set ADC group injected sequencer length.
lypinator 0:bb348c97df44 485 This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_SCAN_LENGTH
lypinator 0:bb348c97df44 486 @note This parameter is discarded if scan mode is disabled (refer to parameter 'ADC_SequencersScanMode').
lypinator 0:bb348c97df44 487
lypinator 0:bb348c97df44 488 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerLength(). */
lypinator 0:bb348c97df44 489
lypinator 0:bb348c97df44 490 uint32_t SequencerDiscont; /*!< Set ADC group injected sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks.
lypinator 0:bb348c97df44 491 This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_DISCONT_MODE
lypinator 0:bb348c97df44 492 @note This parameter has an effect only if group injected sequencer is enabled
lypinator 0:bb348c97df44 493 (scan length of 2 ranks or more).
lypinator 0:bb348c97df44 494
lypinator 0:bb348c97df44 495 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerDiscont(). */
lypinator 0:bb348c97df44 496
lypinator 0:bb348c97df44 497 uint32_t TrigAuto; /*!< Set ADC group injected conversion trigger: independent or from ADC group regular.
lypinator 0:bb348c97df44 498 This parameter can be a value of @ref ADC_LL_EC_INJ_TRIG_AUTO
lypinator 0:bb348c97df44 499 Note: This parameter must be set to set to independent trigger if injected trigger source is set to an external trigger.
lypinator 0:bb348c97df44 500
lypinator 0:bb348c97df44 501 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTrigAuto(). */
lypinator 0:bb348c97df44 502
lypinator 0:bb348c97df44 503 } LL_ADC_INJ_InitTypeDef;
lypinator 0:bb348c97df44 504
lypinator 0:bb348c97df44 505 /**
lypinator 0:bb348c97df44 506 * @}
lypinator 0:bb348c97df44 507 */
lypinator 0:bb348c97df44 508 #endif /* USE_FULL_LL_DRIVER */
lypinator 0:bb348c97df44 509
lypinator 0:bb348c97df44 510 /* Exported constants --------------------------------------------------------*/
lypinator 0:bb348c97df44 511 /** @defgroup ADC_LL_Exported_Constants ADC Exported Constants
lypinator 0:bb348c97df44 512 * @{
lypinator 0:bb348c97df44 513 */
lypinator 0:bb348c97df44 514
lypinator 0:bb348c97df44 515 /** @defgroup ADC_LL_EC_FLAG ADC flags
lypinator 0:bb348c97df44 516 * @brief Flags defines which can be used with LL_ADC_ReadReg function
lypinator 0:bb348c97df44 517 * @{
lypinator 0:bb348c97df44 518 */
lypinator 0:bb348c97df44 519 #define LL_ADC_FLAG_STRT ADC_SR_STRT /*!< ADC flag ADC group regular conversion start */
lypinator 0:bb348c97df44 520 #define LL_ADC_FLAG_EOCS ADC_SR_EOC /*!< ADC flag ADC group regular end of unitary conversion or sequence conversions (to configure flag of end of conversion, use function @ref LL_ADC_REG_SetFlagEndOfConversion() ) */
lypinator 0:bb348c97df44 521 #define LL_ADC_FLAG_OVR ADC_SR_OVR /*!< ADC flag ADC group regular overrun */
lypinator 0:bb348c97df44 522 #define LL_ADC_FLAG_JSTRT ADC_SR_JSTRT /*!< ADC flag ADC group injected conversion start */
lypinator 0:bb348c97df44 523 #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) */
lypinator 0:bb348c97df44 524 #define LL_ADC_FLAG_AWD1 ADC_SR_AWD /*!< ADC flag ADC analog watchdog 1 */
lypinator 0:bb348c97df44 525 #if defined(ADC_MULTIMODE_SUPPORT)
lypinator 0:bb348c97df44 526 #define LL_ADC_FLAG_EOCS_MST ADC_CSR_EOC1 /*!< ADC flag ADC multimode master group regular end of unitary conversion or sequence conversions (to configure flag of end of conversion, use function @ref LL_ADC_REG_SetFlagEndOfConversion() ) */
lypinator 0:bb348c97df44 527 #define LL_ADC_FLAG_EOCS_SLV1 ADC_CSR_EOC2 /*!< ADC flag ADC multimode slave 1 group regular end of unitary conversion or sequence conversions (to configure flag of end of conversion, use function @ref LL_ADC_REG_SetFlagEndOfConversion() ) */
lypinator 0:bb348c97df44 528 #define LL_ADC_FLAG_EOCS_SLV2 ADC_CSR_EOC3 /*!< ADC flag ADC multimode slave 2 group regular end of unitary conversion or sequence conversions (to configure flag of end of conversion, use function @ref LL_ADC_REG_SetFlagEndOfConversion() ) */
lypinator 0:bb348c97df44 529 #define LL_ADC_FLAG_OVR_MST ADC_CSR_OVR1 /*!< ADC flag ADC multimode master group regular overrun */
lypinator 0:bb348c97df44 530 #define LL_ADC_FLAG_OVR_SLV1 ADC_CSR_OVR2 /*!< ADC flag ADC multimode slave 1 group regular overrun */
lypinator 0:bb348c97df44 531 #define LL_ADC_FLAG_OVR_SLV2 ADC_CSR_OVR3 /*!< ADC flag ADC multimode slave 2 group regular overrun */
lypinator 0:bb348c97df44 532 #define LL_ADC_FLAG_JEOS_MST ADC_CSR_JEOC1 /*!< ADC flag ADC multimode master 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) */
lypinator 0:bb348c97df44 533 #define LL_ADC_FLAG_JEOS_SLV1 ADC_CSR_JEOC2 /*!< ADC flag ADC multimode slave 1 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) */
lypinator 0:bb348c97df44 534 #define LL_ADC_FLAG_JEOS_SLV2 ADC_CSR_JEOC3 /*!< ADC flag ADC multimode slave 2 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) */
lypinator 0:bb348c97df44 535 #define LL_ADC_FLAG_AWD1_MST ADC_CSR_AWD1 /*!< ADC flag ADC multimode master analog watchdog 1 of the ADC master */
lypinator 0:bb348c97df44 536 #define LL_ADC_FLAG_AWD1_SLV1 ADC_CSR_AWD2 /*!< ADC flag ADC multimode slave 1 analog watchdog 1 */
lypinator 0:bb348c97df44 537 #define LL_ADC_FLAG_AWD1_SLV2 ADC_CSR_AWD3 /*!< ADC flag ADC multimode slave 2 analog watchdog 1 */
lypinator 0:bb348c97df44 538 #endif
lypinator 0:bb348c97df44 539 /**
lypinator 0:bb348c97df44 540 * @}
lypinator 0:bb348c97df44 541 */
lypinator 0:bb348c97df44 542
lypinator 0:bb348c97df44 543 /** @defgroup ADC_LL_EC_IT ADC interruptions for configuration (interruption enable or disable)
lypinator 0:bb348c97df44 544 * @brief IT defines which can be used with LL_ADC_ReadReg and LL_ADC_WriteReg functions
lypinator 0:bb348c97df44 545 * @{
lypinator 0:bb348c97df44 546 */
lypinator 0:bb348c97df44 547 #define LL_ADC_IT_EOCS ADC_CR1_EOCIE /*!< ADC interruption ADC group regular end of unitary conversion or sequence conversions (to configure flag of end of conversion, use function @ref LL_ADC_REG_SetFlagEndOfConversion() ) */
lypinator 0:bb348c97df44 548 #define LL_ADC_IT_OVR ADC_CR1_OVRIE /*!< ADC interruption ADC group regular overrun */
lypinator 0:bb348c97df44 549 #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) */
lypinator 0:bb348c97df44 550 #define LL_ADC_IT_AWD1 ADC_CR1_AWDIE /*!< ADC interruption ADC analog watchdog 1 */
lypinator 0:bb348c97df44 551 /**
lypinator 0:bb348c97df44 552 * @}
lypinator 0:bb348c97df44 553 */
lypinator 0:bb348c97df44 554
lypinator 0:bb348c97df44 555 /** @defgroup ADC_LL_EC_REGISTERS ADC registers compliant with specific purpose
lypinator 0:bb348c97df44 556 * @{
lypinator 0:bb348c97df44 557 */
lypinator 0:bb348c97df44 558 /* List of ADC registers intended to be used (most commonly) with */
lypinator 0:bb348c97df44 559 /* DMA transfer. */
lypinator 0:bb348c97df44 560 /* Refer to function @ref LL_ADC_DMA_GetRegAddr(). */
lypinator 0:bb348c97df44 561 #define LL_ADC_DMA_REG_REGULAR_DATA 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() */
lypinator 0:bb348c97df44 562 #if defined(ADC_MULTIMODE_SUPPORT)
lypinator 0:bb348c97df44 563 #define LL_ADC_DMA_REG_REGULAR_DATA_MULTI 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() */
lypinator 0:bb348c97df44 564 #endif
lypinator 0:bb348c97df44 565 /**
lypinator 0:bb348c97df44 566 * @}
lypinator 0:bb348c97df44 567 */
lypinator 0:bb348c97df44 568
lypinator 0:bb348c97df44 569 /** @defgroup ADC_LL_EC_COMMON_CLOCK_SOURCE ADC common - Clock source
lypinator 0:bb348c97df44 570 * @{
lypinator 0:bb348c97df44 571 */
lypinator 0:bb348c97df44 572 #define LL_ADC_CLOCK_SYNC_PCLK_DIV2 0x00000000U /*!< ADC synchronous clock derived from AHB clock with prescaler division by 2 */
lypinator 0:bb348c97df44 573 #define LL_ADC_CLOCK_SYNC_PCLK_DIV4 ( ADC_CCR_ADCPRE_0) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 4 */
lypinator 0:bb348c97df44 574 #define LL_ADC_CLOCK_SYNC_PCLK_DIV6 (ADC_CCR_ADCPRE_1 ) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 6 */
lypinator 0:bb348c97df44 575 #define LL_ADC_CLOCK_SYNC_PCLK_DIV8 (ADC_CCR_ADCPRE_1 | ADC_CCR_ADCPRE_0) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 8 */
lypinator 0:bb348c97df44 576 /**
lypinator 0:bb348c97df44 577 * @}
lypinator 0:bb348c97df44 578 */
lypinator 0:bb348c97df44 579
lypinator 0:bb348c97df44 580 /** @defgroup ADC_LL_EC_COMMON_PATH_INTERNAL ADC common - Measurement path to internal channels
lypinator 0:bb348c97df44 581 * @{
lypinator 0:bb348c97df44 582 */
lypinator 0:bb348c97df44 583 /* Note: Other measurement paths to internal channels may be available */
lypinator 0:bb348c97df44 584 /* (connections to other peripherals). */
lypinator 0:bb348c97df44 585 /* If they are not listed below, they do not require any specific */
lypinator 0:bb348c97df44 586 /* path enable. In this case, Access to measurement path is done */
lypinator 0:bb348c97df44 587 /* only by selecting the corresponding ADC internal channel. */
lypinator 0:bb348c97df44 588 #define LL_ADC_PATH_INTERNAL_NONE 0x00000000U /*!< ADC measurement pathes all disabled */
lypinator 0:bb348c97df44 589 #define LL_ADC_PATH_INTERNAL_VREFINT (ADC_CCR_TSVREFE) /*!< ADC measurement path to internal channel VrefInt */
lypinator 0:bb348c97df44 590 #define LL_ADC_PATH_INTERNAL_TEMPSENSOR (ADC_CCR_TSVREFE) /*!< ADC measurement path to internal channel temperature sensor */
lypinator 0:bb348c97df44 591 #define LL_ADC_PATH_INTERNAL_VBAT (ADC_CCR_VBATE) /*!< ADC measurement path to internal channel Vbat */
lypinator 0:bb348c97df44 592 /**
lypinator 0:bb348c97df44 593 * @}
lypinator 0:bb348c97df44 594 */
lypinator 0:bb348c97df44 595
lypinator 0:bb348c97df44 596 /** @defgroup ADC_LL_EC_RESOLUTION ADC instance - Resolution
lypinator 0:bb348c97df44 597 * @{
lypinator 0:bb348c97df44 598 */
lypinator 0:bb348c97df44 599 #define LL_ADC_RESOLUTION_12B 0x00000000U /*!< ADC resolution 12 bits */
lypinator 0:bb348c97df44 600 #define LL_ADC_RESOLUTION_10B ( ADC_CR1_RES_0) /*!< ADC resolution 10 bits */
lypinator 0:bb348c97df44 601 #define LL_ADC_RESOLUTION_8B (ADC_CR1_RES_1 ) /*!< ADC resolution 8 bits */
lypinator 0:bb348c97df44 602 #define LL_ADC_RESOLUTION_6B (ADC_CR1_RES_1 | ADC_CR1_RES_0) /*!< ADC resolution 6 bits */
lypinator 0:bb348c97df44 603 /**
lypinator 0:bb348c97df44 604 * @}
lypinator 0:bb348c97df44 605 */
lypinator 0:bb348c97df44 606
lypinator 0:bb348c97df44 607 /** @defgroup ADC_LL_EC_DATA_ALIGN ADC instance - Data alignment
lypinator 0:bb348c97df44 608 * @{
lypinator 0:bb348c97df44 609 */
lypinator 0:bb348c97df44 610 #define LL_ADC_DATA_ALIGN_RIGHT 0x00000000U /*!< ADC conversion data alignment: right aligned (alignment on data register LSB bit 0)*/
lypinator 0:bb348c97df44 611 #define LL_ADC_DATA_ALIGN_LEFT (ADC_CR2_ALIGN) /*!< ADC conversion data alignment: left aligned (aligment on data register MSB bit 15)*/
lypinator 0:bb348c97df44 612 /**
lypinator 0:bb348c97df44 613 * @}
lypinator 0:bb348c97df44 614 */
lypinator 0:bb348c97df44 615
lypinator 0:bb348c97df44 616 /** @defgroup ADC_LL_EC_SCAN_SELECTION ADC instance - Scan selection
lypinator 0:bb348c97df44 617 * @{
lypinator 0:bb348c97df44 618 */
lypinator 0:bb348c97df44 619 #define LL_ADC_SEQ_SCAN_DISABLE 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.*/
lypinator 0:bb348c97df44 620 #define LL_ADC_SEQ_SCAN_ENABLE (ADC_CR1_SCAN) /*!< ADC conversions are performed in sequence conversions mode, according to configuration of both groups regular and injected sequencers (sequence length, ...). */
lypinator 0:bb348c97df44 621 /**
lypinator 0:bb348c97df44 622 * @}
lypinator 0:bb348c97df44 623 */
lypinator 0:bb348c97df44 624
lypinator 0:bb348c97df44 625 /** @defgroup ADC_LL_EC_GROUPS ADC instance - Groups
lypinator 0:bb348c97df44 626 * @{
lypinator 0:bb348c97df44 627 */
lypinator 0:bb348c97df44 628 #define LL_ADC_GROUP_REGULAR 0x00000001U /*!< ADC group regular (available on all STM32 devices) */
lypinator 0:bb348c97df44 629 #define LL_ADC_GROUP_INJECTED 0x00000002U /*!< ADC group injected (not available on all STM32 devices)*/
lypinator 0:bb348c97df44 630 #define LL_ADC_GROUP_REGULAR_INJECTED 0x00000003U /*!< ADC both groups regular and injected */
lypinator 0:bb348c97df44 631 /**
lypinator 0:bb348c97df44 632 * @}
lypinator 0:bb348c97df44 633 */
lypinator 0:bb348c97df44 634
lypinator 0:bb348c97df44 635 /** @defgroup ADC_LL_EC_CHANNEL ADC instance - Channel number
lypinator 0:bb348c97df44 636 * @{
lypinator 0:bb348c97df44 637 */
lypinator 0:bb348c97df44 638 #define LL_ADC_CHANNEL_0 (ADC_CHANNEL_0_NUMBER | ADC_CHANNEL_0_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN0 */
lypinator 0:bb348c97df44 639 #define LL_ADC_CHANNEL_1 (ADC_CHANNEL_1_NUMBER | ADC_CHANNEL_1_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN1 */
lypinator 0:bb348c97df44 640 #define LL_ADC_CHANNEL_2 (ADC_CHANNEL_2_NUMBER | ADC_CHANNEL_2_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN2 */
lypinator 0:bb348c97df44 641 #define LL_ADC_CHANNEL_3 (ADC_CHANNEL_3_NUMBER | ADC_CHANNEL_3_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN3 */
lypinator 0:bb348c97df44 642 #define LL_ADC_CHANNEL_4 (ADC_CHANNEL_4_NUMBER | ADC_CHANNEL_4_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN4 */
lypinator 0:bb348c97df44 643 #define LL_ADC_CHANNEL_5 (ADC_CHANNEL_5_NUMBER | ADC_CHANNEL_5_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN5 */
lypinator 0:bb348c97df44 644 #define LL_ADC_CHANNEL_6 (ADC_CHANNEL_6_NUMBER | ADC_CHANNEL_6_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN6 */
lypinator 0:bb348c97df44 645 #define LL_ADC_CHANNEL_7 (ADC_CHANNEL_7_NUMBER | ADC_CHANNEL_7_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN7 */
lypinator 0:bb348c97df44 646 #define LL_ADC_CHANNEL_8 (ADC_CHANNEL_8_NUMBER | ADC_CHANNEL_8_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN8 */
lypinator 0:bb348c97df44 647 #define LL_ADC_CHANNEL_9 (ADC_CHANNEL_9_NUMBER | ADC_CHANNEL_9_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN9 */
lypinator 0:bb348c97df44 648 #define LL_ADC_CHANNEL_10 (ADC_CHANNEL_10_NUMBER | ADC_CHANNEL_10_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN10 */
lypinator 0:bb348c97df44 649 #define LL_ADC_CHANNEL_11 (ADC_CHANNEL_11_NUMBER | ADC_CHANNEL_11_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN11 */
lypinator 0:bb348c97df44 650 #define LL_ADC_CHANNEL_12 (ADC_CHANNEL_12_NUMBER | ADC_CHANNEL_12_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN12 */
lypinator 0:bb348c97df44 651 #define LL_ADC_CHANNEL_13 (ADC_CHANNEL_13_NUMBER | ADC_CHANNEL_13_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN13 */
lypinator 0:bb348c97df44 652 #define LL_ADC_CHANNEL_14 (ADC_CHANNEL_14_NUMBER | ADC_CHANNEL_14_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN14 */
lypinator 0:bb348c97df44 653 #define LL_ADC_CHANNEL_15 (ADC_CHANNEL_15_NUMBER | ADC_CHANNEL_15_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN15 */
lypinator 0:bb348c97df44 654 #define LL_ADC_CHANNEL_16 (ADC_CHANNEL_16_NUMBER | ADC_CHANNEL_16_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN16 */
lypinator 0:bb348c97df44 655 #define LL_ADC_CHANNEL_17 (ADC_CHANNEL_17_NUMBER | ADC_CHANNEL_17_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN17 */
lypinator 0:bb348c97df44 656 #define LL_ADC_CHANNEL_18 (ADC_CHANNEL_18_NUMBER | ADC_CHANNEL_18_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN18 */
lypinator 0:bb348c97df44 657 #define LL_ADC_CHANNEL_VREFINT (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to VrefInt: Internal voltage reference. On STM32F4, ADC channel available only on ADC instance: ADC1. */
lypinator 0:bb348c97df44 658 #define LL_ADC_CHANNEL_VBAT (LL_ADC_CHANNEL_18 | 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 STM32F4, ADC channel available only on ADC instance: ADC1. */
lypinator 0:bb348c97df44 659 #if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F405xx) || defined(STM32F407xx) || defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) || defined(STM32F415xx) || defined(STM32F417xx)
lypinator 0:bb348c97df44 660 #define LL_ADC_CHANNEL_TEMPSENSOR (LL_ADC_CHANNEL_16 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to Temperature sensor. On STM32F4, ADC channel available only on ADC instance: ADC1. */
lypinator 0:bb348c97df44 661 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F401xC || STM32F401xE || STM32F410xx */
lypinator 0:bb348c97df44 662 #if defined(STM32F411xE) || defined(STM32F412Cx) || defined(STM32F412Rx) || defined(STM32F412Vx) || defined(STM32F412Zx) || defined(STM32F413xx) || defined(STM32F423xx) || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
lypinator 0:bb348c97df44 663 #define LL_ADC_CHANNEL_TEMPSENSOR (LL_ADC_CHANNEL_18 | ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_DIFFERENCIATION_TEMPSENSOR_VBAT) /*!< ADC internal channel connected to Temperature sensor. On STM32F4, ADC channel available only on ADC instance: ADC1. This internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. */
lypinator 0:bb348c97df44 664 #endif /* STM32F411xE || STM32F412Cx || STM32F412Rx || STM32F412Vx || STM32F412Zx || STM32F413xx || STM32F423xx || STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */
lypinator 0:bb348c97df44 665 /**
lypinator 0:bb348c97df44 666 * @}
lypinator 0:bb348c97df44 667 */
lypinator 0:bb348c97df44 668
lypinator 0:bb348c97df44 669 /** @defgroup ADC_LL_EC_REG_TRIGGER_SOURCE ADC group regular - Trigger source
lypinator 0:bb348c97df44 670 * @{
lypinator 0:bb348c97df44 671 */
lypinator 0:bb348c97df44 672 #define LL_ADC_REG_TRIG_SOFTWARE 0x00000000U /*!< ADC group regular conversion trigger internal: SW start. */
lypinator 0:bb348c97df44 673 #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). */
lypinator 0:bb348c97df44 674 #define LL_ADC_REG_TRIG_EXT_TIM1_CH2 (ADC_CR2_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). */
lypinator 0:bb348c97df44 675 #define LL_ADC_REG_TRIG_EXT_TIM1_CH3 (ADC_CR2_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). */
lypinator 0:bb348c97df44 676 #define LL_ADC_REG_TRIG_EXT_TIM2_CH2 (ADC_CR2_EXTSEL_1 | ADC_CR2_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). */
lypinator 0:bb348c97df44 677 #define LL_ADC_REG_TRIG_EXT_TIM2_CH3 (ADC_CR2_EXTSEL_2 | 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). */
lypinator 0:bb348c97df44 678 #define LL_ADC_REG_TRIG_EXT_TIM2_CH4 (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 679 #define LL_ADC_REG_TRIG_EXT_TIM2_TRGO (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 680 #define LL_ADC_REG_TRIG_EXT_TIM3_CH1 (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0 | 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). */
lypinator 0:bb348c97df44 681 #define LL_ADC_REG_TRIG_EXT_TIM3_TRGO (ADC_CR2_EXTSEL_3 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 682 #define LL_ADC_REG_TRIG_EXT_TIM4_CH4 (ADC_CR2_EXTSEL_3 | ADC_CR2_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). */
lypinator 0:bb348c97df44 683 #define LL_ADC_REG_TRIG_EXT_TIM5_CH1 (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM5 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 684 #define LL_ADC_REG_TRIG_EXT_TIM5_CH2 (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM5 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 685 #define LL_ADC_REG_TRIG_EXT_TIM5_CH3 (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM5 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 686 #define LL_ADC_REG_TRIG_EXT_TIM8_CH1 (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_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). */
lypinator 0:bb348c97df44 687 #define LL_ADC_REG_TRIG_EXT_TIM8_TRGO (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 688 #define LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0 | 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). */
lypinator 0:bb348c97df44 689 /**
lypinator 0:bb348c97df44 690 * @}
lypinator 0:bb348c97df44 691 */
lypinator 0:bb348c97df44 692
lypinator 0:bb348c97df44 693 /** @defgroup ADC_LL_EC_REG_TRIGGER_EDGE ADC group regular - Trigger edge
lypinator 0:bb348c97df44 694 * @{
lypinator 0:bb348c97df44 695 */
lypinator 0:bb348c97df44 696 #define LL_ADC_REG_TRIG_EXT_RISING ( ADC_CR2_EXTEN_0) /*!< ADC group regular conversion trigger polarity set to rising edge */
lypinator 0:bb348c97df44 697 #define LL_ADC_REG_TRIG_EXT_FALLING (ADC_CR2_EXTEN_1 ) /*!< ADC group regular conversion trigger polarity set to falling edge */
lypinator 0:bb348c97df44 698 #define LL_ADC_REG_TRIG_EXT_RISINGFALLING (ADC_CR2_EXTEN_1 | ADC_CR2_EXTEN_0) /*!< ADC group regular conversion trigger polarity set to both rising and falling edges */
lypinator 0:bb348c97df44 699 /**
lypinator 0:bb348c97df44 700 * @}
lypinator 0:bb348c97df44 701 */
lypinator 0:bb348c97df44 702
lypinator 0:bb348c97df44 703 /** @defgroup ADC_LL_EC_REG_CONTINUOUS_MODE ADC group regular - Continuous mode
lypinator 0:bb348c97df44 704 * @{
lypinator 0:bb348c97df44 705 */
lypinator 0:bb348c97df44 706 #define LL_ADC_REG_CONV_SINGLE 0x00000000U /*!< ADC conversions are performed in single mode: one conversion per trigger */
lypinator 0:bb348c97df44 707 #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 */
lypinator 0:bb348c97df44 708 /**
lypinator 0:bb348c97df44 709 * @}
lypinator 0:bb348c97df44 710 */
lypinator 0:bb348c97df44 711
lypinator 0:bb348c97df44 712 /** @defgroup ADC_LL_EC_REG_DMA_TRANSFER ADC group regular - DMA transfer of ADC conversion data
lypinator 0:bb348c97df44 713 * @{
lypinator 0:bb348c97df44 714 */
lypinator 0:bb348c97df44 715 #define LL_ADC_REG_DMA_TRANSFER_NONE 0x00000000U /*!< ADC conversions are not transferred by DMA */
lypinator 0:bb348c97df44 716 #define LL_ADC_REG_DMA_TRANSFER_LIMITED ( ADC_CR2_DMA) /*!< 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. */
lypinator 0:bb348c97df44 717 #define LL_ADC_REG_DMA_TRANSFER_UNLIMITED (ADC_CR2_DDS | ADC_CR2_DMA) /*!< 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. */
lypinator 0:bb348c97df44 718 /**
lypinator 0:bb348c97df44 719 * @}
lypinator 0:bb348c97df44 720 */
lypinator 0:bb348c97df44 721
lypinator 0:bb348c97df44 722 /** @defgroup ADC_LL_EC_REG_FLAG_EOC_SELECTION ADC group regular - Flag EOC selection (unitary or sequence conversions)
lypinator 0:bb348c97df44 723 * @{
lypinator 0:bb348c97df44 724 */
lypinator 0:bb348c97df44 725 #define LL_ADC_REG_FLAG_EOC_SEQUENCE_CONV 0x00000000U /*!< ADC flag EOC (end of unitary conversion) selected */
lypinator 0:bb348c97df44 726 #define LL_ADC_REG_FLAG_EOC_UNITARY_CONV (ADC_CR2_EOCS) /*!< ADC flag EOS (end of sequence conversions) selected */
lypinator 0:bb348c97df44 727 /**
lypinator 0:bb348c97df44 728 * @}
lypinator 0:bb348c97df44 729 */
lypinator 0:bb348c97df44 730
lypinator 0:bb348c97df44 731 /** @defgroup ADC_LL_EC_REG_SEQ_SCAN_LENGTH ADC group regular - Sequencer scan length
lypinator 0:bb348c97df44 732 * @{
lypinator 0:bb348c97df44 733 */
lypinator 0:bb348c97df44 734 #define LL_ADC_REG_SEQ_SCAN_DISABLE 0x00000000U /*!< ADC group regular sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */
lypinator 0:bb348c97df44 735 #define LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS ( ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 2 ranks in the sequence */
lypinator 0:bb348c97df44 736 #define LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS ( ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 3 ranks in the sequence */
lypinator 0:bb348c97df44 737 #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 */
lypinator 0:bb348c97df44 738 #define LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS ( ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 5 ranks in the sequence */
lypinator 0:bb348c97df44 739 #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 */
lypinator 0:bb348c97df44 740 #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 */
lypinator 0:bb348c97df44 741 #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 */
lypinator 0:bb348c97df44 742 #define LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS (ADC_SQR1_L_3 ) /*!< ADC group regular sequencer enable with 9 ranks in the sequence */
lypinator 0:bb348c97df44 743 #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 */
lypinator 0:bb348c97df44 744 #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 */
lypinator 0:bb348c97df44 745 #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 */
lypinator 0:bb348c97df44 746 #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 */
lypinator 0:bb348c97df44 747 #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 */
lypinator 0:bb348c97df44 748 #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 */
lypinator 0:bb348c97df44 749 #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 */
lypinator 0:bb348c97df44 750 /**
lypinator 0:bb348c97df44 751 * @}
lypinator 0:bb348c97df44 752 */
lypinator 0:bb348c97df44 753
lypinator 0:bb348c97df44 754 /** @defgroup ADC_LL_EC_REG_SEQ_DISCONT_MODE ADC group regular - Sequencer discontinuous mode
lypinator 0:bb348c97df44 755 * @{
lypinator 0:bb348c97df44 756 */
lypinator 0:bb348c97df44 757 #define LL_ADC_REG_SEQ_DISCONT_DISABLE 0x00000000U /*!< ADC group regular sequencer discontinuous mode disable */
lypinator 0:bb348c97df44 758 #define LL_ADC_REG_SEQ_DISCONT_1RANK ( ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every rank */
lypinator 0:bb348c97df44 759 #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 */
lypinator 0:bb348c97df44 760 #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 */
lypinator 0:bb348c97df44 761 #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 */
lypinator 0:bb348c97df44 762 #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 */
lypinator 0:bb348c97df44 763 #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 */
lypinator 0:bb348c97df44 764 #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 */
lypinator 0:bb348c97df44 765 #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 */
lypinator 0:bb348c97df44 766 /**
lypinator 0:bb348c97df44 767 * @}
lypinator 0:bb348c97df44 768 */
lypinator 0:bb348c97df44 769
lypinator 0:bb348c97df44 770 /** @defgroup ADC_LL_EC_REG_SEQ_RANKS ADC group regular - Sequencer ranks
lypinator 0:bb348c97df44 771 * @{
lypinator 0:bb348c97df44 772 */
lypinator 0:bb348c97df44 773 #define LL_ADC_REG_RANK_1 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_1_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 1 */
lypinator 0:bb348c97df44 774 #define LL_ADC_REG_RANK_2 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_2_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 2 */
lypinator 0:bb348c97df44 775 #define LL_ADC_REG_RANK_3 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_3_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 3 */
lypinator 0:bb348c97df44 776 #define LL_ADC_REG_RANK_4 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_4_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 4 */
lypinator 0:bb348c97df44 777 #define LL_ADC_REG_RANK_5 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_5_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 5 */
lypinator 0:bb348c97df44 778 #define LL_ADC_REG_RANK_6 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_6_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 6 */
lypinator 0:bb348c97df44 779 #define LL_ADC_REG_RANK_7 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_7_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 7 */
lypinator 0:bb348c97df44 780 #define LL_ADC_REG_RANK_8 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_8_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 8 */
lypinator 0:bb348c97df44 781 #define LL_ADC_REG_RANK_9 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_9_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 9 */
lypinator 0:bb348c97df44 782 #define LL_ADC_REG_RANK_10 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_10_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 10 */
lypinator 0:bb348c97df44 783 #define LL_ADC_REG_RANK_11 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_11_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 11 */
lypinator 0:bb348c97df44 784 #define LL_ADC_REG_RANK_12 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_12_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 12 */
lypinator 0:bb348c97df44 785 #define LL_ADC_REG_RANK_13 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_13_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 13 */
lypinator 0:bb348c97df44 786 #define LL_ADC_REG_RANK_14 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_14_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 14 */
lypinator 0:bb348c97df44 787 #define LL_ADC_REG_RANK_15 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_15_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 15 */
lypinator 0:bb348c97df44 788 #define LL_ADC_REG_RANK_16 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_16_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 16 */
lypinator 0:bb348c97df44 789 /**
lypinator 0:bb348c97df44 790 * @}
lypinator 0:bb348c97df44 791 */
lypinator 0:bb348c97df44 792
lypinator 0:bb348c97df44 793 /** @defgroup ADC_LL_EC_INJ_TRIGGER_SOURCE ADC group injected - Trigger source
lypinator 0:bb348c97df44 794 * @{
lypinator 0:bb348c97df44 795 */
lypinator 0:bb348c97df44 796 #define LL_ADC_INJ_TRIG_SOFTWARE 0x00000000U /*!< ADC group injected conversion trigger internal: SW start. */
lypinator 0:bb348c97df44 797 #define LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (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). */
lypinator 0:bb348c97df44 798 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 799 #define LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (ADC_CR2_JEXTSEL_1 | 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). */
lypinator 0:bb348c97df44 800 #define LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 801 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH2 (ADC_CR2_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 802 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0 | 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). */
lypinator 0:bb348c97df44 803 #define LL_ADC_INJ_TRIG_EXT_TIM4_CH1 (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 804 #define LL_ADC_INJ_TRIG_EXT_TIM4_CH2 (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 805 #define LL_ADC_INJ_TRIG_EXT_TIM4_CH3 (ADC_CR2_JEXTSEL_3 | 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). */
lypinator 0:bb348c97df44 806 #define LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 807 #define LL_ADC_INJ_TRIG_EXT_TIM5_CH4 (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM5 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 808 #define LL_ADC_INJ_TRIG_EXT_TIM5_TRGO (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM5 TRGO. Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 809 #define LL_ADC_INJ_TRIG_EXT_TIM8_CH2 (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | 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). */
lypinator 0:bb348c97df44 810 #define LL_ADC_INJ_TRIG_EXT_TIM8_CH3 (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
lypinator 0:bb348c97df44 811 #define LL_ADC_INJ_TRIG_EXT_TIM8_CH4 (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | 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). */
lypinator 0:bb348c97df44 812 #define LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0 | 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). */
lypinator 0:bb348c97df44 813 /**
lypinator 0:bb348c97df44 814 * @}
lypinator 0:bb348c97df44 815 */
lypinator 0:bb348c97df44 816
lypinator 0:bb348c97df44 817 /** @defgroup ADC_LL_EC_INJ_TRIGGER_EDGE ADC group injected - Trigger edge
lypinator 0:bb348c97df44 818 * @{
lypinator 0:bb348c97df44 819 */
lypinator 0:bb348c97df44 820 #define LL_ADC_INJ_TRIG_EXT_RISING ( ADC_CR2_JEXTEN_0) /*!< ADC group injected conversion trigger polarity set to rising edge */
lypinator 0:bb348c97df44 821 #define LL_ADC_INJ_TRIG_EXT_FALLING (ADC_CR2_JEXTEN_1 ) /*!< ADC group injected conversion trigger polarity set to falling edge */
lypinator 0:bb348c97df44 822 #define LL_ADC_INJ_TRIG_EXT_RISINGFALLING (ADC_CR2_JEXTEN_1 | ADC_CR2_JEXTEN_0) /*!< ADC group injected conversion trigger polarity set to both rising and falling edges */
lypinator 0:bb348c97df44 823 /**
lypinator 0:bb348c97df44 824 * @}
lypinator 0:bb348c97df44 825 */
lypinator 0:bb348c97df44 826
lypinator 0:bb348c97df44 827 /** @defgroup ADC_LL_EC_INJ_TRIG_AUTO ADC group injected - Automatic trigger mode
lypinator 0:bb348c97df44 828 * @{
lypinator 0:bb348c97df44 829 */
lypinator 0:bb348c97df44 830 #define LL_ADC_INJ_TRIG_INDEPENDENT 0x00000000U /*!< ADC group injected conversion trigger independent. Setting mandatory if ADC group injected injected trigger source is set to an external trigger. */
lypinator 0:bb348c97df44 831 #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. */
lypinator 0:bb348c97df44 832 /**
lypinator 0:bb348c97df44 833 * @}
lypinator 0:bb348c97df44 834 */
lypinator 0:bb348c97df44 835
lypinator 0:bb348c97df44 836
lypinator 0:bb348c97df44 837 /** @defgroup ADC_LL_EC_INJ_SEQ_SCAN_LENGTH ADC group injected - Sequencer scan length
lypinator 0:bb348c97df44 838 * @{
lypinator 0:bb348c97df44 839 */
lypinator 0:bb348c97df44 840 #define LL_ADC_INJ_SEQ_SCAN_DISABLE 0x00000000U /*!< ADC group injected sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */
lypinator 0:bb348c97df44 841 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS ( ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 2 ranks in the sequence */
lypinator 0:bb348c97df44 842 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS (ADC_JSQR_JL_1 ) /*!< ADC group injected sequencer enable with 3 ranks in the sequence */
lypinator 0:bb348c97df44 843 #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 */
lypinator 0:bb348c97df44 844 /**
lypinator 0:bb348c97df44 845 * @}
lypinator 0:bb348c97df44 846 */
lypinator 0:bb348c97df44 847
lypinator 0:bb348c97df44 848 /** @defgroup ADC_LL_EC_INJ_SEQ_DISCONT_MODE ADC group injected - Sequencer discontinuous mode
lypinator 0:bb348c97df44 849 * @{
lypinator 0:bb348c97df44 850 */
lypinator 0:bb348c97df44 851 #define LL_ADC_INJ_SEQ_DISCONT_DISABLE 0x00000000U /*!< ADC group injected sequencer discontinuous mode disable */
lypinator 0:bb348c97df44 852 #define LL_ADC_INJ_SEQ_DISCONT_1RANK (ADC_CR1_JDISCEN) /*!< ADC group injected sequencer discontinuous mode enable with sequence interruption every rank */
lypinator 0:bb348c97df44 853 /**
lypinator 0:bb348c97df44 854 * @}
lypinator 0:bb348c97df44 855 */
lypinator 0:bb348c97df44 856
lypinator 0:bb348c97df44 857 /** @defgroup ADC_LL_EC_INJ_SEQ_RANKS ADC group injected - Sequencer ranks
lypinator 0:bb348c97df44 858 * @{
lypinator 0:bb348c97df44 859 */
lypinator 0:bb348c97df44 860 #define LL_ADC_INJ_RANK_1 (ADC_JDR1_REGOFFSET | ADC_JOFR1_REGOFFSET | 0x00000001U) /*!< ADC group injected sequencer rank 1 */
lypinator 0:bb348c97df44 861 #define LL_ADC_INJ_RANK_2 (ADC_JDR2_REGOFFSET | ADC_JOFR2_REGOFFSET | 0x00000002U) /*!< ADC group injected sequencer rank 2 */
lypinator 0:bb348c97df44 862 #define LL_ADC_INJ_RANK_3 (ADC_JDR3_REGOFFSET | ADC_JOFR3_REGOFFSET | 0x00000003U) /*!< ADC group injected sequencer rank 3 */
lypinator 0:bb348c97df44 863 #define LL_ADC_INJ_RANK_4 (ADC_JDR4_REGOFFSET | ADC_JOFR4_REGOFFSET | 0x00000004U) /*!< ADC group injected sequencer rank 4 */
lypinator 0:bb348c97df44 864 /**
lypinator 0:bb348c97df44 865 * @}
lypinator 0:bb348c97df44 866 */
lypinator 0:bb348c97df44 867
lypinator 0:bb348c97df44 868 /** @defgroup ADC_LL_EC_CHANNEL_SAMPLINGTIME Channel - Sampling time
lypinator 0:bb348c97df44 869 * @{
lypinator 0:bb348c97df44 870 */
lypinator 0:bb348c97df44 871 #define LL_ADC_SAMPLINGTIME_3CYCLES 0x00000000U /*!< Sampling time 3 ADC clock cycles */
lypinator 0:bb348c97df44 872 #define LL_ADC_SAMPLINGTIME_15CYCLES (ADC_SMPR1_SMP10_0) /*!< Sampling time 15 ADC clock cycles */
lypinator 0:bb348c97df44 873 #define LL_ADC_SAMPLINGTIME_28CYCLES (ADC_SMPR1_SMP10_1) /*!< Sampling time 28 ADC clock cycles */
lypinator 0:bb348c97df44 874 #define LL_ADC_SAMPLINGTIME_56CYCLES (ADC_SMPR1_SMP10_1 | ADC_SMPR1_SMP10_0) /*!< Sampling time 56 ADC clock cycles */
lypinator 0:bb348c97df44 875 #define LL_ADC_SAMPLINGTIME_84CYCLES (ADC_SMPR1_SMP10_2) /*!< Sampling time 84 ADC clock cycles */
lypinator 0:bb348c97df44 876 #define LL_ADC_SAMPLINGTIME_112CYCLES (ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_0) /*!< Sampling time 112 ADC clock cycles */
lypinator 0:bb348c97df44 877 #define LL_ADC_SAMPLINGTIME_144CYCLES (ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_1) /*!< Sampling time 144 ADC clock cycles */
lypinator 0:bb348c97df44 878 #define LL_ADC_SAMPLINGTIME_480CYCLES (ADC_SMPR1_SMP10) /*!< Sampling time 480 ADC clock cycles */
lypinator 0:bb348c97df44 879 /**
lypinator 0:bb348c97df44 880 * @}
lypinator 0:bb348c97df44 881 */
lypinator 0:bb348c97df44 882
lypinator 0:bb348c97df44 883 /** @defgroup ADC_LL_EC_AWD_NUMBER Analog watchdog - Analog watchdog number
lypinator 0:bb348c97df44 884 * @{
lypinator 0:bb348c97df44 885 */
lypinator 0:bb348c97df44 886 #define LL_ADC_AWD1 (ADC_AWD_CR1_CHANNEL_MASK | ADC_AWD_CR1_REGOFFSET) /*!< ADC analog watchdog number 1 */
lypinator 0:bb348c97df44 887 /**
lypinator 0:bb348c97df44 888 * @}
lypinator 0:bb348c97df44 889 */
lypinator 0:bb348c97df44 890
lypinator 0:bb348c97df44 891 /** @defgroup ADC_LL_EC_AWD_CHANNELS Analog watchdog - Monitored channels
lypinator 0:bb348c97df44 892 * @{
lypinator 0:bb348c97df44 893 */
lypinator 0:bb348c97df44 894 #define LL_ADC_AWD_DISABLE 0x00000000U /*!< ADC analog watchdog monitoring disabled */
lypinator 0:bb348c97df44 895 #define LL_ADC_AWD_ALL_CHANNELS_REG ( ADC_CR1_AWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by group regular only */
lypinator 0:bb348c97df44 896 #define LL_ADC_AWD_ALL_CHANNELS_INJ ( ADC_CR1_JAWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by group injected only */
lypinator 0:bb348c97df44 897 #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 */
lypinator 0:bb348c97df44 898 #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 */
lypinator 0:bb348c97df44 899 #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 */
lypinator 0:bb348c97df44 900 #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 */
lypinator 0:bb348c97df44 901 #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 */
lypinator 0:bb348c97df44 902 #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 */
lypinator 0:bb348c97df44 903 #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 */
lypinator 0:bb348c97df44 904 #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 */
lypinator 0:bb348c97df44 905 #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 */
lypinator 0:bb348c97df44 906 #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 */
lypinator 0:bb348c97df44 907 #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 */
lypinator 0:bb348c97df44 908 #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 */
lypinator 0:bb348c97df44 909 #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 */
lypinator 0:bb348c97df44 910 #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 */
lypinator 0:bb348c97df44 911 #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 */
lypinator 0:bb348c97df44 912 #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 */
lypinator 0:bb348c97df44 913 #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 */
lypinator 0:bb348c97df44 914 #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 */
lypinator 0:bb348c97df44 915 #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 */
lypinator 0:bb348c97df44 916 #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 */
lypinator 0:bb348c97df44 917 #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 */
lypinator 0:bb348c97df44 918 #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 */
lypinator 0:bb348c97df44 919 #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 */
lypinator 0:bb348c97df44 920 #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 */
lypinator 0:bb348c97df44 921 #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 */
lypinator 0:bb348c97df44 922 #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 */
lypinator 0:bb348c97df44 923 #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 */
lypinator 0:bb348c97df44 924 #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 */
lypinator 0:bb348c97df44 925 #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 */
lypinator 0:bb348c97df44 926 #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 */
lypinator 0:bb348c97df44 927 #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 */
lypinator 0:bb348c97df44 928 #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 */
lypinator 0:bb348c97df44 929 #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 */
lypinator 0:bb348c97df44 930 #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 */
lypinator 0:bb348c97df44 931 #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 */
lypinator 0:bb348c97df44 932 #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 */
lypinator 0:bb348c97df44 933 #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 */
lypinator 0:bb348c97df44 934 #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 */
lypinator 0:bb348c97df44 935 #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 */
lypinator 0:bb348c97df44 936 #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 */
lypinator 0:bb348c97df44 937 #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 */
lypinator 0:bb348c97df44 938 #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 */
lypinator 0:bb348c97df44 939 #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 */
lypinator 0:bb348c97df44 940 #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 */
lypinator 0:bb348c97df44 941 #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 */
lypinator 0:bb348c97df44 942 #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 */
lypinator 0:bb348c97df44 943 #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 */
lypinator 0:bb348c97df44 944 #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 */
lypinator 0:bb348c97df44 945 #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 */
lypinator 0:bb348c97df44 946 #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 */
lypinator 0:bb348c97df44 947 #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 */
lypinator 0:bb348c97df44 948 #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 */
lypinator 0:bb348c97df44 949 #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 */
lypinator 0:bb348c97df44 950 #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 */
lypinator 0:bb348c97df44 951 #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 */
lypinator 0:bb348c97df44 952 #define LL_ADC_AWD_CHANNEL_18_REG ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by group regular only */
lypinator 0:bb348c97df44 953 #define LL_ADC_AWD_CHANNEL_18_INJ ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by group injected only */
lypinator 0:bb348c97df44 954 #define LL_ADC_AWD_CHANNEL_18_REG_INJ ((LL_ADC_CHANNEL_18 & 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_IN18, converted by either group regular or injected */
lypinator 0:bb348c97df44 955 #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 */
lypinator 0:bb348c97df44 956 #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 */
lypinator 0:bb348c97df44 957 #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 */
lypinator 0:bb348c97df44 958 #define LL_ADC_AWD_CH_VBAT_REG ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< 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 */
lypinator 0:bb348c97df44 959 #define LL_ADC_AWD_CH_VBAT_INJ ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< 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 */
lypinator 0:bb348c97df44 960 #define LL_ADC_AWD_CH_VBAT_REG_INJ ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< 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 */
lypinator 0:bb348c97df44 961 #if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F405xx) || defined(STM32F407xx) || defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) || defined(STM32F415xx) || defined(STM32F417xx)
lypinator 0:bb348c97df44 962 #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 */
lypinator 0:bb348c97df44 963 #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 */
lypinator 0:bb348c97df44 964 #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 */
lypinator 0:bb348c97df44 965 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F401xC || STM32F401xE || STM32F410xx */
lypinator 0:bb348c97df44 966 #if defined(STM32F411xE) || defined(STM32F412Cx) || defined(STM32F412Rx) || defined(STM32F412Vx) || defined(STM32F412Zx) || defined(STM32F413xx) || defined(STM32F423xx) || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
lypinator 0:bb348c97df44 967 #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. This internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. */
lypinator 0:bb348c97df44 968 #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. This internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. */
lypinator 0:bb348c97df44 969 #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. This internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. */
lypinator 0:bb348c97df44 970 #endif /* STM32F411xE || STM32F412Cx || STM32F412Rx || STM32F412Vx || STM32F412Zx || STM32F413xx || STM32F423xx || STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */
lypinator 0:bb348c97df44 971 /**
lypinator 0:bb348c97df44 972 * @}
lypinator 0:bb348c97df44 973 */
lypinator 0:bb348c97df44 974
lypinator 0:bb348c97df44 975 /** @defgroup ADC_LL_EC_AWD_THRESHOLDS Analog watchdog - Thresholds
lypinator 0:bb348c97df44 976 * @{
lypinator 0:bb348c97df44 977 */
lypinator 0:bb348c97df44 978 #define LL_ADC_AWD_THRESHOLD_HIGH (ADC_AWD_TR1_HIGH_REGOFFSET) /*!< ADC analog watchdog threshold high */
lypinator 0:bb348c97df44 979 #define LL_ADC_AWD_THRESHOLD_LOW (ADC_AWD_TR1_LOW_REGOFFSET) /*!< ADC analog watchdog threshold low */
lypinator 0:bb348c97df44 980 /**
lypinator 0:bb348c97df44 981 * @}
lypinator 0:bb348c97df44 982 */
lypinator 0:bb348c97df44 983
lypinator 0:bb348c97df44 984 #if defined(ADC_MULTIMODE_SUPPORT)
lypinator 0:bb348c97df44 985 /** @defgroup ADC_LL_EC_MULTI_MODE Multimode - Mode
lypinator 0:bb348c97df44 986 * @{
lypinator 0:bb348c97df44 987 */
lypinator 0:bb348c97df44 988 #define LL_ADC_MULTI_INDEPENDENT 0x00000000U /*!< ADC dual mode disabled (ADC independent mode) */
lypinator 0:bb348c97df44 989 #define LL_ADC_MULTI_DUAL_REG_SIMULT ( ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 ) /*!< ADC dual mode enabled: group regular simultaneous */
lypinator 0:bb348c97df44 990 #define LL_ADC_MULTI_DUAL_REG_INTERL ( ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0) /*!< ADC dual mode enabled: Combined group regular interleaved */
lypinator 0:bb348c97df44 991 #define LL_ADC_MULTI_DUAL_INJ_SIMULT ( ADC_CCR_MULTI_2 | ADC_CCR_MULTI_0) /*!< ADC dual mode enabled: group injected simultaneous */
lypinator 0:bb348c97df44 992 #define LL_ADC_MULTI_DUAL_INJ_ALTERN (ADC_CCR_MULTI_3 | ADC_CCR_MULTI_0) /*!< ADC dual mode enabled: group injected alternate trigger. Works only with external triggers (not internal SW start) */
lypinator 0:bb348c97df44 993 #define LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM ( ADC_CCR_MULTI_0) /*!< ADC dual mode enabled: Combined group regular simultaneous + group injected simultaneous */
lypinator 0:bb348c97df44 994 #define LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT ( ADC_CCR_MULTI_1 ) /*!< ADC dual mode enabled: Combined group regular simultaneous + group injected alternate trigger */
lypinator 0:bb348c97df44 995 #define LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM ( ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0) /*!< ADC dual mode enabled: Combined group regular interleaved + group injected simultaneous */
lypinator 0:bb348c97df44 996 #if defined(ADC3)
lypinator 0:bb348c97df44 997 #define LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_SIM (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_0) /*!< ADC triple mode enabled: Combined group regular simultaneous + group injected simultaneous */
lypinator 0:bb348c97df44 998 #define LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_ALT (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_1 ) /*!< ADC triple mode enabled: Combined group regular simultaneous + group injected alternate trigger */
lypinator 0:bb348c97df44 999 #define LL_ADC_MULTI_TRIPLE_INJ_SIMULT (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_0) /*!< ADC triple mode enabled: group injected simultaneous */
lypinator 0:bb348c97df44 1000 #define LL_ADC_MULTI_TRIPLE_REG_SIMULT (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 ) /*!< ADC triple mode enabled: group regular simultaneous */
lypinator 0:bb348c97df44 1001 #define LL_ADC_MULTI_TRIPLE_REG_INTERL (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0) /*!< ADC triple mode enabled: Combined group regular interleaved */
lypinator 0:bb348c97df44 1002 #define LL_ADC_MULTI_TRIPLE_INJ_ALTERN (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_0) /*!< ADC triple mode enabled: group injected alternate trigger. Works only with external triggers (not internal SW start) */
lypinator 0:bb348c97df44 1003 #endif
lypinator 0:bb348c97df44 1004 /**
lypinator 0:bb348c97df44 1005 * @}
lypinator 0:bb348c97df44 1006 */
lypinator 0:bb348c97df44 1007
lypinator 0:bb348c97df44 1008 /** @defgroup ADC_LL_EC_MULTI_DMA_TRANSFER Multimode - DMA transfer
lypinator 0:bb348c97df44 1009 * @{
lypinator 0:bb348c97df44 1010 */
lypinator 0:bb348c97df44 1011 #define LL_ADC_MULTI_REG_DMA_EACH_ADC 0x00000000U /*!< ADC multimode group regular conversions are transferred by DMA: each ADC uses its own DMA channel, with its individual DMA transfer settings */
lypinator 0:bb348c97df44 1012 #define LL_ADC_MULTI_REG_DMA_LIMIT_1 ( ADC_CCR_DMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (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 of DMA mode 1: 2 or 3 (dual or triple mode) half-words one by one, ADC1 then ADC2 then ADC3. */
lypinator 0:bb348c97df44 1013 #define LL_ADC_MULTI_REG_DMA_LIMIT_2 ( ADC_CCR_DMA_1 ) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (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 of DMA mode 2: 2 or 3 (dual or triple mode) half-words one by one, ADC2&1 then ADC1&3 then ADC3&2. */
lypinator 0:bb348c97df44 1014 #define LL_ADC_MULTI_REG_DMA_LIMIT_3 ( ADC_CCR_DMA_0 | ADC_CCR_DMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (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 of DMA mode 3: 2 or 3 (dual or triple mode) bytes one by one, ADC2&1 then ADC1&3 then ADC3&2. */
lypinator 0:bb348c97df44 1015 #define LL_ADC_MULTI_REG_DMA_UNLMT_1 (ADC_CCR_DDS | ADC_CCR_DMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (DMA of ADC master), in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting of DMA mode 1: 2 or 3 (dual or triple mode) half-words one by one, ADC1 then ADC2 then ADC3. */
lypinator 0:bb348c97df44 1016 #define LL_ADC_MULTI_REG_DMA_UNLMT_2 (ADC_CCR_DDS | ADC_CCR_DMA_1 ) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (DMA of ADC master), in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting of DMA mode 2: 2 or 3 (dual or triple mode) half-words by pairs, ADC2&1 then ADC1&3 then ADC3&2. */
lypinator 0:bb348c97df44 1017 #define LL_ADC_MULTI_REG_DMA_UNLMT_3 (ADC_CCR_DDS | ADC_CCR_DMA_0 | ADC_CCR_DMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (DMA of ADC master), in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting of DMA mode 3: 2 or 3 (dual or triple mode) bytes one by one, ADC2&1 then ADC1&3 then ADC3&2. */
lypinator 0:bb348c97df44 1018 /**
lypinator 0:bb348c97df44 1019 * @}
lypinator 0:bb348c97df44 1020 */
lypinator 0:bb348c97df44 1021
lypinator 0:bb348c97df44 1022 /** @defgroup ADC_LL_EC_MULTI_TWOSMP_DELAY Multimode - Delay between two sampling phases
lypinator 0:bb348c97df44 1023 * @{
lypinator 0:bb348c97df44 1024 */
lypinator 0:bb348c97df44 1025 #define LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES 0x00000000U /*!< ADC multimode delay between two sampling phases: 5 ADC clock cycles*/
lypinator 0:bb348c97df44 1026 #define LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES ( ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 6 ADC clock cycles */
lypinator 0:bb348c97df44 1027 #define LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES ( ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 7 ADC clock cycles */
lypinator 0:bb348c97df44 1028 #define LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES ( ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 8 ADC clock cycles */
lypinator 0:bb348c97df44 1029 #define LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES ( ADC_CCR_DELAY_2 ) /*!< ADC multimode delay between two sampling phases: 9 ADC clock cycles */
lypinator 0:bb348c97df44 1030 #define LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 10 ADC clock cycles */
lypinator 0:bb348c97df44 1031 #define LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 11 ADC clock cycles */
lypinator 0:bb348c97df44 1032 #define LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 12 ADC clock cycles */
lypinator 0:bb348c97df44 1033 #define LL_ADC_MULTI_TWOSMP_DELAY_13CYCLES (ADC_CCR_DELAY_3 ) /*!< ADC multimode delay between two sampling phases: 13 ADC clock cycles */
lypinator 0:bb348c97df44 1034 #define LL_ADC_MULTI_TWOSMP_DELAY_14CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 14 ADC clock cycles */
lypinator 0:bb348c97df44 1035 #define LL_ADC_MULTI_TWOSMP_DELAY_15CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 15 ADC clock cycles */
lypinator 0:bb348c97df44 1036 #define LL_ADC_MULTI_TWOSMP_DELAY_16CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 16 ADC clock cycles */
lypinator 0:bb348c97df44 1037 #define LL_ADC_MULTI_TWOSMP_DELAY_17CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 ) /*!< ADC multimode delay between two sampling phases: 17 ADC clock cycles */
lypinator 0:bb348c97df44 1038 #define LL_ADC_MULTI_TWOSMP_DELAY_18CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 18 ADC clock cycles */
lypinator 0:bb348c97df44 1039 #define LL_ADC_MULTI_TWOSMP_DELAY_19CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 19 ADC clock cycles */
lypinator 0:bb348c97df44 1040 #define LL_ADC_MULTI_TWOSMP_DELAY_20CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 20 ADC clock cycles */
lypinator 0:bb348c97df44 1041 /**
lypinator 0:bb348c97df44 1042 * @}
lypinator 0:bb348c97df44 1043 */
lypinator 0:bb348c97df44 1044
lypinator 0:bb348c97df44 1045 /** @defgroup ADC_LL_EC_MULTI_MASTER_SLAVE Multimode - ADC master or slave
lypinator 0:bb348c97df44 1046 * @{
lypinator 0:bb348c97df44 1047 */
lypinator 0:bb348c97df44 1048 #define LL_ADC_MULTI_MASTER ( ADC_CDR_RDATA_MST) /*!< In multimode, selection among several ADC instances: ADC master */
lypinator 0:bb348c97df44 1049 #define LL_ADC_MULTI_SLAVE (ADC_CDR_RDATA_SLV ) /*!< In multimode, selection among several ADC instances: ADC slave */
lypinator 0:bb348c97df44 1050 #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 */
lypinator 0:bb348c97df44 1051 /**
lypinator 0:bb348c97df44 1052 * @}
lypinator 0:bb348c97df44 1053 */
lypinator 0:bb348c97df44 1054
lypinator 0:bb348c97df44 1055 #endif /* ADC_MULTIMODE_SUPPORT */
lypinator 0:bb348c97df44 1056
lypinator 0:bb348c97df44 1057
lypinator 0:bb348c97df44 1058 /** @defgroup ADC_LL_EC_HW_DELAYS Definitions of ADC hardware constraints delays
lypinator 0:bb348c97df44 1059 * @note Only ADC IP HW delays are defined in ADC LL driver driver,
lypinator 0:bb348c97df44 1060 * not timeout values.
lypinator 0:bb348c97df44 1061 * For details on delays values, refer to descriptions in source code
lypinator 0:bb348c97df44 1062 * above each literal definition.
lypinator 0:bb348c97df44 1063 * @{
lypinator 0:bb348c97df44 1064 */
lypinator 0:bb348c97df44 1065
lypinator 0:bb348c97df44 1066 /* Note: Only ADC IP HW delays are defined in ADC LL driver driver, */
lypinator 0:bb348c97df44 1067 /* not timeout values. */
lypinator 0:bb348c97df44 1068 /* Timeout values for ADC operations are dependent to device clock */
lypinator 0:bb348c97df44 1069 /* configuration (system clock versus ADC clock), */
lypinator 0:bb348c97df44 1070 /* and therefore must be defined in user application. */
lypinator 0:bb348c97df44 1071 /* Indications for estimation of ADC timeout delays, for this */
lypinator 0:bb348c97df44 1072 /* STM32 serie: */
lypinator 0:bb348c97df44 1073 /* - ADC enable time: maximum delay is 2us */
lypinator 0:bb348c97df44 1074 /* (refer to device datasheet, parameter "tSTAB") */
lypinator 0:bb348c97df44 1075 /* - ADC conversion time: duration depending on ADC clock and ADC */
lypinator 0:bb348c97df44 1076 /* configuration. */
lypinator 0:bb348c97df44 1077 /* (refer to device reference manual, section "Timing") */
lypinator 0:bb348c97df44 1078
lypinator 0:bb348c97df44 1079 /* Delay for internal voltage reference stabilization time. */
lypinator 0:bb348c97df44 1080 /* Delay set to maximum value (refer to device datasheet, */
lypinator 0:bb348c97df44 1081 /* parameter "tSTART"). */
lypinator 0:bb348c97df44 1082 /* Unit: us */
lypinator 0:bb348c97df44 1083 #define LL_ADC_DELAY_VREFINT_STAB_US ( 10U) /*!< Delay for internal voltage reference stabilization time */
lypinator 0:bb348c97df44 1084
lypinator 0:bb348c97df44 1085 /* Delay for temperature sensor stabilization time. */
lypinator 0:bb348c97df44 1086 /* Literal set to maximum value (refer to device datasheet, */
lypinator 0:bb348c97df44 1087 /* parameter "tSTART"). */
lypinator 0:bb348c97df44 1088 /* Unit: us */
lypinator 0:bb348c97df44 1089 #define LL_ADC_DELAY_TEMPSENSOR_STAB_US ( 10U) /*!< Delay for internal voltage reference stabilization time */
lypinator 0:bb348c97df44 1090
lypinator 0:bb348c97df44 1091 /**
lypinator 0:bb348c97df44 1092 * @}
lypinator 0:bb348c97df44 1093 */
lypinator 0:bb348c97df44 1094
lypinator 0:bb348c97df44 1095 /**
lypinator 0:bb348c97df44 1096 * @}
lypinator 0:bb348c97df44 1097 */
lypinator 0:bb348c97df44 1098
lypinator 0:bb348c97df44 1099
lypinator 0:bb348c97df44 1100 /* Exported macro ------------------------------------------------------------*/
lypinator 0:bb348c97df44 1101 /** @defgroup ADC_LL_Exported_Macros ADC Exported Macros
lypinator 0:bb348c97df44 1102 * @{
lypinator 0:bb348c97df44 1103 */
lypinator 0:bb348c97df44 1104
lypinator 0:bb348c97df44 1105 /** @defgroup ADC_LL_EM_WRITE_READ Common write and read registers Macros
lypinator 0:bb348c97df44 1106 * @{
lypinator 0:bb348c97df44 1107 */
lypinator 0:bb348c97df44 1108
lypinator 0:bb348c97df44 1109 /**
lypinator 0:bb348c97df44 1110 * @brief Write a value in ADC register
lypinator 0:bb348c97df44 1111 * @param __INSTANCE__ ADC Instance
lypinator 0:bb348c97df44 1112 * @param __REG__ Register to be written
lypinator 0:bb348c97df44 1113 * @param __VALUE__ Value to be written in the register
lypinator 0:bb348c97df44 1114 * @retval None
lypinator 0:bb348c97df44 1115 */
lypinator 0:bb348c97df44 1116 #define LL_ADC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
lypinator 0:bb348c97df44 1117
lypinator 0:bb348c97df44 1118 /**
lypinator 0:bb348c97df44 1119 * @brief Read a value in ADC register
lypinator 0:bb348c97df44 1120 * @param __INSTANCE__ ADC Instance
lypinator 0:bb348c97df44 1121 * @param __REG__ Register to be read
lypinator 0:bb348c97df44 1122 * @retval Register value
lypinator 0:bb348c97df44 1123 */
lypinator 0:bb348c97df44 1124 #define LL_ADC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
lypinator 0:bb348c97df44 1125 /**
lypinator 0:bb348c97df44 1126 * @}
lypinator 0:bb348c97df44 1127 */
lypinator 0:bb348c97df44 1128
lypinator 0:bb348c97df44 1129 /** @defgroup ADC_LL_EM_HELPER_MACRO ADC helper macro
lypinator 0:bb348c97df44 1130 * @{
lypinator 0:bb348c97df44 1131 */
lypinator 0:bb348c97df44 1132
lypinator 0:bb348c97df44 1133 /**
lypinator 0:bb348c97df44 1134 * @brief Helper macro to get ADC channel number in decimal format
lypinator 0:bb348c97df44 1135 * from literals LL_ADC_CHANNEL_x.
lypinator 0:bb348c97df44 1136 * @note Example:
lypinator 0:bb348c97df44 1137 * __LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_CHANNEL_4)
lypinator 0:bb348c97df44 1138 * will return decimal number "4".
lypinator 0:bb348c97df44 1139 * @note The input can be a value from functions where a channel
lypinator 0:bb348c97df44 1140 * number is returned, either defined with number
lypinator 0:bb348c97df44 1141 * or with bitfield (only one bit must be set).
lypinator 0:bb348c97df44 1142 * @param __CHANNEL__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1143 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 1144 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 1145 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 1146 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 1147 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 1148 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 1149 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 1150 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 1151 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 1152 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 1153 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 1154 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 1155 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 1156 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 1157 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 1158 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 1159 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 1160 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 1161 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 1162 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 1163 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 1164 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 1165 *
lypinator 0:bb348c97df44 1166 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 1167 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.
lypinator 0:bb348c97df44 1168 * @retval Value between Min_Data=0 and Max_Data=18
lypinator 0:bb348c97df44 1169 */
lypinator 0:bb348c97df44 1170 #define __LL_ADC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \
lypinator 0:bb348c97df44 1171 (((__CHANNEL__) & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS)
lypinator 0:bb348c97df44 1172
lypinator 0:bb348c97df44 1173 /**
lypinator 0:bb348c97df44 1174 * @brief Helper macro to get ADC channel in literal format LL_ADC_CHANNEL_x
lypinator 0:bb348c97df44 1175 * from number in decimal format.
lypinator 0:bb348c97df44 1176 * @note Example:
lypinator 0:bb348c97df44 1177 * __LL_ADC_DECIMAL_NB_TO_CHANNEL(4)
lypinator 0:bb348c97df44 1178 * will return a data equivalent to "LL_ADC_CHANNEL_4".
lypinator 0:bb348c97df44 1179 * @param __DECIMAL_NB__ Value between Min_Data=0 and Max_Data=18
lypinator 0:bb348c97df44 1180 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 1181 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 1182 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 1183 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 1184 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 1185 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 1186 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 1187 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 1188 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 1189 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 1190 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 1191 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 1192 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 1193 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 1194 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 1195 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 1196 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 1197 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 1198 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 1199 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 1200 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 1201 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 1202 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 1203 *
lypinator 0:bb348c97df44 1204 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 1205 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.\n
lypinator 0:bb348c97df44 1206 * (1) For ADC channel read back from ADC register,
lypinator 0:bb348c97df44 1207 * comparison with internal channel parameter to be done
lypinator 0:bb348c97df44 1208 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
lypinator 0:bb348c97df44 1209 */
lypinator 0:bb348c97df44 1210 #define __LL_ADC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
lypinator 0:bb348c97df44 1211 (((__DECIMAL_NB__) <= 9U) \
lypinator 0:bb348c97df44 1212 ? ( \
lypinator 0:bb348c97df44 1213 ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \
lypinator 0:bb348c97df44 1214 (ADC_SMPR2_REGOFFSET | (((uint32_t) (3U * (__DECIMAL_NB__))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \
lypinator 0:bb348c97df44 1215 ) \
lypinator 0:bb348c97df44 1216 : \
lypinator 0:bb348c97df44 1217 ( \
lypinator 0:bb348c97df44 1218 ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \
lypinator 0:bb348c97df44 1219 (ADC_SMPR1_REGOFFSET | (((uint32_t) (3U * ((__DECIMAL_NB__) - 10U))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \
lypinator 0:bb348c97df44 1220 ) \
lypinator 0:bb348c97df44 1221 )
lypinator 0:bb348c97df44 1222
lypinator 0:bb348c97df44 1223 /**
lypinator 0:bb348c97df44 1224 * @brief Helper macro to determine whether the selected channel
lypinator 0:bb348c97df44 1225 * corresponds to literal definitions of driver.
lypinator 0:bb348c97df44 1226 * @note The different literal definitions of ADC channels are:
lypinator 0:bb348c97df44 1227 * - ADC internal channel:
lypinator 0:bb348c97df44 1228 * LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ...
lypinator 0:bb348c97df44 1229 * - ADC external channel (channel connected to a GPIO pin):
lypinator 0:bb348c97df44 1230 * LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...
lypinator 0:bb348c97df44 1231 * @note The channel parameter must be a value defined from literal
lypinator 0:bb348c97df44 1232 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
lypinator 0:bb348c97df44 1233 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
lypinator 0:bb348c97df44 1234 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...),
lypinator 0:bb348c97df44 1235 * must not be a value from functions where a channel number is
lypinator 0:bb348c97df44 1236 * returned from ADC registers,
lypinator 0:bb348c97df44 1237 * because internal and external channels share the same channel
lypinator 0:bb348c97df44 1238 * number in ADC registers. The differentiation is made only with
lypinator 0:bb348c97df44 1239 * parameters definitions of driver.
lypinator 0:bb348c97df44 1240 * @param __CHANNEL__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1241 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 1242 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 1243 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 1244 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 1245 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 1246 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 1247 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 1248 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 1249 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 1250 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 1251 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 1252 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 1253 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 1254 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 1255 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 1256 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 1257 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 1258 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 1259 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 1260 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 1261 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 1262 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 1263 *
lypinator 0:bb348c97df44 1264 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 1265 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.
lypinator 0:bb348c97df44 1266 * @retval Value "0" if the channel corresponds to a parameter definition of a ADC external channel (channel connected to a GPIO pin).
lypinator 0:bb348c97df44 1267 * Value "1" if the channel corresponds to a parameter definition of a ADC internal channel.
lypinator 0:bb348c97df44 1268 */
lypinator 0:bb348c97df44 1269 #define __LL_ADC_IS_CHANNEL_INTERNAL(__CHANNEL__) \
lypinator 0:bb348c97df44 1270 (((__CHANNEL__) & ADC_CHANNEL_ID_INTERNAL_CH_MASK) != 0U)
lypinator 0:bb348c97df44 1271
lypinator 0:bb348c97df44 1272 /**
lypinator 0:bb348c97df44 1273 * @brief Helper macro to convert a channel defined from parameter
lypinator 0:bb348c97df44 1274 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
lypinator 0:bb348c97df44 1275 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
lypinator 0:bb348c97df44 1276 * to its equivalent parameter definition of a ADC external channel
lypinator 0:bb348c97df44 1277 * (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...).
lypinator 0:bb348c97df44 1278 * @note The channel parameter can be, additionally to a value
lypinator 0:bb348c97df44 1279 * defined from parameter definition of a ADC internal channel
lypinator 0:bb348c97df44 1280 * (LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ...),
lypinator 0:bb348c97df44 1281 * a value defined from parameter definition of
lypinator 0:bb348c97df44 1282 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...)
lypinator 0:bb348c97df44 1283 * or a value from functions where a channel number is returned
lypinator 0:bb348c97df44 1284 * from ADC registers.
lypinator 0:bb348c97df44 1285 * @param __CHANNEL__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1286 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 1287 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 1288 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 1289 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 1290 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 1291 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 1292 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 1293 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 1294 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 1295 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 1296 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 1297 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 1298 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 1299 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 1300 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 1301 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 1302 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 1303 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 1304 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 1305 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 1306 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 1307 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 1308 *
lypinator 0:bb348c97df44 1309 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 1310 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.
lypinator 0:bb348c97df44 1311 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 1312 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 1313 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 1314 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 1315 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 1316 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 1317 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 1318 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 1319 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 1320 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 1321 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 1322 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 1323 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 1324 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 1325 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 1326 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 1327 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 1328 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 1329 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 1330 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 1331 */
lypinator 0:bb348c97df44 1332 #define __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(__CHANNEL__) \
lypinator 0:bb348c97df44 1333 ((__CHANNEL__) & ~ADC_CHANNEL_ID_INTERNAL_CH_MASK)
lypinator 0:bb348c97df44 1334
lypinator 0:bb348c97df44 1335 /**
lypinator 0:bb348c97df44 1336 * @brief Helper macro to determine whether the internal channel
lypinator 0:bb348c97df44 1337 * selected is available on the ADC instance selected.
lypinator 0:bb348c97df44 1338 * @note The channel parameter must be a value defined from parameter
lypinator 0:bb348c97df44 1339 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
lypinator 0:bb348c97df44 1340 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
lypinator 0:bb348c97df44 1341 * must not be a value defined from parameter definition of
lypinator 0:bb348c97df44 1342 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...)
lypinator 0:bb348c97df44 1343 * or a value from functions where a channel number is
lypinator 0:bb348c97df44 1344 * returned from ADC registers,
lypinator 0:bb348c97df44 1345 * because internal and external channels share the same channel
lypinator 0:bb348c97df44 1346 * number in ADC registers. The differentiation is made only with
lypinator 0:bb348c97df44 1347 * parameters definitions of driver.
lypinator 0:bb348c97df44 1348 * @param __ADC_INSTANCE__ ADC instance
lypinator 0:bb348c97df44 1349 * @param __CHANNEL__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1350 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 1351 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 1352 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 1353 *
lypinator 0:bb348c97df44 1354 * (1) On STM32F4, parameter available only on ADC instance: ADC1.
lypinator 0:bb348c97df44 1355 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.
lypinator 0:bb348c97df44 1356 * @retval Value "0" if the internal channel selected is not available on the ADC instance selected.
lypinator 0:bb348c97df44 1357 * Value "1" if the internal channel selected is available on the ADC instance selected.
lypinator 0:bb348c97df44 1358 */
lypinator 0:bb348c97df44 1359 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
lypinator 0:bb348c97df44 1360 ( \
lypinator 0:bb348c97df44 1361 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
lypinator 0:bb348c97df44 1362 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
lypinator 0:bb348c97df44 1363 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) \
lypinator 0:bb348c97df44 1364 )
lypinator 0:bb348c97df44 1365 /**
lypinator 0:bb348c97df44 1366 * @brief Helper macro to define ADC analog watchdog parameter:
lypinator 0:bb348c97df44 1367 * define a single channel to monitor with analog watchdog
lypinator 0:bb348c97df44 1368 * from sequencer channel and groups definition.
lypinator 0:bb348c97df44 1369 * @note To be used with function @ref LL_ADC_SetAnalogWDMonitChannels().
lypinator 0:bb348c97df44 1370 * Example:
lypinator 0:bb348c97df44 1371 * LL_ADC_SetAnalogWDMonitChannels(
lypinator 0:bb348c97df44 1372 * ADC1, LL_ADC_AWD1,
lypinator 0:bb348c97df44 1373 * __LL_ADC_ANALOGWD_CHANNEL_GROUP(LL_ADC_CHANNEL4, LL_ADC_GROUP_REGULAR))
lypinator 0:bb348c97df44 1374 * @param __CHANNEL__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1375 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 1376 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 1377 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 1378 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 1379 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 1380 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 1381 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 1382 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 1383 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 1384 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 1385 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 1386 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 1387 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 1388 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 1389 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 1390 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 1391 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 1392 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 1393 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 1394 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 1395 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 1396 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 1397 *
lypinator 0:bb348c97df44 1398 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 1399 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.\n
lypinator 0:bb348c97df44 1400 * (1) For ADC channel read back from ADC register,
lypinator 0:bb348c97df44 1401 * comparison with internal channel parameter to be done
lypinator 0:bb348c97df44 1402 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
lypinator 0:bb348c97df44 1403 * @param __GROUP__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1404 * @arg @ref LL_ADC_GROUP_REGULAR
lypinator 0:bb348c97df44 1405 * @arg @ref LL_ADC_GROUP_INJECTED
lypinator 0:bb348c97df44 1406 * @arg @ref LL_ADC_GROUP_REGULAR_INJECTED
lypinator 0:bb348c97df44 1407 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 1408 * @arg @ref LL_ADC_AWD_DISABLE
lypinator 0:bb348c97df44 1409 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG
lypinator 0:bb348c97df44 1410 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ
lypinator 0:bb348c97df44 1411 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
lypinator 0:bb348c97df44 1412 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG
lypinator 0:bb348c97df44 1413 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ
lypinator 0:bb348c97df44 1414 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
lypinator 0:bb348c97df44 1415 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG
lypinator 0:bb348c97df44 1416 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ
lypinator 0:bb348c97df44 1417 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
lypinator 0:bb348c97df44 1418 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG
lypinator 0:bb348c97df44 1419 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ
lypinator 0:bb348c97df44 1420 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
lypinator 0:bb348c97df44 1421 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG
lypinator 0:bb348c97df44 1422 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ
lypinator 0:bb348c97df44 1423 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
lypinator 0:bb348c97df44 1424 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG
lypinator 0:bb348c97df44 1425 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ
lypinator 0:bb348c97df44 1426 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
lypinator 0:bb348c97df44 1427 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG
lypinator 0:bb348c97df44 1428 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ
lypinator 0:bb348c97df44 1429 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
lypinator 0:bb348c97df44 1430 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG
lypinator 0:bb348c97df44 1431 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ
lypinator 0:bb348c97df44 1432 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
lypinator 0:bb348c97df44 1433 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG
lypinator 0:bb348c97df44 1434 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ
lypinator 0:bb348c97df44 1435 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
lypinator 0:bb348c97df44 1436 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG
lypinator 0:bb348c97df44 1437 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ
lypinator 0:bb348c97df44 1438 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
lypinator 0:bb348c97df44 1439 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG
lypinator 0:bb348c97df44 1440 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ
lypinator 0:bb348c97df44 1441 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
lypinator 0:bb348c97df44 1442 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG
lypinator 0:bb348c97df44 1443 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ
lypinator 0:bb348c97df44 1444 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
lypinator 0:bb348c97df44 1445 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG
lypinator 0:bb348c97df44 1446 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ
lypinator 0:bb348c97df44 1447 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
lypinator 0:bb348c97df44 1448 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG
lypinator 0:bb348c97df44 1449 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ
lypinator 0:bb348c97df44 1450 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
lypinator 0:bb348c97df44 1451 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG
lypinator 0:bb348c97df44 1452 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ
lypinator 0:bb348c97df44 1453 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
lypinator 0:bb348c97df44 1454 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG
lypinator 0:bb348c97df44 1455 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ
lypinator 0:bb348c97df44 1456 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
lypinator 0:bb348c97df44 1457 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG
lypinator 0:bb348c97df44 1458 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ
lypinator 0:bb348c97df44 1459 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
lypinator 0:bb348c97df44 1460 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG
lypinator 0:bb348c97df44 1461 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ
lypinator 0:bb348c97df44 1462 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
lypinator 0:bb348c97df44 1463 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG
lypinator 0:bb348c97df44 1464 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ
lypinator 0:bb348c97df44 1465 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
lypinator 0:bb348c97df44 1466 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG
lypinator 0:bb348c97df44 1467 * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ
lypinator 0:bb348c97df44 1468 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ
lypinator 0:bb348c97df44 1469 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (1)
lypinator 0:bb348c97df44 1470 * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (1)
lypinator 0:bb348c97df44 1471 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (1)
lypinator 0:bb348c97df44 1472 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (1)(2)
lypinator 0:bb348c97df44 1473 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (1)(2)
lypinator 0:bb348c97df44 1474 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (1)(2)
lypinator 0:bb348c97df44 1475 * @arg @ref LL_ADC_AWD_CH_VBAT_REG (1)
lypinator 0:bb348c97df44 1476 * @arg @ref LL_ADC_AWD_CH_VBAT_INJ (1)
lypinator 0:bb348c97df44 1477 * @arg @ref LL_ADC_AWD_CH_VBAT_REG_INJ (1)
lypinator 0:bb348c97df44 1478 *
lypinator 0:bb348c97df44 1479 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 1480 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.
lypinator 0:bb348c97df44 1481 */
lypinator 0:bb348c97df44 1482 #define __LL_ADC_ANALOGWD_CHANNEL_GROUP(__CHANNEL__, __GROUP__) \
lypinator 0:bb348c97df44 1483 (((__GROUP__) == LL_ADC_GROUP_REGULAR) \
lypinator 0:bb348c97df44 1484 ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) \
lypinator 0:bb348c97df44 1485 : \
lypinator 0:bb348c97df44 1486 ((__GROUP__) == LL_ADC_GROUP_INJECTED) \
lypinator 0:bb348c97df44 1487 ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) \
lypinator 0:bb348c97df44 1488 : \
lypinator 0:bb348c97df44 1489 (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) \
lypinator 0:bb348c97df44 1490 )
lypinator 0:bb348c97df44 1491
lypinator 0:bb348c97df44 1492 /**
lypinator 0:bb348c97df44 1493 * @brief Helper macro to set the value of ADC analog watchdog threshold high
lypinator 0:bb348c97df44 1494 * or low in function of ADC resolution, when ADC resolution is
lypinator 0:bb348c97df44 1495 * different of 12 bits.
lypinator 0:bb348c97df44 1496 * @note To be used with function @ref LL_ADC_SetAnalogWDThresholds().
lypinator 0:bb348c97df44 1497 * Example, with a ADC resolution of 8 bits, to set the value of
lypinator 0:bb348c97df44 1498 * analog watchdog threshold high (on 8 bits):
lypinator 0:bb348c97df44 1499 * LL_ADC_SetAnalogWDThresholds
lypinator 0:bb348c97df44 1500 * (< ADCx param >,
lypinator 0:bb348c97df44 1501 * __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(LL_ADC_RESOLUTION_8B, <threshold_value_8_bits>)
lypinator 0:bb348c97df44 1502 * );
lypinator 0:bb348c97df44 1503 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1504 * @arg @ref LL_ADC_RESOLUTION_12B
lypinator 0:bb348c97df44 1505 * @arg @ref LL_ADC_RESOLUTION_10B
lypinator 0:bb348c97df44 1506 * @arg @ref LL_ADC_RESOLUTION_8B
lypinator 0:bb348c97df44 1507 * @arg @ref LL_ADC_RESOLUTION_6B
lypinator 0:bb348c97df44 1508 * @param __AWD_THRESHOLD__ Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 1509 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 1510 */
lypinator 0:bb348c97df44 1511 #define __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD__) \
lypinator 0:bb348c97df44 1512 ((__AWD_THRESHOLD__) << ((__ADC_RESOLUTION__) >> (ADC_CR1_RES_BITOFFSET_POS - 1U )))
lypinator 0:bb348c97df44 1513
lypinator 0:bb348c97df44 1514 /**
lypinator 0:bb348c97df44 1515 * @brief Helper macro to get the value of ADC analog watchdog threshold high
lypinator 0:bb348c97df44 1516 * or low in function of ADC resolution, when ADC resolution is
lypinator 0:bb348c97df44 1517 * different of 12 bits.
lypinator 0:bb348c97df44 1518 * @note To be used with function @ref LL_ADC_GetAnalogWDThresholds().
lypinator 0:bb348c97df44 1519 * Example, with a ADC resolution of 8 bits, to get the value of
lypinator 0:bb348c97df44 1520 * analog watchdog threshold high (on 8 bits):
lypinator 0:bb348c97df44 1521 * < threshold_value_6_bits > = __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION
lypinator 0:bb348c97df44 1522 * (LL_ADC_RESOLUTION_8B,
lypinator 0:bb348c97df44 1523 * LL_ADC_GetAnalogWDThresholds(<ADCx param>, LL_ADC_AWD_THRESHOLD_HIGH)
lypinator 0:bb348c97df44 1524 * );
lypinator 0:bb348c97df44 1525 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1526 * @arg @ref LL_ADC_RESOLUTION_12B
lypinator 0:bb348c97df44 1527 * @arg @ref LL_ADC_RESOLUTION_10B
lypinator 0:bb348c97df44 1528 * @arg @ref LL_ADC_RESOLUTION_8B
lypinator 0:bb348c97df44 1529 * @arg @ref LL_ADC_RESOLUTION_6B
lypinator 0:bb348c97df44 1530 * @param __AWD_THRESHOLD_12_BITS__ Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 1531 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 1532 */
lypinator 0:bb348c97df44 1533 #define __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD_12_BITS__) \
lypinator 0:bb348c97df44 1534 ((__AWD_THRESHOLD_12_BITS__) >> ((__ADC_RESOLUTION__) >> (ADC_CR1_RES_BITOFFSET_POS - 1U )))
lypinator 0:bb348c97df44 1535
lypinator 0:bb348c97df44 1536 #if defined(ADC_MULTIMODE_SUPPORT)
lypinator 0:bb348c97df44 1537 /**
lypinator 0:bb348c97df44 1538 * @brief Helper macro to get the ADC multimode conversion data of ADC master
lypinator 0:bb348c97df44 1539 * or ADC slave from raw value with both ADC conversion data concatenated.
lypinator 0:bb348c97df44 1540 * @note This macro is intended to be used when multimode transfer by DMA
lypinator 0:bb348c97df44 1541 * is enabled: refer to function @ref LL_ADC_SetMultiDMATransfer().
lypinator 0:bb348c97df44 1542 * In this case the transferred data need to processed with this macro
lypinator 0:bb348c97df44 1543 * to separate the conversion data of ADC master and ADC slave.
lypinator 0:bb348c97df44 1544 * @param __ADC_MULTI_MASTER_SLAVE__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1545 * @arg @ref LL_ADC_MULTI_MASTER
lypinator 0:bb348c97df44 1546 * @arg @ref LL_ADC_MULTI_SLAVE
lypinator 0:bb348c97df44 1547 * @param __ADC_MULTI_CONV_DATA__ Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 1548 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 1549 */
lypinator 0:bb348c97df44 1550 #define __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(__ADC_MULTI_MASTER_SLAVE__, __ADC_MULTI_CONV_DATA__) \
lypinator 0:bb348c97df44 1551 (((__ADC_MULTI_CONV_DATA__) >> POSITION_VAL((__ADC_MULTI_MASTER_SLAVE__))) & ADC_CDR_RDATA_MST)
lypinator 0:bb348c97df44 1552 #endif
lypinator 0:bb348c97df44 1553
lypinator 0:bb348c97df44 1554 /**
lypinator 0:bb348c97df44 1555 * @brief Helper macro to select the ADC common instance
lypinator 0:bb348c97df44 1556 * to which is belonging the selected ADC instance.
lypinator 0:bb348c97df44 1557 * @note ADC common register instance can be used for:
lypinator 0:bb348c97df44 1558 * - Set parameters common to several ADC instances
lypinator 0:bb348c97df44 1559 * - Multimode (for devices with several ADC instances)
lypinator 0:bb348c97df44 1560 * Refer to functions having argument "ADCxy_COMMON" as parameter.
lypinator 0:bb348c97df44 1561 * @param __ADCx__ ADC instance
lypinator 0:bb348c97df44 1562 * @retval ADC common register instance
lypinator 0:bb348c97df44 1563 */
lypinator 0:bb348c97df44 1564 #if defined(ADC1) && defined(ADC2) && defined(ADC3)
lypinator 0:bb348c97df44 1565 #define __LL_ADC_COMMON_INSTANCE(__ADCx__) \
lypinator 0:bb348c97df44 1566 (ADC123_COMMON)
lypinator 0:bb348c97df44 1567 #elif defined(ADC1) && defined(ADC2)
lypinator 0:bb348c97df44 1568 #define __LL_ADC_COMMON_INSTANCE(__ADCx__) \
lypinator 0:bb348c97df44 1569 (ADC12_COMMON)
lypinator 0:bb348c97df44 1570 #else
lypinator 0:bb348c97df44 1571 #define __LL_ADC_COMMON_INSTANCE(__ADCx__) \
lypinator 0:bb348c97df44 1572 (ADC1_COMMON)
lypinator 0:bb348c97df44 1573 #endif
lypinator 0:bb348c97df44 1574
lypinator 0:bb348c97df44 1575 /**
lypinator 0:bb348c97df44 1576 * @brief Helper macro to check if all ADC instances sharing the same
lypinator 0:bb348c97df44 1577 * ADC common instance are disabled.
lypinator 0:bb348c97df44 1578 * @note This check is required by functions with setting conditioned to
lypinator 0:bb348c97df44 1579 * ADC state:
lypinator 0:bb348c97df44 1580 * All ADC instances of the ADC common group must be disabled.
lypinator 0:bb348c97df44 1581 * Refer to functions having argument "ADCxy_COMMON" as parameter.
lypinator 0:bb348c97df44 1582 * @note On devices with only 1 ADC common instance, parameter of this macro
lypinator 0:bb348c97df44 1583 * is useless and can be ignored (parameter kept for compatibility
lypinator 0:bb348c97df44 1584 * with devices featuring several ADC common instances).
lypinator 0:bb348c97df44 1585 * @param __ADCXY_COMMON__ ADC common instance
lypinator 0:bb348c97df44 1586 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 1587 * @retval Value "0" if all ADC instances sharing the same ADC common instance
lypinator 0:bb348c97df44 1588 * are disabled.
lypinator 0:bb348c97df44 1589 * Value "1" if at least one ADC instance sharing the same ADC common instance
lypinator 0:bb348c97df44 1590 * is enabled.
lypinator 0:bb348c97df44 1591 */
lypinator 0:bb348c97df44 1592 #if defined(ADC1) && defined(ADC2) && defined(ADC3)
lypinator 0:bb348c97df44 1593 #define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
lypinator 0:bb348c97df44 1594 (LL_ADC_IsEnabled(ADC1) | \
lypinator 0:bb348c97df44 1595 LL_ADC_IsEnabled(ADC2) | \
lypinator 0:bb348c97df44 1596 LL_ADC_IsEnabled(ADC3) )
lypinator 0:bb348c97df44 1597 #elif defined(ADC1) && defined(ADC2)
lypinator 0:bb348c97df44 1598 #define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
lypinator 0:bb348c97df44 1599 (LL_ADC_IsEnabled(ADC1) | \
lypinator 0:bb348c97df44 1600 LL_ADC_IsEnabled(ADC2) )
lypinator 0:bb348c97df44 1601 #else
lypinator 0:bb348c97df44 1602 #define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
lypinator 0:bb348c97df44 1603 (LL_ADC_IsEnabled(ADC1))
lypinator 0:bb348c97df44 1604 #endif
lypinator 0:bb348c97df44 1605
lypinator 0:bb348c97df44 1606 /**
lypinator 0:bb348c97df44 1607 * @brief Helper macro to define the ADC conversion data full-scale digital
lypinator 0:bb348c97df44 1608 * value corresponding to the selected ADC resolution.
lypinator 0:bb348c97df44 1609 * @note ADC conversion data full-scale corresponds to voltage range
lypinator 0:bb348c97df44 1610 * determined by analog voltage references Vref+ and Vref-
lypinator 0:bb348c97df44 1611 * (refer to reference manual).
lypinator 0:bb348c97df44 1612 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1613 * @arg @ref LL_ADC_RESOLUTION_12B
lypinator 0:bb348c97df44 1614 * @arg @ref LL_ADC_RESOLUTION_10B
lypinator 0:bb348c97df44 1615 * @arg @ref LL_ADC_RESOLUTION_8B
lypinator 0:bb348c97df44 1616 * @arg @ref LL_ADC_RESOLUTION_6B
lypinator 0:bb348c97df44 1617 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
lypinator 0:bb348c97df44 1618 */
lypinator 0:bb348c97df44 1619 #define __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \
lypinator 0:bb348c97df44 1620 (0xFFFU >> ((__ADC_RESOLUTION__) >> (ADC_CR1_RES_BITOFFSET_POS - 1U)))
lypinator 0:bb348c97df44 1621
lypinator 0:bb348c97df44 1622 /**
lypinator 0:bb348c97df44 1623 * @brief Helper macro to convert the ADC conversion data from
lypinator 0:bb348c97df44 1624 * a resolution to another resolution.
lypinator 0:bb348c97df44 1625 * @param __DATA__ ADC conversion data to be converted
lypinator 0:bb348c97df44 1626 * @param __ADC_RESOLUTION_CURRENT__ Resolution of to the data to be converted
lypinator 0:bb348c97df44 1627 * This parameter can be one of the following values:
lypinator 0:bb348c97df44 1628 * @arg @ref LL_ADC_RESOLUTION_12B
lypinator 0:bb348c97df44 1629 * @arg @ref LL_ADC_RESOLUTION_10B
lypinator 0:bb348c97df44 1630 * @arg @ref LL_ADC_RESOLUTION_8B
lypinator 0:bb348c97df44 1631 * @arg @ref LL_ADC_RESOLUTION_6B
lypinator 0:bb348c97df44 1632 * @param __ADC_RESOLUTION_TARGET__ Resolution of the data after conversion
lypinator 0:bb348c97df44 1633 * This parameter can be one of the following values:
lypinator 0:bb348c97df44 1634 * @arg @ref LL_ADC_RESOLUTION_12B
lypinator 0:bb348c97df44 1635 * @arg @ref LL_ADC_RESOLUTION_10B
lypinator 0:bb348c97df44 1636 * @arg @ref LL_ADC_RESOLUTION_8B
lypinator 0:bb348c97df44 1637 * @arg @ref LL_ADC_RESOLUTION_6B
lypinator 0:bb348c97df44 1638 * @retval ADC conversion data to the requested resolution
lypinator 0:bb348c97df44 1639 */
lypinator 0:bb348c97df44 1640 #define __LL_ADC_CONVERT_DATA_RESOLUTION(__DATA__, __ADC_RESOLUTION_CURRENT__, __ADC_RESOLUTION_TARGET__) \
lypinator 0:bb348c97df44 1641 (((__DATA__) \
lypinator 0:bb348c97df44 1642 << ((__ADC_RESOLUTION_CURRENT__) >> (ADC_CR1_RES_BITOFFSET_POS - 1U))) \
lypinator 0:bb348c97df44 1643 >> ((__ADC_RESOLUTION_TARGET__) >> (ADC_CR1_RES_BITOFFSET_POS - 1U)) \
lypinator 0:bb348c97df44 1644 )
lypinator 0:bb348c97df44 1645
lypinator 0:bb348c97df44 1646 /**
lypinator 0:bb348c97df44 1647 * @brief Helper macro to calculate the voltage (unit: mVolt)
lypinator 0:bb348c97df44 1648 * corresponding to a ADC conversion data (unit: digital value).
lypinator 0:bb348c97df44 1649 * @note Analog reference voltage (Vref+) must be either known from
lypinator 0:bb348c97df44 1650 * user board environment or can be calculated using ADC measurement
lypinator 0:bb348c97df44 1651 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
lypinator 0:bb348c97df44 1652 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit mV)
lypinator 0:bb348c97df44 1653 * @param __ADC_DATA__ ADC conversion data (resolution 12 bits)
lypinator 0:bb348c97df44 1654 * (unit: digital value).
lypinator 0:bb348c97df44 1655 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
lypinator 0:bb348c97df44 1656 * @arg @ref LL_ADC_RESOLUTION_12B
lypinator 0:bb348c97df44 1657 * @arg @ref LL_ADC_RESOLUTION_10B
lypinator 0:bb348c97df44 1658 * @arg @ref LL_ADC_RESOLUTION_8B
lypinator 0:bb348c97df44 1659 * @arg @ref LL_ADC_RESOLUTION_6B
lypinator 0:bb348c97df44 1660 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
lypinator 0:bb348c97df44 1661 */
lypinator 0:bb348c97df44 1662 #define __LL_ADC_CALC_DATA_TO_VOLTAGE(__VREFANALOG_VOLTAGE__,\
lypinator 0:bb348c97df44 1663 __ADC_DATA__,\
lypinator 0:bb348c97df44 1664 __ADC_RESOLUTION__) \
lypinator 0:bb348c97df44 1665 ((__ADC_DATA__) * (__VREFANALOG_VOLTAGE__) \
lypinator 0:bb348c97df44 1666 / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \
lypinator 0:bb348c97df44 1667 )
lypinator 0:bb348c97df44 1668
lypinator 0:bb348c97df44 1669 /**
lypinator 0:bb348c97df44 1670 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
lypinator 0:bb348c97df44 1671 * from ADC conversion data of internal temperature sensor.
lypinator 0:bb348c97df44 1672 * @note Computation is using temperature sensor calibration values
lypinator 0:bb348c97df44 1673 * stored in system memory for each device during production.
lypinator 0:bb348c97df44 1674 * @note Calculation formula:
lypinator 0:bb348c97df44 1675 * Temperature = ((TS_ADC_DATA - TS_CAL1)
lypinator 0:bb348c97df44 1676 * * (TS_CAL2_TEMP - TS_CAL1_TEMP))
lypinator 0:bb348c97df44 1677 * / (TS_CAL2 - TS_CAL1) + TS_CAL1_TEMP
lypinator 0:bb348c97df44 1678 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
lypinator 0:bb348c97df44 1679 * Avg_Slope = (TS_CAL2 - TS_CAL1)
lypinator 0:bb348c97df44 1680 * / (TS_CAL2_TEMP - TS_CAL1_TEMP)
lypinator 0:bb348c97df44 1681 * TS_CAL1 = equivalent TS_ADC_DATA at temperature
lypinator 0:bb348c97df44 1682 * TEMP_DEGC_CAL1 (calibrated in factory)
lypinator 0:bb348c97df44 1683 * TS_CAL2 = equivalent TS_ADC_DATA at temperature
lypinator 0:bb348c97df44 1684 * TEMP_DEGC_CAL2 (calibrated in factory)
lypinator 0:bb348c97df44 1685 * Caution: Calculation relevancy under reserve that calibration
lypinator 0:bb348c97df44 1686 * parameters are correct (address and data).
lypinator 0:bb348c97df44 1687 * To calculate temperature using temperature sensor
lypinator 0:bb348c97df44 1688 * datasheet typical values (generic values less, therefore
lypinator 0:bb348c97df44 1689 * less accurate than calibrated values),
lypinator 0:bb348c97df44 1690 * use helper macro @ref __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS().
lypinator 0:bb348c97df44 1691 * @note As calculation input, the analog reference voltage (Vref+) must be
lypinator 0:bb348c97df44 1692 * defined as it impacts the ADC LSB equivalent voltage.
lypinator 0:bb348c97df44 1693 * @note Analog reference voltage (Vref+) must be either known from
lypinator 0:bb348c97df44 1694 * user board environment or can be calculated using ADC measurement
lypinator 0:bb348c97df44 1695 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
lypinator 0:bb348c97df44 1696 * @note On this STM32 serie, calibration data of temperature sensor
lypinator 0:bb348c97df44 1697 * corresponds to a resolution of 12 bits,
lypinator 0:bb348c97df44 1698 * this is the recommended ADC resolution to convert voltage of
lypinator 0:bb348c97df44 1699 * temperature sensor.
lypinator 0:bb348c97df44 1700 * Otherwise, this macro performs the processing to scale
lypinator 0:bb348c97df44 1701 * ADC conversion data to 12 bits.
lypinator 0:bb348c97df44 1702 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
lypinator 0:bb348c97df44 1703 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal
lypinator 0:bb348c97df44 1704 * temperature sensor (unit: digital value).
lypinator 0:bb348c97df44 1705 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature
lypinator 0:bb348c97df44 1706 * sensor voltage has been measured.
lypinator 0:bb348c97df44 1707 * This parameter can be one of the following values:
lypinator 0:bb348c97df44 1708 * @arg @ref LL_ADC_RESOLUTION_12B
lypinator 0:bb348c97df44 1709 * @arg @ref LL_ADC_RESOLUTION_10B
lypinator 0:bb348c97df44 1710 * @arg @ref LL_ADC_RESOLUTION_8B
lypinator 0:bb348c97df44 1711 * @arg @ref LL_ADC_RESOLUTION_6B
lypinator 0:bb348c97df44 1712 * @retval Temperature (unit: degree Celsius)
lypinator 0:bb348c97df44 1713 */
lypinator 0:bb348c97df44 1714 #define __LL_ADC_CALC_TEMPERATURE(__VREFANALOG_VOLTAGE__,\
lypinator 0:bb348c97df44 1715 __TEMPSENSOR_ADC_DATA__,\
lypinator 0:bb348c97df44 1716 __ADC_RESOLUTION__) \
lypinator 0:bb348c97df44 1717 (((( ((int32_t)((__LL_ADC_CONVERT_DATA_RESOLUTION((__TEMPSENSOR_ADC_DATA__), \
lypinator 0:bb348c97df44 1718 (__ADC_RESOLUTION__), \
lypinator 0:bb348c97df44 1719 LL_ADC_RESOLUTION_12B) \
lypinator 0:bb348c97df44 1720 * (__VREFANALOG_VOLTAGE__)) \
lypinator 0:bb348c97df44 1721 / TEMPSENSOR_CAL_VREFANALOG) \
lypinator 0:bb348c97df44 1722 - (int32_t) *TEMPSENSOR_CAL1_ADDR) \
lypinator 0:bb348c97df44 1723 ) * (int32_t)(TEMPSENSOR_CAL2_TEMP - TEMPSENSOR_CAL1_TEMP) \
lypinator 0:bb348c97df44 1724 ) / (int32_t)((int32_t)*TEMPSENSOR_CAL2_ADDR - (int32_t)*TEMPSENSOR_CAL1_ADDR) \
lypinator 0:bb348c97df44 1725 ) + TEMPSENSOR_CAL1_TEMP \
lypinator 0:bb348c97df44 1726 )
lypinator 0:bb348c97df44 1727
lypinator 0:bb348c97df44 1728 /**
lypinator 0:bb348c97df44 1729 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
lypinator 0:bb348c97df44 1730 * from ADC conversion data of internal temperature sensor.
lypinator 0:bb348c97df44 1731 * @note Computation is using temperature sensor typical values
lypinator 0:bb348c97df44 1732 * (refer to device datasheet).
lypinator 0:bb348c97df44 1733 * @note Calculation formula:
lypinator 0:bb348c97df44 1734 * Temperature = (TS_TYP_CALx_VOLT(uV) - TS_ADC_DATA * Conversion_uV)
lypinator 0:bb348c97df44 1735 * / Avg_Slope + CALx_TEMP
lypinator 0:bb348c97df44 1736 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
lypinator 0:bb348c97df44 1737 * (unit: digital value)
lypinator 0:bb348c97df44 1738 * Avg_Slope = temperature sensor slope
lypinator 0:bb348c97df44 1739 * (unit: uV/Degree Celsius)
lypinator 0:bb348c97df44 1740 * TS_TYP_CALx_VOLT = temperature sensor digital value at
lypinator 0:bb348c97df44 1741 * temperature CALx_TEMP (unit: mV)
lypinator 0:bb348c97df44 1742 * Caution: Calculation relevancy under reserve the temperature sensor
lypinator 0:bb348c97df44 1743 * of the current device has characteristics in line with
lypinator 0:bb348c97df44 1744 * datasheet typical values.
lypinator 0:bb348c97df44 1745 * If temperature sensor calibration values are available on
lypinator 0:bb348c97df44 1746 * on this device (presence of macro __LL_ADC_CALC_TEMPERATURE()),
lypinator 0:bb348c97df44 1747 * temperature calculation will be more accurate using
lypinator 0:bb348c97df44 1748 * helper macro @ref __LL_ADC_CALC_TEMPERATURE().
lypinator 0:bb348c97df44 1749 * @note As calculation input, the analog reference voltage (Vref+) must be
lypinator 0:bb348c97df44 1750 * defined as it impacts the ADC LSB equivalent voltage.
lypinator 0:bb348c97df44 1751 * @note Analog reference voltage (Vref+) must be either known from
lypinator 0:bb348c97df44 1752 * user board environment or can be calculated using ADC measurement
lypinator 0:bb348c97df44 1753 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
lypinator 0:bb348c97df44 1754 * @note ADC measurement data must correspond to a resolution of 12bits
lypinator 0:bb348c97df44 1755 * (full scale digital value 4095). If not the case, the data must be
lypinator 0:bb348c97df44 1756 * preliminarily rescaled to an equivalent resolution of 12 bits.
lypinator 0:bb348c97df44 1757 * @param __TEMPSENSOR_TYP_AVGSLOPE__ Device datasheet data Temperature sensor slope typical value (unit uV/DegCelsius).
lypinator 0:bb348c97df44 1758 * On STM32F4, refer to device datasheet parameter "Avg_Slope".
lypinator 0:bb348c97df44 1759 * @param __TEMPSENSOR_TYP_CALX_V__ Device datasheet data Temperature sensor voltage typical value (at temperature and Vref+ defined in parameters below) (unit mV).
lypinator 0:bb348c97df44 1760 * On STM32F4, refer to device datasheet parameter "V25".
lypinator 0:bb348c97df44 1761 * @param __TEMPSENSOR_CALX_TEMP__ Device datasheet data Temperature at which temperature sensor voltage (see parameter above) is corresponding (unit mV)
lypinator 0:bb348c97df44 1762 * @param __VREFANALOG_VOLTAGE__ Analog voltage reference (Vref+) voltage (unit mV)
lypinator 0:bb348c97df44 1763 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal temperature sensor (unit digital value).
lypinator 0:bb348c97df44 1764 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature sensor voltage has been measured.
lypinator 0:bb348c97df44 1765 * This parameter can be one of the following values:
lypinator 0:bb348c97df44 1766 * @arg @ref LL_ADC_RESOLUTION_12B
lypinator 0:bb348c97df44 1767 * @arg @ref LL_ADC_RESOLUTION_10B
lypinator 0:bb348c97df44 1768 * @arg @ref LL_ADC_RESOLUTION_8B
lypinator 0:bb348c97df44 1769 * @arg @ref LL_ADC_RESOLUTION_6B
lypinator 0:bb348c97df44 1770 * @retval Temperature (unit: degree Celsius)
lypinator 0:bb348c97df44 1771 */
lypinator 0:bb348c97df44 1772 #define __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS(__TEMPSENSOR_TYP_AVGSLOPE__,\
lypinator 0:bb348c97df44 1773 __TEMPSENSOR_TYP_CALX_V__,\
lypinator 0:bb348c97df44 1774 __TEMPSENSOR_CALX_TEMP__,\
lypinator 0:bb348c97df44 1775 __VREFANALOG_VOLTAGE__,\
lypinator 0:bb348c97df44 1776 __TEMPSENSOR_ADC_DATA__,\
lypinator 0:bb348c97df44 1777 __ADC_RESOLUTION__) \
lypinator 0:bb348c97df44 1778 ((( ( \
lypinator 0:bb348c97df44 1779 (int32_t)(((__TEMPSENSOR_TYP_CALX_V__)) \
lypinator 0:bb348c97df44 1780 * 1000) \
lypinator 0:bb348c97df44 1781 - \
lypinator 0:bb348c97df44 1782 (int32_t)((((__TEMPSENSOR_ADC_DATA__) * (__VREFANALOG_VOLTAGE__)) \
lypinator 0:bb348c97df44 1783 / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__)) \
lypinator 0:bb348c97df44 1784 * 1000) \
lypinator 0:bb348c97df44 1785 ) \
lypinator 0:bb348c97df44 1786 ) / (__TEMPSENSOR_TYP_AVGSLOPE__) \
lypinator 0:bb348c97df44 1787 ) + (__TEMPSENSOR_CALX_TEMP__) \
lypinator 0:bb348c97df44 1788 )
lypinator 0:bb348c97df44 1789
lypinator 0:bb348c97df44 1790 /**
lypinator 0:bb348c97df44 1791 * @}
lypinator 0:bb348c97df44 1792 */
lypinator 0:bb348c97df44 1793
lypinator 0:bb348c97df44 1794 /**
lypinator 0:bb348c97df44 1795 * @}
lypinator 0:bb348c97df44 1796 */
lypinator 0:bb348c97df44 1797
lypinator 0:bb348c97df44 1798
lypinator 0:bb348c97df44 1799 /* Exported functions --------------------------------------------------------*/
lypinator 0:bb348c97df44 1800 /** @defgroup ADC_LL_Exported_Functions ADC Exported Functions
lypinator 0:bb348c97df44 1801 * @{
lypinator 0:bb348c97df44 1802 */
lypinator 0:bb348c97df44 1803
lypinator 0:bb348c97df44 1804 /** @defgroup ADC_LL_EF_DMA_Management ADC DMA management
lypinator 0:bb348c97df44 1805 * @{
lypinator 0:bb348c97df44 1806 */
lypinator 0:bb348c97df44 1807 /* Note: LL ADC functions to set DMA transfer are located into sections of */
lypinator 0:bb348c97df44 1808 /* configuration of ADC instance, groups and multimode (if available): */
lypinator 0:bb348c97df44 1809 /* @ref LL_ADC_REG_SetDMATransfer(), ... */
lypinator 0:bb348c97df44 1810
lypinator 0:bb348c97df44 1811 /**
lypinator 0:bb348c97df44 1812 * @brief Function to help to configure DMA transfer from ADC: retrieve the
lypinator 0:bb348c97df44 1813 * ADC register address from ADC instance and a list of ADC registers
lypinator 0:bb348c97df44 1814 * intended to be used (most commonly) with DMA transfer.
lypinator 0:bb348c97df44 1815 * @note These ADC registers are data registers:
lypinator 0:bb348c97df44 1816 * when ADC conversion data is available in ADC data registers,
lypinator 0:bb348c97df44 1817 * ADC generates a DMA transfer request.
lypinator 0:bb348c97df44 1818 * @note This macro is intended to be used with LL DMA driver, refer to
lypinator 0:bb348c97df44 1819 * function "LL_DMA_ConfigAddresses()".
lypinator 0:bb348c97df44 1820 * Example:
lypinator 0:bb348c97df44 1821 * LL_DMA_ConfigAddresses(DMA1,
lypinator 0:bb348c97df44 1822 * LL_DMA_CHANNEL_1,
lypinator 0:bb348c97df44 1823 * LL_ADC_DMA_GetRegAddr(ADC1, LL_ADC_DMA_REG_REGULAR_DATA),
lypinator 0:bb348c97df44 1824 * (uint32_t)&< array or variable >,
lypinator 0:bb348c97df44 1825 * LL_DMA_DIRECTION_PERIPH_TO_MEMORY);
lypinator 0:bb348c97df44 1826 * @note For devices with several ADC: in multimode, some devices
lypinator 0:bb348c97df44 1827 * use a different data register outside of ADC instance scope
lypinator 0:bb348c97df44 1828 * (common data register). This macro manages this register difference,
lypinator 0:bb348c97df44 1829 * only ADC instance has to be set as parameter.
lypinator 0:bb348c97df44 1830 * @rmtoll DR RDATA LL_ADC_DMA_GetRegAddr\n
lypinator 0:bb348c97df44 1831 * CDR RDATA_MST LL_ADC_DMA_GetRegAddr\n
lypinator 0:bb348c97df44 1832 * CDR RDATA_SLV LL_ADC_DMA_GetRegAddr
lypinator 0:bb348c97df44 1833 * @param ADCx ADC instance
lypinator 0:bb348c97df44 1834 * @param Register This parameter can be one of the following values:
lypinator 0:bb348c97df44 1835 * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA
lypinator 0:bb348c97df44 1836 * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA_MULTI (1)
lypinator 0:bb348c97df44 1837 *
lypinator 0:bb348c97df44 1838 * (1) Available on devices with several ADC instances.
lypinator 0:bb348c97df44 1839 * @retval ADC register address
lypinator 0:bb348c97df44 1840 */
lypinator 0:bb348c97df44 1841 #if defined(ADC_MULTIMODE_SUPPORT)
lypinator 0:bb348c97df44 1842 __STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register)
lypinator 0:bb348c97df44 1843 {
lypinator 0:bb348c97df44 1844 register uint32_t data_reg_addr = 0U;
lypinator 0:bb348c97df44 1845
lypinator 0:bb348c97df44 1846 if (Register == LL_ADC_DMA_REG_REGULAR_DATA)
lypinator 0:bb348c97df44 1847 {
lypinator 0:bb348c97df44 1848 /* Retrieve address of register DR */
lypinator 0:bb348c97df44 1849 data_reg_addr = (uint32_t)&(ADCx->DR);
lypinator 0:bb348c97df44 1850 }
lypinator 0:bb348c97df44 1851 else /* (Register == LL_ADC_DMA_REG_REGULAR_DATA_MULTI) */
lypinator 0:bb348c97df44 1852 {
lypinator 0:bb348c97df44 1853 /* Retrieve address of register CDR */
lypinator 0:bb348c97df44 1854 data_reg_addr = (uint32_t)&((__LL_ADC_COMMON_INSTANCE(ADCx))->CDR);
lypinator 0:bb348c97df44 1855 }
lypinator 0:bb348c97df44 1856
lypinator 0:bb348c97df44 1857 return data_reg_addr;
lypinator 0:bb348c97df44 1858 }
lypinator 0:bb348c97df44 1859 #else
lypinator 0:bb348c97df44 1860 __STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register)
lypinator 0:bb348c97df44 1861 {
lypinator 0:bb348c97df44 1862 /* Retrieve address of register DR */
lypinator 0:bb348c97df44 1863 return (uint32_t)&(ADCx->DR);
lypinator 0:bb348c97df44 1864 }
lypinator 0:bb348c97df44 1865 #endif
lypinator 0:bb348c97df44 1866
lypinator 0:bb348c97df44 1867 /**
lypinator 0:bb348c97df44 1868 * @}
lypinator 0:bb348c97df44 1869 */
lypinator 0:bb348c97df44 1870
lypinator 0:bb348c97df44 1871 /** @defgroup ADC_LL_EF_Configuration_ADC_Common Configuration of ADC hierarchical scope: common to several ADC instances
lypinator 0:bb348c97df44 1872 * @{
lypinator 0:bb348c97df44 1873 */
lypinator 0:bb348c97df44 1874
lypinator 0:bb348c97df44 1875 /**
lypinator 0:bb348c97df44 1876 * @brief Set parameter common to several ADC: Clock source and prescaler.
lypinator 0:bb348c97df44 1877 * @rmtoll CCR ADCPRE LL_ADC_SetCommonClock
lypinator 0:bb348c97df44 1878 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 1879 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 1880 * @param CommonClock This parameter can be one of the following values:
lypinator 0:bb348c97df44 1881 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV2
lypinator 0:bb348c97df44 1882 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV4
lypinator 0:bb348c97df44 1883 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV6
lypinator 0:bb348c97df44 1884 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV8
lypinator 0:bb348c97df44 1885 * @retval None
lypinator 0:bb348c97df44 1886 */
lypinator 0:bb348c97df44 1887 __STATIC_INLINE void LL_ADC_SetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t CommonClock)
lypinator 0:bb348c97df44 1888 {
lypinator 0:bb348c97df44 1889 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_ADCPRE, CommonClock);
lypinator 0:bb348c97df44 1890 }
lypinator 0:bb348c97df44 1891
lypinator 0:bb348c97df44 1892 /**
lypinator 0:bb348c97df44 1893 * @brief Get parameter common to several ADC: Clock source and prescaler.
lypinator 0:bb348c97df44 1894 * @rmtoll CCR ADCPRE LL_ADC_GetCommonClock
lypinator 0:bb348c97df44 1895 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 1896 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 1897 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 1898 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV2
lypinator 0:bb348c97df44 1899 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV4
lypinator 0:bb348c97df44 1900 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV6
lypinator 0:bb348c97df44 1901 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV8
lypinator 0:bb348c97df44 1902 */
lypinator 0:bb348c97df44 1903 __STATIC_INLINE uint32_t LL_ADC_GetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 1904 {
lypinator 0:bb348c97df44 1905 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_ADCPRE));
lypinator 0:bb348c97df44 1906 }
lypinator 0:bb348c97df44 1907
lypinator 0:bb348c97df44 1908 /**
lypinator 0:bb348c97df44 1909 * @brief Set parameter common to several ADC: measurement path to internal
lypinator 0:bb348c97df44 1910 * channels (VrefInt, temperature sensor, ...).
lypinator 0:bb348c97df44 1911 * @note One or several values can be selected.
lypinator 0:bb348c97df44 1912 * Example: (LL_ADC_PATH_INTERNAL_VREFINT |
lypinator 0:bb348c97df44 1913 * LL_ADC_PATH_INTERNAL_TEMPSENSOR)
lypinator 0:bb348c97df44 1914 * @note Stabilization time of measurement path to internal channel:
lypinator 0:bb348c97df44 1915 * After enabling internal paths, before starting ADC conversion,
lypinator 0:bb348c97df44 1916 * a delay is required for internal voltage reference and
lypinator 0:bb348c97df44 1917 * temperature sensor stabilization time.
lypinator 0:bb348c97df44 1918 * Refer to device datasheet.
lypinator 0:bb348c97df44 1919 * Refer to literal @ref LL_ADC_DELAY_VREFINT_STAB_US.
lypinator 0:bb348c97df44 1920 * Refer to literal @ref LL_ADC_DELAY_TEMPSENSOR_STAB_US.
lypinator 0:bb348c97df44 1921 * @note ADC internal channel sampling time constraint:
lypinator 0:bb348c97df44 1922 * For ADC conversion of internal channels,
lypinator 0:bb348c97df44 1923 * a sampling time minimum value is required.
lypinator 0:bb348c97df44 1924 * Refer to device datasheet.
lypinator 0:bb348c97df44 1925 * @rmtoll CCR TSVREFE LL_ADC_SetCommonPathInternalCh\n
lypinator 0:bb348c97df44 1926 * CCR VBATE LL_ADC_SetCommonPathInternalCh
lypinator 0:bb348c97df44 1927 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 1928 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 1929 * @param PathInternal This parameter can be a combination of the following values:
lypinator 0:bb348c97df44 1930 * @arg @ref LL_ADC_PATH_INTERNAL_NONE
lypinator 0:bb348c97df44 1931 * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT
lypinator 0:bb348c97df44 1932 * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR
lypinator 0:bb348c97df44 1933 * @arg @ref LL_ADC_PATH_INTERNAL_VBAT
lypinator 0:bb348c97df44 1934 * @retval None
lypinator 0:bb348c97df44 1935 */
lypinator 0:bb348c97df44 1936 __STATIC_INLINE void LL_ADC_SetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t PathInternal)
lypinator 0:bb348c97df44 1937 {
lypinator 0:bb348c97df44 1938 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_TSVREFE | ADC_CCR_VBATE, PathInternal);
lypinator 0:bb348c97df44 1939 }
lypinator 0:bb348c97df44 1940
lypinator 0:bb348c97df44 1941 /**
lypinator 0:bb348c97df44 1942 * @brief Get parameter common to several ADC: measurement path to internal
lypinator 0:bb348c97df44 1943 * channels (VrefInt, temperature sensor, ...).
lypinator 0:bb348c97df44 1944 * @note One or several values can be selected.
lypinator 0:bb348c97df44 1945 * Example: (LL_ADC_PATH_INTERNAL_VREFINT |
lypinator 0:bb348c97df44 1946 * LL_ADC_PATH_INTERNAL_TEMPSENSOR)
lypinator 0:bb348c97df44 1947 * @rmtoll CCR TSVREFE LL_ADC_GetCommonPathInternalCh\n
lypinator 0:bb348c97df44 1948 * CCR VBATE LL_ADC_GetCommonPathInternalCh
lypinator 0:bb348c97df44 1949 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 1950 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 1951 * @retval Returned value can be a combination of the following values:
lypinator 0:bb348c97df44 1952 * @arg @ref LL_ADC_PATH_INTERNAL_NONE
lypinator 0:bb348c97df44 1953 * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT
lypinator 0:bb348c97df44 1954 * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR
lypinator 0:bb348c97df44 1955 * @arg @ref LL_ADC_PATH_INTERNAL_VBAT
lypinator 0:bb348c97df44 1956 */
lypinator 0:bb348c97df44 1957 __STATIC_INLINE uint32_t LL_ADC_GetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 1958 {
lypinator 0:bb348c97df44 1959 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_TSVREFE | ADC_CCR_VBATE));
lypinator 0:bb348c97df44 1960 }
lypinator 0:bb348c97df44 1961
lypinator 0:bb348c97df44 1962 /**
lypinator 0:bb348c97df44 1963 * @}
lypinator 0:bb348c97df44 1964 */
lypinator 0:bb348c97df44 1965
lypinator 0:bb348c97df44 1966 /** @defgroup ADC_LL_EF_Configuration_ADC_Instance Configuration of ADC hierarchical scope: ADC instance
lypinator 0:bb348c97df44 1967 * @{
lypinator 0:bb348c97df44 1968 */
lypinator 0:bb348c97df44 1969
lypinator 0:bb348c97df44 1970 /**
lypinator 0:bb348c97df44 1971 * @brief Set ADC resolution.
lypinator 0:bb348c97df44 1972 * Refer to reference manual for alignments formats
lypinator 0:bb348c97df44 1973 * dependencies to ADC resolutions.
lypinator 0:bb348c97df44 1974 * @rmtoll CR1 RES LL_ADC_SetResolution
lypinator 0:bb348c97df44 1975 * @param ADCx ADC instance
lypinator 0:bb348c97df44 1976 * @param Resolution This parameter can be one of the following values:
lypinator 0:bb348c97df44 1977 * @arg @ref LL_ADC_RESOLUTION_12B
lypinator 0:bb348c97df44 1978 * @arg @ref LL_ADC_RESOLUTION_10B
lypinator 0:bb348c97df44 1979 * @arg @ref LL_ADC_RESOLUTION_8B
lypinator 0:bb348c97df44 1980 * @arg @ref LL_ADC_RESOLUTION_6B
lypinator 0:bb348c97df44 1981 * @retval None
lypinator 0:bb348c97df44 1982 */
lypinator 0:bb348c97df44 1983 __STATIC_INLINE void LL_ADC_SetResolution(ADC_TypeDef *ADCx, uint32_t Resolution)
lypinator 0:bb348c97df44 1984 {
lypinator 0:bb348c97df44 1985 MODIFY_REG(ADCx->CR1, ADC_CR1_RES, Resolution);
lypinator 0:bb348c97df44 1986 }
lypinator 0:bb348c97df44 1987
lypinator 0:bb348c97df44 1988 /**
lypinator 0:bb348c97df44 1989 * @brief Get ADC resolution.
lypinator 0:bb348c97df44 1990 * Refer to reference manual for alignments formats
lypinator 0:bb348c97df44 1991 * dependencies to ADC resolutions.
lypinator 0:bb348c97df44 1992 * @rmtoll CR1 RES LL_ADC_GetResolution
lypinator 0:bb348c97df44 1993 * @param ADCx ADC instance
lypinator 0:bb348c97df44 1994 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 1995 * @arg @ref LL_ADC_RESOLUTION_12B
lypinator 0:bb348c97df44 1996 * @arg @ref LL_ADC_RESOLUTION_10B
lypinator 0:bb348c97df44 1997 * @arg @ref LL_ADC_RESOLUTION_8B
lypinator 0:bb348c97df44 1998 * @arg @ref LL_ADC_RESOLUTION_6B
lypinator 0:bb348c97df44 1999 */
lypinator 0:bb348c97df44 2000 __STATIC_INLINE uint32_t LL_ADC_GetResolution(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2001 {
lypinator 0:bb348c97df44 2002 return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_RES));
lypinator 0:bb348c97df44 2003 }
lypinator 0:bb348c97df44 2004
lypinator 0:bb348c97df44 2005 /**
lypinator 0:bb348c97df44 2006 * @brief Set ADC conversion data alignment.
lypinator 0:bb348c97df44 2007 * @note Refer to reference manual for alignments formats
lypinator 0:bb348c97df44 2008 * dependencies to ADC resolutions.
lypinator 0:bb348c97df44 2009 * @rmtoll CR2 ALIGN LL_ADC_SetDataAlignment
lypinator 0:bb348c97df44 2010 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2011 * @param DataAlignment This parameter can be one of the following values:
lypinator 0:bb348c97df44 2012 * @arg @ref LL_ADC_DATA_ALIGN_RIGHT
lypinator 0:bb348c97df44 2013 * @arg @ref LL_ADC_DATA_ALIGN_LEFT
lypinator 0:bb348c97df44 2014 * @retval None
lypinator 0:bb348c97df44 2015 */
lypinator 0:bb348c97df44 2016 __STATIC_INLINE void LL_ADC_SetDataAlignment(ADC_TypeDef *ADCx, uint32_t DataAlignment)
lypinator 0:bb348c97df44 2017 {
lypinator 0:bb348c97df44 2018 MODIFY_REG(ADCx->CR2, ADC_CR2_ALIGN, DataAlignment);
lypinator 0:bb348c97df44 2019 }
lypinator 0:bb348c97df44 2020
lypinator 0:bb348c97df44 2021 /**
lypinator 0:bb348c97df44 2022 * @brief Get ADC conversion data alignment.
lypinator 0:bb348c97df44 2023 * @note Refer to reference manual for alignments formats
lypinator 0:bb348c97df44 2024 * dependencies to ADC resolutions.
lypinator 0:bb348c97df44 2025 * @rmtoll CR2 ALIGN LL_ADC_SetDataAlignment
lypinator 0:bb348c97df44 2026 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2027 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2028 * @arg @ref LL_ADC_DATA_ALIGN_RIGHT
lypinator 0:bb348c97df44 2029 * @arg @ref LL_ADC_DATA_ALIGN_LEFT
lypinator 0:bb348c97df44 2030 */
lypinator 0:bb348c97df44 2031 __STATIC_INLINE uint32_t LL_ADC_GetDataAlignment(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2032 {
lypinator 0:bb348c97df44 2033 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_ALIGN));
lypinator 0:bb348c97df44 2034 }
lypinator 0:bb348c97df44 2035
lypinator 0:bb348c97df44 2036 /**
lypinator 0:bb348c97df44 2037 * @brief Set ADC sequencers scan mode, for all ADC groups
lypinator 0:bb348c97df44 2038 * (group regular, group injected).
lypinator 0:bb348c97df44 2039 * @note According to sequencers scan mode :
lypinator 0:bb348c97df44 2040 * - If disabled: ADC conversion is performed in unitary conversion
lypinator 0:bb348c97df44 2041 * mode (one channel converted, that defined in rank 1).
lypinator 0:bb348c97df44 2042 * Configuration of sequencers of all ADC groups
lypinator 0:bb348c97df44 2043 * (sequencer scan length, ...) is discarded: equivalent to
lypinator 0:bb348c97df44 2044 * scan length of 1 rank.
lypinator 0:bb348c97df44 2045 * - If enabled: ADC conversions are performed in sequence conversions
lypinator 0:bb348c97df44 2046 * mode, according to configuration of sequencers of
lypinator 0:bb348c97df44 2047 * each ADC group (sequencer scan length, ...).
lypinator 0:bb348c97df44 2048 * Refer to function @ref LL_ADC_REG_SetSequencerLength()
lypinator 0:bb348c97df44 2049 * and to function @ref LL_ADC_INJ_SetSequencerLength().
lypinator 0:bb348c97df44 2050 * @rmtoll CR1 SCAN LL_ADC_SetSequencersScanMode
lypinator 0:bb348c97df44 2051 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2052 * @param ScanMode This parameter can be one of the following values:
lypinator 0:bb348c97df44 2053 * @arg @ref LL_ADC_SEQ_SCAN_DISABLE
lypinator 0:bb348c97df44 2054 * @arg @ref LL_ADC_SEQ_SCAN_ENABLE
lypinator 0:bb348c97df44 2055 * @retval None
lypinator 0:bb348c97df44 2056 */
lypinator 0:bb348c97df44 2057 __STATIC_INLINE void LL_ADC_SetSequencersScanMode(ADC_TypeDef *ADCx, uint32_t ScanMode)
lypinator 0:bb348c97df44 2058 {
lypinator 0:bb348c97df44 2059 MODIFY_REG(ADCx->CR1, ADC_CR1_SCAN, ScanMode);
lypinator 0:bb348c97df44 2060 }
lypinator 0:bb348c97df44 2061
lypinator 0:bb348c97df44 2062 /**
lypinator 0:bb348c97df44 2063 * @brief Get ADC sequencers scan mode, for all ADC groups
lypinator 0:bb348c97df44 2064 * (group regular, group injected).
lypinator 0:bb348c97df44 2065 * @note According to sequencers scan mode :
lypinator 0:bb348c97df44 2066 * - If disabled: ADC conversion is performed in unitary conversion
lypinator 0:bb348c97df44 2067 * mode (one channel converted, that defined in rank 1).
lypinator 0:bb348c97df44 2068 * Configuration of sequencers of all ADC groups
lypinator 0:bb348c97df44 2069 * (sequencer scan length, ...) is discarded: equivalent to
lypinator 0:bb348c97df44 2070 * scan length of 1 rank.
lypinator 0:bb348c97df44 2071 * - If enabled: ADC conversions are performed in sequence conversions
lypinator 0:bb348c97df44 2072 * mode, according to configuration of sequencers of
lypinator 0:bb348c97df44 2073 * each ADC group (sequencer scan length, ...).
lypinator 0:bb348c97df44 2074 * Refer to function @ref LL_ADC_REG_SetSequencerLength()
lypinator 0:bb348c97df44 2075 * and to function @ref LL_ADC_INJ_SetSequencerLength().
lypinator 0:bb348c97df44 2076 * @rmtoll CR1 SCAN LL_ADC_GetSequencersScanMode
lypinator 0:bb348c97df44 2077 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2078 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2079 * @arg @ref LL_ADC_SEQ_SCAN_DISABLE
lypinator 0:bb348c97df44 2080 * @arg @ref LL_ADC_SEQ_SCAN_ENABLE
lypinator 0:bb348c97df44 2081 */
lypinator 0:bb348c97df44 2082 __STATIC_INLINE uint32_t LL_ADC_GetSequencersScanMode(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2083 {
lypinator 0:bb348c97df44 2084 return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_SCAN));
lypinator 0:bb348c97df44 2085 }
lypinator 0:bb348c97df44 2086
lypinator 0:bb348c97df44 2087 /**
lypinator 0:bb348c97df44 2088 * @}
lypinator 0:bb348c97df44 2089 */
lypinator 0:bb348c97df44 2090
lypinator 0:bb348c97df44 2091 /** @defgroup ADC_LL_EF_Configuration_ADC_Group_Regular Configuration of ADC hierarchical scope: group regular
lypinator 0:bb348c97df44 2092 * @{
lypinator 0:bb348c97df44 2093 */
lypinator 0:bb348c97df44 2094
lypinator 0:bb348c97df44 2095 /**
lypinator 0:bb348c97df44 2096 * @brief Set ADC group regular conversion trigger source:
lypinator 0:bb348c97df44 2097 * internal (SW start) or from external IP (timer event,
lypinator 0:bb348c97df44 2098 * external interrupt line).
lypinator 0:bb348c97df44 2099 * @note On this STM32 serie, setting of external trigger edge is performed
lypinator 0:bb348c97df44 2100 * using function @ref LL_ADC_REG_StartConversionExtTrig().
lypinator 0:bb348c97df44 2101 * @note Availability of parameters of trigger sources from timer
lypinator 0:bb348c97df44 2102 * depends on timers availability on the selected device.
lypinator 0:bb348c97df44 2103 * @rmtoll CR2 EXTSEL LL_ADC_REG_SetTriggerSource\n
lypinator 0:bb348c97df44 2104 * CR2 EXTEN LL_ADC_REG_SetTriggerSource
lypinator 0:bb348c97df44 2105 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2106 * @param TriggerSource This parameter can be one of the following values:
lypinator 0:bb348c97df44 2107 * @arg @ref LL_ADC_REG_TRIG_SOFTWARE
lypinator 0:bb348c97df44 2108 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1
lypinator 0:bb348c97df44 2109 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2
lypinator 0:bb348c97df44 2110 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH3
lypinator 0:bb348c97df44 2111 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2
lypinator 0:bb348c97df44 2112 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH3
lypinator 0:bb348c97df44 2113 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH4
lypinator 0:bb348c97df44 2114 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO
lypinator 0:bb348c97df44 2115 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH1
lypinator 0:bb348c97df44 2116 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO
lypinator 0:bb348c97df44 2117 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4
lypinator 0:bb348c97df44 2118 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_CH1
lypinator 0:bb348c97df44 2119 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_CH2
lypinator 0:bb348c97df44 2120 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_CH3
lypinator 0:bb348c97df44 2121 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_CH1
lypinator 0:bb348c97df44 2122 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO
lypinator 0:bb348c97df44 2123 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11
lypinator 0:bb348c97df44 2124 * @retval None
lypinator 0:bb348c97df44 2125 */
lypinator 0:bb348c97df44 2126 __STATIC_INLINE void LL_ADC_REG_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource)
lypinator 0:bb348c97df44 2127 {
lypinator 0:bb348c97df44 2128 /* Note: On this STM32 serie, ADC group regular external trigger edge */
lypinator 0:bb348c97df44 2129 /* is used to perform a ADC conversion start. */
lypinator 0:bb348c97df44 2130 /* This function does not set external trigger edge. */
lypinator 0:bb348c97df44 2131 /* This feature is set using function */
lypinator 0:bb348c97df44 2132 /* @ref LL_ADC_REG_StartConversionExtTrig(). */
lypinator 0:bb348c97df44 2133 MODIFY_REG(ADCx->CR2, ADC_CR2_EXTSEL, (TriggerSource & ADC_CR2_EXTSEL));
lypinator 0:bb348c97df44 2134 }
lypinator 0:bb348c97df44 2135
lypinator 0:bb348c97df44 2136 /**
lypinator 0:bb348c97df44 2137 * @brief Get ADC group regular conversion trigger source:
lypinator 0:bb348c97df44 2138 * internal (SW start) or from external IP (timer event,
lypinator 0:bb348c97df44 2139 * external interrupt line).
lypinator 0:bb348c97df44 2140 * @note To determine whether group regular trigger source is
lypinator 0:bb348c97df44 2141 * internal (SW start) or external, without detail
lypinator 0:bb348c97df44 2142 * of which peripheral is selected as external trigger,
lypinator 0:bb348c97df44 2143 * (equivalent to
lypinator 0:bb348c97df44 2144 * "if(LL_ADC_REG_GetTriggerSource(ADC1) == LL_ADC_REG_TRIG_SOFTWARE)")
lypinator 0:bb348c97df44 2145 * use function @ref LL_ADC_REG_IsTriggerSourceSWStart.
lypinator 0:bb348c97df44 2146 * @note Availability of parameters of trigger sources from timer
lypinator 0:bb348c97df44 2147 * depends on timers availability on the selected device.
lypinator 0:bb348c97df44 2148 * @rmtoll CR2 EXTSEL LL_ADC_REG_GetTriggerSource\n
lypinator 0:bb348c97df44 2149 * CR2 EXTEN LL_ADC_REG_GetTriggerSource
lypinator 0:bb348c97df44 2150 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2151 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2152 * @arg @ref LL_ADC_REG_TRIG_SOFTWARE
lypinator 0:bb348c97df44 2153 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1
lypinator 0:bb348c97df44 2154 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2
lypinator 0:bb348c97df44 2155 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH3
lypinator 0:bb348c97df44 2156 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2
lypinator 0:bb348c97df44 2157 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH3
lypinator 0:bb348c97df44 2158 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH4
lypinator 0:bb348c97df44 2159 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO
lypinator 0:bb348c97df44 2160 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH1
lypinator 0:bb348c97df44 2161 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO
lypinator 0:bb348c97df44 2162 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4
lypinator 0:bb348c97df44 2163 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_CH1
lypinator 0:bb348c97df44 2164 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_CH2
lypinator 0:bb348c97df44 2165 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_CH3
lypinator 0:bb348c97df44 2166 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_CH1
lypinator 0:bb348c97df44 2167 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO
lypinator 0:bb348c97df44 2168 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11
lypinator 0:bb348c97df44 2169 */
lypinator 0:bb348c97df44 2170 __STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerSource(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2171 {
lypinator 0:bb348c97df44 2172 register uint32_t TriggerSource = READ_BIT(ADCx->CR2, ADC_CR2_EXTSEL | ADC_CR2_EXTEN);
lypinator 0:bb348c97df44 2173
lypinator 0:bb348c97df44 2174 /* Value for shift of {0; 4; 8; 12} depending on value of bitfield */
lypinator 0:bb348c97df44 2175 /* corresponding to ADC_CR2_EXTEN {0; 1; 2; 3}. */
lypinator 0:bb348c97df44 2176 register uint32_t ShiftExten = ((TriggerSource & ADC_CR2_EXTEN) >> (ADC_REG_TRIG_EXTEN_BITOFFSET_POS - 2U));
lypinator 0:bb348c97df44 2177
lypinator 0:bb348c97df44 2178 /* Set bitfield corresponding to ADC_CR2_EXTEN and ADC_CR2_EXTSEL */
lypinator 0:bb348c97df44 2179 /* to match with triggers literals definition. */
lypinator 0:bb348c97df44 2180 return ((TriggerSource
lypinator 0:bb348c97df44 2181 & (ADC_REG_TRIG_SOURCE_MASK << ShiftExten) & ADC_CR2_EXTSEL)
lypinator 0:bb348c97df44 2182 | ((ADC_REG_TRIG_EDGE_MASK << ShiftExten) & ADC_CR2_EXTEN)
lypinator 0:bb348c97df44 2183 );
lypinator 0:bb348c97df44 2184 }
lypinator 0:bb348c97df44 2185
lypinator 0:bb348c97df44 2186 /**
lypinator 0:bb348c97df44 2187 * @brief Get ADC group regular conversion trigger source internal (SW start)
lypinator 0:bb348c97df44 2188 or external.
lypinator 0:bb348c97df44 2189 * @note In case of group regular trigger source set to external trigger,
lypinator 0:bb348c97df44 2190 * to determine which peripheral is selected as external trigger,
lypinator 0:bb348c97df44 2191 * use function @ref LL_ADC_REG_GetTriggerSource().
lypinator 0:bb348c97df44 2192 * @rmtoll CR2 EXTEN LL_ADC_REG_IsTriggerSourceSWStart
lypinator 0:bb348c97df44 2193 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2194 * @retval Value "0" if trigger source external trigger
lypinator 0:bb348c97df44 2195 * Value "1" if trigger source SW start.
lypinator 0:bb348c97df44 2196 */
lypinator 0:bb348c97df44 2197 __STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2198 {
lypinator 0:bb348c97df44 2199 return (READ_BIT(ADCx->CR2, ADC_CR2_EXTEN) == (LL_ADC_REG_TRIG_SOFTWARE & ADC_CR2_EXTEN));
lypinator 0:bb348c97df44 2200 }
lypinator 0:bb348c97df44 2201
lypinator 0:bb348c97df44 2202 /**
lypinator 0:bb348c97df44 2203 * @brief Get ADC group regular conversion trigger polarity.
lypinator 0:bb348c97df44 2204 * @note Applicable only for trigger source set to external trigger.
lypinator 0:bb348c97df44 2205 * @note On this STM32 serie, setting of external trigger edge is performed
lypinator 0:bb348c97df44 2206 * using function @ref LL_ADC_REG_StartConversionExtTrig().
lypinator 0:bb348c97df44 2207 * @rmtoll CR2 EXTEN LL_ADC_REG_GetTriggerEdge
lypinator 0:bb348c97df44 2208 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2209 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2210 * @arg @ref LL_ADC_REG_TRIG_EXT_RISING
lypinator 0:bb348c97df44 2211 * @arg @ref LL_ADC_REG_TRIG_EXT_FALLING
lypinator 0:bb348c97df44 2212 * @arg @ref LL_ADC_REG_TRIG_EXT_RISINGFALLING
lypinator 0:bb348c97df44 2213 */
lypinator 0:bb348c97df44 2214 __STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerEdge(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2215 {
lypinator 0:bb348c97df44 2216 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_EXTEN));
lypinator 0:bb348c97df44 2217 }
lypinator 0:bb348c97df44 2218
lypinator 0:bb348c97df44 2219
lypinator 0:bb348c97df44 2220 /**
lypinator 0:bb348c97df44 2221 * @brief Set ADC group regular sequencer length and scan direction.
lypinator 0:bb348c97df44 2222 * @note Description of ADC group regular sequencer features:
lypinator 0:bb348c97df44 2223 * - For devices with sequencer fully configurable
lypinator 0:bb348c97df44 2224 * (function "LL_ADC_REG_SetSequencerRanks()" available):
lypinator 0:bb348c97df44 2225 * sequencer length and each rank affectation to a channel
lypinator 0:bb348c97df44 2226 * are configurable.
lypinator 0:bb348c97df44 2227 * This function performs configuration of:
lypinator 0:bb348c97df44 2228 * - Sequence length: Number of ranks in the scan sequence.
lypinator 0:bb348c97df44 2229 * - Sequence direction: Unless specified in parameters, sequencer
lypinator 0:bb348c97df44 2230 * scan direction is forward (from rank 1 to rank n).
lypinator 0:bb348c97df44 2231 * Sequencer ranks are selected using
lypinator 0:bb348c97df44 2232 * function "LL_ADC_REG_SetSequencerRanks()".
lypinator 0:bb348c97df44 2233 * - For devices with sequencer not fully configurable
lypinator 0:bb348c97df44 2234 * (function "LL_ADC_REG_SetSequencerChannels()" available):
lypinator 0:bb348c97df44 2235 * sequencer length and each rank affectation to a channel
lypinator 0:bb348c97df44 2236 * are defined by channel number.
lypinator 0:bb348c97df44 2237 * This function performs configuration of:
lypinator 0:bb348c97df44 2238 * - Sequence length: Number of ranks in the scan sequence is
lypinator 0:bb348c97df44 2239 * defined by number of channels set in the sequence,
lypinator 0:bb348c97df44 2240 * rank of each channel is fixed by channel HW number.
lypinator 0:bb348c97df44 2241 * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...).
lypinator 0:bb348c97df44 2242 * - Sequence direction: Unless specified in parameters, sequencer
lypinator 0:bb348c97df44 2243 * scan direction is forward (from lowest channel number to
lypinator 0:bb348c97df44 2244 * highest channel number).
lypinator 0:bb348c97df44 2245 * Sequencer ranks are selected using
lypinator 0:bb348c97df44 2246 * function "LL_ADC_REG_SetSequencerChannels()".
lypinator 0:bb348c97df44 2247 * @note On this STM32 serie, group regular sequencer configuration
lypinator 0:bb348c97df44 2248 * is conditioned to ADC instance sequencer mode.
lypinator 0:bb348c97df44 2249 * If ADC instance sequencer mode is disabled, sequencers of
lypinator 0:bb348c97df44 2250 * all groups (group regular, group injected) can be configured
lypinator 0:bb348c97df44 2251 * but their execution is disabled (limited to rank 1).
lypinator 0:bb348c97df44 2252 * Refer to function @ref LL_ADC_SetSequencersScanMode().
lypinator 0:bb348c97df44 2253 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
lypinator 0:bb348c97df44 2254 * ADC conversion on only 1 channel.
lypinator 0:bb348c97df44 2255 * @rmtoll SQR1 L LL_ADC_REG_SetSequencerLength
lypinator 0:bb348c97df44 2256 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2257 * @param SequencerNbRanks This parameter can be one of the following values:
lypinator 0:bb348c97df44 2258 * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE
lypinator 0:bb348c97df44 2259 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS
lypinator 0:bb348c97df44 2260 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS
lypinator 0:bb348c97df44 2261 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS
lypinator 0:bb348c97df44 2262 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS
lypinator 0:bb348c97df44 2263 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS
lypinator 0:bb348c97df44 2264 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS
lypinator 0:bb348c97df44 2265 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS
lypinator 0:bb348c97df44 2266 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS
lypinator 0:bb348c97df44 2267 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS
lypinator 0:bb348c97df44 2268 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS
lypinator 0:bb348c97df44 2269 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS
lypinator 0:bb348c97df44 2270 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS
lypinator 0:bb348c97df44 2271 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS
lypinator 0:bb348c97df44 2272 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS
lypinator 0:bb348c97df44 2273 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS
lypinator 0:bb348c97df44 2274 * @retval None
lypinator 0:bb348c97df44 2275 */
lypinator 0:bb348c97df44 2276 __STATIC_INLINE void LL_ADC_REG_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks)
lypinator 0:bb348c97df44 2277 {
lypinator 0:bb348c97df44 2278 MODIFY_REG(ADCx->SQR1, ADC_SQR1_L, SequencerNbRanks);
lypinator 0:bb348c97df44 2279 }
lypinator 0:bb348c97df44 2280
lypinator 0:bb348c97df44 2281 /**
lypinator 0:bb348c97df44 2282 * @brief Get ADC group regular sequencer length and scan direction.
lypinator 0:bb348c97df44 2283 * @note Description of ADC group regular sequencer features:
lypinator 0:bb348c97df44 2284 * - For devices with sequencer fully configurable
lypinator 0:bb348c97df44 2285 * (function "LL_ADC_REG_SetSequencerRanks()" available):
lypinator 0:bb348c97df44 2286 * sequencer length and each rank affectation to a channel
lypinator 0:bb348c97df44 2287 * are configurable.
lypinator 0:bb348c97df44 2288 * This function retrieves:
lypinator 0:bb348c97df44 2289 * - Sequence length: Number of ranks in the scan sequence.
lypinator 0:bb348c97df44 2290 * - Sequence direction: Unless specified in parameters, sequencer
lypinator 0:bb348c97df44 2291 * scan direction is forward (from rank 1 to rank n).
lypinator 0:bb348c97df44 2292 * Sequencer ranks are selected using
lypinator 0:bb348c97df44 2293 * function "LL_ADC_REG_SetSequencerRanks()".
lypinator 0:bb348c97df44 2294 * - For devices with sequencer not fully configurable
lypinator 0:bb348c97df44 2295 * (function "LL_ADC_REG_SetSequencerChannels()" available):
lypinator 0:bb348c97df44 2296 * sequencer length and each rank affectation to a channel
lypinator 0:bb348c97df44 2297 * are defined by channel number.
lypinator 0:bb348c97df44 2298 * This function retrieves:
lypinator 0:bb348c97df44 2299 * - Sequence length: Number of ranks in the scan sequence is
lypinator 0:bb348c97df44 2300 * defined by number of channels set in the sequence,
lypinator 0:bb348c97df44 2301 * rank of each channel is fixed by channel HW number.
lypinator 0:bb348c97df44 2302 * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...).
lypinator 0:bb348c97df44 2303 * - Sequence direction: Unless specified in parameters, sequencer
lypinator 0:bb348c97df44 2304 * scan direction is forward (from lowest channel number to
lypinator 0:bb348c97df44 2305 * highest channel number).
lypinator 0:bb348c97df44 2306 * Sequencer ranks are selected using
lypinator 0:bb348c97df44 2307 * function "LL_ADC_REG_SetSequencerChannels()".
lypinator 0:bb348c97df44 2308 * @note On this STM32 serie, group regular sequencer configuration
lypinator 0:bb348c97df44 2309 * is conditioned to ADC instance sequencer mode.
lypinator 0:bb348c97df44 2310 * If ADC instance sequencer mode is disabled, sequencers of
lypinator 0:bb348c97df44 2311 * all groups (group regular, group injected) can be configured
lypinator 0:bb348c97df44 2312 * but their execution is disabled (limited to rank 1).
lypinator 0:bb348c97df44 2313 * Refer to function @ref LL_ADC_SetSequencersScanMode().
lypinator 0:bb348c97df44 2314 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
lypinator 0:bb348c97df44 2315 * ADC conversion on only 1 channel.
lypinator 0:bb348c97df44 2316 * @rmtoll SQR1 L LL_ADC_REG_SetSequencerLength
lypinator 0:bb348c97df44 2317 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2318 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2319 * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE
lypinator 0:bb348c97df44 2320 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS
lypinator 0:bb348c97df44 2321 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS
lypinator 0:bb348c97df44 2322 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS
lypinator 0:bb348c97df44 2323 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS
lypinator 0:bb348c97df44 2324 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS
lypinator 0:bb348c97df44 2325 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS
lypinator 0:bb348c97df44 2326 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS
lypinator 0:bb348c97df44 2327 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS
lypinator 0:bb348c97df44 2328 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS
lypinator 0:bb348c97df44 2329 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS
lypinator 0:bb348c97df44 2330 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS
lypinator 0:bb348c97df44 2331 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS
lypinator 0:bb348c97df44 2332 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS
lypinator 0:bb348c97df44 2333 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS
lypinator 0:bb348c97df44 2334 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS
lypinator 0:bb348c97df44 2335 */
lypinator 0:bb348c97df44 2336 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerLength(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2337 {
lypinator 0:bb348c97df44 2338 return (uint32_t)(READ_BIT(ADCx->SQR1, ADC_SQR1_L));
lypinator 0:bb348c97df44 2339 }
lypinator 0:bb348c97df44 2340
lypinator 0:bb348c97df44 2341 /**
lypinator 0:bb348c97df44 2342 * @brief Set ADC group regular sequencer discontinuous mode:
lypinator 0:bb348c97df44 2343 * sequence subdivided and scan conversions interrupted every selected
lypinator 0:bb348c97df44 2344 * number of ranks.
lypinator 0:bb348c97df44 2345 * @note It is not possible to enable both ADC group regular
lypinator 0:bb348c97df44 2346 * continuous mode and sequencer discontinuous mode.
lypinator 0:bb348c97df44 2347 * @note It is not possible to enable both ADC auto-injected mode
lypinator 0:bb348c97df44 2348 * and ADC group regular sequencer discontinuous mode.
lypinator 0:bb348c97df44 2349 * @rmtoll CR1 DISCEN LL_ADC_REG_SetSequencerDiscont\n
lypinator 0:bb348c97df44 2350 * CR1 DISCNUM LL_ADC_REG_SetSequencerDiscont
lypinator 0:bb348c97df44 2351 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2352 * @param SeqDiscont This parameter can be one of the following values:
lypinator 0:bb348c97df44 2353 * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE
lypinator 0:bb348c97df44 2354 * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK
lypinator 0:bb348c97df44 2355 * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS
lypinator 0:bb348c97df44 2356 * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS
lypinator 0:bb348c97df44 2357 * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS
lypinator 0:bb348c97df44 2358 * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS
lypinator 0:bb348c97df44 2359 * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS
lypinator 0:bb348c97df44 2360 * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS
lypinator 0:bb348c97df44 2361 * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS
lypinator 0:bb348c97df44 2362 * @retval None
lypinator 0:bb348c97df44 2363 */
lypinator 0:bb348c97df44 2364 __STATIC_INLINE void LL_ADC_REG_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont)
lypinator 0:bb348c97df44 2365 {
lypinator 0:bb348c97df44 2366 MODIFY_REG(ADCx->CR1, ADC_CR1_DISCEN | ADC_CR1_DISCNUM, SeqDiscont);
lypinator 0:bb348c97df44 2367 }
lypinator 0:bb348c97df44 2368
lypinator 0:bb348c97df44 2369 /**
lypinator 0:bb348c97df44 2370 * @brief Get ADC group regular sequencer discontinuous mode:
lypinator 0:bb348c97df44 2371 * sequence subdivided and scan conversions interrupted every selected
lypinator 0:bb348c97df44 2372 * number of ranks.
lypinator 0:bb348c97df44 2373 * @rmtoll CR1 DISCEN LL_ADC_REG_GetSequencerDiscont\n
lypinator 0:bb348c97df44 2374 * CR1 DISCNUM LL_ADC_REG_GetSequencerDiscont
lypinator 0:bb348c97df44 2375 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2376 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2377 * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE
lypinator 0:bb348c97df44 2378 * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK
lypinator 0:bb348c97df44 2379 * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS
lypinator 0:bb348c97df44 2380 * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS
lypinator 0:bb348c97df44 2381 * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS
lypinator 0:bb348c97df44 2382 * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS
lypinator 0:bb348c97df44 2383 * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS
lypinator 0:bb348c97df44 2384 * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS
lypinator 0:bb348c97df44 2385 * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS
lypinator 0:bb348c97df44 2386 */
lypinator 0:bb348c97df44 2387 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerDiscont(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2388 {
lypinator 0:bb348c97df44 2389 return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_DISCEN | ADC_CR1_DISCNUM));
lypinator 0:bb348c97df44 2390 }
lypinator 0:bb348c97df44 2391
lypinator 0:bb348c97df44 2392 /**
lypinator 0:bb348c97df44 2393 * @brief Set ADC group regular sequence: channel on the selected
lypinator 0:bb348c97df44 2394 * scan sequence rank.
lypinator 0:bb348c97df44 2395 * @note This function performs configuration of:
lypinator 0:bb348c97df44 2396 * - Channels ordering into each rank of scan sequence:
lypinator 0:bb348c97df44 2397 * whatever channel can be placed into whatever rank.
lypinator 0:bb348c97df44 2398 * @note On this STM32 serie, ADC group regular sequencer is
lypinator 0:bb348c97df44 2399 * fully configurable: sequencer length and each rank
lypinator 0:bb348c97df44 2400 * affectation to a channel are configurable.
lypinator 0:bb348c97df44 2401 * Refer to description of function @ref LL_ADC_REG_SetSequencerLength().
lypinator 0:bb348c97df44 2402 * @note Depending on devices and packages, some channels may not be available.
lypinator 0:bb348c97df44 2403 * Refer to device datasheet for channels availability.
lypinator 0:bb348c97df44 2404 * @note On this STM32 serie, to measure internal channels (VrefInt,
lypinator 0:bb348c97df44 2405 * TempSensor, ...), measurement paths to internal channels must be
lypinator 0:bb348c97df44 2406 * enabled separately.
lypinator 0:bb348c97df44 2407 * This can be done using function @ref LL_ADC_SetCommonPathInternalCh().
lypinator 0:bb348c97df44 2408 * @rmtoll SQR3 SQ1 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2409 * SQR3 SQ2 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2410 * SQR3 SQ3 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2411 * SQR3 SQ4 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2412 * SQR3 SQ5 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2413 * SQR3 SQ6 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2414 * SQR2 SQ7 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2415 * SQR2 SQ8 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2416 * SQR2 SQ9 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2417 * SQR2 SQ10 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2418 * SQR2 SQ11 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2419 * SQR2 SQ12 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2420 * SQR1 SQ13 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2421 * SQR1 SQ14 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2422 * SQR1 SQ15 LL_ADC_REG_SetSequencerRanks\n
lypinator 0:bb348c97df44 2423 * SQR1 SQ16 LL_ADC_REG_SetSequencerRanks
lypinator 0:bb348c97df44 2424 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2425 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 2426 * @arg @ref LL_ADC_REG_RANK_1
lypinator 0:bb348c97df44 2427 * @arg @ref LL_ADC_REG_RANK_2
lypinator 0:bb348c97df44 2428 * @arg @ref LL_ADC_REG_RANK_3
lypinator 0:bb348c97df44 2429 * @arg @ref LL_ADC_REG_RANK_4
lypinator 0:bb348c97df44 2430 * @arg @ref LL_ADC_REG_RANK_5
lypinator 0:bb348c97df44 2431 * @arg @ref LL_ADC_REG_RANK_6
lypinator 0:bb348c97df44 2432 * @arg @ref LL_ADC_REG_RANK_7
lypinator 0:bb348c97df44 2433 * @arg @ref LL_ADC_REG_RANK_8
lypinator 0:bb348c97df44 2434 * @arg @ref LL_ADC_REG_RANK_9
lypinator 0:bb348c97df44 2435 * @arg @ref LL_ADC_REG_RANK_10
lypinator 0:bb348c97df44 2436 * @arg @ref LL_ADC_REG_RANK_11
lypinator 0:bb348c97df44 2437 * @arg @ref LL_ADC_REG_RANK_12
lypinator 0:bb348c97df44 2438 * @arg @ref LL_ADC_REG_RANK_13
lypinator 0:bb348c97df44 2439 * @arg @ref LL_ADC_REG_RANK_14
lypinator 0:bb348c97df44 2440 * @arg @ref LL_ADC_REG_RANK_15
lypinator 0:bb348c97df44 2441 * @arg @ref LL_ADC_REG_RANK_16
lypinator 0:bb348c97df44 2442 * @param Channel This parameter can be one of the following values:
lypinator 0:bb348c97df44 2443 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 2444 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 2445 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 2446 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 2447 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 2448 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 2449 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 2450 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 2451 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 2452 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 2453 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 2454 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 2455 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 2456 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 2457 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 2458 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 2459 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 2460 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 2461 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 2462 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 2463 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 2464 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 2465 *
lypinator 0:bb348c97df44 2466 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 2467 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.
lypinator 0:bb348c97df44 2468 * @retval None
lypinator 0:bb348c97df44 2469 */
lypinator 0:bb348c97df44 2470 __STATIC_INLINE void LL_ADC_REG_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
lypinator 0:bb348c97df44 2471 {
lypinator 0:bb348c97df44 2472 /* Set bits with content of parameter "Channel" with bits position */
lypinator 0:bb348c97df44 2473 /* in register and register position depending on parameter "Rank". */
lypinator 0:bb348c97df44 2474 /* Parameters "Rank" and "Channel" are used with masks because containing */
lypinator 0:bb348c97df44 2475 /* other bits reserved for other purpose. */
lypinator 0:bb348c97df44 2476 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 2477
lypinator 0:bb348c97df44 2478 MODIFY_REG(*preg,
lypinator 0:bb348c97df44 2479 ADC_CHANNEL_ID_NUMBER_MASK << (Rank & ADC_REG_RANK_ID_SQRX_MASK),
lypinator 0:bb348c97df44 2480 (Channel & ADC_CHANNEL_ID_NUMBER_MASK) << (Rank & ADC_REG_RANK_ID_SQRX_MASK));
lypinator 0:bb348c97df44 2481 }
lypinator 0:bb348c97df44 2482
lypinator 0:bb348c97df44 2483 /**
lypinator 0:bb348c97df44 2484 * @brief Get ADC group regular sequence: channel on the selected
lypinator 0:bb348c97df44 2485 * scan sequence rank.
lypinator 0:bb348c97df44 2486 * @note On this STM32 serie, ADC group regular sequencer is
lypinator 0:bb348c97df44 2487 * fully configurable: sequencer length and each rank
lypinator 0:bb348c97df44 2488 * affectation to a channel are configurable.
lypinator 0:bb348c97df44 2489 * Refer to description of function @ref LL_ADC_REG_SetSequencerLength().
lypinator 0:bb348c97df44 2490 * @note Depending on devices and packages, some channels may not be available.
lypinator 0:bb348c97df44 2491 * Refer to device datasheet for channels availability.
lypinator 0:bb348c97df44 2492 * @note Usage of the returned channel number:
lypinator 0:bb348c97df44 2493 * - To reinject this channel into another function LL_ADC_xxx:
lypinator 0:bb348c97df44 2494 * the returned channel number is only partly formatted on definition
lypinator 0:bb348c97df44 2495 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
lypinator 0:bb348c97df44 2496 * with parts of literals LL_ADC_CHANNEL_x or using
lypinator 0:bb348c97df44 2497 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
lypinator 0:bb348c97df44 2498 * Then the selected literal LL_ADC_CHANNEL_x can be used
lypinator 0:bb348c97df44 2499 * as parameter for another function.
lypinator 0:bb348c97df44 2500 * - To get the channel number in decimal format:
lypinator 0:bb348c97df44 2501 * process the returned value with the helper macro
lypinator 0:bb348c97df44 2502 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
lypinator 0:bb348c97df44 2503 * @rmtoll SQR3 SQ1 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2504 * SQR3 SQ2 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2505 * SQR3 SQ3 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2506 * SQR3 SQ4 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2507 * SQR3 SQ5 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2508 * SQR3 SQ6 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2509 * SQR2 SQ7 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2510 * SQR2 SQ8 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2511 * SQR2 SQ9 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2512 * SQR2 SQ10 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2513 * SQR2 SQ11 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2514 * SQR2 SQ12 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2515 * SQR1 SQ13 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2516 * SQR1 SQ14 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2517 * SQR1 SQ15 LL_ADC_REG_GetSequencerRanks\n
lypinator 0:bb348c97df44 2518 * SQR1 SQ16 LL_ADC_REG_GetSequencerRanks
lypinator 0:bb348c97df44 2519 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2520 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 2521 * @arg @ref LL_ADC_REG_RANK_1
lypinator 0:bb348c97df44 2522 * @arg @ref LL_ADC_REG_RANK_2
lypinator 0:bb348c97df44 2523 * @arg @ref LL_ADC_REG_RANK_3
lypinator 0:bb348c97df44 2524 * @arg @ref LL_ADC_REG_RANK_4
lypinator 0:bb348c97df44 2525 * @arg @ref LL_ADC_REG_RANK_5
lypinator 0:bb348c97df44 2526 * @arg @ref LL_ADC_REG_RANK_6
lypinator 0:bb348c97df44 2527 * @arg @ref LL_ADC_REG_RANK_7
lypinator 0:bb348c97df44 2528 * @arg @ref LL_ADC_REG_RANK_8
lypinator 0:bb348c97df44 2529 * @arg @ref LL_ADC_REG_RANK_9
lypinator 0:bb348c97df44 2530 * @arg @ref LL_ADC_REG_RANK_10
lypinator 0:bb348c97df44 2531 * @arg @ref LL_ADC_REG_RANK_11
lypinator 0:bb348c97df44 2532 * @arg @ref LL_ADC_REG_RANK_12
lypinator 0:bb348c97df44 2533 * @arg @ref LL_ADC_REG_RANK_13
lypinator 0:bb348c97df44 2534 * @arg @ref LL_ADC_REG_RANK_14
lypinator 0:bb348c97df44 2535 * @arg @ref LL_ADC_REG_RANK_15
lypinator 0:bb348c97df44 2536 * @arg @ref LL_ADC_REG_RANK_16
lypinator 0:bb348c97df44 2537 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2538 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 2539 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 2540 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 2541 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 2542 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 2543 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 2544 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 2545 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 2546 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 2547 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 2548 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 2549 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 2550 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 2551 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 2552 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 2553 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 2554 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 2555 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 2556 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 2557 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 2558 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 2559 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 2560 *
lypinator 0:bb348c97df44 2561 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 2562 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.\n
lypinator 0:bb348c97df44 2563 * (1) For ADC channel read back from ADC register,
lypinator 0:bb348c97df44 2564 * comparison with internal channel parameter to be done
lypinator 0:bb348c97df44 2565 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
lypinator 0:bb348c97df44 2566 */
lypinator 0:bb348c97df44 2567 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank)
lypinator 0:bb348c97df44 2568 {
lypinator 0:bb348c97df44 2569 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 2570
lypinator 0:bb348c97df44 2571 return (uint32_t) (READ_BIT(*preg,
lypinator 0:bb348c97df44 2572 ADC_CHANNEL_ID_NUMBER_MASK << (Rank & ADC_REG_RANK_ID_SQRX_MASK))
lypinator 0:bb348c97df44 2573 >> (Rank & ADC_REG_RANK_ID_SQRX_MASK)
lypinator 0:bb348c97df44 2574 );
lypinator 0:bb348c97df44 2575 }
lypinator 0:bb348c97df44 2576
lypinator 0:bb348c97df44 2577 /**
lypinator 0:bb348c97df44 2578 * @brief Set ADC continuous conversion mode on ADC group regular.
lypinator 0:bb348c97df44 2579 * @note Description of ADC continuous conversion mode:
lypinator 0:bb348c97df44 2580 * - single mode: one conversion per trigger
lypinator 0:bb348c97df44 2581 * - continuous mode: after the first trigger, following
lypinator 0:bb348c97df44 2582 * conversions launched successively automatically.
lypinator 0:bb348c97df44 2583 * @note It is not possible to enable both ADC group regular
lypinator 0:bb348c97df44 2584 * continuous mode and sequencer discontinuous mode.
lypinator 0:bb348c97df44 2585 * @rmtoll CR2 CONT LL_ADC_REG_SetContinuousMode
lypinator 0:bb348c97df44 2586 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2587 * @param Continuous This parameter can be one of the following values:
lypinator 0:bb348c97df44 2588 * @arg @ref LL_ADC_REG_CONV_SINGLE
lypinator 0:bb348c97df44 2589 * @arg @ref LL_ADC_REG_CONV_CONTINUOUS
lypinator 0:bb348c97df44 2590 * @retval None
lypinator 0:bb348c97df44 2591 */
lypinator 0:bb348c97df44 2592 __STATIC_INLINE void LL_ADC_REG_SetContinuousMode(ADC_TypeDef *ADCx, uint32_t Continuous)
lypinator 0:bb348c97df44 2593 {
lypinator 0:bb348c97df44 2594 MODIFY_REG(ADCx->CR2, ADC_CR2_CONT, Continuous);
lypinator 0:bb348c97df44 2595 }
lypinator 0:bb348c97df44 2596
lypinator 0:bb348c97df44 2597 /**
lypinator 0:bb348c97df44 2598 * @brief Get ADC continuous conversion mode on ADC group regular.
lypinator 0:bb348c97df44 2599 * @note Description of ADC continuous conversion mode:
lypinator 0:bb348c97df44 2600 * - single mode: one conversion per trigger
lypinator 0:bb348c97df44 2601 * - continuous mode: after the first trigger, following
lypinator 0:bb348c97df44 2602 * conversions launched successively automatically.
lypinator 0:bb348c97df44 2603 * @rmtoll CR2 CONT LL_ADC_REG_GetContinuousMode
lypinator 0:bb348c97df44 2604 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2605 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2606 * @arg @ref LL_ADC_REG_CONV_SINGLE
lypinator 0:bb348c97df44 2607 * @arg @ref LL_ADC_REG_CONV_CONTINUOUS
lypinator 0:bb348c97df44 2608 */
lypinator 0:bb348c97df44 2609 __STATIC_INLINE uint32_t LL_ADC_REG_GetContinuousMode(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2610 {
lypinator 0:bb348c97df44 2611 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_CONT));
lypinator 0:bb348c97df44 2612 }
lypinator 0:bb348c97df44 2613
lypinator 0:bb348c97df44 2614 /**
lypinator 0:bb348c97df44 2615 * @brief Set ADC group regular conversion data transfer: no transfer or
lypinator 0:bb348c97df44 2616 * transfer by DMA, and DMA requests mode.
lypinator 0:bb348c97df44 2617 * @note If transfer by DMA selected, specifies the DMA requests
lypinator 0:bb348c97df44 2618 * mode:
lypinator 0:bb348c97df44 2619 * - Limited mode (One shot mode): DMA transfer requests are stopped
lypinator 0:bb348c97df44 2620 * when number of DMA data transfers (number of
lypinator 0:bb348c97df44 2621 * ADC conversions) is reached.
lypinator 0:bb348c97df44 2622 * This ADC mode is intended to be used with DMA mode non-circular.
lypinator 0:bb348c97df44 2623 * - Unlimited mode: DMA transfer requests are unlimited,
lypinator 0:bb348c97df44 2624 * whatever number of DMA data transfers (number of
lypinator 0:bb348c97df44 2625 * ADC conversions).
lypinator 0:bb348c97df44 2626 * This ADC mode is intended to be used with DMA mode circular.
lypinator 0:bb348c97df44 2627 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
lypinator 0:bb348c97df44 2628 * mode non-circular:
lypinator 0:bb348c97df44 2629 * when DMA transfers size will be reached, DMA will stop transfers of
lypinator 0:bb348c97df44 2630 * ADC conversions data ADC will raise an overrun error
lypinator 0:bb348c97df44 2631 * (overrun flag and interruption if enabled).
lypinator 0:bb348c97df44 2632 * @note For devices with several ADC instances: ADC multimode DMA
lypinator 0:bb348c97df44 2633 * settings are available using function @ref LL_ADC_SetMultiDMATransfer().
lypinator 0:bb348c97df44 2634 * @note To configure DMA source address (peripheral address),
lypinator 0:bb348c97df44 2635 * use function @ref LL_ADC_DMA_GetRegAddr().
lypinator 0:bb348c97df44 2636 * @rmtoll CR2 DMA LL_ADC_REG_SetDMATransfer\n
lypinator 0:bb348c97df44 2637 * CR2 DDS LL_ADC_REG_SetDMATransfer
lypinator 0:bb348c97df44 2638 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2639 * @param DMATransfer This parameter can be one of the following values:
lypinator 0:bb348c97df44 2640 * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE
lypinator 0:bb348c97df44 2641 * @arg @ref LL_ADC_REG_DMA_TRANSFER_LIMITED
lypinator 0:bb348c97df44 2642 * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED
lypinator 0:bb348c97df44 2643 * @retval None
lypinator 0:bb348c97df44 2644 */
lypinator 0:bb348c97df44 2645 __STATIC_INLINE void LL_ADC_REG_SetDMATransfer(ADC_TypeDef *ADCx, uint32_t DMATransfer)
lypinator 0:bb348c97df44 2646 {
lypinator 0:bb348c97df44 2647 MODIFY_REG(ADCx->CR2, ADC_CR2_DMA | ADC_CR2_DDS, DMATransfer);
lypinator 0:bb348c97df44 2648 }
lypinator 0:bb348c97df44 2649
lypinator 0:bb348c97df44 2650 /**
lypinator 0:bb348c97df44 2651 * @brief Get ADC group regular conversion data transfer: no transfer or
lypinator 0:bb348c97df44 2652 * transfer by DMA, and DMA requests mode.
lypinator 0:bb348c97df44 2653 * @note If transfer by DMA selected, specifies the DMA requests
lypinator 0:bb348c97df44 2654 * mode:
lypinator 0:bb348c97df44 2655 * - Limited mode (One shot mode): DMA transfer requests are stopped
lypinator 0:bb348c97df44 2656 * when number of DMA data transfers (number of
lypinator 0:bb348c97df44 2657 * ADC conversions) is reached.
lypinator 0:bb348c97df44 2658 * This ADC mode is intended to be used with DMA mode non-circular.
lypinator 0:bb348c97df44 2659 * - Unlimited mode: DMA transfer requests are unlimited,
lypinator 0:bb348c97df44 2660 * whatever number of DMA data transfers (number of
lypinator 0:bb348c97df44 2661 * ADC conversions).
lypinator 0:bb348c97df44 2662 * This ADC mode is intended to be used with DMA mode circular.
lypinator 0:bb348c97df44 2663 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
lypinator 0:bb348c97df44 2664 * mode non-circular:
lypinator 0:bb348c97df44 2665 * when DMA transfers size will be reached, DMA will stop transfers of
lypinator 0:bb348c97df44 2666 * ADC conversions data ADC will raise an overrun error
lypinator 0:bb348c97df44 2667 * (overrun flag and interruption if enabled).
lypinator 0:bb348c97df44 2668 * @note For devices with several ADC instances: ADC multimode DMA
lypinator 0:bb348c97df44 2669 * settings are available using function @ref LL_ADC_GetMultiDMATransfer().
lypinator 0:bb348c97df44 2670 * @note To configure DMA source address (peripheral address),
lypinator 0:bb348c97df44 2671 * use function @ref LL_ADC_DMA_GetRegAddr().
lypinator 0:bb348c97df44 2672 * @rmtoll CR2 DMA LL_ADC_REG_GetDMATransfer\n
lypinator 0:bb348c97df44 2673 * CR2 DDS LL_ADC_REG_GetDMATransfer
lypinator 0:bb348c97df44 2674 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2675 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2676 * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE
lypinator 0:bb348c97df44 2677 * @arg @ref LL_ADC_REG_DMA_TRANSFER_LIMITED
lypinator 0:bb348c97df44 2678 * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED
lypinator 0:bb348c97df44 2679 */
lypinator 0:bb348c97df44 2680 __STATIC_INLINE uint32_t LL_ADC_REG_GetDMATransfer(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2681 {
lypinator 0:bb348c97df44 2682 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_DMA | ADC_CR2_DDS));
lypinator 0:bb348c97df44 2683 }
lypinator 0:bb348c97df44 2684
lypinator 0:bb348c97df44 2685 /**
lypinator 0:bb348c97df44 2686 * @brief Specify which ADC flag between EOC (end of unitary conversion)
lypinator 0:bb348c97df44 2687 * or EOS (end of sequence conversions) is used to indicate
lypinator 0:bb348c97df44 2688 * the end of conversion.
lypinator 0:bb348c97df44 2689 * @note This feature is aimed to be set when using ADC with
lypinator 0:bb348c97df44 2690 * programming model by polling or interruption
lypinator 0:bb348c97df44 2691 * (programming model by DMA usually uses DMA interruptions
lypinator 0:bb348c97df44 2692 * to indicate end of conversion and data transfer).
lypinator 0:bb348c97df44 2693 * @note For ADC group injected, end of conversion (flag&IT) is raised
lypinator 0:bb348c97df44 2694 * only at the end of the sequence.
lypinator 0:bb348c97df44 2695 * @rmtoll CR2 EOCS LL_ADC_REG_SetFlagEndOfConversion
lypinator 0:bb348c97df44 2696 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2697 * @param EocSelection This parameter can be one of the following values:
lypinator 0:bb348c97df44 2698 * @arg @ref LL_ADC_REG_FLAG_EOC_SEQUENCE_CONV
lypinator 0:bb348c97df44 2699 * @arg @ref LL_ADC_REG_FLAG_EOC_UNITARY_CONV
lypinator 0:bb348c97df44 2700 * @retval None
lypinator 0:bb348c97df44 2701 */
lypinator 0:bb348c97df44 2702 __STATIC_INLINE void LL_ADC_REG_SetFlagEndOfConversion(ADC_TypeDef *ADCx, uint32_t EocSelection)
lypinator 0:bb348c97df44 2703 {
lypinator 0:bb348c97df44 2704 MODIFY_REG(ADCx->CR2, ADC_CR2_EOCS, EocSelection);
lypinator 0:bb348c97df44 2705 }
lypinator 0:bb348c97df44 2706
lypinator 0:bb348c97df44 2707 /**
lypinator 0:bb348c97df44 2708 * @brief Get which ADC flag between EOC (end of unitary conversion)
lypinator 0:bb348c97df44 2709 * or EOS (end of sequence conversions) is used to indicate
lypinator 0:bb348c97df44 2710 * the end of conversion.
lypinator 0:bb348c97df44 2711 * @rmtoll CR2 EOCS LL_ADC_REG_GetFlagEndOfConversion
lypinator 0:bb348c97df44 2712 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2713 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2714 * @arg @ref LL_ADC_REG_FLAG_EOC_SEQUENCE_CONV
lypinator 0:bb348c97df44 2715 * @arg @ref LL_ADC_REG_FLAG_EOC_UNITARY_CONV
lypinator 0:bb348c97df44 2716 */
lypinator 0:bb348c97df44 2717 __STATIC_INLINE uint32_t LL_ADC_REG_GetFlagEndOfConversion(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2718 {
lypinator 0:bb348c97df44 2719 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_EOCS));
lypinator 0:bb348c97df44 2720 }
lypinator 0:bb348c97df44 2721
lypinator 0:bb348c97df44 2722 /**
lypinator 0:bb348c97df44 2723 * @}
lypinator 0:bb348c97df44 2724 */
lypinator 0:bb348c97df44 2725
lypinator 0:bb348c97df44 2726 /** @defgroup ADC_LL_EF_Configuration_ADC_Group_Injected Configuration of ADC hierarchical scope: group injected
lypinator 0:bb348c97df44 2727 * @{
lypinator 0:bb348c97df44 2728 */
lypinator 0:bb348c97df44 2729
lypinator 0:bb348c97df44 2730 /**
lypinator 0:bb348c97df44 2731 * @brief Set ADC group injected conversion trigger source:
lypinator 0:bb348c97df44 2732 * internal (SW start) or from external IP (timer event,
lypinator 0:bb348c97df44 2733 * external interrupt line).
lypinator 0:bb348c97df44 2734 * @note On this STM32 serie, setting of external trigger edge is performed
lypinator 0:bb348c97df44 2735 * using function @ref LL_ADC_INJ_StartConversionExtTrig().
lypinator 0:bb348c97df44 2736 * @note Availability of parameters of trigger sources from timer
lypinator 0:bb348c97df44 2737 * depends on timers availability on the selected device.
lypinator 0:bb348c97df44 2738 * @rmtoll CR2 JEXTSEL LL_ADC_INJ_SetTriggerSource\n
lypinator 0:bb348c97df44 2739 * CR2 JEXTEN LL_ADC_INJ_SetTriggerSource
lypinator 0:bb348c97df44 2740 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2741 * @param TriggerSource This parameter can be one of the following values:
lypinator 0:bb348c97df44 2742 * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE
lypinator 0:bb348c97df44 2743 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4
lypinator 0:bb348c97df44 2744 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO
lypinator 0:bb348c97df44 2745 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1
lypinator 0:bb348c97df44 2746 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO
lypinator 0:bb348c97df44 2747 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH2
lypinator 0:bb348c97df44 2748 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4
lypinator 0:bb348c97df44 2749 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH1
lypinator 0:bb348c97df44 2750 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH2
lypinator 0:bb348c97df44 2751 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH3
lypinator 0:bb348c97df44 2752 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO
lypinator 0:bb348c97df44 2753 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM5_CH4
lypinator 0:bb348c97df44 2754 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM5_TRGO
lypinator 0:bb348c97df44 2755 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH2
lypinator 0:bb348c97df44 2756 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH3
lypinator 0:bb348c97df44 2757 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4
lypinator 0:bb348c97df44 2758 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15
lypinator 0:bb348c97df44 2759 * @retval None
lypinator 0:bb348c97df44 2760 */
lypinator 0:bb348c97df44 2761 __STATIC_INLINE void LL_ADC_INJ_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource)
lypinator 0:bb348c97df44 2762 {
lypinator 0:bb348c97df44 2763 /* Note: On this STM32 serie, ADC group injected external trigger edge */
lypinator 0:bb348c97df44 2764 /* is used to perform a ADC conversion start. */
lypinator 0:bb348c97df44 2765 /* This function does not set external trigger edge. */
lypinator 0:bb348c97df44 2766 /* This feature is set using function */
lypinator 0:bb348c97df44 2767 /* @ref LL_ADC_INJ_StartConversionExtTrig(). */
lypinator 0:bb348c97df44 2768 MODIFY_REG(ADCx->CR2, ADC_CR2_JEXTSEL, (TriggerSource & ADC_CR2_JEXTSEL));
lypinator 0:bb348c97df44 2769 }
lypinator 0:bb348c97df44 2770
lypinator 0:bb348c97df44 2771 /**
lypinator 0:bb348c97df44 2772 * @brief Get ADC group injected conversion trigger source:
lypinator 0:bb348c97df44 2773 * internal (SW start) or from external IP (timer event,
lypinator 0:bb348c97df44 2774 * external interrupt line).
lypinator 0:bb348c97df44 2775 * @note To determine whether group injected trigger source is
lypinator 0:bb348c97df44 2776 * internal (SW start) or external, without detail
lypinator 0:bb348c97df44 2777 * of which peripheral is selected as external trigger,
lypinator 0:bb348c97df44 2778 * (equivalent to
lypinator 0:bb348c97df44 2779 * "if(LL_ADC_INJ_GetTriggerSource(ADC1) == LL_ADC_INJ_TRIG_SOFTWARE)")
lypinator 0:bb348c97df44 2780 * use function @ref LL_ADC_INJ_IsTriggerSourceSWStart.
lypinator 0:bb348c97df44 2781 * @note Availability of parameters of trigger sources from timer
lypinator 0:bb348c97df44 2782 * depends on timers availability on the selected device.
lypinator 0:bb348c97df44 2783 * @rmtoll CR2 JEXTSEL LL_ADC_INJ_GetTriggerSource\n
lypinator 0:bb348c97df44 2784 * CR2 JEXTEN LL_ADC_INJ_GetTriggerSource
lypinator 0:bb348c97df44 2785 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2786 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2787 * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE
lypinator 0:bb348c97df44 2788 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4
lypinator 0:bb348c97df44 2789 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO
lypinator 0:bb348c97df44 2790 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1
lypinator 0:bb348c97df44 2791 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO
lypinator 0:bb348c97df44 2792 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH2
lypinator 0:bb348c97df44 2793 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4
lypinator 0:bb348c97df44 2794 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH1
lypinator 0:bb348c97df44 2795 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH2
lypinator 0:bb348c97df44 2796 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH3
lypinator 0:bb348c97df44 2797 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO
lypinator 0:bb348c97df44 2798 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM5_CH4
lypinator 0:bb348c97df44 2799 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM5_TRGO
lypinator 0:bb348c97df44 2800 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH2
lypinator 0:bb348c97df44 2801 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH3
lypinator 0:bb348c97df44 2802 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4
lypinator 0:bb348c97df44 2803 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15
lypinator 0:bb348c97df44 2804 */
lypinator 0:bb348c97df44 2805 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerSource(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2806 {
lypinator 0:bb348c97df44 2807 register uint32_t TriggerSource = READ_BIT(ADCx->CR2, ADC_CR2_JEXTSEL | ADC_CR2_JEXTEN);
lypinator 0:bb348c97df44 2808
lypinator 0:bb348c97df44 2809 /* Value for shift of {0; 4; 8; 12} depending on value of bitfield */
lypinator 0:bb348c97df44 2810 /* corresponding to ADC_CR2_JEXTEN {0; 1; 2; 3}. */
lypinator 0:bb348c97df44 2811 register uint32_t ShiftExten = ((TriggerSource & ADC_CR2_JEXTEN) >> (ADC_INJ_TRIG_EXTEN_BITOFFSET_POS - 2U));
lypinator 0:bb348c97df44 2812
lypinator 0:bb348c97df44 2813 /* Set bitfield corresponding to ADC_CR2_JEXTEN and ADC_CR2_JEXTSEL */
lypinator 0:bb348c97df44 2814 /* to match with triggers literals definition. */
lypinator 0:bb348c97df44 2815 return ((TriggerSource
lypinator 0:bb348c97df44 2816 & (ADC_INJ_TRIG_SOURCE_MASK << ShiftExten) & ADC_CR2_JEXTSEL)
lypinator 0:bb348c97df44 2817 | ((ADC_INJ_TRIG_EDGE_MASK << ShiftExten) & ADC_CR2_JEXTEN)
lypinator 0:bb348c97df44 2818 );
lypinator 0:bb348c97df44 2819 }
lypinator 0:bb348c97df44 2820
lypinator 0:bb348c97df44 2821 /**
lypinator 0:bb348c97df44 2822 * @brief Get ADC group injected conversion trigger source internal (SW start)
lypinator 0:bb348c97df44 2823 or external
lypinator 0:bb348c97df44 2824 * @note In case of group injected trigger source set to external trigger,
lypinator 0:bb348c97df44 2825 * to determine which peripheral is selected as external trigger,
lypinator 0:bb348c97df44 2826 * use function @ref LL_ADC_INJ_GetTriggerSource.
lypinator 0:bb348c97df44 2827 * @rmtoll CR2 JEXTEN LL_ADC_INJ_IsTriggerSourceSWStart
lypinator 0:bb348c97df44 2828 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2829 * @retval Value "0" if trigger source external trigger
lypinator 0:bb348c97df44 2830 * Value "1" if trigger source SW start.
lypinator 0:bb348c97df44 2831 */
lypinator 0:bb348c97df44 2832 __STATIC_INLINE uint32_t LL_ADC_INJ_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2833 {
lypinator 0:bb348c97df44 2834 return (READ_BIT(ADCx->CR2, ADC_CR2_JEXTEN) == (LL_ADC_INJ_TRIG_SOFTWARE & ADC_CR2_JEXTEN));
lypinator 0:bb348c97df44 2835 }
lypinator 0:bb348c97df44 2836
lypinator 0:bb348c97df44 2837 /**
lypinator 0:bb348c97df44 2838 * @brief Get ADC group injected conversion trigger polarity.
lypinator 0:bb348c97df44 2839 * Applicable only for trigger source set to external trigger.
lypinator 0:bb348c97df44 2840 * @rmtoll CR2 JEXTEN LL_ADC_INJ_GetTriggerEdge
lypinator 0:bb348c97df44 2841 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2842 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2843 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING
lypinator 0:bb348c97df44 2844 * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING
lypinator 0:bb348c97df44 2845 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING
lypinator 0:bb348c97df44 2846 */
lypinator 0:bb348c97df44 2847 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerEdge(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2848 {
lypinator 0:bb348c97df44 2849 return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_JEXTEN));
lypinator 0:bb348c97df44 2850 }
lypinator 0:bb348c97df44 2851
lypinator 0:bb348c97df44 2852 /**
lypinator 0:bb348c97df44 2853 * @brief Set ADC group injected sequencer length and scan direction.
lypinator 0:bb348c97df44 2854 * @note This function performs configuration of:
lypinator 0:bb348c97df44 2855 * - Sequence length: Number of ranks in the scan sequence.
lypinator 0:bb348c97df44 2856 * - Sequence direction: Unless specified in parameters, sequencer
lypinator 0:bb348c97df44 2857 * scan direction is forward (from rank 1 to rank n).
lypinator 0:bb348c97df44 2858 * @note On this STM32 serie, group injected sequencer configuration
lypinator 0:bb348c97df44 2859 * is conditioned to ADC instance sequencer mode.
lypinator 0:bb348c97df44 2860 * If ADC instance sequencer mode is disabled, sequencers of
lypinator 0:bb348c97df44 2861 * all groups (group regular, group injected) can be configured
lypinator 0:bb348c97df44 2862 * but their execution is disabled (limited to rank 1).
lypinator 0:bb348c97df44 2863 * Refer to function @ref LL_ADC_SetSequencersScanMode().
lypinator 0:bb348c97df44 2864 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
lypinator 0:bb348c97df44 2865 * ADC conversion on only 1 channel.
lypinator 0:bb348c97df44 2866 * @rmtoll JSQR JL LL_ADC_INJ_SetSequencerLength
lypinator 0:bb348c97df44 2867 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2868 * @param SequencerNbRanks This parameter can be one of the following values:
lypinator 0:bb348c97df44 2869 * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE
lypinator 0:bb348c97df44 2870 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS
lypinator 0:bb348c97df44 2871 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS
lypinator 0:bb348c97df44 2872 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS
lypinator 0:bb348c97df44 2873 * @retval None
lypinator 0:bb348c97df44 2874 */
lypinator 0:bb348c97df44 2875 __STATIC_INLINE void LL_ADC_INJ_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks)
lypinator 0:bb348c97df44 2876 {
lypinator 0:bb348c97df44 2877 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JL, SequencerNbRanks);
lypinator 0:bb348c97df44 2878 }
lypinator 0:bb348c97df44 2879
lypinator 0:bb348c97df44 2880 /**
lypinator 0:bb348c97df44 2881 * @brief Get ADC group injected sequencer length and scan direction.
lypinator 0:bb348c97df44 2882 * @note This function retrieves:
lypinator 0:bb348c97df44 2883 * - Sequence length: Number of ranks in the scan sequence.
lypinator 0:bb348c97df44 2884 * - Sequence direction: Unless specified in parameters, sequencer
lypinator 0:bb348c97df44 2885 * scan direction is forward (from rank 1 to rank n).
lypinator 0:bb348c97df44 2886 * @note On this STM32 serie, group injected sequencer configuration
lypinator 0:bb348c97df44 2887 * is conditioned to ADC instance sequencer mode.
lypinator 0:bb348c97df44 2888 * If ADC instance sequencer mode is disabled, sequencers of
lypinator 0:bb348c97df44 2889 * all groups (group regular, group injected) can be configured
lypinator 0:bb348c97df44 2890 * but their execution is disabled (limited to rank 1).
lypinator 0:bb348c97df44 2891 * Refer to function @ref LL_ADC_SetSequencersScanMode().
lypinator 0:bb348c97df44 2892 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
lypinator 0:bb348c97df44 2893 * ADC conversion on only 1 channel.
lypinator 0:bb348c97df44 2894 * @rmtoll JSQR JL LL_ADC_INJ_GetSequencerLength
lypinator 0:bb348c97df44 2895 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2896 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2897 * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE
lypinator 0:bb348c97df44 2898 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS
lypinator 0:bb348c97df44 2899 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS
lypinator 0:bb348c97df44 2900 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS
lypinator 0:bb348c97df44 2901 */
lypinator 0:bb348c97df44 2902 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerLength(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2903 {
lypinator 0:bb348c97df44 2904 return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JL));
lypinator 0:bb348c97df44 2905 }
lypinator 0:bb348c97df44 2906
lypinator 0:bb348c97df44 2907 /**
lypinator 0:bb348c97df44 2908 * @brief Set ADC group injected sequencer discontinuous mode:
lypinator 0:bb348c97df44 2909 * sequence subdivided and scan conversions interrupted every selected
lypinator 0:bb348c97df44 2910 * number of ranks.
lypinator 0:bb348c97df44 2911 * @note It is not possible to enable both ADC group injected
lypinator 0:bb348c97df44 2912 * auto-injected mode and sequencer discontinuous mode.
lypinator 0:bb348c97df44 2913 * @rmtoll CR1 DISCEN LL_ADC_INJ_SetSequencerDiscont
lypinator 0:bb348c97df44 2914 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2915 * @param SeqDiscont This parameter can be one of the following values:
lypinator 0:bb348c97df44 2916 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE
lypinator 0:bb348c97df44 2917 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK
lypinator 0:bb348c97df44 2918 * @retval None
lypinator 0:bb348c97df44 2919 */
lypinator 0:bb348c97df44 2920 __STATIC_INLINE void LL_ADC_INJ_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont)
lypinator 0:bb348c97df44 2921 {
lypinator 0:bb348c97df44 2922 MODIFY_REG(ADCx->CR1, ADC_CR1_JDISCEN, SeqDiscont);
lypinator 0:bb348c97df44 2923 }
lypinator 0:bb348c97df44 2924
lypinator 0:bb348c97df44 2925 /**
lypinator 0:bb348c97df44 2926 * @brief Get ADC group injected sequencer discontinuous mode:
lypinator 0:bb348c97df44 2927 * sequence subdivided and scan conversions interrupted every selected
lypinator 0:bb348c97df44 2928 * number of ranks.
lypinator 0:bb348c97df44 2929 * @rmtoll CR1 DISCEN LL_ADC_REG_GetSequencerDiscont
lypinator 0:bb348c97df44 2930 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2931 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 2932 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE
lypinator 0:bb348c97df44 2933 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK
lypinator 0:bb348c97df44 2934 */
lypinator 0:bb348c97df44 2935 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerDiscont(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 2936 {
lypinator 0:bb348c97df44 2937 return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_JDISCEN));
lypinator 0:bb348c97df44 2938 }
lypinator 0:bb348c97df44 2939
lypinator 0:bb348c97df44 2940 /**
lypinator 0:bb348c97df44 2941 * @brief Set ADC group injected sequence: channel on the selected
lypinator 0:bb348c97df44 2942 * sequence rank.
lypinator 0:bb348c97df44 2943 * @note Depending on devices and packages, some channels may not be available.
lypinator 0:bb348c97df44 2944 * Refer to device datasheet for channels availability.
lypinator 0:bb348c97df44 2945 * @note On this STM32 serie, to measure internal channels (VrefInt,
lypinator 0:bb348c97df44 2946 * TempSensor, ...), measurement paths to internal channels must be
lypinator 0:bb348c97df44 2947 * enabled separately.
lypinator 0:bb348c97df44 2948 * This can be done using function @ref LL_ADC_SetCommonPathInternalCh().
lypinator 0:bb348c97df44 2949 * @rmtoll JSQR JSQ1 LL_ADC_INJ_SetSequencerRanks\n
lypinator 0:bb348c97df44 2950 * JSQR JSQ2 LL_ADC_INJ_SetSequencerRanks\n
lypinator 0:bb348c97df44 2951 * JSQR JSQ3 LL_ADC_INJ_SetSequencerRanks\n
lypinator 0:bb348c97df44 2952 * JSQR JSQ4 LL_ADC_INJ_SetSequencerRanks
lypinator 0:bb348c97df44 2953 * @param ADCx ADC instance
lypinator 0:bb348c97df44 2954 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 2955 * @arg @ref LL_ADC_INJ_RANK_1
lypinator 0:bb348c97df44 2956 * @arg @ref LL_ADC_INJ_RANK_2
lypinator 0:bb348c97df44 2957 * @arg @ref LL_ADC_INJ_RANK_3
lypinator 0:bb348c97df44 2958 * @arg @ref LL_ADC_INJ_RANK_4
lypinator 0:bb348c97df44 2959 * @param Channel This parameter can be one of the following values:
lypinator 0:bb348c97df44 2960 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 2961 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 2962 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 2963 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 2964 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 2965 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 2966 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 2967 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 2968 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 2969 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 2970 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 2971 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 2972 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 2973 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 2974 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 2975 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 2976 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 2977 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 2978 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 2979 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 2980 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 2981 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 2982 *
lypinator 0:bb348c97df44 2983 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 2984 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.
lypinator 0:bb348c97df44 2985 * @retval None
lypinator 0:bb348c97df44 2986 */
lypinator 0:bb348c97df44 2987 __STATIC_INLINE void LL_ADC_INJ_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
lypinator 0:bb348c97df44 2988 {
lypinator 0:bb348c97df44 2989 /* Set bits with content of parameter "Channel" with bits position */
lypinator 0:bb348c97df44 2990 /* in register depending on parameter "Rank". */
lypinator 0:bb348c97df44 2991 /* Parameters "Rank" and "Channel" are used with masks because containing */
lypinator 0:bb348c97df44 2992 /* other bits reserved for other purpose. */
lypinator 0:bb348c97df44 2993 register uint32_t tmpreg1 = (READ_BIT(ADCx->JSQR, ADC_JSQR_JL) >> ADC_JSQR_JL_Pos) + 1U;
lypinator 0:bb348c97df44 2994
lypinator 0:bb348c97df44 2995 MODIFY_REG(ADCx->JSQR,
lypinator 0:bb348c97df44 2996 ADC_CHANNEL_ID_NUMBER_MASK << (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1))),
lypinator 0:bb348c97df44 2997 (Channel & ADC_CHANNEL_ID_NUMBER_MASK) << (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1))));
lypinator 0:bb348c97df44 2998 }
lypinator 0:bb348c97df44 2999
lypinator 0:bb348c97df44 3000 /**
lypinator 0:bb348c97df44 3001 * @brief Get ADC group injected sequence: channel on the selected
lypinator 0:bb348c97df44 3002 * sequence rank.
lypinator 0:bb348c97df44 3003 * @note Depending on devices and packages, some channels may not be available.
lypinator 0:bb348c97df44 3004 * Refer to device datasheet for channels availability.
lypinator 0:bb348c97df44 3005 * @note Usage of the returned channel number:
lypinator 0:bb348c97df44 3006 * - To reinject this channel into another function LL_ADC_xxx:
lypinator 0:bb348c97df44 3007 * the returned channel number is only partly formatted on definition
lypinator 0:bb348c97df44 3008 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
lypinator 0:bb348c97df44 3009 * with parts of literals LL_ADC_CHANNEL_x or using
lypinator 0:bb348c97df44 3010 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
lypinator 0:bb348c97df44 3011 * Then the selected literal LL_ADC_CHANNEL_x can be used
lypinator 0:bb348c97df44 3012 * as parameter for another function.
lypinator 0:bb348c97df44 3013 * - To get the channel number in decimal format:
lypinator 0:bb348c97df44 3014 * process the returned value with the helper macro
lypinator 0:bb348c97df44 3015 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
lypinator 0:bb348c97df44 3016 * @rmtoll JSQR JSQ1 LL_ADC_INJ_SetSequencerRanks\n
lypinator 0:bb348c97df44 3017 * JSQR JSQ2 LL_ADC_INJ_SetSequencerRanks\n
lypinator 0:bb348c97df44 3018 * JSQR JSQ3 LL_ADC_INJ_SetSequencerRanks\n
lypinator 0:bb348c97df44 3019 * JSQR JSQ4 LL_ADC_INJ_SetSequencerRanks
lypinator 0:bb348c97df44 3020 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3021 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 3022 * @arg @ref LL_ADC_INJ_RANK_1
lypinator 0:bb348c97df44 3023 * @arg @ref LL_ADC_INJ_RANK_2
lypinator 0:bb348c97df44 3024 * @arg @ref LL_ADC_INJ_RANK_3
lypinator 0:bb348c97df44 3025 * @arg @ref LL_ADC_INJ_RANK_4
lypinator 0:bb348c97df44 3026 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 3027 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 3028 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 3029 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 3030 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 3031 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 3032 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 3033 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 3034 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 3035 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 3036 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 3037 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 3038 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 3039 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 3040 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 3041 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 3042 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 3043 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 3044 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 3045 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 3046 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 3047 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 3048 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 3049 *
lypinator 0:bb348c97df44 3050 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 3051 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.\n
lypinator 0:bb348c97df44 3052 * (1) For ADC channel read back from ADC register,
lypinator 0:bb348c97df44 3053 * comparison with internal channel parameter to be done
lypinator 0:bb348c97df44 3054 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
lypinator 0:bb348c97df44 3055 */
lypinator 0:bb348c97df44 3056 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank)
lypinator 0:bb348c97df44 3057 {
lypinator 0:bb348c97df44 3058 register uint32_t tmpreg1 = (READ_BIT(ADCx->JSQR, ADC_JSQR_JL) >> ADC_JSQR_JL_Pos) + 1U;
lypinator 0:bb348c97df44 3059
lypinator 0:bb348c97df44 3060 return (uint32_t)(READ_BIT(ADCx->JSQR,
lypinator 0:bb348c97df44 3061 ADC_CHANNEL_ID_NUMBER_MASK << (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1))))
lypinator 0:bb348c97df44 3062 >> (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1)))
lypinator 0:bb348c97df44 3063 );
lypinator 0:bb348c97df44 3064 }
lypinator 0:bb348c97df44 3065
lypinator 0:bb348c97df44 3066 /**
lypinator 0:bb348c97df44 3067 * @brief Set ADC group injected conversion trigger:
lypinator 0:bb348c97df44 3068 * independent or from ADC group regular.
lypinator 0:bb348c97df44 3069 * @note This mode can be used to extend number of data registers
lypinator 0:bb348c97df44 3070 * updated after one ADC conversion trigger and with data
lypinator 0:bb348c97df44 3071 * permanently kept (not erased by successive conversions of scan of
lypinator 0:bb348c97df44 3072 * ADC sequencer ranks), up to 5 data registers:
lypinator 0:bb348c97df44 3073 * 1 data register on ADC group regular, 4 data registers
lypinator 0:bb348c97df44 3074 * on ADC group injected.
lypinator 0:bb348c97df44 3075 * @note If ADC group injected injected trigger source is set to an
lypinator 0:bb348c97df44 3076 * external trigger, this feature must be must be set to
lypinator 0:bb348c97df44 3077 * independent trigger.
lypinator 0:bb348c97df44 3078 * ADC group injected automatic trigger is compliant only with
lypinator 0:bb348c97df44 3079 * group injected trigger source set to SW start, without any
lypinator 0:bb348c97df44 3080 * further action on ADC group injected conversion start or stop:
lypinator 0:bb348c97df44 3081 * in this case, ADC group injected is controlled only
lypinator 0:bb348c97df44 3082 * from ADC group regular.
lypinator 0:bb348c97df44 3083 * @note It is not possible to enable both ADC group injected
lypinator 0:bb348c97df44 3084 * auto-injected mode and sequencer discontinuous mode.
lypinator 0:bb348c97df44 3085 * @rmtoll CR1 JAUTO LL_ADC_INJ_SetTrigAuto
lypinator 0:bb348c97df44 3086 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3087 * @param TrigAuto This parameter can be one of the following values:
lypinator 0:bb348c97df44 3088 * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT
lypinator 0:bb348c97df44 3089 * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR
lypinator 0:bb348c97df44 3090 * @retval None
lypinator 0:bb348c97df44 3091 */
lypinator 0:bb348c97df44 3092 __STATIC_INLINE void LL_ADC_INJ_SetTrigAuto(ADC_TypeDef *ADCx, uint32_t TrigAuto)
lypinator 0:bb348c97df44 3093 {
lypinator 0:bb348c97df44 3094 MODIFY_REG(ADCx->CR1, ADC_CR1_JAUTO, TrigAuto);
lypinator 0:bb348c97df44 3095 }
lypinator 0:bb348c97df44 3096
lypinator 0:bb348c97df44 3097 /**
lypinator 0:bb348c97df44 3098 * @brief Get ADC group injected conversion trigger:
lypinator 0:bb348c97df44 3099 * independent or from ADC group regular.
lypinator 0:bb348c97df44 3100 * @rmtoll CR1 JAUTO LL_ADC_INJ_GetTrigAuto
lypinator 0:bb348c97df44 3101 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3102 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 3103 * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT
lypinator 0:bb348c97df44 3104 * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR
lypinator 0:bb348c97df44 3105 */
lypinator 0:bb348c97df44 3106 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTrigAuto(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3107 {
lypinator 0:bb348c97df44 3108 return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_JAUTO));
lypinator 0:bb348c97df44 3109 }
lypinator 0:bb348c97df44 3110
lypinator 0:bb348c97df44 3111 /**
lypinator 0:bb348c97df44 3112 * @brief Set ADC group injected offset.
lypinator 0:bb348c97df44 3113 * @note It sets:
lypinator 0:bb348c97df44 3114 * - ADC group injected rank to which the offset programmed
lypinator 0:bb348c97df44 3115 * will be applied
lypinator 0:bb348c97df44 3116 * - Offset level (offset to be subtracted from the raw
lypinator 0:bb348c97df44 3117 * converted data).
lypinator 0:bb348c97df44 3118 * Caution: Offset format is dependent to ADC resolution:
lypinator 0:bb348c97df44 3119 * offset has to be left-aligned on bit 11, the LSB (right bits)
lypinator 0:bb348c97df44 3120 * are set to 0.
lypinator 0:bb348c97df44 3121 * @note Offset cannot be enabled or disabled.
lypinator 0:bb348c97df44 3122 * To emulate offset disabled, set an offset value equal to 0.
lypinator 0:bb348c97df44 3123 * @rmtoll JOFR1 JOFFSET1 LL_ADC_INJ_SetOffset\n
lypinator 0:bb348c97df44 3124 * JOFR2 JOFFSET2 LL_ADC_INJ_SetOffset\n
lypinator 0:bb348c97df44 3125 * JOFR3 JOFFSET3 LL_ADC_INJ_SetOffset\n
lypinator 0:bb348c97df44 3126 * JOFR4 JOFFSET4 LL_ADC_INJ_SetOffset
lypinator 0:bb348c97df44 3127 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3128 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 3129 * @arg @ref LL_ADC_INJ_RANK_1
lypinator 0:bb348c97df44 3130 * @arg @ref LL_ADC_INJ_RANK_2
lypinator 0:bb348c97df44 3131 * @arg @ref LL_ADC_INJ_RANK_3
lypinator 0:bb348c97df44 3132 * @arg @ref LL_ADC_INJ_RANK_4
lypinator 0:bb348c97df44 3133 * @param OffsetLevel Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 3134 * @retval None
lypinator 0:bb348c97df44 3135 */
lypinator 0:bb348c97df44 3136 __STATIC_INLINE void LL_ADC_INJ_SetOffset(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t OffsetLevel)
lypinator 0:bb348c97df44 3137 {
lypinator 0:bb348c97df44 3138 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JOFR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JOFRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 3139
lypinator 0:bb348c97df44 3140 MODIFY_REG(*preg,
lypinator 0:bb348c97df44 3141 ADC_JOFR1_JOFFSET1,
lypinator 0:bb348c97df44 3142 OffsetLevel);
lypinator 0:bb348c97df44 3143 }
lypinator 0:bb348c97df44 3144
lypinator 0:bb348c97df44 3145 /**
lypinator 0:bb348c97df44 3146 * @brief Get ADC group injected offset.
lypinator 0:bb348c97df44 3147 * @note It gives offset level (offset to be subtracted from the raw converted data).
lypinator 0:bb348c97df44 3148 * Caution: Offset format is dependent to ADC resolution:
lypinator 0:bb348c97df44 3149 * offset has to be left-aligned on bit 11, the LSB (right bits)
lypinator 0:bb348c97df44 3150 * are set to 0.
lypinator 0:bb348c97df44 3151 * @rmtoll JOFR1 JOFFSET1 LL_ADC_INJ_GetOffset\n
lypinator 0:bb348c97df44 3152 * JOFR2 JOFFSET2 LL_ADC_INJ_GetOffset\n
lypinator 0:bb348c97df44 3153 * JOFR3 JOFFSET3 LL_ADC_INJ_GetOffset\n
lypinator 0:bb348c97df44 3154 * JOFR4 JOFFSET4 LL_ADC_INJ_GetOffset
lypinator 0:bb348c97df44 3155 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3156 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 3157 * @arg @ref LL_ADC_INJ_RANK_1
lypinator 0:bb348c97df44 3158 * @arg @ref LL_ADC_INJ_RANK_2
lypinator 0:bb348c97df44 3159 * @arg @ref LL_ADC_INJ_RANK_3
lypinator 0:bb348c97df44 3160 * @arg @ref LL_ADC_INJ_RANK_4
lypinator 0:bb348c97df44 3161 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 3162 */
lypinator 0:bb348c97df44 3163 __STATIC_INLINE uint32_t LL_ADC_INJ_GetOffset(ADC_TypeDef *ADCx, uint32_t Rank)
lypinator 0:bb348c97df44 3164 {
lypinator 0:bb348c97df44 3165 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JOFR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JOFRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 3166
lypinator 0:bb348c97df44 3167 return (uint32_t)(READ_BIT(*preg,
lypinator 0:bb348c97df44 3168 ADC_JOFR1_JOFFSET1)
lypinator 0:bb348c97df44 3169 );
lypinator 0:bb348c97df44 3170 }
lypinator 0:bb348c97df44 3171
lypinator 0:bb348c97df44 3172 /**
lypinator 0:bb348c97df44 3173 * @}
lypinator 0:bb348c97df44 3174 */
lypinator 0:bb348c97df44 3175
lypinator 0:bb348c97df44 3176 /** @defgroup ADC_LL_EF_Configuration_Channels Configuration of ADC hierarchical scope: channels
lypinator 0:bb348c97df44 3177 * @{
lypinator 0:bb348c97df44 3178 */
lypinator 0:bb348c97df44 3179
lypinator 0:bb348c97df44 3180 /**
lypinator 0:bb348c97df44 3181 * @brief Set sampling time of the selected ADC channel
lypinator 0:bb348c97df44 3182 * Unit: ADC clock cycles.
lypinator 0:bb348c97df44 3183 * @note On this device, sampling time is on channel scope: independently
lypinator 0:bb348c97df44 3184 * of channel mapped on ADC group regular or injected.
lypinator 0:bb348c97df44 3185 * @note In case of internal channel (VrefInt, TempSensor, ...) to be
lypinator 0:bb348c97df44 3186 * converted:
lypinator 0:bb348c97df44 3187 * sampling time constraints must be respected (sampling time can be
lypinator 0:bb348c97df44 3188 * adjusted in function of ADC clock frequency and sampling time
lypinator 0:bb348c97df44 3189 * setting).
lypinator 0:bb348c97df44 3190 * Refer to device datasheet for timings values (parameters TS_vrefint,
lypinator 0:bb348c97df44 3191 * TS_temp, ...).
lypinator 0:bb348c97df44 3192 * @note Conversion time is the addition of sampling time and processing time.
lypinator 0:bb348c97df44 3193 * Refer to reference manual for ADC processing time of
lypinator 0:bb348c97df44 3194 * this STM32 serie.
lypinator 0:bb348c97df44 3195 * @note In case of ADC conversion of internal channel (VrefInt,
lypinator 0:bb348c97df44 3196 * temperature sensor, ...), a sampling time minimum value
lypinator 0:bb348c97df44 3197 * is required.
lypinator 0:bb348c97df44 3198 * Refer to device datasheet.
lypinator 0:bb348c97df44 3199 * @rmtoll SMPR1 SMP18 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3200 * SMPR1 SMP17 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3201 * SMPR1 SMP16 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3202 * SMPR1 SMP15 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3203 * SMPR1 SMP14 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3204 * SMPR1 SMP13 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3205 * SMPR1 SMP12 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3206 * SMPR1 SMP11 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3207 * SMPR1 SMP10 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3208 * SMPR2 SMP9 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3209 * SMPR2 SMP8 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3210 * SMPR2 SMP7 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3211 * SMPR2 SMP6 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3212 * SMPR2 SMP5 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3213 * SMPR2 SMP4 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3214 * SMPR2 SMP3 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3215 * SMPR2 SMP2 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3216 * SMPR2 SMP1 LL_ADC_SetChannelSamplingTime\n
lypinator 0:bb348c97df44 3217 * SMPR2 SMP0 LL_ADC_SetChannelSamplingTime
lypinator 0:bb348c97df44 3218 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3219 * @param Channel This parameter can be one of the following values:
lypinator 0:bb348c97df44 3220 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 3221 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 3222 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 3223 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 3224 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 3225 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 3226 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 3227 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 3228 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 3229 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 3230 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 3231 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 3232 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 3233 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 3234 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 3235 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 3236 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 3237 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 3238 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 3239 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 3240 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 3241 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 3242 *
lypinator 0:bb348c97df44 3243 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 3244 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.
lypinator 0:bb348c97df44 3245 * @param SamplingTime This parameter can be one of the following values:
lypinator 0:bb348c97df44 3246 * @arg @ref LL_ADC_SAMPLINGTIME_3CYCLES
lypinator 0:bb348c97df44 3247 * @arg @ref LL_ADC_SAMPLINGTIME_15CYCLES
lypinator 0:bb348c97df44 3248 * @arg @ref LL_ADC_SAMPLINGTIME_28CYCLES
lypinator 0:bb348c97df44 3249 * @arg @ref LL_ADC_SAMPLINGTIME_56CYCLES
lypinator 0:bb348c97df44 3250 * @arg @ref LL_ADC_SAMPLINGTIME_84CYCLES
lypinator 0:bb348c97df44 3251 * @arg @ref LL_ADC_SAMPLINGTIME_112CYCLES
lypinator 0:bb348c97df44 3252 * @arg @ref LL_ADC_SAMPLINGTIME_144CYCLES
lypinator 0:bb348c97df44 3253 * @arg @ref LL_ADC_SAMPLINGTIME_480CYCLES
lypinator 0:bb348c97df44 3254 * @retval None
lypinator 0:bb348c97df44 3255 */
lypinator 0:bb348c97df44 3256 __STATIC_INLINE void LL_ADC_SetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime)
lypinator 0:bb348c97df44 3257 {
lypinator 0:bb348c97df44 3258 /* Set bits with content of parameter "SamplingTime" with bits position */
lypinator 0:bb348c97df44 3259 /* in register and register position depending on parameter "Channel". */
lypinator 0:bb348c97df44 3260 /* Parameter "Channel" is used with masks because containing */
lypinator 0:bb348c97df44 3261 /* other bits reserved for other purpose. */
lypinator 0:bb348c97df44 3262 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 3263
lypinator 0:bb348c97df44 3264 MODIFY_REG(*preg,
lypinator 0:bb348c97df44 3265 ADC_SMPR2_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK),
lypinator 0:bb348c97df44 3266 SamplingTime << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK));
lypinator 0:bb348c97df44 3267 }
lypinator 0:bb348c97df44 3268
lypinator 0:bb348c97df44 3269 /**
lypinator 0:bb348c97df44 3270 * @brief Get sampling time of the selected ADC channel
lypinator 0:bb348c97df44 3271 * Unit: ADC clock cycles.
lypinator 0:bb348c97df44 3272 * @note On this device, sampling time is on channel scope: independently
lypinator 0:bb348c97df44 3273 * of channel mapped on ADC group regular or injected.
lypinator 0:bb348c97df44 3274 * @note Conversion time is the addition of sampling time and processing time.
lypinator 0:bb348c97df44 3275 * Refer to reference manual for ADC processing time of
lypinator 0:bb348c97df44 3276 * this STM32 serie.
lypinator 0:bb348c97df44 3277 * @rmtoll SMPR1 SMP18 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3278 * SMPR1 SMP17 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3279 * SMPR1 SMP16 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3280 * SMPR1 SMP15 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3281 * SMPR1 SMP14 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3282 * SMPR1 SMP13 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3283 * SMPR1 SMP12 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3284 * SMPR1 SMP11 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3285 * SMPR1 SMP10 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3286 * SMPR2 SMP9 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3287 * SMPR2 SMP8 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3288 * SMPR2 SMP7 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3289 * SMPR2 SMP6 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3290 * SMPR2 SMP5 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3291 * SMPR2 SMP4 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3292 * SMPR2 SMP3 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3293 * SMPR2 SMP2 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3294 * SMPR2 SMP1 LL_ADC_GetChannelSamplingTime\n
lypinator 0:bb348c97df44 3295 * SMPR2 SMP0 LL_ADC_GetChannelSamplingTime
lypinator 0:bb348c97df44 3296 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3297 * @param Channel This parameter can be one of the following values:
lypinator 0:bb348c97df44 3298 * @arg @ref LL_ADC_CHANNEL_0
lypinator 0:bb348c97df44 3299 * @arg @ref LL_ADC_CHANNEL_1
lypinator 0:bb348c97df44 3300 * @arg @ref LL_ADC_CHANNEL_2
lypinator 0:bb348c97df44 3301 * @arg @ref LL_ADC_CHANNEL_3
lypinator 0:bb348c97df44 3302 * @arg @ref LL_ADC_CHANNEL_4
lypinator 0:bb348c97df44 3303 * @arg @ref LL_ADC_CHANNEL_5
lypinator 0:bb348c97df44 3304 * @arg @ref LL_ADC_CHANNEL_6
lypinator 0:bb348c97df44 3305 * @arg @ref LL_ADC_CHANNEL_7
lypinator 0:bb348c97df44 3306 * @arg @ref LL_ADC_CHANNEL_8
lypinator 0:bb348c97df44 3307 * @arg @ref LL_ADC_CHANNEL_9
lypinator 0:bb348c97df44 3308 * @arg @ref LL_ADC_CHANNEL_10
lypinator 0:bb348c97df44 3309 * @arg @ref LL_ADC_CHANNEL_11
lypinator 0:bb348c97df44 3310 * @arg @ref LL_ADC_CHANNEL_12
lypinator 0:bb348c97df44 3311 * @arg @ref LL_ADC_CHANNEL_13
lypinator 0:bb348c97df44 3312 * @arg @ref LL_ADC_CHANNEL_14
lypinator 0:bb348c97df44 3313 * @arg @ref LL_ADC_CHANNEL_15
lypinator 0:bb348c97df44 3314 * @arg @ref LL_ADC_CHANNEL_16
lypinator 0:bb348c97df44 3315 * @arg @ref LL_ADC_CHANNEL_17
lypinator 0:bb348c97df44 3316 * @arg @ref LL_ADC_CHANNEL_18
lypinator 0:bb348c97df44 3317 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
lypinator 0:bb348c97df44 3318 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2)
lypinator 0:bb348c97df44 3319 * @arg @ref LL_ADC_CHANNEL_VBAT (1)
lypinator 0:bb348c97df44 3320 *
lypinator 0:bb348c97df44 3321 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 3322 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.
lypinator 0:bb348c97df44 3323 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 3324 * @arg @ref LL_ADC_SAMPLINGTIME_3CYCLES
lypinator 0:bb348c97df44 3325 * @arg @ref LL_ADC_SAMPLINGTIME_15CYCLES
lypinator 0:bb348c97df44 3326 * @arg @ref LL_ADC_SAMPLINGTIME_28CYCLES
lypinator 0:bb348c97df44 3327 * @arg @ref LL_ADC_SAMPLINGTIME_56CYCLES
lypinator 0:bb348c97df44 3328 * @arg @ref LL_ADC_SAMPLINGTIME_84CYCLES
lypinator 0:bb348c97df44 3329 * @arg @ref LL_ADC_SAMPLINGTIME_112CYCLES
lypinator 0:bb348c97df44 3330 * @arg @ref LL_ADC_SAMPLINGTIME_144CYCLES
lypinator 0:bb348c97df44 3331 * @arg @ref LL_ADC_SAMPLINGTIME_480CYCLES
lypinator 0:bb348c97df44 3332 */
lypinator 0:bb348c97df44 3333 __STATIC_INLINE uint32_t LL_ADC_GetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel)
lypinator 0:bb348c97df44 3334 {
lypinator 0:bb348c97df44 3335 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 3336
lypinator 0:bb348c97df44 3337 return (uint32_t)(READ_BIT(*preg,
lypinator 0:bb348c97df44 3338 ADC_SMPR2_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK))
lypinator 0:bb348c97df44 3339 >> __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK)
lypinator 0:bb348c97df44 3340 );
lypinator 0:bb348c97df44 3341 }
lypinator 0:bb348c97df44 3342
lypinator 0:bb348c97df44 3343 /**
lypinator 0:bb348c97df44 3344 * @}
lypinator 0:bb348c97df44 3345 */
lypinator 0:bb348c97df44 3346
lypinator 0:bb348c97df44 3347 /** @defgroup ADC_LL_EF_Configuration_ADC_AnalogWatchdog Configuration of ADC transversal scope: analog watchdog
lypinator 0:bb348c97df44 3348 * @{
lypinator 0:bb348c97df44 3349 */
lypinator 0:bb348c97df44 3350
lypinator 0:bb348c97df44 3351 /**
lypinator 0:bb348c97df44 3352 * @brief Set ADC analog watchdog monitored channels:
lypinator 0:bb348c97df44 3353 * a single channel or all channels,
lypinator 0:bb348c97df44 3354 * on ADC groups regular and-or injected.
lypinator 0:bb348c97df44 3355 * @note Once monitored channels are selected, analog watchdog
lypinator 0:bb348c97df44 3356 * is enabled.
lypinator 0:bb348c97df44 3357 * @note In case of need to define a single channel to monitor
lypinator 0:bb348c97df44 3358 * with analog watchdog from sequencer channel definition,
lypinator 0:bb348c97df44 3359 * use helper macro @ref __LL_ADC_ANALOGWD_CHANNEL_GROUP().
lypinator 0:bb348c97df44 3360 * @note On this STM32 serie, there is only 1 kind of analog watchdog
lypinator 0:bb348c97df44 3361 * instance:
lypinator 0:bb348c97df44 3362 * - AWD standard (instance AWD1):
lypinator 0:bb348c97df44 3363 * - channels monitored: can monitor 1 channel or all channels.
lypinator 0:bb348c97df44 3364 * - groups monitored: ADC groups regular and-or injected.
lypinator 0:bb348c97df44 3365 * - resolution: resolution is not limited (corresponds to
lypinator 0:bb348c97df44 3366 * ADC resolution configured).
lypinator 0:bb348c97df44 3367 * @rmtoll CR1 AWD1CH LL_ADC_SetAnalogWDMonitChannels\n
lypinator 0:bb348c97df44 3368 * CR1 AWD1SGL LL_ADC_SetAnalogWDMonitChannels\n
lypinator 0:bb348c97df44 3369 * CR1 AWD1EN LL_ADC_SetAnalogWDMonitChannels
lypinator 0:bb348c97df44 3370 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3371 * @param AWDChannelGroup This parameter can be one of the following values:
lypinator 0:bb348c97df44 3372 * @arg @ref LL_ADC_AWD_DISABLE
lypinator 0:bb348c97df44 3373 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG
lypinator 0:bb348c97df44 3374 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ
lypinator 0:bb348c97df44 3375 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
lypinator 0:bb348c97df44 3376 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG
lypinator 0:bb348c97df44 3377 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ
lypinator 0:bb348c97df44 3378 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
lypinator 0:bb348c97df44 3379 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG
lypinator 0:bb348c97df44 3380 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ
lypinator 0:bb348c97df44 3381 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
lypinator 0:bb348c97df44 3382 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG
lypinator 0:bb348c97df44 3383 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ
lypinator 0:bb348c97df44 3384 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
lypinator 0:bb348c97df44 3385 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG
lypinator 0:bb348c97df44 3386 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ
lypinator 0:bb348c97df44 3387 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
lypinator 0:bb348c97df44 3388 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG
lypinator 0:bb348c97df44 3389 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ
lypinator 0:bb348c97df44 3390 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
lypinator 0:bb348c97df44 3391 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG
lypinator 0:bb348c97df44 3392 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ
lypinator 0:bb348c97df44 3393 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
lypinator 0:bb348c97df44 3394 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG
lypinator 0:bb348c97df44 3395 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ
lypinator 0:bb348c97df44 3396 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
lypinator 0:bb348c97df44 3397 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG
lypinator 0:bb348c97df44 3398 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ
lypinator 0:bb348c97df44 3399 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
lypinator 0:bb348c97df44 3400 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG
lypinator 0:bb348c97df44 3401 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ
lypinator 0:bb348c97df44 3402 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
lypinator 0:bb348c97df44 3403 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG
lypinator 0:bb348c97df44 3404 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ
lypinator 0:bb348c97df44 3405 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
lypinator 0:bb348c97df44 3406 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG
lypinator 0:bb348c97df44 3407 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ
lypinator 0:bb348c97df44 3408 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
lypinator 0:bb348c97df44 3409 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG
lypinator 0:bb348c97df44 3410 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ
lypinator 0:bb348c97df44 3411 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
lypinator 0:bb348c97df44 3412 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG
lypinator 0:bb348c97df44 3413 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ
lypinator 0:bb348c97df44 3414 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
lypinator 0:bb348c97df44 3415 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG
lypinator 0:bb348c97df44 3416 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ
lypinator 0:bb348c97df44 3417 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
lypinator 0:bb348c97df44 3418 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG
lypinator 0:bb348c97df44 3419 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ
lypinator 0:bb348c97df44 3420 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
lypinator 0:bb348c97df44 3421 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG
lypinator 0:bb348c97df44 3422 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ
lypinator 0:bb348c97df44 3423 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
lypinator 0:bb348c97df44 3424 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG
lypinator 0:bb348c97df44 3425 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ
lypinator 0:bb348c97df44 3426 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
lypinator 0:bb348c97df44 3427 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG
lypinator 0:bb348c97df44 3428 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ
lypinator 0:bb348c97df44 3429 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
lypinator 0:bb348c97df44 3430 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG
lypinator 0:bb348c97df44 3431 * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ
lypinator 0:bb348c97df44 3432 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ
lypinator 0:bb348c97df44 3433 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (1)
lypinator 0:bb348c97df44 3434 * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (1)
lypinator 0:bb348c97df44 3435 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (1)
lypinator 0:bb348c97df44 3436 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (1)(2)
lypinator 0:bb348c97df44 3437 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (1)(2)
lypinator 0:bb348c97df44 3438 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (1)(2)
lypinator 0:bb348c97df44 3439 * @arg @ref LL_ADC_AWD_CH_VBAT_REG (1)
lypinator 0:bb348c97df44 3440 * @arg @ref LL_ADC_AWD_CH_VBAT_INJ (1)
lypinator 0:bb348c97df44 3441 * @arg @ref LL_ADC_AWD_CH_VBAT_REG_INJ (1)
lypinator 0:bb348c97df44 3442 *
lypinator 0:bb348c97df44 3443 * (1) On STM32F4, parameter available only on ADC instance: ADC1.\n
lypinator 0:bb348c97df44 3444 * (2) On devices STM32F42x and STM32F43x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.
lypinator 0:bb348c97df44 3445 * @retval None
lypinator 0:bb348c97df44 3446 */
lypinator 0:bb348c97df44 3447 __STATIC_INLINE void LL_ADC_SetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t AWDChannelGroup)
lypinator 0:bb348c97df44 3448 {
lypinator 0:bb348c97df44 3449 MODIFY_REG(ADCx->CR1,
lypinator 0:bb348c97df44 3450 (ADC_CR1_AWDEN | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL | ADC_CR1_AWDCH),
lypinator 0:bb348c97df44 3451 AWDChannelGroup);
lypinator 0:bb348c97df44 3452 }
lypinator 0:bb348c97df44 3453
lypinator 0:bb348c97df44 3454 /**
lypinator 0:bb348c97df44 3455 * @brief Get ADC analog watchdog monitored channel.
lypinator 0:bb348c97df44 3456 * @note Usage of the returned channel number:
lypinator 0:bb348c97df44 3457 * - To reinject this channel into another function LL_ADC_xxx:
lypinator 0:bb348c97df44 3458 * the returned channel number is only partly formatted on definition
lypinator 0:bb348c97df44 3459 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
lypinator 0:bb348c97df44 3460 * with parts of literals LL_ADC_CHANNEL_x or using
lypinator 0:bb348c97df44 3461 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
lypinator 0:bb348c97df44 3462 * Then the selected literal LL_ADC_CHANNEL_x can be used
lypinator 0:bb348c97df44 3463 * as parameter for another function.
lypinator 0:bb348c97df44 3464 * - To get the channel number in decimal format:
lypinator 0:bb348c97df44 3465 * process the returned value with the helper macro
lypinator 0:bb348c97df44 3466 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
lypinator 0:bb348c97df44 3467 * Applicable only when the analog watchdog is set to monitor
lypinator 0:bb348c97df44 3468 * one channel.
lypinator 0:bb348c97df44 3469 * @note On this STM32 serie, there is only 1 kind of analog watchdog
lypinator 0:bb348c97df44 3470 * instance:
lypinator 0:bb348c97df44 3471 * - AWD standard (instance AWD1):
lypinator 0:bb348c97df44 3472 * - channels monitored: can monitor 1 channel or all channels.
lypinator 0:bb348c97df44 3473 * - groups monitored: ADC groups regular and-or injected.
lypinator 0:bb348c97df44 3474 * - resolution: resolution is not limited (corresponds to
lypinator 0:bb348c97df44 3475 * ADC resolution configured).
lypinator 0:bb348c97df44 3476 * @rmtoll CR1 AWD1CH LL_ADC_GetAnalogWDMonitChannels\n
lypinator 0:bb348c97df44 3477 * CR1 AWD1SGL LL_ADC_GetAnalogWDMonitChannels\n
lypinator 0:bb348c97df44 3478 * CR1 AWD1EN LL_ADC_GetAnalogWDMonitChannels
lypinator 0:bb348c97df44 3479 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3480 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 3481 * @arg @ref LL_ADC_AWD_DISABLE
lypinator 0:bb348c97df44 3482 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG
lypinator 0:bb348c97df44 3483 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ
lypinator 0:bb348c97df44 3484 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
lypinator 0:bb348c97df44 3485 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG
lypinator 0:bb348c97df44 3486 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ
lypinator 0:bb348c97df44 3487 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
lypinator 0:bb348c97df44 3488 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG
lypinator 0:bb348c97df44 3489 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ
lypinator 0:bb348c97df44 3490 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
lypinator 0:bb348c97df44 3491 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG
lypinator 0:bb348c97df44 3492 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ
lypinator 0:bb348c97df44 3493 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
lypinator 0:bb348c97df44 3494 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG
lypinator 0:bb348c97df44 3495 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ
lypinator 0:bb348c97df44 3496 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
lypinator 0:bb348c97df44 3497 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG
lypinator 0:bb348c97df44 3498 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ
lypinator 0:bb348c97df44 3499 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
lypinator 0:bb348c97df44 3500 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG
lypinator 0:bb348c97df44 3501 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ
lypinator 0:bb348c97df44 3502 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
lypinator 0:bb348c97df44 3503 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG
lypinator 0:bb348c97df44 3504 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ
lypinator 0:bb348c97df44 3505 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
lypinator 0:bb348c97df44 3506 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG
lypinator 0:bb348c97df44 3507 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ
lypinator 0:bb348c97df44 3508 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
lypinator 0:bb348c97df44 3509 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG
lypinator 0:bb348c97df44 3510 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ
lypinator 0:bb348c97df44 3511 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
lypinator 0:bb348c97df44 3512 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG
lypinator 0:bb348c97df44 3513 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ
lypinator 0:bb348c97df44 3514 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
lypinator 0:bb348c97df44 3515 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG
lypinator 0:bb348c97df44 3516 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ
lypinator 0:bb348c97df44 3517 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
lypinator 0:bb348c97df44 3518 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG
lypinator 0:bb348c97df44 3519 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ
lypinator 0:bb348c97df44 3520 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
lypinator 0:bb348c97df44 3521 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG
lypinator 0:bb348c97df44 3522 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ
lypinator 0:bb348c97df44 3523 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
lypinator 0:bb348c97df44 3524 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG
lypinator 0:bb348c97df44 3525 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ
lypinator 0:bb348c97df44 3526 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
lypinator 0:bb348c97df44 3527 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG
lypinator 0:bb348c97df44 3528 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ
lypinator 0:bb348c97df44 3529 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
lypinator 0:bb348c97df44 3530 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG
lypinator 0:bb348c97df44 3531 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ
lypinator 0:bb348c97df44 3532 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
lypinator 0:bb348c97df44 3533 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG
lypinator 0:bb348c97df44 3534 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ
lypinator 0:bb348c97df44 3535 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
lypinator 0:bb348c97df44 3536 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG
lypinator 0:bb348c97df44 3537 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ
lypinator 0:bb348c97df44 3538 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
lypinator 0:bb348c97df44 3539 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG
lypinator 0:bb348c97df44 3540 * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ
lypinator 0:bb348c97df44 3541 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ
lypinator 0:bb348c97df44 3542 */
lypinator 0:bb348c97df44 3543 __STATIC_INLINE uint32_t LL_ADC_GetAnalogWDMonitChannels(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3544 {
lypinator 0:bb348c97df44 3545 return (uint32_t)(READ_BIT(ADCx->CR1, (ADC_CR1_AWDEN | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL | ADC_CR1_AWDCH)));
lypinator 0:bb348c97df44 3546 }
lypinator 0:bb348c97df44 3547
lypinator 0:bb348c97df44 3548 /**
lypinator 0:bb348c97df44 3549 * @brief Set ADC analog watchdog threshold value of threshold
lypinator 0:bb348c97df44 3550 * high or low.
lypinator 0:bb348c97df44 3551 * @note In case of ADC resolution different of 12 bits,
lypinator 0:bb348c97df44 3552 * analog watchdog thresholds data require a specific shift.
lypinator 0:bb348c97df44 3553 * Use helper macro @ref __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION().
lypinator 0:bb348c97df44 3554 * @note On this STM32 serie, there is only 1 kind of analog watchdog
lypinator 0:bb348c97df44 3555 * instance:
lypinator 0:bb348c97df44 3556 * - AWD standard (instance AWD1):
lypinator 0:bb348c97df44 3557 * - channels monitored: can monitor 1 channel or all channels.
lypinator 0:bb348c97df44 3558 * - groups monitored: ADC groups regular and-or injected.
lypinator 0:bb348c97df44 3559 * - resolution: resolution is not limited (corresponds to
lypinator 0:bb348c97df44 3560 * ADC resolution configured).
lypinator 0:bb348c97df44 3561 * @rmtoll HTR HT LL_ADC_SetAnalogWDThresholds\n
lypinator 0:bb348c97df44 3562 * LTR LT LL_ADC_SetAnalogWDThresholds
lypinator 0:bb348c97df44 3563 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3564 * @param AWDThresholdsHighLow This parameter can be one of the following values:
lypinator 0:bb348c97df44 3565 * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH
lypinator 0:bb348c97df44 3566 * @arg @ref LL_ADC_AWD_THRESHOLD_LOW
lypinator 0:bb348c97df44 3567 * @param AWDThresholdValue Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 3568 * @retval None
lypinator 0:bb348c97df44 3569 */
lypinator 0:bb348c97df44 3570 __STATIC_INLINE void LL_ADC_SetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDThresholdsHighLow, uint32_t AWDThresholdValue)
lypinator 0:bb348c97df44 3571 {
lypinator 0:bb348c97df44 3572 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->HTR, AWDThresholdsHighLow);
lypinator 0:bb348c97df44 3573
lypinator 0:bb348c97df44 3574 MODIFY_REG(*preg,
lypinator 0:bb348c97df44 3575 ADC_HTR_HT,
lypinator 0:bb348c97df44 3576 AWDThresholdValue);
lypinator 0:bb348c97df44 3577 }
lypinator 0:bb348c97df44 3578
lypinator 0:bb348c97df44 3579 /**
lypinator 0:bb348c97df44 3580 * @brief Get ADC analog watchdog threshold value of threshold high or
lypinator 0:bb348c97df44 3581 * threshold low.
lypinator 0:bb348c97df44 3582 * @note In case of ADC resolution different of 12 bits,
lypinator 0:bb348c97df44 3583 * analog watchdog thresholds data require a specific shift.
lypinator 0:bb348c97df44 3584 * Use helper macro @ref __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION().
lypinator 0:bb348c97df44 3585 * @rmtoll HTR HT LL_ADC_GetAnalogWDThresholds\n
lypinator 0:bb348c97df44 3586 * LTR LT LL_ADC_GetAnalogWDThresholds
lypinator 0:bb348c97df44 3587 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3588 * @param AWDThresholdsHighLow This parameter can be one of the following values:
lypinator 0:bb348c97df44 3589 * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH
lypinator 0:bb348c97df44 3590 * @arg @ref LL_ADC_AWD_THRESHOLD_LOW
lypinator 0:bb348c97df44 3591 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 3592 */
lypinator 0:bb348c97df44 3593 __STATIC_INLINE uint32_t LL_ADC_GetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDThresholdsHighLow)
lypinator 0:bb348c97df44 3594 {
lypinator 0:bb348c97df44 3595 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->HTR, AWDThresholdsHighLow);
lypinator 0:bb348c97df44 3596
lypinator 0:bb348c97df44 3597 return (uint32_t)(READ_BIT(*preg, ADC_HTR_HT));
lypinator 0:bb348c97df44 3598 }
lypinator 0:bb348c97df44 3599
lypinator 0:bb348c97df44 3600 /**
lypinator 0:bb348c97df44 3601 * @}
lypinator 0:bb348c97df44 3602 */
lypinator 0:bb348c97df44 3603
lypinator 0:bb348c97df44 3604 /** @defgroup ADC_LL_EF_Configuration_ADC_Multimode Configuration of ADC hierarchical scope: multimode
lypinator 0:bb348c97df44 3605 * @{
lypinator 0:bb348c97df44 3606 */
lypinator 0:bb348c97df44 3607
lypinator 0:bb348c97df44 3608 #if defined(ADC_MULTIMODE_SUPPORT)
lypinator 0:bb348c97df44 3609 /**
lypinator 0:bb348c97df44 3610 * @brief Set ADC multimode configuration to operate in independent mode
lypinator 0:bb348c97df44 3611 * or multimode (for devices with several ADC instances).
lypinator 0:bb348c97df44 3612 * @note If multimode configuration: the selected ADC instance is
lypinator 0:bb348c97df44 3613 * either master or slave depending on hardware.
lypinator 0:bb348c97df44 3614 * Refer to reference manual.
lypinator 0:bb348c97df44 3615 * @rmtoll CCR MULTI LL_ADC_SetMultimode
lypinator 0:bb348c97df44 3616 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 3617 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 3618 * @param Multimode This parameter can be one of the following values:
lypinator 0:bb348c97df44 3619 * @arg @ref LL_ADC_MULTI_INDEPENDENT
lypinator 0:bb348c97df44 3620 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIMULT
lypinator 0:bb348c97df44 3621 * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL
lypinator 0:bb348c97df44 3622 * @arg @ref LL_ADC_MULTI_DUAL_INJ_SIMULT
lypinator 0:bb348c97df44 3623 * @arg @ref LL_ADC_MULTI_DUAL_INJ_ALTERN
lypinator 0:bb348c97df44 3624 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM
lypinator 0:bb348c97df44 3625 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT
lypinator 0:bb348c97df44 3626 * @arg @ref LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM
lypinator 0:bb348c97df44 3627 * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_SIM
lypinator 0:bb348c97df44 3628 * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_ALT
lypinator 0:bb348c97df44 3629 * @arg @ref LL_ADC_MULTI_TRIPLE_INJ_SIMULT
lypinator 0:bb348c97df44 3630 * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIMULT
lypinator 0:bb348c97df44 3631 * @arg @ref LL_ADC_MULTI_TRIPLE_REG_INTERL
lypinator 0:bb348c97df44 3632 * @arg @ref LL_ADC_MULTI_TRIPLE_INJ_ALTERN
lypinator 0:bb348c97df44 3633 * @retval None
lypinator 0:bb348c97df44 3634 */
lypinator 0:bb348c97df44 3635 __STATIC_INLINE void LL_ADC_SetMultimode(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t Multimode)
lypinator 0:bb348c97df44 3636 {
lypinator 0:bb348c97df44 3637 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_MULTI, Multimode);
lypinator 0:bb348c97df44 3638 }
lypinator 0:bb348c97df44 3639
lypinator 0:bb348c97df44 3640 /**
lypinator 0:bb348c97df44 3641 * @brief Get ADC multimode configuration to operate in independent mode
lypinator 0:bb348c97df44 3642 * or multimode (for devices with several ADC instances).
lypinator 0:bb348c97df44 3643 * @note If multimode configuration: the selected ADC instance is
lypinator 0:bb348c97df44 3644 * either master or slave depending on hardware.
lypinator 0:bb348c97df44 3645 * Refer to reference manual.
lypinator 0:bb348c97df44 3646 * @rmtoll CCR MULTI LL_ADC_GetMultimode
lypinator 0:bb348c97df44 3647 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 3648 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 3649 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 3650 * @arg @ref LL_ADC_MULTI_INDEPENDENT
lypinator 0:bb348c97df44 3651 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIMULT
lypinator 0:bb348c97df44 3652 * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL
lypinator 0:bb348c97df44 3653 * @arg @ref LL_ADC_MULTI_DUAL_INJ_SIMULT
lypinator 0:bb348c97df44 3654 * @arg @ref LL_ADC_MULTI_DUAL_INJ_ALTERN
lypinator 0:bb348c97df44 3655 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM
lypinator 0:bb348c97df44 3656 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT
lypinator 0:bb348c97df44 3657 * @arg @ref LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM
lypinator 0:bb348c97df44 3658 * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_SIM
lypinator 0:bb348c97df44 3659 * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_ALT
lypinator 0:bb348c97df44 3660 * @arg @ref LL_ADC_MULTI_TRIPLE_INJ_SIMULT
lypinator 0:bb348c97df44 3661 * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIMULT
lypinator 0:bb348c97df44 3662 * @arg @ref LL_ADC_MULTI_TRIPLE_REG_INTERL
lypinator 0:bb348c97df44 3663 * @arg @ref LL_ADC_MULTI_TRIPLE_INJ_ALTERN
lypinator 0:bb348c97df44 3664 */
lypinator 0:bb348c97df44 3665 __STATIC_INLINE uint32_t LL_ADC_GetMultimode(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 3666 {
lypinator 0:bb348c97df44 3667 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_MULTI));
lypinator 0:bb348c97df44 3668 }
lypinator 0:bb348c97df44 3669
lypinator 0:bb348c97df44 3670 /**
lypinator 0:bb348c97df44 3671 * @brief Set ADC multimode conversion data transfer: no transfer
lypinator 0:bb348c97df44 3672 * or transfer by DMA.
lypinator 0:bb348c97df44 3673 * @note If ADC multimode transfer by DMA is not selected:
lypinator 0:bb348c97df44 3674 * each ADC uses its own DMA channel, with its individual
lypinator 0:bb348c97df44 3675 * DMA transfer settings.
lypinator 0:bb348c97df44 3676 * If ADC multimode transfer by DMA is selected:
lypinator 0:bb348c97df44 3677 * One DMA channel is used for both ADC (DMA of ADC master)
lypinator 0:bb348c97df44 3678 * Specifies the DMA requests mode:
lypinator 0:bb348c97df44 3679 * - Limited mode (One shot mode): DMA transfer requests are stopped
lypinator 0:bb348c97df44 3680 * when number of DMA data transfers (number of
lypinator 0:bb348c97df44 3681 * ADC conversions) is reached.
lypinator 0:bb348c97df44 3682 * This ADC mode is intended to be used with DMA mode non-circular.
lypinator 0:bb348c97df44 3683 * - Unlimited mode: DMA transfer requests are unlimited,
lypinator 0:bb348c97df44 3684 * whatever number of DMA data transfers (number of
lypinator 0:bb348c97df44 3685 * ADC conversions).
lypinator 0:bb348c97df44 3686 * This ADC mode is intended to be used with DMA mode circular.
lypinator 0:bb348c97df44 3687 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
lypinator 0:bb348c97df44 3688 * mode non-circular:
lypinator 0:bb348c97df44 3689 * when DMA transfers size will be reached, DMA will stop transfers of
lypinator 0:bb348c97df44 3690 * ADC conversions data ADC will raise an overrun error
lypinator 0:bb348c97df44 3691 * (overrun flag and interruption if enabled).
lypinator 0:bb348c97df44 3692 * @note How to retrieve multimode conversion data:
lypinator 0:bb348c97df44 3693 * Whatever multimode transfer by DMA setting: using function
lypinator 0:bb348c97df44 3694 * @ref LL_ADC_REG_ReadMultiConversionData32().
lypinator 0:bb348c97df44 3695 * If ADC multimode transfer by DMA is selected: conversion data
lypinator 0:bb348c97df44 3696 * is a raw data with ADC master and slave concatenated.
lypinator 0:bb348c97df44 3697 * A macro is available to get the conversion data of
lypinator 0:bb348c97df44 3698 * ADC master or ADC slave: see helper macro
lypinator 0:bb348c97df44 3699 * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE().
lypinator 0:bb348c97df44 3700 * @rmtoll CCR MDMA LL_ADC_SetMultiDMATransfer\n
lypinator 0:bb348c97df44 3701 * CCR DDS LL_ADC_SetMultiDMATransfer
lypinator 0:bb348c97df44 3702 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 3703 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 3704 * @param MultiDMATransfer This parameter can be one of the following values:
lypinator 0:bb348c97df44 3705 * @arg @ref LL_ADC_MULTI_REG_DMA_EACH_ADC
lypinator 0:bb348c97df44 3706 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_1
lypinator 0:bb348c97df44 3707 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_2
lypinator 0:bb348c97df44 3708 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_3
lypinator 0:bb348c97df44 3709 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_1
lypinator 0:bb348c97df44 3710 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_2
lypinator 0:bb348c97df44 3711 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_3
lypinator 0:bb348c97df44 3712 * @retval None
lypinator 0:bb348c97df44 3713 */
lypinator 0:bb348c97df44 3714 __STATIC_INLINE void LL_ADC_SetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t MultiDMATransfer)
lypinator 0:bb348c97df44 3715 {
lypinator 0:bb348c97df44 3716 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_DMA | ADC_CCR_DDS, MultiDMATransfer);
lypinator 0:bb348c97df44 3717 }
lypinator 0:bb348c97df44 3718
lypinator 0:bb348c97df44 3719 /**
lypinator 0:bb348c97df44 3720 * @brief Get ADC multimode conversion data transfer: no transfer
lypinator 0:bb348c97df44 3721 * or transfer by DMA.
lypinator 0:bb348c97df44 3722 * @note If ADC multimode transfer by DMA is not selected:
lypinator 0:bb348c97df44 3723 * each ADC uses its own DMA channel, with its individual
lypinator 0:bb348c97df44 3724 * DMA transfer settings.
lypinator 0:bb348c97df44 3725 * If ADC multimode transfer by DMA is selected:
lypinator 0:bb348c97df44 3726 * One DMA channel is used for both ADC (DMA of ADC master)
lypinator 0:bb348c97df44 3727 * Specifies the DMA requests mode:
lypinator 0:bb348c97df44 3728 * - Limited mode (One shot mode): DMA transfer requests are stopped
lypinator 0:bb348c97df44 3729 * when number of DMA data transfers (number of
lypinator 0:bb348c97df44 3730 * ADC conversions) is reached.
lypinator 0:bb348c97df44 3731 * This ADC mode is intended to be used with DMA mode non-circular.
lypinator 0:bb348c97df44 3732 * - Unlimited mode: DMA transfer requests are unlimited,
lypinator 0:bb348c97df44 3733 * whatever number of DMA data transfers (number of
lypinator 0:bb348c97df44 3734 * ADC conversions).
lypinator 0:bb348c97df44 3735 * This ADC mode is intended to be used with DMA mode circular.
lypinator 0:bb348c97df44 3736 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
lypinator 0:bb348c97df44 3737 * mode non-circular:
lypinator 0:bb348c97df44 3738 * when DMA transfers size will be reached, DMA will stop transfers of
lypinator 0:bb348c97df44 3739 * ADC conversions data ADC will raise an overrun error
lypinator 0:bb348c97df44 3740 * (overrun flag and interruption if enabled).
lypinator 0:bb348c97df44 3741 * @note How to retrieve multimode conversion data:
lypinator 0:bb348c97df44 3742 * Whatever multimode transfer by DMA setting: using function
lypinator 0:bb348c97df44 3743 * @ref LL_ADC_REG_ReadMultiConversionData32().
lypinator 0:bb348c97df44 3744 * If ADC multimode transfer by DMA is selected: conversion data
lypinator 0:bb348c97df44 3745 * is a raw data with ADC master and slave concatenated.
lypinator 0:bb348c97df44 3746 * A macro is available to get the conversion data of
lypinator 0:bb348c97df44 3747 * ADC master or ADC slave: see helper macro
lypinator 0:bb348c97df44 3748 * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE().
lypinator 0:bb348c97df44 3749 * @rmtoll CCR MDMA LL_ADC_GetMultiDMATransfer\n
lypinator 0:bb348c97df44 3750 * CCR DDS LL_ADC_GetMultiDMATransfer
lypinator 0:bb348c97df44 3751 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 3752 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 3753 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 3754 * @arg @ref LL_ADC_MULTI_REG_DMA_EACH_ADC
lypinator 0:bb348c97df44 3755 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_1
lypinator 0:bb348c97df44 3756 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_2
lypinator 0:bb348c97df44 3757 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_3
lypinator 0:bb348c97df44 3758 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_1
lypinator 0:bb348c97df44 3759 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_2
lypinator 0:bb348c97df44 3760 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_3
lypinator 0:bb348c97df44 3761 */
lypinator 0:bb348c97df44 3762 __STATIC_INLINE uint32_t LL_ADC_GetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 3763 {
lypinator 0:bb348c97df44 3764 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DMA | ADC_CCR_DDS));
lypinator 0:bb348c97df44 3765 }
lypinator 0:bb348c97df44 3766
lypinator 0:bb348c97df44 3767 /**
lypinator 0:bb348c97df44 3768 * @brief Set ADC multimode delay between 2 sampling phases.
lypinator 0:bb348c97df44 3769 * @note The sampling delay range depends on ADC resolution:
lypinator 0:bb348c97df44 3770 * - ADC resolution 12 bits can have maximum delay of 12 cycles.
lypinator 0:bb348c97df44 3771 * - ADC resolution 10 bits can have maximum delay of 10 cycles.
lypinator 0:bb348c97df44 3772 * - ADC resolution 8 bits can have maximum delay of 8 cycles.
lypinator 0:bb348c97df44 3773 * - ADC resolution 6 bits can have maximum delay of 6 cycles.
lypinator 0:bb348c97df44 3774 * @rmtoll CCR DELAY LL_ADC_SetMultiTwoSamplingDelay
lypinator 0:bb348c97df44 3775 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 3776 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 3777 * @param MultiTwoSamplingDelay This parameter can be one of the following values:
lypinator 0:bb348c97df44 3778 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES
lypinator 0:bb348c97df44 3779 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES
lypinator 0:bb348c97df44 3780 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES
lypinator 0:bb348c97df44 3781 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES
lypinator 0:bb348c97df44 3782 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES
lypinator 0:bb348c97df44 3783 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES
lypinator 0:bb348c97df44 3784 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES
lypinator 0:bb348c97df44 3785 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES
lypinator 0:bb348c97df44 3786 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_13CYCLES
lypinator 0:bb348c97df44 3787 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_14CYCLES
lypinator 0:bb348c97df44 3788 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_15CYCLES
lypinator 0:bb348c97df44 3789 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_16CYCLES
lypinator 0:bb348c97df44 3790 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_17CYCLES
lypinator 0:bb348c97df44 3791 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_18CYCLES
lypinator 0:bb348c97df44 3792 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_19CYCLES
lypinator 0:bb348c97df44 3793 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_20CYCLES
lypinator 0:bb348c97df44 3794 * @retval None
lypinator 0:bb348c97df44 3795 */
lypinator 0:bb348c97df44 3796 __STATIC_INLINE void LL_ADC_SetMultiTwoSamplingDelay(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t MultiTwoSamplingDelay)
lypinator 0:bb348c97df44 3797 {
lypinator 0:bb348c97df44 3798 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_DELAY, MultiTwoSamplingDelay);
lypinator 0:bb348c97df44 3799 }
lypinator 0:bb348c97df44 3800
lypinator 0:bb348c97df44 3801 /**
lypinator 0:bb348c97df44 3802 * @brief Get ADC multimode delay between 2 sampling phases.
lypinator 0:bb348c97df44 3803 * @rmtoll CCR DELAY LL_ADC_GetMultiTwoSamplingDelay
lypinator 0:bb348c97df44 3804 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 3805 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 3806 * @retval Returned value can be one of the following values:
lypinator 0:bb348c97df44 3807 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES
lypinator 0:bb348c97df44 3808 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES
lypinator 0:bb348c97df44 3809 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES
lypinator 0:bb348c97df44 3810 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES
lypinator 0:bb348c97df44 3811 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES
lypinator 0:bb348c97df44 3812 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES
lypinator 0:bb348c97df44 3813 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES
lypinator 0:bb348c97df44 3814 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES
lypinator 0:bb348c97df44 3815 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_13CYCLES
lypinator 0:bb348c97df44 3816 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_14CYCLES
lypinator 0:bb348c97df44 3817 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_15CYCLES
lypinator 0:bb348c97df44 3818 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_16CYCLES
lypinator 0:bb348c97df44 3819 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_17CYCLES
lypinator 0:bb348c97df44 3820 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_18CYCLES
lypinator 0:bb348c97df44 3821 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_19CYCLES
lypinator 0:bb348c97df44 3822 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_20CYCLES
lypinator 0:bb348c97df44 3823 */
lypinator 0:bb348c97df44 3824 __STATIC_INLINE uint32_t LL_ADC_GetMultiTwoSamplingDelay(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 3825 {
lypinator 0:bb348c97df44 3826 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DELAY));
lypinator 0:bb348c97df44 3827 }
lypinator 0:bb348c97df44 3828 #endif /* ADC_MULTIMODE_SUPPORT */
lypinator 0:bb348c97df44 3829
lypinator 0:bb348c97df44 3830 /**
lypinator 0:bb348c97df44 3831 * @}
lypinator 0:bb348c97df44 3832 */
lypinator 0:bb348c97df44 3833 /** @defgroup ADC_LL_EF_Operation_ADC_Instance Operation on ADC hierarchical scope: ADC instance
lypinator 0:bb348c97df44 3834 * @{
lypinator 0:bb348c97df44 3835 */
lypinator 0:bb348c97df44 3836
lypinator 0:bb348c97df44 3837 /**
lypinator 0:bb348c97df44 3838 * @brief Enable the selected ADC instance.
lypinator 0:bb348c97df44 3839 * @note On this STM32 serie, after ADC enable, a delay for
lypinator 0:bb348c97df44 3840 * ADC internal analog stabilization is required before performing a
lypinator 0:bb348c97df44 3841 * ADC conversion start.
lypinator 0:bb348c97df44 3842 * Refer to device datasheet, parameter tSTAB.
lypinator 0:bb348c97df44 3843 * @rmtoll CR2 ADON LL_ADC_Enable
lypinator 0:bb348c97df44 3844 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3845 * @retval None
lypinator 0:bb348c97df44 3846 */
lypinator 0:bb348c97df44 3847 __STATIC_INLINE void LL_ADC_Enable(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3848 {
lypinator 0:bb348c97df44 3849 SET_BIT(ADCx->CR2, ADC_CR2_ADON);
lypinator 0:bb348c97df44 3850 }
lypinator 0:bb348c97df44 3851
lypinator 0:bb348c97df44 3852 /**
lypinator 0:bb348c97df44 3853 * @brief Disable the selected ADC instance.
lypinator 0:bb348c97df44 3854 * @rmtoll CR2 ADON LL_ADC_Disable
lypinator 0:bb348c97df44 3855 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3856 * @retval None
lypinator 0:bb348c97df44 3857 */
lypinator 0:bb348c97df44 3858 __STATIC_INLINE void LL_ADC_Disable(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3859 {
lypinator 0:bb348c97df44 3860 CLEAR_BIT(ADCx->CR2, ADC_CR2_ADON);
lypinator 0:bb348c97df44 3861 }
lypinator 0:bb348c97df44 3862
lypinator 0:bb348c97df44 3863 /**
lypinator 0:bb348c97df44 3864 * @brief Get the selected ADC instance enable state.
lypinator 0:bb348c97df44 3865 * @rmtoll CR2 ADON LL_ADC_IsEnabled
lypinator 0:bb348c97df44 3866 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3867 * @retval 0: ADC is disabled, 1: ADC is enabled.
lypinator 0:bb348c97df44 3868 */
lypinator 0:bb348c97df44 3869 __STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3870 {
lypinator 0:bb348c97df44 3871 return (READ_BIT(ADCx->CR2, ADC_CR2_ADON) == (ADC_CR2_ADON));
lypinator 0:bb348c97df44 3872 }
lypinator 0:bb348c97df44 3873
lypinator 0:bb348c97df44 3874 /**
lypinator 0:bb348c97df44 3875 * @}
lypinator 0:bb348c97df44 3876 */
lypinator 0:bb348c97df44 3877
lypinator 0:bb348c97df44 3878 /** @defgroup ADC_LL_EF_Operation_ADC_Group_Regular Operation on ADC hierarchical scope: group regular
lypinator 0:bb348c97df44 3879 * @{
lypinator 0:bb348c97df44 3880 */
lypinator 0:bb348c97df44 3881
lypinator 0:bb348c97df44 3882 /**
lypinator 0:bb348c97df44 3883 * @brief Start ADC group regular conversion.
lypinator 0:bb348c97df44 3884 * @note On this STM32 serie, this function is relevant only for
lypinator 0:bb348c97df44 3885 * internal trigger (SW start), not for external trigger:
lypinator 0:bb348c97df44 3886 * - If ADC trigger has been set to software start, ADC conversion
lypinator 0:bb348c97df44 3887 * starts immediately.
lypinator 0:bb348c97df44 3888 * - If ADC trigger has been set to external trigger, ADC conversion
lypinator 0:bb348c97df44 3889 * start must be performed using function
lypinator 0:bb348c97df44 3890 * @ref LL_ADC_REG_StartConversionExtTrig().
lypinator 0:bb348c97df44 3891 * (if external trigger edge would have been set during ADC other
lypinator 0:bb348c97df44 3892 * settings, ADC conversion would start at trigger event
lypinator 0:bb348c97df44 3893 * as soon as ADC is enabled).
lypinator 0:bb348c97df44 3894 * @rmtoll CR2 SWSTART LL_ADC_REG_StartConversionSWStart
lypinator 0:bb348c97df44 3895 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3896 * @retval None
lypinator 0:bb348c97df44 3897 */
lypinator 0:bb348c97df44 3898 __STATIC_INLINE void LL_ADC_REG_StartConversionSWStart(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3899 {
lypinator 0:bb348c97df44 3900 SET_BIT(ADCx->CR2, ADC_CR2_SWSTART);
lypinator 0:bb348c97df44 3901 }
lypinator 0:bb348c97df44 3902
lypinator 0:bb348c97df44 3903 /**
lypinator 0:bb348c97df44 3904 * @brief Start ADC group regular conversion from external trigger.
lypinator 0:bb348c97df44 3905 * @note ADC conversion will start at next trigger event (on the selected
lypinator 0:bb348c97df44 3906 * trigger edge) following the ADC start conversion command.
lypinator 0:bb348c97df44 3907 * @note On this STM32 serie, this function is relevant for
lypinator 0:bb348c97df44 3908 * ADC conversion start from external trigger.
lypinator 0:bb348c97df44 3909 * If internal trigger (SW start) is needed, perform ADC conversion
lypinator 0:bb348c97df44 3910 * start using function @ref LL_ADC_REG_StartConversionSWStart().
lypinator 0:bb348c97df44 3911 * @rmtoll CR2 EXTEN LL_ADC_REG_StartConversionExtTrig
lypinator 0:bb348c97df44 3912 * @param ExternalTriggerEdge This parameter can be one of the following values:
lypinator 0:bb348c97df44 3913 * @arg @ref LL_ADC_REG_TRIG_EXT_RISING
lypinator 0:bb348c97df44 3914 * @arg @ref LL_ADC_REG_TRIG_EXT_FALLING
lypinator 0:bb348c97df44 3915 * @arg @ref LL_ADC_REG_TRIG_EXT_RISINGFALLING
lypinator 0:bb348c97df44 3916 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3917 * @retval None
lypinator 0:bb348c97df44 3918 */
lypinator 0:bb348c97df44 3919 __STATIC_INLINE void LL_ADC_REG_StartConversionExtTrig(ADC_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
lypinator 0:bb348c97df44 3920 {
lypinator 0:bb348c97df44 3921 SET_BIT(ADCx->CR2, ExternalTriggerEdge);
lypinator 0:bb348c97df44 3922 }
lypinator 0:bb348c97df44 3923
lypinator 0:bb348c97df44 3924 /**
lypinator 0:bb348c97df44 3925 * @brief Stop ADC group regular conversion from external trigger.
lypinator 0:bb348c97df44 3926 * @note No more ADC conversion will start at next trigger event
lypinator 0:bb348c97df44 3927 * following the ADC stop conversion command.
lypinator 0:bb348c97df44 3928 * If a conversion is on-going, it will be completed.
lypinator 0:bb348c97df44 3929 * @note On this STM32 serie, there is no specific command
lypinator 0:bb348c97df44 3930 * to stop a conversion on-going or to stop ADC converting
lypinator 0:bb348c97df44 3931 * in continuous mode. These actions can be performed
lypinator 0:bb348c97df44 3932 * using function @ref LL_ADC_Disable().
lypinator 0:bb348c97df44 3933 * @rmtoll CR2 EXTEN LL_ADC_REG_StopConversionExtTrig
lypinator 0:bb348c97df44 3934 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3935 * @retval None
lypinator 0:bb348c97df44 3936 */
lypinator 0:bb348c97df44 3937 __STATIC_INLINE void LL_ADC_REG_StopConversionExtTrig(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3938 {
lypinator 0:bb348c97df44 3939 CLEAR_BIT(ADCx->CR2, ADC_CR2_EXTEN);
lypinator 0:bb348c97df44 3940 }
lypinator 0:bb348c97df44 3941
lypinator 0:bb348c97df44 3942 /**
lypinator 0:bb348c97df44 3943 * @brief Get ADC group regular conversion data, range fit for
lypinator 0:bb348c97df44 3944 * all ADC configurations: all ADC resolutions and
lypinator 0:bb348c97df44 3945 * all oversampling increased data width (for devices
lypinator 0:bb348c97df44 3946 * with feature oversampling).
lypinator 0:bb348c97df44 3947 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData32
lypinator 0:bb348c97df44 3948 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3949 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
lypinator 0:bb348c97df44 3950 */
lypinator 0:bb348c97df44 3951 __STATIC_INLINE uint32_t LL_ADC_REG_ReadConversionData32(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3952 {
lypinator 0:bb348c97df44 3953 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA));
lypinator 0:bb348c97df44 3954 }
lypinator 0:bb348c97df44 3955
lypinator 0:bb348c97df44 3956 /**
lypinator 0:bb348c97df44 3957 * @brief Get ADC group regular conversion data, range fit for
lypinator 0:bb348c97df44 3958 * ADC resolution 12 bits.
lypinator 0:bb348c97df44 3959 * @note For devices with feature oversampling: Oversampling
lypinator 0:bb348c97df44 3960 * can increase data width, function for extended range
lypinator 0:bb348c97df44 3961 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
lypinator 0:bb348c97df44 3962 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData12
lypinator 0:bb348c97df44 3963 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3964 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 3965 */
lypinator 0:bb348c97df44 3966 __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData12(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3967 {
lypinator 0:bb348c97df44 3968 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA));
lypinator 0:bb348c97df44 3969 }
lypinator 0:bb348c97df44 3970
lypinator 0:bb348c97df44 3971 /**
lypinator 0:bb348c97df44 3972 * @brief Get ADC group regular conversion data, range fit for
lypinator 0:bb348c97df44 3973 * ADC resolution 10 bits.
lypinator 0:bb348c97df44 3974 * @note For devices with feature oversampling: Oversampling
lypinator 0:bb348c97df44 3975 * can increase data width, function for extended range
lypinator 0:bb348c97df44 3976 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
lypinator 0:bb348c97df44 3977 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData10
lypinator 0:bb348c97df44 3978 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3979 * @retval Value between Min_Data=0x000 and Max_Data=0x3FF
lypinator 0:bb348c97df44 3980 */
lypinator 0:bb348c97df44 3981 __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData10(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3982 {
lypinator 0:bb348c97df44 3983 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA));
lypinator 0:bb348c97df44 3984 }
lypinator 0:bb348c97df44 3985
lypinator 0:bb348c97df44 3986 /**
lypinator 0:bb348c97df44 3987 * @brief Get ADC group regular conversion data, range fit for
lypinator 0:bb348c97df44 3988 * ADC resolution 8 bits.
lypinator 0:bb348c97df44 3989 * @note For devices with feature oversampling: Oversampling
lypinator 0:bb348c97df44 3990 * can increase data width, function for extended range
lypinator 0:bb348c97df44 3991 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
lypinator 0:bb348c97df44 3992 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData8
lypinator 0:bb348c97df44 3993 * @param ADCx ADC instance
lypinator 0:bb348c97df44 3994 * @retval Value between Min_Data=0x00 and Max_Data=0xFF
lypinator 0:bb348c97df44 3995 */
lypinator 0:bb348c97df44 3996 __STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData8(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 3997 {
lypinator 0:bb348c97df44 3998 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA));
lypinator 0:bb348c97df44 3999 }
lypinator 0:bb348c97df44 4000
lypinator 0:bb348c97df44 4001 /**
lypinator 0:bb348c97df44 4002 * @brief Get ADC group regular conversion data, range fit for
lypinator 0:bb348c97df44 4003 * ADC resolution 6 bits.
lypinator 0:bb348c97df44 4004 * @note For devices with feature oversampling: Oversampling
lypinator 0:bb348c97df44 4005 * can increase data width, function for extended range
lypinator 0:bb348c97df44 4006 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
lypinator 0:bb348c97df44 4007 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData6
lypinator 0:bb348c97df44 4008 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4009 * @retval Value between Min_Data=0x00 and Max_Data=0x3F
lypinator 0:bb348c97df44 4010 */
lypinator 0:bb348c97df44 4011 __STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData6(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4012 {
lypinator 0:bb348c97df44 4013 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA));
lypinator 0:bb348c97df44 4014 }
lypinator 0:bb348c97df44 4015
lypinator 0:bb348c97df44 4016 #if defined(ADC_MULTIMODE_SUPPORT)
lypinator 0:bb348c97df44 4017 /**
lypinator 0:bb348c97df44 4018 * @brief Get ADC multimode conversion data of ADC master, ADC slave
lypinator 0:bb348c97df44 4019 * or raw data with ADC master and slave concatenated.
lypinator 0:bb348c97df44 4020 * @note If raw data with ADC master and slave concatenated is retrieved,
lypinator 0:bb348c97df44 4021 * a macro is available to get the conversion data of
lypinator 0:bb348c97df44 4022 * ADC master or ADC slave: see helper macro
lypinator 0:bb348c97df44 4023 * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE().
lypinator 0:bb348c97df44 4024 * (however this macro is mainly intended for multimode
lypinator 0:bb348c97df44 4025 * transfer by DMA, because this function can do the same
lypinator 0:bb348c97df44 4026 * by getting multimode conversion data of ADC master or ADC slave
lypinator 0:bb348c97df44 4027 * separately).
lypinator 0:bb348c97df44 4028 * @rmtoll CDR DATA1 LL_ADC_REG_ReadMultiConversionData32\n
lypinator 0:bb348c97df44 4029 * CDR DATA2 LL_ADC_REG_ReadMultiConversionData32
lypinator 0:bb348c97df44 4030 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4031 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4032 * @param ConversionData This parameter can be one of the following values:
lypinator 0:bb348c97df44 4033 * @arg @ref LL_ADC_MULTI_MASTER
lypinator 0:bb348c97df44 4034 * @arg @ref LL_ADC_MULTI_SLAVE
lypinator 0:bb348c97df44 4035 * @arg @ref LL_ADC_MULTI_MASTER_SLAVE
lypinator 0:bb348c97df44 4036 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
lypinator 0:bb348c97df44 4037 */
lypinator 0:bb348c97df44 4038 __STATIC_INLINE uint32_t LL_ADC_REG_ReadMultiConversionData32(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t ConversionData)
lypinator 0:bb348c97df44 4039 {
lypinator 0:bb348c97df44 4040 return (uint32_t)(READ_BIT(ADCxy_COMMON->CDR,
lypinator 0:bb348c97df44 4041 ADC_DR_ADC2DATA)
lypinator 0:bb348c97df44 4042 >> POSITION_VAL(ConversionData)
lypinator 0:bb348c97df44 4043 );
lypinator 0:bb348c97df44 4044 }
lypinator 0:bb348c97df44 4045 #endif /* ADC_MULTIMODE_SUPPORT */
lypinator 0:bb348c97df44 4046
lypinator 0:bb348c97df44 4047 /**
lypinator 0:bb348c97df44 4048 * @}
lypinator 0:bb348c97df44 4049 */
lypinator 0:bb348c97df44 4050
lypinator 0:bb348c97df44 4051 /** @defgroup ADC_LL_EF_Operation_ADC_Group_Injected Operation on ADC hierarchical scope: group injected
lypinator 0:bb348c97df44 4052 * @{
lypinator 0:bb348c97df44 4053 */
lypinator 0:bb348c97df44 4054
lypinator 0:bb348c97df44 4055 /**
lypinator 0:bb348c97df44 4056 * @brief Start ADC group injected conversion.
lypinator 0:bb348c97df44 4057 * @note On this STM32 serie, this function is relevant only for
lypinator 0:bb348c97df44 4058 * internal trigger (SW start), not for external trigger:
lypinator 0:bb348c97df44 4059 * - If ADC trigger has been set to software start, ADC conversion
lypinator 0:bb348c97df44 4060 * starts immediately.
lypinator 0:bb348c97df44 4061 * - If ADC trigger has been set to external trigger, ADC conversion
lypinator 0:bb348c97df44 4062 * start must be performed using function
lypinator 0:bb348c97df44 4063 * @ref LL_ADC_INJ_StartConversionExtTrig().
lypinator 0:bb348c97df44 4064 * (if external trigger edge would have been set during ADC other
lypinator 0:bb348c97df44 4065 * settings, ADC conversion would start at trigger event
lypinator 0:bb348c97df44 4066 * as soon as ADC is enabled).
lypinator 0:bb348c97df44 4067 * @rmtoll CR2 JSWSTART LL_ADC_INJ_StartConversionSWStart
lypinator 0:bb348c97df44 4068 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4069 * @retval None
lypinator 0:bb348c97df44 4070 */
lypinator 0:bb348c97df44 4071 __STATIC_INLINE void LL_ADC_INJ_StartConversionSWStart(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4072 {
lypinator 0:bb348c97df44 4073 SET_BIT(ADCx->CR2, ADC_CR2_JSWSTART);
lypinator 0:bb348c97df44 4074 }
lypinator 0:bb348c97df44 4075
lypinator 0:bb348c97df44 4076 /**
lypinator 0:bb348c97df44 4077 * @brief Start ADC group injected conversion from external trigger.
lypinator 0:bb348c97df44 4078 * @note ADC conversion will start at next trigger event (on the selected
lypinator 0:bb348c97df44 4079 * trigger edge) following the ADC start conversion command.
lypinator 0:bb348c97df44 4080 * @note On this STM32 serie, this function is relevant for
lypinator 0:bb348c97df44 4081 * ADC conversion start from external trigger.
lypinator 0:bb348c97df44 4082 * If internal trigger (SW start) is needed, perform ADC conversion
lypinator 0:bb348c97df44 4083 * start using function @ref LL_ADC_INJ_StartConversionSWStart().
lypinator 0:bb348c97df44 4084 * @rmtoll CR2 JEXTEN LL_ADC_INJ_StartConversionExtTrig
lypinator 0:bb348c97df44 4085 * @param ExternalTriggerEdge This parameter can be one of the following values:
lypinator 0:bb348c97df44 4086 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING
lypinator 0:bb348c97df44 4087 * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING
lypinator 0:bb348c97df44 4088 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING
lypinator 0:bb348c97df44 4089 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4090 * @retval None
lypinator 0:bb348c97df44 4091 */
lypinator 0:bb348c97df44 4092 __STATIC_INLINE void LL_ADC_INJ_StartConversionExtTrig(ADC_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
lypinator 0:bb348c97df44 4093 {
lypinator 0:bb348c97df44 4094 SET_BIT(ADCx->CR2, ExternalTriggerEdge);
lypinator 0:bb348c97df44 4095 }
lypinator 0:bb348c97df44 4096
lypinator 0:bb348c97df44 4097 /**
lypinator 0:bb348c97df44 4098 * @brief Stop ADC group injected conversion from external trigger.
lypinator 0:bb348c97df44 4099 * @note No more ADC conversion will start at next trigger event
lypinator 0:bb348c97df44 4100 * following the ADC stop conversion command.
lypinator 0:bb348c97df44 4101 * If a conversion is on-going, it will be completed.
lypinator 0:bb348c97df44 4102 * @note On this STM32 serie, there is no specific command
lypinator 0:bb348c97df44 4103 * to stop a conversion on-going or to stop ADC converting
lypinator 0:bb348c97df44 4104 * in continuous mode. These actions can be performed
lypinator 0:bb348c97df44 4105 * using function @ref LL_ADC_Disable().
lypinator 0:bb348c97df44 4106 * @rmtoll CR2 JEXTEN LL_ADC_INJ_StopConversionExtTrig
lypinator 0:bb348c97df44 4107 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4108 * @retval None
lypinator 0:bb348c97df44 4109 */
lypinator 0:bb348c97df44 4110 __STATIC_INLINE void LL_ADC_INJ_StopConversionExtTrig(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4111 {
lypinator 0:bb348c97df44 4112 CLEAR_BIT(ADCx->CR2, ADC_CR2_JEXTEN);
lypinator 0:bb348c97df44 4113 }
lypinator 0:bb348c97df44 4114
lypinator 0:bb348c97df44 4115 /**
lypinator 0:bb348c97df44 4116 * @brief Get ADC group regular conversion data, range fit for
lypinator 0:bb348c97df44 4117 * all ADC configurations: all ADC resolutions and
lypinator 0:bb348c97df44 4118 * all oversampling increased data width (for devices
lypinator 0:bb348c97df44 4119 * with feature oversampling).
lypinator 0:bb348c97df44 4120 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData32\n
lypinator 0:bb348c97df44 4121 * JDR2 JDATA LL_ADC_INJ_ReadConversionData32\n
lypinator 0:bb348c97df44 4122 * JDR3 JDATA LL_ADC_INJ_ReadConversionData32\n
lypinator 0:bb348c97df44 4123 * JDR4 JDATA LL_ADC_INJ_ReadConversionData32
lypinator 0:bb348c97df44 4124 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4125 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 4126 * @arg @ref LL_ADC_INJ_RANK_1
lypinator 0:bb348c97df44 4127 * @arg @ref LL_ADC_INJ_RANK_2
lypinator 0:bb348c97df44 4128 * @arg @ref LL_ADC_INJ_RANK_3
lypinator 0:bb348c97df44 4129 * @arg @ref LL_ADC_INJ_RANK_4
lypinator 0:bb348c97df44 4130 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
lypinator 0:bb348c97df44 4131 */
lypinator 0:bb348c97df44 4132 __STATIC_INLINE uint32_t LL_ADC_INJ_ReadConversionData32(ADC_TypeDef *ADCx, uint32_t Rank)
lypinator 0:bb348c97df44 4133 {
lypinator 0:bb348c97df44 4134 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 4135
lypinator 0:bb348c97df44 4136 return (uint32_t)(READ_BIT(*preg,
lypinator 0:bb348c97df44 4137 ADC_JDR1_JDATA)
lypinator 0:bb348c97df44 4138 );
lypinator 0:bb348c97df44 4139 }
lypinator 0:bb348c97df44 4140
lypinator 0:bb348c97df44 4141 /**
lypinator 0:bb348c97df44 4142 * @brief Get ADC group injected conversion data, range fit for
lypinator 0:bb348c97df44 4143 * ADC resolution 12 bits.
lypinator 0:bb348c97df44 4144 * @note For devices with feature oversampling: Oversampling
lypinator 0:bb348c97df44 4145 * can increase data width, function for extended range
lypinator 0:bb348c97df44 4146 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
lypinator 0:bb348c97df44 4147 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData12\n
lypinator 0:bb348c97df44 4148 * JDR2 JDATA LL_ADC_INJ_ReadConversionData12\n
lypinator 0:bb348c97df44 4149 * JDR3 JDATA LL_ADC_INJ_ReadConversionData12\n
lypinator 0:bb348c97df44 4150 * JDR4 JDATA LL_ADC_INJ_ReadConversionData12
lypinator 0:bb348c97df44 4151 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4152 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 4153 * @arg @ref LL_ADC_INJ_RANK_1
lypinator 0:bb348c97df44 4154 * @arg @ref LL_ADC_INJ_RANK_2
lypinator 0:bb348c97df44 4155 * @arg @ref LL_ADC_INJ_RANK_3
lypinator 0:bb348c97df44 4156 * @arg @ref LL_ADC_INJ_RANK_4
lypinator 0:bb348c97df44 4157 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
lypinator 0:bb348c97df44 4158 */
lypinator 0:bb348c97df44 4159 __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData12(ADC_TypeDef *ADCx, uint32_t Rank)
lypinator 0:bb348c97df44 4160 {
lypinator 0:bb348c97df44 4161 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 4162
lypinator 0:bb348c97df44 4163 return (uint16_t)(READ_BIT(*preg,
lypinator 0:bb348c97df44 4164 ADC_JDR1_JDATA)
lypinator 0:bb348c97df44 4165 );
lypinator 0:bb348c97df44 4166 }
lypinator 0:bb348c97df44 4167
lypinator 0:bb348c97df44 4168 /**
lypinator 0:bb348c97df44 4169 * @brief Get ADC group injected conversion data, range fit for
lypinator 0:bb348c97df44 4170 * ADC resolution 10 bits.
lypinator 0:bb348c97df44 4171 * @note For devices with feature oversampling: Oversampling
lypinator 0:bb348c97df44 4172 * can increase data width, function for extended range
lypinator 0:bb348c97df44 4173 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
lypinator 0:bb348c97df44 4174 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData10\n
lypinator 0:bb348c97df44 4175 * JDR2 JDATA LL_ADC_INJ_ReadConversionData10\n
lypinator 0:bb348c97df44 4176 * JDR3 JDATA LL_ADC_INJ_ReadConversionData10\n
lypinator 0:bb348c97df44 4177 * JDR4 JDATA LL_ADC_INJ_ReadConversionData10
lypinator 0:bb348c97df44 4178 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4179 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 4180 * @arg @ref LL_ADC_INJ_RANK_1
lypinator 0:bb348c97df44 4181 * @arg @ref LL_ADC_INJ_RANK_2
lypinator 0:bb348c97df44 4182 * @arg @ref LL_ADC_INJ_RANK_3
lypinator 0:bb348c97df44 4183 * @arg @ref LL_ADC_INJ_RANK_4
lypinator 0:bb348c97df44 4184 * @retval Value between Min_Data=0x000 and Max_Data=0x3FF
lypinator 0:bb348c97df44 4185 */
lypinator 0:bb348c97df44 4186 __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData10(ADC_TypeDef *ADCx, uint32_t Rank)
lypinator 0:bb348c97df44 4187 {
lypinator 0:bb348c97df44 4188 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 4189
lypinator 0:bb348c97df44 4190 return (uint16_t)(READ_BIT(*preg,
lypinator 0:bb348c97df44 4191 ADC_JDR1_JDATA)
lypinator 0:bb348c97df44 4192 );
lypinator 0:bb348c97df44 4193 }
lypinator 0:bb348c97df44 4194
lypinator 0:bb348c97df44 4195 /**
lypinator 0:bb348c97df44 4196 * @brief Get ADC group injected conversion data, range fit for
lypinator 0:bb348c97df44 4197 * ADC resolution 8 bits.
lypinator 0:bb348c97df44 4198 * @note For devices with feature oversampling: Oversampling
lypinator 0:bb348c97df44 4199 * can increase data width, function for extended range
lypinator 0:bb348c97df44 4200 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
lypinator 0:bb348c97df44 4201 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData8\n
lypinator 0:bb348c97df44 4202 * JDR2 JDATA LL_ADC_INJ_ReadConversionData8\n
lypinator 0:bb348c97df44 4203 * JDR3 JDATA LL_ADC_INJ_ReadConversionData8\n
lypinator 0:bb348c97df44 4204 * JDR4 JDATA LL_ADC_INJ_ReadConversionData8
lypinator 0:bb348c97df44 4205 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4206 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 4207 * @arg @ref LL_ADC_INJ_RANK_1
lypinator 0:bb348c97df44 4208 * @arg @ref LL_ADC_INJ_RANK_2
lypinator 0:bb348c97df44 4209 * @arg @ref LL_ADC_INJ_RANK_3
lypinator 0:bb348c97df44 4210 * @arg @ref LL_ADC_INJ_RANK_4
lypinator 0:bb348c97df44 4211 * @retval Value between Min_Data=0x00 and Max_Data=0xFF
lypinator 0:bb348c97df44 4212 */
lypinator 0:bb348c97df44 4213 __STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData8(ADC_TypeDef *ADCx, uint32_t Rank)
lypinator 0:bb348c97df44 4214 {
lypinator 0:bb348c97df44 4215 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 4216
lypinator 0:bb348c97df44 4217 return (uint8_t)(READ_BIT(*preg,
lypinator 0:bb348c97df44 4218 ADC_JDR1_JDATA)
lypinator 0:bb348c97df44 4219 );
lypinator 0:bb348c97df44 4220 }
lypinator 0:bb348c97df44 4221
lypinator 0:bb348c97df44 4222 /**
lypinator 0:bb348c97df44 4223 * @brief Get ADC group injected conversion data, range fit for
lypinator 0:bb348c97df44 4224 * ADC resolution 6 bits.
lypinator 0:bb348c97df44 4225 * @note For devices with feature oversampling: Oversampling
lypinator 0:bb348c97df44 4226 * can increase data width, function for extended range
lypinator 0:bb348c97df44 4227 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
lypinator 0:bb348c97df44 4228 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData6\n
lypinator 0:bb348c97df44 4229 * JDR2 JDATA LL_ADC_INJ_ReadConversionData6\n
lypinator 0:bb348c97df44 4230 * JDR3 JDATA LL_ADC_INJ_ReadConversionData6\n
lypinator 0:bb348c97df44 4231 * JDR4 JDATA LL_ADC_INJ_ReadConversionData6
lypinator 0:bb348c97df44 4232 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4233 * @param Rank This parameter can be one of the following values:
lypinator 0:bb348c97df44 4234 * @arg @ref LL_ADC_INJ_RANK_1
lypinator 0:bb348c97df44 4235 * @arg @ref LL_ADC_INJ_RANK_2
lypinator 0:bb348c97df44 4236 * @arg @ref LL_ADC_INJ_RANK_3
lypinator 0:bb348c97df44 4237 * @arg @ref LL_ADC_INJ_RANK_4
lypinator 0:bb348c97df44 4238 * @retval Value between Min_Data=0x00 and Max_Data=0x3F
lypinator 0:bb348c97df44 4239 */
lypinator 0:bb348c97df44 4240 __STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData6(ADC_TypeDef *ADCx, uint32_t Rank)
lypinator 0:bb348c97df44 4241 {
lypinator 0:bb348c97df44 4242 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
lypinator 0:bb348c97df44 4243
lypinator 0:bb348c97df44 4244 return (uint8_t)(READ_BIT(*preg,
lypinator 0:bb348c97df44 4245 ADC_JDR1_JDATA)
lypinator 0:bb348c97df44 4246 );
lypinator 0:bb348c97df44 4247 }
lypinator 0:bb348c97df44 4248
lypinator 0:bb348c97df44 4249 /**
lypinator 0:bb348c97df44 4250 * @}
lypinator 0:bb348c97df44 4251 */
lypinator 0:bb348c97df44 4252
lypinator 0:bb348c97df44 4253 /** @defgroup ADC_LL_EF_FLAG_Management ADC flag management
lypinator 0:bb348c97df44 4254 * @{
lypinator 0:bb348c97df44 4255 */
lypinator 0:bb348c97df44 4256
lypinator 0:bb348c97df44 4257 /**
lypinator 0:bb348c97df44 4258 * @brief Get flag ADC group regular end of unitary conversion
lypinator 0:bb348c97df44 4259 * or end of sequence conversions, depending on
lypinator 0:bb348c97df44 4260 * ADC configuration.
lypinator 0:bb348c97df44 4261 * @note To configure flag of end of conversion,
lypinator 0:bb348c97df44 4262 * use function @ref LL_ADC_REG_SetFlagEndOfConversion().
lypinator 0:bb348c97df44 4263 * @rmtoll SR EOC LL_ADC_IsActiveFlag_EOCS
lypinator 0:bb348c97df44 4264 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4265 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4266 */
lypinator 0:bb348c97df44 4267 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOCS(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4268 {
lypinator 0:bb348c97df44 4269 return (READ_BIT(ADCx->SR, LL_ADC_FLAG_EOCS) == (LL_ADC_FLAG_EOCS));
lypinator 0:bb348c97df44 4270 }
lypinator 0:bb348c97df44 4271
lypinator 0:bb348c97df44 4272 /**
lypinator 0:bb348c97df44 4273 * @brief Get flag ADC group regular overrun.
lypinator 0:bb348c97df44 4274 * @rmtoll SR OVR LL_ADC_IsActiveFlag_OVR
lypinator 0:bb348c97df44 4275 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4276 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4277 */
lypinator 0:bb348c97df44 4278 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_OVR(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4279 {
lypinator 0:bb348c97df44 4280 return (READ_BIT(ADCx->SR, LL_ADC_FLAG_OVR) == (LL_ADC_FLAG_OVR));
lypinator 0:bb348c97df44 4281 }
lypinator 0:bb348c97df44 4282
lypinator 0:bb348c97df44 4283
lypinator 0:bb348c97df44 4284 /**
lypinator 0:bb348c97df44 4285 * @brief Get flag ADC group injected end of sequence conversions.
lypinator 0:bb348c97df44 4286 * @rmtoll SR JEOC LL_ADC_IsActiveFlag_JEOS
lypinator 0:bb348c97df44 4287 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4288 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4289 */
lypinator 0:bb348c97df44 4290 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOS(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4291 {
lypinator 0:bb348c97df44 4292 /* Note: on this STM32 serie, there is no flag ADC group injected */
lypinator 0:bb348c97df44 4293 /* end of unitary conversion. */
lypinator 0:bb348c97df44 4294 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
lypinator 0:bb348c97df44 4295 /* in other STM32 families). */
lypinator 0:bb348c97df44 4296 return (READ_BIT(ADCx->SR, LL_ADC_FLAG_JEOS) == (LL_ADC_FLAG_JEOS));
lypinator 0:bb348c97df44 4297 }
lypinator 0:bb348c97df44 4298
lypinator 0:bb348c97df44 4299 /**
lypinator 0:bb348c97df44 4300 * @brief Get flag ADC analog watchdog 1 flag
lypinator 0:bb348c97df44 4301 * @rmtoll SR AWD LL_ADC_IsActiveFlag_AWD1
lypinator 0:bb348c97df44 4302 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4303 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4304 */
lypinator 0:bb348c97df44 4305 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD1(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4306 {
lypinator 0:bb348c97df44 4307 return (READ_BIT(ADCx->SR, LL_ADC_FLAG_AWD1) == (LL_ADC_FLAG_AWD1));
lypinator 0:bb348c97df44 4308 }
lypinator 0:bb348c97df44 4309
lypinator 0:bb348c97df44 4310 /**
lypinator 0:bb348c97df44 4311 * @brief Clear flag ADC group regular end of unitary conversion
lypinator 0:bb348c97df44 4312 * or end of sequence conversions, depending on
lypinator 0:bb348c97df44 4313 * ADC configuration.
lypinator 0:bb348c97df44 4314 * @note To configure flag of end of conversion,
lypinator 0:bb348c97df44 4315 * use function @ref LL_ADC_REG_SetFlagEndOfConversion().
lypinator 0:bb348c97df44 4316 * @rmtoll SR EOC LL_ADC_ClearFlag_EOCS
lypinator 0:bb348c97df44 4317 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4318 * @retval None
lypinator 0:bb348c97df44 4319 */
lypinator 0:bb348c97df44 4320 __STATIC_INLINE void LL_ADC_ClearFlag_EOCS(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4321 {
lypinator 0:bb348c97df44 4322 WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_EOCS);
lypinator 0:bb348c97df44 4323 }
lypinator 0:bb348c97df44 4324
lypinator 0:bb348c97df44 4325 /**
lypinator 0:bb348c97df44 4326 * @brief Clear flag ADC group regular overrun.
lypinator 0:bb348c97df44 4327 * @rmtoll SR OVR LL_ADC_ClearFlag_OVR
lypinator 0:bb348c97df44 4328 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4329 * @retval None
lypinator 0:bb348c97df44 4330 */
lypinator 0:bb348c97df44 4331 __STATIC_INLINE void LL_ADC_ClearFlag_OVR(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4332 {
lypinator 0:bb348c97df44 4333 WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_OVR);
lypinator 0:bb348c97df44 4334 }
lypinator 0:bb348c97df44 4335
lypinator 0:bb348c97df44 4336
lypinator 0:bb348c97df44 4337 /**
lypinator 0:bb348c97df44 4338 * @brief Clear flag ADC group injected end of sequence conversions.
lypinator 0:bb348c97df44 4339 * @rmtoll SR JEOC LL_ADC_ClearFlag_JEOS
lypinator 0:bb348c97df44 4340 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4341 * @retval None
lypinator 0:bb348c97df44 4342 */
lypinator 0:bb348c97df44 4343 __STATIC_INLINE void LL_ADC_ClearFlag_JEOS(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4344 {
lypinator 0:bb348c97df44 4345 /* Note: on this STM32 serie, there is no flag ADC group injected */
lypinator 0:bb348c97df44 4346 /* end of unitary conversion. */
lypinator 0:bb348c97df44 4347 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
lypinator 0:bb348c97df44 4348 /* in other STM32 families). */
lypinator 0:bb348c97df44 4349 WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_JEOS);
lypinator 0:bb348c97df44 4350 }
lypinator 0:bb348c97df44 4351
lypinator 0:bb348c97df44 4352 /**
lypinator 0:bb348c97df44 4353 * @brief Clear flag ADC analog watchdog 1.
lypinator 0:bb348c97df44 4354 * @rmtoll SR AWD LL_ADC_ClearFlag_AWD1
lypinator 0:bb348c97df44 4355 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4356 * @retval None
lypinator 0:bb348c97df44 4357 */
lypinator 0:bb348c97df44 4358 __STATIC_INLINE void LL_ADC_ClearFlag_AWD1(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4359 {
lypinator 0:bb348c97df44 4360 WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_AWD1);
lypinator 0:bb348c97df44 4361 }
lypinator 0:bb348c97df44 4362
lypinator 0:bb348c97df44 4363 #if defined(ADC_MULTIMODE_SUPPORT)
lypinator 0:bb348c97df44 4364 /**
lypinator 0:bb348c97df44 4365 * @brief Get flag multimode ADC group regular end of unitary conversion
lypinator 0:bb348c97df44 4366 * or end of sequence conversions, depending on
lypinator 0:bb348c97df44 4367 * ADC configuration, of the ADC master.
lypinator 0:bb348c97df44 4368 * @note To configure flag of end of conversion,
lypinator 0:bb348c97df44 4369 * use function @ref LL_ADC_REG_SetFlagEndOfConversion().
lypinator 0:bb348c97df44 4370 * @rmtoll CSR EOC1 LL_ADC_IsActiveFlag_MST_EOCS
lypinator 0:bb348c97df44 4371 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4372 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4373 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4374 */
lypinator 0:bb348c97df44 4375 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOCS(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4376 {
lypinator 0:bb348c97df44 4377 return (READ_BIT(ADC1->SR, LL_ADC_FLAG_EOCS) == (LL_ADC_FLAG_EOCS));
lypinator 0:bb348c97df44 4378 }
lypinator 0:bb348c97df44 4379
lypinator 0:bb348c97df44 4380 /**
lypinator 0:bb348c97df44 4381 * @brief Get flag multimode ADC group regular end of unitary conversion
lypinator 0:bb348c97df44 4382 * or end of sequence conversions, depending on
lypinator 0:bb348c97df44 4383 * ADC configuration, of the ADC slave 1.
lypinator 0:bb348c97df44 4384 * @note To configure flag of end of conversion,
lypinator 0:bb348c97df44 4385 * use function @ref LL_ADC_REG_SetFlagEndOfConversion().
lypinator 0:bb348c97df44 4386 * @rmtoll CSR EOC2 LL_ADC_IsActiveFlag_SLV1_EOCS
lypinator 0:bb348c97df44 4387 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4388 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4389 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4390 */
lypinator 0:bb348c97df44 4391 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV1_EOCS(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4392 {
lypinator 0:bb348c97df44 4393 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOCS_SLV1) == (LL_ADC_FLAG_EOCS_SLV1));
lypinator 0:bb348c97df44 4394 }
lypinator 0:bb348c97df44 4395
lypinator 0:bb348c97df44 4396 /**
lypinator 0:bb348c97df44 4397 * @brief Get flag multimode ADC group regular end of unitary conversion
lypinator 0:bb348c97df44 4398 * or end of sequence conversions, depending on
lypinator 0:bb348c97df44 4399 * ADC configuration, of the ADC slave 2.
lypinator 0:bb348c97df44 4400 * @note To configure flag of end of conversion,
lypinator 0:bb348c97df44 4401 * use function @ref LL_ADC_REG_SetFlagEndOfConversion().
lypinator 0:bb348c97df44 4402 * @rmtoll CSR EOC3 LL_ADC_IsActiveFlag_SLV2_EOCS
lypinator 0:bb348c97df44 4403 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4404 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4405 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4406 */
lypinator 0:bb348c97df44 4407 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV2_EOCS(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4408 {
lypinator 0:bb348c97df44 4409 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOCS_SLV2) == (LL_ADC_FLAG_EOCS_SLV2));
lypinator 0:bb348c97df44 4410 }
lypinator 0:bb348c97df44 4411 /**
lypinator 0:bb348c97df44 4412 * @brief Get flag multimode ADC group regular overrun of the ADC master.
lypinator 0:bb348c97df44 4413 * @rmtoll CSR OVR1 LL_ADC_IsActiveFlag_MST_OVR
lypinator 0:bb348c97df44 4414 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4415 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4416 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4417 */
lypinator 0:bb348c97df44 4418 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_OVR(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4419 {
lypinator 0:bb348c97df44 4420 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_MST) == (LL_ADC_FLAG_OVR_MST));
lypinator 0:bb348c97df44 4421 }
lypinator 0:bb348c97df44 4422
lypinator 0:bb348c97df44 4423 /**
lypinator 0:bb348c97df44 4424 * @brief Get flag multimode ADC group regular overrun of the ADC slave 1.
lypinator 0:bb348c97df44 4425 * @rmtoll CSR OVR2 LL_ADC_IsActiveFlag_SLV1_OVR
lypinator 0:bb348c97df44 4426 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4427 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4428 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4429 */
lypinator 0:bb348c97df44 4430 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV1_OVR(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4431 {
lypinator 0:bb348c97df44 4432 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_SLV1) == (LL_ADC_FLAG_OVR_SLV1));
lypinator 0:bb348c97df44 4433 }
lypinator 0:bb348c97df44 4434
lypinator 0:bb348c97df44 4435 /**
lypinator 0:bb348c97df44 4436 * @brief Get flag multimode ADC group regular overrun of the ADC slave 2.
lypinator 0:bb348c97df44 4437 * @rmtoll CSR OVR3 LL_ADC_IsActiveFlag_SLV2_OVR
lypinator 0:bb348c97df44 4438 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4439 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4440 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4441 */
lypinator 0:bb348c97df44 4442 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV2_OVR(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4443 {
lypinator 0:bb348c97df44 4444 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_SLV2) == (LL_ADC_FLAG_OVR_SLV2));
lypinator 0:bb348c97df44 4445 }
lypinator 0:bb348c97df44 4446
lypinator 0:bb348c97df44 4447
lypinator 0:bb348c97df44 4448 /**
lypinator 0:bb348c97df44 4449 * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC master.
lypinator 0:bb348c97df44 4450 * @rmtoll CSR JEOC LL_ADC_IsActiveFlag_MST_EOCS
lypinator 0:bb348c97df44 4451 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4452 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4453 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4454 */
lypinator 0:bb348c97df44 4455 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOS(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4456 {
lypinator 0:bb348c97df44 4457 /* Note: on this STM32 serie, there is no flag ADC group injected */
lypinator 0:bb348c97df44 4458 /* end of unitary conversion. */
lypinator 0:bb348c97df44 4459 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
lypinator 0:bb348c97df44 4460 /* in other STM32 families). */
lypinator 0:bb348c97df44 4461 return (READ_BIT(ADCxy_COMMON->CSR, ADC_CSR_JEOC1) == (ADC_CSR_JEOC1));
lypinator 0:bb348c97df44 4462 }
lypinator 0:bb348c97df44 4463
lypinator 0:bb348c97df44 4464 /**
lypinator 0:bb348c97df44 4465 * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC slave 1.
lypinator 0:bb348c97df44 4466 * @rmtoll CSR JEOC2 LL_ADC_IsActiveFlag_SLV1_JEOS
lypinator 0:bb348c97df44 4467 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4468 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4469 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4470 */
lypinator 0:bb348c97df44 4471 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV1_JEOS(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4472 {
lypinator 0:bb348c97df44 4473 /* Note: on this STM32 serie, there is no flag ADC group injected */
lypinator 0:bb348c97df44 4474 /* end of unitary conversion. */
lypinator 0:bb348c97df44 4475 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
lypinator 0:bb348c97df44 4476 /* in other STM32 families). */
lypinator 0:bb348c97df44 4477 return (READ_BIT(ADCxy_COMMON->CSR, ADC_CSR_JEOC2) == (ADC_CSR_JEOC2));
lypinator 0:bb348c97df44 4478 }
lypinator 0:bb348c97df44 4479
lypinator 0:bb348c97df44 4480 /**
lypinator 0:bb348c97df44 4481 * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC slave 2.
lypinator 0:bb348c97df44 4482 * @rmtoll CSR JEOC3 LL_ADC_IsActiveFlag_SLV2_JEOS
lypinator 0:bb348c97df44 4483 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4484 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4485 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4486 */
lypinator 0:bb348c97df44 4487 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV2_JEOS(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4488 {
lypinator 0:bb348c97df44 4489 /* Note: on this STM32 serie, there is no flag ADC group injected */
lypinator 0:bb348c97df44 4490 /* end of unitary conversion. */
lypinator 0:bb348c97df44 4491 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
lypinator 0:bb348c97df44 4492 /* in other STM32 families). */
lypinator 0:bb348c97df44 4493 return (READ_BIT(ADCxy_COMMON->CSR, ADC_CSR_JEOC3) == (ADC_CSR_JEOC3));
lypinator 0:bb348c97df44 4494 }
lypinator 0:bb348c97df44 4495
lypinator 0:bb348c97df44 4496 /**
lypinator 0:bb348c97df44 4497 * @brief Get flag multimode ADC analog watchdog 1 of the ADC master.
lypinator 0:bb348c97df44 4498 * @rmtoll CSR AWD1 LL_ADC_IsActiveFlag_MST_AWD1
lypinator 0:bb348c97df44 4499 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4500 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4501 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4502 */
lypinator 0:bb348c97df44 4503 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD1(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4504 {
lypinator 0:bb348c97df44 4505 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_MST) == (LL_ADC_FLAG_AWD1_MST));
lypinator 0:bb348c97df44 4506 }
lypinator 0:bb348c97df44 4507
lypinator 0:bb348c97df44 4508 /**
lypinator 0:bb348c97df44 4509 * @brief Get flag multimode analog watchdog 1 of the ADC slave 1.
lypinator 0:bb348c97df44 4510 * @rmtoll CSR AWD2 LL_ADC_IsActiveFlag_SLV1_AWD1
lypinator 0:bb348c97df44 4511 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4512 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4513 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4514 */
lypinator 0:bb348c97df44 4515 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV1_AWD1(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4516 {
lypinator 0:bb348c97df44 4517 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_SLV1) == (LL_ADC_FLAG_AWD1_SLV1));
lypinator 0:bb348c97df44 4518 }
lypinator 0:bb348c97df44 4519
lypinator 0:bb348c97df44 4520 /**
lypinator 0:bb348c97df44 4521 * @brief Get flag multimode analog watchdog 1 of the ADC slave 2.
lypinator 0:bb348c97df44 4522 * @rmtoll CSR AWD3 LL_ADC_IsActiveFlag_SLV2_AWD1
lypinator 0:bb348c97df44 4523 * @param ADCxy_COMMON ADC common instance
lypinator 0:bb348c97df44 4524 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
lypinator 0:bb348c97df44 4525 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4526 */
lypinator 0:bb348c97df44 4527 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV2_AWD1(ADC_Common_TypeDef *ADCxy_COMMON)
lypinator 0:bb348c97df44 4528 {
lypinator 0:bb348c97df44 4529 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_SLV2) == (LL_ADC_FLAG_AWD1_SLV2));
lypinator 0:bb348c97df44 4530 }
lypinator 0:bb348c97df44 4531
lypinator 0:bb348c97df44 4532 #endif /* ADC_MULTIMODE_SUPPORT */
lypinator 0:bb348c97df44 4533
lypinator 0:bb348c97df44 4534 /**
lypinator 0:bb348c97df44 4535 * @}
lypinator 0:bb348c97df44 4536 */
lypinator 0:bb348c97df44 4537
lypinator 0:bb348c97df44 4538 /** @defgroup ADC_LL_EF_IT_Management ADC IT management
lypinator 0:bb348c97df44 4539 * @{
lypinator 0:bb348c97df44 4540 */
lypinator 0:bb348c97df44 4541
lypinator 0:bb348c97df44 4542 /**
lypinator 0:bb348c97df44 4543 * @brief Enable interruption ADC group regular end of unitary conversion
lypinator 0:bb348c97df44 4544 * or end of sequence conversions, depending on
lypinator 0:bb348c97df44 4545 * ADC configuration.
lypinator 0:bb348c97df44 4546 * @note To configure flag of end of conversion,
lypinator 0:bb348c97df44 4547 * use function @ref LL_ADC_REG_SetFlagEndOfConversion().
lypinator 0:bb348c97df44 4548 * @rmtoll CR1 EOCIE LL_ADC_EnableIT_EOCS
lypinator 0:bb348c97df44 4549 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4550 * @retval None
lypinator 0:bb348c97df44 4551 */
lypinator 0:bb348c97df44 4552 __STATIC_INLINE void LL_ADC_EnableIT_EOCS(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4553 {
lypinator 0:bb348c97df44 4554 SET_BIT(ADCx->CR1, LL_ADC_IT_EOCS);
lypinator 0:bb348c97df44 4555 }
lypinator 0:bb348c97df44 4556
lypinator 0:bb348c97df44 4557 /**
lypinator 0:bb348c97df44 4558 * @brief Enable ADC group regular interruption overrun.
lypinator 0:bb348c97df44 4559 * @rmtoll CR1 OVRIE LL_ADC_EnableIT_OVR
lypinator 0:bb348c97df44 4560 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4561 * @retval None
lypinator 0:bb348c97df44 4562 */
lypinator 0:bb348c97df44 4563 __STATIC_INLINE void LL_ADC_EnableIT_OVR(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4564 {
lypinator 0:bb348c97df44 4565 SET_BIT(ADCx->CR1, LL_ADC_IT_OVR);
lypinator 0:bb348c97df44 4566 }
lypinator 0:bb348c97df44 4567
lypinator 0:bb348c97df44 4568
lypinator 0:bb348c97df44 4569 /**
lypinator 0:bb348c97df44 4570 * @brief Enable interruption ADC group injected end of sequence conversions.
lypinator 0:bb348c97df44 4571 * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS
lypinator 0:bb348c97df44 4572 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4573 * @retval None
lypinator 0:bb348c97df44 4574 */
lypinator 0:bb348c97df44 4575 __STATIC_INLINE void LL_ADC_EnableIT_JEOS(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4576 {
lypinator 0:bb348c97df44 4577 /* Note: on this STM32 serie, there is no flag ADC group injected */
lypinator 0:bb348c97df44 4578 /* end of unitary conversion. */
lypinator 0:bb348c97df44 4579 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
lypinator 0:bb348c97df44 4580 /* in other STM32 families). */
lypinator 0:bb348c97df44 4581 SET_BIT(ADCx->CR1, LL_ADC_IT_JEOS);
lypinator 0:bb348c97df44 4582 }
lypinator 0:bb348c97df44 4583
lypinator 0:bb348c97df44 4584 /**
lypinator 0:bb348c97df44 4585 * @brief Enable interruption ADC analog watchdog 1.
lypinator 0:bb348c97df44 4586 * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1
lypinator 0:bb348c97df44 4587 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4588 * @retval None
lypinator 0:bb348c97df44 4589 */
lypinator 0:bb348c97df44 4590 __STATIC_INLINE void LL_ADC_EnableIT_AWD1(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4591 {
lypinator 0:bb348c97df44 4592 SET_BIT(ADCx->CR1, LL_ADC_IT_AWD1);
lypinator 0:bb348c97df44 4593 }
lypinator 0:bb348c97df44 4594
lypinator 0:bb348c97df44 4595 /**
lypinator 0:bb348c97df44 4596 * @brief Disable interruption ADC group regular end of unitary conversion
lypinator 0:bb348c97df44 4597 * or end of sequence conversions, depending on
lypinator 0:bb348c97df44 4598 * ADC configuration.
lypinator 0:bb348c97df44 4599 * @note To configure flag of end of conversion,
lypinator 0:bb348c97df44 4600 * use function @ref LL_ADC_REG_SetFlagEndOfConversion().
lypinator 0:bb348c97df44 4601 * @rmtoll CR1 EOCIE LL_ADC_DisableIT_EOCS
lypinator 0:bb348c97df44 4602 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4603 * @retval None
lypinator 0:bb348c97df44 4604 */
lypinator 0:bb348c97df44 4605 __STATIC_INLINE void LL_ADC_DisableIT_EOCS(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4606 {
lypinator 0:bb348c97df44 4607 CLEAR_BIT(ADCx->CR1, LL_ADC_IT_EOCS);
lypinator 0:bb348c97df44 4608 }
lypinator 0:bb348c97df44 4609
lypinator 0:bb348c97df44 4610 /**
lypinator 0:bb348c97df44 4611 * @brief Disable interruption ADC group regular overrun.
lypinator 0:bb348c97df44 4612 * @rmtoll CR1 OVRIE LL_ADC_DisableIT_OVR
lypinator 0:bb348c97df44 4613 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4614 * @retval None
lypinator 0:bb348c97df44 4615 */
lypinator 0:bb348c97df44 4616 __STATIC_INLINE void LL_ADC_DisableIT_OVR(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4617 {
lypinator 0:bb348c97df44 4618 CLEAR_BIT(ADCx->CR1, LL_ADC_IT_OVR);
lypinator 0:bb348c97df44 4619 }
lypinator 0:bb348c97df44 4620
lypinator 0:bb348c97df44 4621
lypinator 0:bb348c97df44 4622 /**
lypinator 0:bb348c97df44 4623 * @brief Disable interruption ADC group injected end of sequence conversions.
lypinator 0:bb348c97df44 4624 * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS
lypinator 0:bb348c97df44 4625 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4626 * @retval None
lypinator 0:bb348c97df44 4627 */
lypinator 0:bb348c97df44 4628 __STATIC_INLINE void LL_ADC_DisableIT_JEOS(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4629 {
lypinator 0:bb348c97df44 4630 /* Note: on this STM32 serie, there is no flag ADC group injected */
lypinator 0:bb348c97df44 4631 /* end of unitary conversion. */
lypinator 0:bb348c97df44 4632 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
lypinator 0:bb348c97df44 4633 /* in other STM32 families). */
lypinator 0:bb348c97df44 4634 CLEAR_BIT(ADCx->CR1, LL_ADC_IT_JEOS);
lypinator 0:bb348c97df44 4635 }
lypinator 0:bb348c97df44 4636
lypinator 0:bb348c97df44 4637 /**
lypinator 0:bb348c97df44 4638 * @brief Disable interruption ADC analog watchdog 1.
lypinator 0:bb348c97df44 4639 * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1
lypinator 0:bb348c97df44 4640 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4641 * @retval None
lypinator 0:bb348c97df44 4642 */
lypinator 0:bb348c97df44 4643 __STATIC_INLINE void LL_ADC_DisableIT_AWD1(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4644 {
lypinator 0:bb348c97df44 4645 CLEAR_BIT(ADCx->CR1, LL_ADC_IT_AWD1);
lypinator 0:bb348c97df44 4646 }
lypinator 0:bb348c97df44 4647
lypinator 0:bb348c97df44 4648 /**
lypinator 0:bb348c97df44 4649 * @brief Get state of interruption ADC group regular end of unitary conversion
lypinator 0:bb348c97df44 4650 * or end of sequence conversions, depending on
lypinator 0:bb348c97df44 4651 * ADC configuration.
lypinator 0:bb348c97df44 4652 * @note To configure flag of end of conversion,
lypinator 0:bb348c97df44 4653 * use function @ref LL_ADC_REG_SetFlagEndOfConversion().
lypinator 0:bb348c97df44 4654 * (0: interrupt disabled, 1: interrupt enabled)
lypinator 0:bb348c97df44 4655 * @rmtoll CR1 EOCIE LL_ADC_IsEnabledIT_EOCS
lypinator 0:bb348c97df44 4656 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4657 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4658 */
lypinator 0:bb348c97df44 4659 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOCS(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4660 {
lypinator 0:bb348c97df44 4661 return (READ_BIT(ADCx->CR1, LL_ADC_IT_EOCS) == (LL_ADC_IT_EOCS));
lypinator 0:bb348c97df44 4662 }
lypinator 0:bb348c97df44 4663
lypinator 0:bb348c97df44 4664 /**
lypinator 0:bb348c97df44 4665 * @brief Get state of interruption ADC group regular overrun
lypinator 0:bb348c97df44 4666 * (0: interrupt disabled, 1: interrupt enabled).
lypinator 0:bb348c97df44 4667 * @rmtoll CR1 OVRIE LL_ADC_IsEnabledIT_OVR
lypinator 0:bb348c97df44 4668 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4669 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4670 */
lypinator 0:bb348c97df44 4671 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_OVR(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4672 {
lypinator 0:bb348c97df44 4673 return (READ_BIT(ADCx->CR1, LL_ADC_IT_OVR) == (LL_ADC_IT_OVR));
lypinator 0:bb348c97df44 4674 }
lypinator 0:bb348c97df44 4675
lypinator 0:bb348c97df44 4676
lypinator 0:bb348c97df44 4677 /**
lypinator 0:bb348c97df44 4678 * @brief Get state of interruption ADC group injected end of sequence conversions
lypinator 0:bb348c97df44 4679 * (0: interrupt disabled, 1: interrupt enabled).
lypinator 0:bb348c97df44 4680 * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS
lypinator 0:bb348c97df44 4681 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4682 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4683 */
lypinator 0:bb348c97df44 4684 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOS(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4685 {
lypinator 0:bb348c97df44 4686 /* Note: on this STM32 serie, there is no flag ADC group injected */
lypinator 0:bb348c97df44 4687 /* end of unitary conversion. */
lypinator 0:bb348c97df44 4688 /* Flag noted as "JEOC" is corresponding to flag "JEOS" */
lypinator 0:bb348c97df44 4689 /* in other STM32 families). */
lypinator 0:bb348c97df44 4690 return (READ_BIT(ADCx->CR1, LL_ADC_IT_JEOS) == (LL_ADC_IT_JEOS));
lypinator 0:bb348c97df44 4691 }
lypinator 0:bb348c97df44 4692
lypinator 0:bb348c97df44 4693 /**
lypinator 0:bb348c97df44 4694 * @brief Get state of interruption ADC analog watchdog 1
lypinator 0:bb348c97df44 4695 * (0: interrupt disabled, 1: interrupt enabled).
lypinator 0:bb348c97df44 4696 * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1
lypinator 0:bb348c97df44 4697 * @param ADCx ADC instance
lypinator 0:bb348c97df44 4698 * @retval State of bit (1 or 0).
lypinator 0:bb348c97df44 4699 */
lypinator 0:bb348c97df44 4700 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD1(ADC_TypeDef *ADCx)
lypinator 0:bb348c97df44 4701 {
lypinator 0:bb348c97df44 4702 return (READ_BIT(ADCx->CR1, LL_ADC_IT_AWD1) == (LL_ADC_IT_AWD1));
lypinator 0:bb348c97df44 4703 }
lypinator 0:bb348c97df44 4704
lypinator 0:bb348c97df44 4705 /**
lypinator 0:bb348c97df44 4706 * @}
lypinator 0:bb348c97df44 4707 */
lypinator 0:bb348c97df44 4708
lypinator 0:bb348c97df44 4709 #if defined(USE_FULL_LL_DRIVER)
lypinator 0:bb348c97df44 4710 /** @defgroup ADC_LL_EF_Init Initialization and de-initialization functions
lypinator 0:bb348c97df44 4711 * @{
lypinator 0:bb348c97df44 4712 */
lypinator 0:bb348c97df44 4713
lypinator 0:bb348c97df44 4714 /* Initialization of some features of ADC common parameters and multimode */
lypinator 0:bb348c97df44 4715 ErrorStatus LL_ADC_CommonDeInit(ADC_Common_TypeDef *ADCxy_COMMON);
lypinator 0:bb348c97df44 4716 ErrorStatus LL_ADC_CommonInit(ADC_Common_TypeDef *ADCxy_COMMON, LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct);
lypinator 0:bb348c97df44 4717 void LL_ADC_CommonStructInit(LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct);
lypinator 0:bb348c97df44 4718
lypinator 0:bb348c97df44 4719 /* De-initialization of ADC instance, ADC group regular and ADC group injected */
lypinator 0:bb348c97df44 4720 /* (availability of ADC group injected depends on STM32 families) */
lypinator 0:bb348c97df44 4721 ErrorStatus LL_ADC_DeInit(ADC_TypeDef *ADCx);
lypinator 0:bb348c97df44 4722
lypinator 0:bb348c97df44 4723 /* Initialization of some features of ADC instance */
lypinator 0:bb348c97df44 4724 ErrorStatus LL_ADC_Init(ADC_TypeDef *ADCx, LL_ADC_InitTypeDef *ADC_InitStruct);
lypinator 0:bb348c97df44 4725 void LL_ADC_StructInit(LL_ADC_InitTypeDef *ADC_InitStruct);
lypinator 0:bb348c97df44 4726
lypinator 0:bb348c97df44 4727 /* Initialization of some features of ADC instance and ADC group regular */
lypinator 0:bb348c97df44 4728 ErrorStatus LL_ADC_REG_Init(ADC_TypeDef *ADCx, LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct);
lypinator 0:bb348c97df44 4729 void LL_ADC_REG_StructInit(LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct);
lypinator 0:bb348c97df44 4730
lypinator 0:bb348c97df44 4731 /* Initialization of some features of ADC instance and ADC group injected */
lypinator 0:bb348c97df44 4732 ErrorStatus LL_ADC_INJ_Init(ADC_TypeDef *ADCx, LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct);
lypinator 0:bb348c97df44 4733 void LL_ADC_INJ_StructInit(LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct);
lypinator 0:bb348c97df44 4734
lypinator 0:bb348c97df44 4735 /**
lypinator 0:bb348c97df44 4736 * @}
lypinator 0:bb348c97df44 4737 */
lypinator 0:bb348c97df44 4738 #endif /* USE_FULL_LL_DRIVER */
lypinator 0:bb348c97df44 4739
lypinator 0:bb348c97df44 4740 /**
lypinator 0:bb348c97df44 4741 * @}
lypinator 0:bb348c97df44 4742 */
lypinator 0:bb348c97df44 4743
lypinator 0:bb348c97df44 4744 /**
lypinator 0:bb348c97df44 4745 * @}
lypinator 0:bb348c97df44 4746 */
lypinator 0:bb348c97df44 4747
lypinator 0:bb348c97df44 4748 #endif /* ADC1 || ADC2 || ADC3 */
lypinator 0:bb348c97df44 4749
lypinator 0:bb348c97df44 4750 /**
lypinator 0:bb348c97df44 4751 * @}
lypinator 0:bb348c97df44 4752 */
lypinator 0:bb348c97df44 4753
lypinator 0:bb348c97df44 4754 #ifdef __cplusplus
lypinator 0:bb348c97df44 4755 }
lypinator 0:bb348c97df44 4756 #endif
lypinator 0:bb348c97df44 4757
lypinator 0:bb348c97df44 4758 #endif /* __STM32F4xx_LL_ADC_H */
lypinator 0:bb348c97df44 4759
lypinator 0:bb348c97df44 4760 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/