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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

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

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

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