mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Thu Sep 06 13:40:20 2018 +0100
Revision:
187:0387e8f68319
Parent:
165:e614a9f1c9e2
mbed-dev library. Release version 163

Who changed what in which revision?

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