File indexing completed on 2025-05-11 08:23:09
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #if defined(USE_FULL_LL_DRIVER) || defined(__rtems__)
0019
0020
0021 #include "stm32h7xx_ll_adc.h"
0022 #include "stm32h7xx_ll_bus.h"
0023
0024 #ifdef USE_FULL_ASSERT
0025 #include "stm32_assert.h"
0026 #else
0027 #define assert_param(expr) ((void)0U)
0028 #endif
0029
0030
0031
0032
0033
0034 #if defined (ADC1) || defined (ADC2) || defined (ADC3)
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065 #define ADC_CLOCK_RATIO_VS_CPU_HIGHEST (512UL * 16UL * 4UL)
0066 #define ADC_TIMEOUT_DISABLE_CPU_CYCLES (ADC_CLOCK_RATIO_VS_CPU_HIGHEST * 1UL)
0067 #define ADC_TIMEOUT_STOP_CONVERSION_CPU_CYCLES (ADC_CLOCK_RATIO_VS_CPU_HIGHEST * 1UL)
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081 #define IS_LL_ADC_COMMON_CLOCK(__CLOCK__) \
0082 ( ((__CLOCK__) == LL_ADC_CLOCK_SYNC_PCLK_DIV1) \
0083 || ((__CLOCK__) == LL_ADC_CLOCK_SYNC_PCLK_DIV2) \
0084 || ((__CLOCK__) == LL_ADC_CLOCK_SYNC_PCLK_DIV4) \
0085 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV1) \
0086 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV2) \
0087 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV4) \
0088 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV6) \
0089 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV8) \
0090 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV10) \
0091 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV12) \
0092 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV16) \
0093 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV32) \
0094 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV64) \
0095 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV128) \
0096 || ((__CLOCK__) == LL_ADC_CLOCK_ASYNC_DIV256) \
0097 )
0098
0099
0100
0101 #define IS_LL_ADC_RESOLUTION(__RESOLUTION__) \
0102 ( ((__RESOLUTION__) == LL_ADC_RESOLUTION_16B) \
0103 || ((__RESOLUTION__) == LL_ADC_RESOLUTION_14B) \
0104 || ((__RESOLUTION__) == LL_ADC_RESOLUTION_12B) \
0105 || ((__RESOLUTION__) == LL_ADC_RESOLUTION_10B) \
0106 || ((__RESOLUTION__) == LL_ADC_RESOLUTION_8B) \
0107 )
0108
0109 #define IS_LL_ADC_LEFT_BIT_SHIFT(__LEFT_BIT_SHIFT__) \
0110 ( ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_NONE) \
0111 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_1) \
0112 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_2) \
0113 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_3) \
0114 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_4) \
0115 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_5) \
0116 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_6) \
0117 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_7) \
0118 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_8) \
0119 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_9) \
0120 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_10) \
0121 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_11) \
0122 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_12) \
0123 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_13) \
0124 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_14) \
0125 || ((__LEFT_BIT_SHIFT__) == LL_ADC_LEFT_BIT_SHIFT_15) \
0126 )
0127
0128 #define IS_LL_ADC_LOW_POWER(__LOW_POWER__) \
0129 ( ((__LOW_POWER__) == LL_ADC_LP_MODE_NONE) \
0130 || ((__LOW_POWER__) == LL_ADC_LP_AUTOWAIT) \
0131 )
0132
0133
0134
0135 #define IS_LL_ADC_REG_TRIG_SOURCE(__REG_TRIG_SOURCE__) \
0136 ( ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_SOFTWARE) \
0137 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM1_CH1) \
0138 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM1_CH2) \
0139 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM1_CH3) \
0140 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM2_CH2) \
0141 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM3_TRGO) \
0142 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM4_CH4) \
0143 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_EXTI_LINE11) \
0144 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM8_TRGO) \
0145 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM8_TRGO2) \
0146 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM1_TRGO) \
0147 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM1_TRGO2) \
0148 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM2_TRGO) \
0149 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM4_TRGO) \
0150 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM6_TRGO) \
0151 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM15_TRGO) \
0152 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM3_CH4) \
0153 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_HRTIM_TRG1) \
0154 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_HRTIM_TRG3) \
0155 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_LPTIM1_OUT) \
0156 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_LPTIM2_OUT) \
0157 || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_LPTIM3_OUT) \
0158 )
0159
0160 #define IS_LL_ADC_REG_CONTINUOUS_MODE(__REG_CONTINUOUS_MODE__) \
0161 ( ((__REG_CONTINUOUS_MODE__) == LL_ADC_REG_CONV_SINGLE) \
0162 || ((__REG_CONTINUOUS_MODE__) == LL_ADC_REG_CONV_CONTINUOUS) \
0163 )
0164
0165 #define IS_LL_ADC_REG_DATA_TRANSFER_MODE(__REG_DATA_TRANSFER_MODE__) \
0166 ( ((__REG_DATA_TRANSFER_MODE__) == LL_ADC_REG_DR_TRANSFER) \
0167 || ((__REG_DATA_TRANSFER_MODE__) == LL_ADC_REG_DMA_TRANSFER_LIMITED) \
0168 || ((__REG_DATA_TRANSFER_MODE__) == LL_ADC_REG_DMA_TRANSFER_UNLIMITED) \
0169 || ((__REG_DATA_TRANSFER_MODE__) == LL_ADC_REG_DFSDM_TRANSFER) \
0170 )
0171
0172 #define IS_LL_ADC_REG_OVR_DATA_BEHAVIOR(__REG_OVR_DATA_BEHAVIOR__) \
0173 ( ((__REG_OVR_DATA_BEHAVIOR__) == LL_ADC_REG_OVR_DATA_PRESERVED) \
0174 || ((__REG_OVR_DATA_BEHAVIOR__) == LL_ADC_REG_OVR_DATA_OVERWRITTEN) \
0175 )
0176
0177 #define IS_LL_ADC_REG_SEQ_SCAN_LENGTH(__REG_SEQ_SCAN_LENGTH__) \
0178 ( ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_DISABLE) \
0179 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS) \
0180 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS) \
0181 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS) \
0182 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS) \
0183 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS) \
0184 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS) \
0185 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS) \
0186 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS) \
0187 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS) \
0188 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS) \
0189 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS) \
0190 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS) \
0191 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS) \
0192 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS) \
0193 || ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS) \
0194 )
0195
0196 #define IS_LL_ADC_REG_SEQ_SCAN_DISCONT_MODE(__REG_SEQ_DISCONT_MODE__) \
0197 ( ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_DISABLE) \
0198 || ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_1RANK) \
0199 || ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_2RANKS) \
0200 || ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_3RANKS) \
0201 || ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_4RANKS) \
0202 || ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_5RANKS) \
0203 || ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_6RANKS) \
0204 || ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_7RANKS) \
0205 || ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_8RANKS) \
0206 )
0207
0208
0209
0210 #if defined(STM32H745xx) || defined(STM32H745xG) || defined(STM32H742xx) || defined(STM32H743xx) || defined(STM32H747xG) || defined(STM32H747xx) || defined(STM32H750xx) || defined(STM32H753xx) || defined(STM32H755xx) || defined(STM32H757xx)
0211 #define IS_LL_ADC_INJ_TRIG_SOURCE(__INJ_TRIG_SOURCE__) \
0212 ( ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_SOFTWARE) \
0213 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_TRGO) \
0214 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_CH4) \
0215 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_TRGO) \
0216 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_CH1) \
0217 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH4) \
0218 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM4_TRGO) \
0219 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_EXTI_LINE15) \
0220 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_CH4) \
0221 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2) \
0222 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_TRGO) \
0223 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2) \
0224 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH3) \
0225 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_TRGO) \
0226 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH1) \
0227 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM6_TRGO) \
0228 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM15_TRGO) \
0229 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_HRTIM_TRG2) \
0230 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_HRTIM_TRG4) \
0231 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_LPTIM1_OUT) \
0232 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_LPTIM2_OUT) \
0233 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_LPTIM3_OUT) \
0234 )
0235 #else
0236 #define IS_LL_ADC_INJ_TRIG_SOURCE(__INJ_TRIG_SOURCE__) \
0237 ( ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_SOFTWARE) \
0238 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_TRGO) \
0239 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_CH4) \
0240 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_TRGO) \
0241 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_CH1) \
0242 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH4) \
0243 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM4_TRGO) \
0244 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_EXTI_LINE15) \
0245 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_CH4) \
0246 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2) \
0247 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_TRGO) \
0248 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2) \
0249 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH3) \
0250 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_TRGO) \
0251 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH1) \
0252 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM6_TRGO) \
0253 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM15_TRGO) \
0254 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_LPTIM1_OUT) \
0255 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_LPTIM2_OUT) \
0256 || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_LPTIM3_OUT) \
0257 )
0258 #endif
0259
0260 #define IS_LL_ADC_INJ_TRIG_EXT_EDGE(__INJ_TRIG_EXT_EDGE__) \
0261 ( ((__INJ_TRIG_EXT_EDGE__) == LL_ADC_INJ_TRIG_EXT_RISING) \
0262 || ((__INJ_TRIG_EXT_EDGE__) == LL_ADC_INJ_TRIG_EXT_FALLING) \
0263 || ((__INJ_TRIG_EXT_EDGE__) == LL_ADC_INJ_TRIG_EXT_RISINGFALLING) \
0264 )
0265
0266 #define IS_LL_ADC_INJ_TRIG_AUTO(__INJ_TRIG_AUTO__) \
0267 ( ((__INJ_TRIG_AUTO__) == LL_ADC_INJ_TRIG_INDEPENDENT) \
0268 || ((__INJ_TRIG_AUTO__) == LL_ADC_INJ_TRIG_FROM_GRP_REGULAR) \
0269 )
0270
0271 #define IS_LL_ADC_INJ_SEQ_SCAN_LENGTH(__INJ_SEQ_SCAN_LENGTH__) \
0272 ( ((__INJ_SEQ_SCAN_LENGTH__) == LL_ADC_INJ_SEQ_SCAN_DISABLE) \
0273 || ((__INJ_SEQ_SCAN_LENGTH__) == LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS) \
0274 || ((__INJ_SEQ_SCAN_LENGTH__) == LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS) \
0275 || ((__INJ_SEQ_SCAN_LENGTH__) == LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS) \
0276 )
0277
0278 #define IS_LL_ADC_INJ_SEQ_SCAN_DISCONT_MODE(__INJ_SEQ_DISCONT_MODE__) \
0279 ( ((__INJ_SEQ_DISCONT_MODE__) == LL_ADC_INJ_SEQ_DISCONT_DISABLE) \
0280 || ((__INJ_SEQ_DISCONT_MODE__) == LL_ADC_INJ_SEQ_DISCONT_1RANK) \
0281 )
0282
0283
0284
0285 #define IS_LL_ADC_MULTI_MODE(__MULTI_MODE__) \
0286 ( ((__MULTI_MODE__) == LL_ADC_MULTI_INDEPENDENT) \
0287 || ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_SIMULT) \
0288 || ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_INTERL) \
0289 || ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_INJ_SIMULT) \
0290 || ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_INJ_ALTERN) \
0291 || ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM) \
0292 || ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT) \
0293 || ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM) \
0294 )
0295
0296 #define IS_LL_ADC_MULTI_DMA_TRANSFER(__MULTI_DMA_TRANSFER__) \
0297 ( ((__MULTI_DMA_TRANSFER__) == LL_ADC_MULTI_REG_DMA_EACH_ADC) \
0298 || ((__MULTI_DMA_TRANSFER__) == LL_ADC_MULTI_REG_DMA_RES_32_10B) \
0299 || ((__MULTI_DMA_TRANSFER__) == LL_ADC_MULTI_REG_DMA_RES_8B) \
0300 )
0301 #define IS_LL_ADC_MULTI_TWOSMP_DELAY(__MULTI_TWOSMP_DELAY__) \
0302 ( ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_1CYCLE_5) \
0303 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_2CYCLES_5) \
0304 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_3CYCLES_5) \
0305 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_4CYCLES_5) \
0306 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_4CYCLES_5_8_BITS) \
0307 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES_5) \
0308 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES_5_10_BITS) \
0309 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES) \
0310 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES_5) \
0311 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES_5_12_BITS) \
0312 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES_5) \
0313 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES) \
0314 || ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES) \
0315 )
0316
0317 #define IS_LL_ADC_MULTI_MASTER_SLAVE(__MULTI_MASTER_SLAVE__) \
0318 ( ((__MULTI_MASTER_SLAVE__) == LL_ADC_MULTI_MASTER) \
0319 || ((__MULTI_MASTER_SLAVE__) == LL_ADC_MULTI_SLAVE) \
0320 || ((__MULTI_MASTER_SLAVE__) == LL_ADC_MULTI_MASTER_SLAVE) \
0321 )
0322
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351
0352
0353
0354
0355 ErrorStatus LL_ADC_CommonDeInit(ADC_Common_TypeDef *ADCxy_COMMON)
0356 {
0357
0358 assert_param(IS_ADC_COMMON_INSTANCE(ADCxy_COMMON));
0359
0360 if (ADCxy_COMMON == ADC12_COMMON)
0361 {
0362
0363 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_ADC12);
0364
0365
0366 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_ADC12);
0367 }
0368 else
0369 {
0370 #if defined (ADC3)
0371
0372 LL_AHB4_GRP1_ForceReset(LL_AHB4_GRP1_PERIPH_ADC3);
0373
0374
0375 LL_AHB4_GRP1_ReleaseReset(LL_AHB4_GRP1_PERIPH_ADC3);
0376 #endif
0377 }
0378
0379 return SUCCESS;
0380 }
0381
0382
0383
0384
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396
0397 ErrorStatus LL_ADC_CommonInit(ADC_Common_TypeDef *ADCxy_COMMON, LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct)
0398 {
0399 ErrorStatus status = SUCCESS;
0400
0401
0402 assert_param(IS_ADC_COMMON_INSTANCE(ADCxy_COMMON));
0403 assert_param(IS_LL_ADC_COMMON_CLOCK(ADC_CommonInitStruct->CommonClock));
0404
0405 assert_param(IS_LL_ADC_MULTI_MODE(ADC_CommonInitStruct->Multimode));
0406 if (ADC_CommonInitStruct->Multimode != LL_ADC_MULTI_INDEPENDENT)
0407 {
0408 assert_param(IS_LL_ADC_MULTI_DMA_TRANSFER(ADC_CommonInitStruct->MultiDMATransfer));
0409 assert_param(IS_LL_ADC_MULTI_TWOSMP_DELAY(ADC_CommonInitStruct->MultiTwoSamplingDelay));
0410 }
0411
0412
0413
0414
0415
0416
0417 if (__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(ADCxy_COMMON) == 0UL)
0418 {
0419
0420
0421
0422
0423
0424
0425
0426
0427
0428 if (ADC_CommonInitStruct->Multimode != LL_ADC_MULTI_INDEPENDENT)
0429 {
0430 MODIFY_REG(ADCxy_COMMON->CCR,
0431 ADC_CCR_CKMODE
0432 | ADC_CCR_PRESC
0433 | ADC_CCR_DUAL
0434 | ADC_CCR_DAMDF
0435 | ADC_CCR_DELAY
0436 ,
0437 ADC_CommonInitStruct->CommonClock
0438 | ADC_CommonInitStruct->Multimode
0439 | ADC_CommonInitStruct->MultiDMATransfer
0440 | ADC_CommonInitStruct->MultiTwoSamplingDelay
0441 );
0442 }
0443 else
0444 {
0445 MODIFY_REG(ADCxy_COMMON->CCR,
0446 ADC_CCR_CKMODE
0447 | ADC_CCR_PRESC
0448 | ADC_CCR_DUAL
0449 | ADC_CCR_DAMDF
0450 | ADC_CCR_DELAY
0451 ,
0452 ADC_CommonInitStruct->CommonClock
0453 | LL_ADC_MULTI_INDEPENDENT
0454 );
0455 }
0456 }
0457 else
0458 {
0459
0460
0461 status = ERROR;
0462 }
0463
0464 return status;
0465 }
0466
0467
0468
0469
0470
0471
0472
0473 void LL_ADC_CommonStructInit(LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct)
0474 {
0475
0476
0477
0478 ADC_CommonInitStruct->CommonClock = LL_ADC_CLOCK_SYNC_PCLK_DIV2;
0479
0480
0481 ADC_CommonInitStruct->Multimode = LL_ADC_MULTI_INDEPENDENT;
0482 ADC_CommonInitStruct->MultiDMATransfer = LL_ADC_MULTI_REG_DMA_EACH_ADC;
0483 ADC_CommonInitStruct->MultiTwoSamplingDelay = LL_ADC_MULTI_TWOSMP_DELAY_1CYCLE_5;
0484 }
0485
0486
0487
0488
0489
0490
0491
0492
0493
0494
0495
0496
0497
0498
0499
0500
0501
0502
0503
0504 ErrorStatus LL_ADC_DeInit(ADC_TypeDef *ADCx)
0505 {
0506 ErrorStatus status = SUCCESS;
0507
0508 __IO uint32_t timeout_cpu_cycles = 0UL;
0509
0510
0511 assert_param(IS_ADC_ALL_INSTANCE(ADCx));
0512
0513
0514 if (LL_ADC_IsEnabled(ADCx) == 1UL)
0515 {
0516
0517 if (LL_ADC_REG_IsConversionOngoing(ADCx) != 0UL)
0518 {
0519 if (LL_ADC_REG_IsStopConversionOngoing(ADCx) == 0UL)
0520 {
0521 LL_ADC_REG_StopConversion(ADCx);
0522 }
0523 }
0524
0525
0526 if (LL_ADC_INJ_IsConversionOngoing(ADCx) != 0UL)
0527 {
0528 if (LL_ADC_INJ_IsStopConversionOngoing(ADCx) == 0UL)
0529 {
0530 LL_ADC_INJ_StopConversion(ADCx);
0531 }
0532 }
0533
0534
0535 timeout_cpu_cycles = ADC_TIMEOUT_STOP_CONVERSION_CPU_CYCLES;
0536 while ((LL_ADC_REG_IsStopConversionOngoing(ADCx)
0537 | LL_ADC_INJ_IsStopConversionOngoing(ADCx)) == 1UL)
0538 {
0539 timeout_cpu_cycles--;
0540 if (timeout_cpu_cycles == 0UL)
0541 {
0542
0543 status = ERROR;
0544 break;
0545 }
0546 }
0547
0548
0549
0550
0551 LL_ADC_INJ_SetQueueMode(ADCx, LL_ADC_INJ_QUEUE_2CONTEXTS_END_EMPTY);
0552
0553
0554 LL_ADC_Disable(ADCx);
0555
0556
0557 timeout_cpu_cycles = ADC_TIMEOUT_DISABLE_CPU_CYCLES;
0558 while (LL_ADC_IsDisableOngoing(ADCx) == 1UL)
0559 {
0560 timeout_cpu_cycles--;
0561 if (timeout_cpu_cycles == 0UL)
0562 {
0563
0564 status = ERROR;
0565 break;
0566 }
0567 }
0568 }
0569
0570
0571 if (READ_BIT(ADCx->CR,
0572 (ADC_CR_JADSTP | ADC_CR_ADSTP | ADC_CR_JADSTART | ADC_CR_ADSTART
0573 | ADC_CR_ADDIS | ADC_CR_ADEN)
0574 )
0575 == 0UL)
0576 {
0577
0578
0579 CLEAR_BIT(ADCx->IER,
0580 (LL_ADC_IT_ADRDY
0581 | LL_ADC_IT_EOC
0582 | LL_ADC_IT_EOS
0583 | LL_ADC_IT_OVR
0584 | LL_ADC_IT_EOSMP
0585 | LL_ADC_IT_JEOC
0586 | LL_ADC_IT_JEOS
0587 | LL_ADC_IT_JQOVF
0588 | LL_ADC_IT_AWD1
0589 | LL_ADC_IT_AWD2
0590 | LL_ADC_IT_AWD3
0591 )
0592 );
0593
0594
0595 SET_BIT(ADCx->ISR,
0596 (LL_ADC_FLAG_ADRDY
0597 | LL_ADC_FLAG_EOC
0598 | LL_ADC_FLAG_EOS
0599 | LL_ADC_FLAG_OVR
0600 | LL_ADC_FLAG_EOSMP
0601 | LL_ADC_FLAG_JEOC
0602 | LL_ADC_FLAG_JEOS
0603 | LL_ADC_FLAG_JQOVF
0604 | LL_ADC_FLAG_AWD1
0605 | LL_ADC_FLAG_AWD2
0606 | LL_ADC_FLAG_AWD3
0607 )
0608 );
0609
0610
0611
0612
0613
0614
0615
0616
0617
0618
0619
0620 CLEAR_BIT(ADCx->CR, ADC_CR_ADVREGEN | ADC_CR_ADCALDIF);
0621 SET_BIT(ADCx->CR, ADC_CR_DEEPPWD);
0622
0623
0624 CLEAR_BIT(ADCx->CFGR,
0625 (ADC_CFGR_AWD1CH | ADC_CFGR_JAUTO | ADC_CFGR_JAWD1EN
0626 | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL | ADC_CFGR_JQM
0627 | ADC_CFGR_JDISCEN | ADC_CFGR_DISCNUM | ADC_CFGR_DISCEN
0628 | ADC_CFGR_AUTDLY | ADC_CFGR_CONT | ADC_CFGR_OVRMOD
0629 | ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL | ADC_CFGR_RES
0630 | ADC_CFGR_DMNGT)
0631 );
0632
0633 SET_BIT(ADCx->CFGR, ADC_CFGR_JQDIS);
0634
0635
0636 CLEAR_BIT(ADCx->CFGR2,
0637 (ADC_CFGR2_LSHIFT | ADC_CFGR2_OVSR | ADC_CFGR2_RSHIFT1
0638 | ADC_CFGR2_RSHIFT4 | ADC_CFGR2_RSHIFT3 | ADC_CFGR2_RSHIFT2
0639 | ADC_CFGR2_RSHIFT1 | ADC_CFGR2_ROVSM | ADC_CFGR2_TROVS
0640 | ADC_CFGR2_OVSS | ADC_CFGR2_JOVSE | ADC_CFGR2_ROVSE)
0641 );
0642
0643
0644 CLEAR_BIT(ADCx->SMPR1,
0645 (ADC_SMPR1_SMP9 | ADC_SMPR1_SMP8 | ADC_SMPR1_SMP7
0646 | ADC_SMPR1_SMP6 | ADC_SMPR1_SMP5 | ADC_SMPR1_SMP4
0647 | ADC_SMPR1_SMP3 | ADC_SMPR1_SMP2 | ADC_SMPR1_SMP1)
0648 );
0649
0650
0651 CLEAR_BIT(ADCx->SMPR2,
0652 (ADC_SMPR2_SMP19 | ADC_SMPR2_SMP18 | ADC_SMPR2_SMP17
0653 | ADC_SMPR2_SMP16 | ADC_SMPR2_SMP15 | ADC_SMPR2_SMP14
0654 | ADC_SMPR2_SMP13 | ADC_SMPR2_SMP12 | ADC_SMPR2_SMP11
0655 | ADC_SMPR2_SMP10)
0656 );
0657
0658
0659 #if defined(ADC_VER_V5_V90)
0660 if (ADCx == ADC3)
0661 {
0662
0663 MODIFY_REG(ADCx->LTR1_TR1, ADC3_TR1_AWDFILT | ADC3_TR1_HT1 | ADC3_TR1_LT1, ADC3_TR1_HT1);
0664
0665
0666 MODIFY_REG(ADCx->HTR1_TR2, ADC3_TR2_HT2 | ADC3_TR2_LT2, ADC3_TR2_HT2);
0667
0668
0669 MODIFY_REG(ADCx->RES1_TR3, ADC3_TR3_HT3 | ADC3_TR3_LT3, ADC3_TR3_HT3);
0670 }
0671 else
0672 {
0673 CLEAR_BIT(ADCx->LTR1_TR1, ADC_LTR_LT);
0674 SET_BIT(ADCx->HTR1_TR2, ADC_HTR_HT);
0675
0676 CLEAR_BIT(ADCx->LTR2_DIFSEL, ADC_LTR_LT);
0677 SET_BIT(ADCx->HTR2_CALFACT, ADC_HTR_HT);
0678 CLEAR_BIT(ADCx->LTR3_RES10, ADC_LTR_LT);
0679 SET_BIT(ADCx->HTR3_RES11, ADC_HTR_HT);
0680 }
0681 #else
0682 CLEAR_BIT(ADCx->LTR1, ADC_LTR_LT);
0683 SET_BIT(ADCx->HTR1, ADC_HTR_HT);
0684
0685 CLEAR_BIT(ADCx->LTR2, ADC_LTR_LT);
0686 SET_BIT(ADCx->HTR2, ADC_HTR_HT);
0687 CLEAR_BIT(ADCx->LTR3, ADC_LTR_LT);
0688 SET_BIT(ADCx->HTR3, ADC_HTR_HT);
0689 #endif
0690
0691
0692 CLEAR_BIT(ADCx->SQR1,
0693 (ADC_SQR1_SQ4 | ADC_SQR1_SQ3 | ADC_SQR1_SQ2
0694 | ADC_SQR1_SQ1 | ADC_SQR1_L)
0695 );
0696
0697
0698 CLEAR_BIT(ADCx->SQR2,
0699 (ADC_SQR2_SQ9 | ADC_SQR2_SQ8 | ADC_SQR2_SQ7
0700 | ADC_SQR2_SQ6 | ADC_SQR2_SQ5)
0701 );
0702
0703
0704 CLEAR_BIT(ADCx->SQR3,
0705 (ADC_SQR3_SQ14 | ADC_SQR3_SQ13 | ADC_SQR3_SQ12
0706 | ADC_SQR3_SQ11 | ADC_SQR3_SQ10)
0707 );
0708
0709
0710 CLEAR_BIT(ADCx->SQR4, ADC_SQR4_SQ16 | ADC_SQR4_SQ15);
0711
0712
0713 CLEAR_BIT(ADCx->JSQR,
0714 (ADC_JSQR_JL
0715 | ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN
0716 | ADC_JSQR_JSQ4 | ADC_JSQR_JSQ3
0717 | ADC_JSQR_JSQ2 | ADC_JSQR_JSQ1)
0718 );
0719
0720
0721
0722
0723
0724 CLEAR_BIT(ADCx->OFR1, ADC_OFR1_OFFSET1 | ADC_OFR1_OFFSET1_CH | ADC_OFR1_SSATE);
0725
0726 CLEAR_BIT(ADCx->OFR2, ADC_OFR2_OFFSET2 | ADC_OFR2_OFFSET2_CH | ADC_OFR2_SSATE);
0727
0728 CLEAR_BIT(ADCx->OFR3, ADC_OFR3_OFFSET3 | ADC_OFR3_OFFSET3_CH | ADC_OFR3_SSATE);
0729
0730 CLEAR_BIT(ADCx->OFR4, ADC_OFR4_OFFSET4 | ADC_OFR4_OFFSET4_CH | ADC_OFR4_SSATE);
0731
0732
0733
0734
0735
0736 CLEAR_BIT(ADCx->AWD2CR, ADC_AWD2CR_AWD2CH);
0737
0738
0739 CLEAR_BIT(ADCx->AWD3CR, ADC_AWD3CR_AWD3CH);
0740
0741
0742 #if defined(ADC_VER_V5_V90)
0743 if (ADCx == ADC3)
0744 {
0745 CLEAR_BIT(ADCx->LTR2_DIFSEL, ADC_DIFSEL_DIFSEL);
0746
0747
0748 CLEAR_BIT(ADCx->HTR2_CALFACT, ADC_CALFACT_CALFACT_D | ADC_CALFACT_CALFACT_S);
0749 }
0750 else
0751 {
0752 CLEAR_BIT(ADCx->DIFSEL_RES12, ADC_DIFSEL_DIFSEL);
0753
0754
0755 CLEAR_BIT(ADCx->CALFACT_RES13, ADC_CALFACT_CALFACT_D | ADC_CALFACT_CALFACT_S);
0756
0757
0758 CLEAR_BIT(ADCx->CALFACT2_RES14, ADC_CALFACT2_LINCALFACT);
0759 }
0760 #else
0761 CLEAR_BIT(ADCx->DIFSEL, ADC_DIFSEL_DIFSEL);
0762
0763
0764 CLEAR_BIT(ADCx->CALFACT, ADC_CALFACT_CALFACT_D | ADC_CALFACT_CALFACT_S);
0765
0766
0767 CLEAR_BIT(ADCx->CALFACT2, ADC_CALFACT2_LINCALFACT);
0768 #endif
0769 }
0770 else
0771 {
0772
0773
0774
0775
0776
0777
0778
0779
0780
0781 status = ERROR;
0782 }
0783
0784 return status;
0785 }
0786
0787
0788
0789
0790
0791
0792
0793
0794
0795
0796
0797
0798
0799
0800
0801
0802
0803
0804
0805
0806
0807
0808
0809
0810
0811
0812
0813
0814
0815
0816
0817
0818
0819
0820 ErrorStatus LL_ADC_Init(ADC_TypeDef *ADCx, LL_ADC_InitTypeDef *ADC_InitStruct)
0821 {
0822 ErrorStatus status = SUCCESS;
0823
0824
0825 assert_param(IS_ADC_ALL_INSTANCE(ADCx));
0826
0827 assert_param(IS_LL_ADC_RESOLUTION(ADC_InitStruct->Resolution));
0828 assert_param(IS_LL_ADC_LEFT_BIT_SHIFT(ADC_InitStruct->LeftBitShift));
0829 assert_param(IS_LL_ADC_LOW_POWER(ADC_InitStruct->LowPowerMode));
0830
0831
0832
0833 if (LL_ADC_IsEnabled(ADCx) == 0UL)
0834 {
0835
0836
0837
0838
0839
0840 #if defined(ADC_VER_V5_V90)
0841 if(ADCx==ADC3)
0842 {
0843 MODIFY_REG(ADCx->CFGR,
0844 ADC3_CFGR_RES
0845 | ADC_CFGR_AUTDLY
0846 ,
0847 ((__LL_ADC12_RESOLUTION_TO_ADC3(ADC_InitStruct->Resolution) & (ADC_CFGR_RES_1 | ADC_CFGR_RES_0)) << 1UL)
0848 | ADC_InitStruct->LowPowerMode
0849 );
0850 }
0851 else
0852 {
0853 MODIFY_REG(ADCx->CFGR,
0854 ADC_CFGR_RES
0855 | ADC_CFGR_AUTDLY
0856 ,
0857 ADC_InitStruct->Resolution
0858 | ADC_InitStruct->LowPowerMode
0859 );
0860 }
0861 #else
0862 MODIFY_REG(ADCx->CFGR,
0863 ADC_CFGR_RES
0864 | ADC_CFGR_AUTDLY
0865 ,
0866 ADC_InitStruct->Resolution
0867 | ADC_InitStruct->LowPowerMode
0868 );
0869 #endif
0870
0871 MODIFY_REG(ADCx->CFGR2, ADC_CFGR2_LSHIFT, ADC_InitStruct->LeftBitShift);
0872 }
0873 else
0874 {
0875
0876 status = ERROR;
0877 }
0878 return status;
0879 }
0880
0881
0882
0883
0884
0885
0886
0887 void LL_ADC_StructInit(LL_ADC_InitTypeDef *ADC_InitStruct)
0888 {
0889
0890
0891 ADC_InitStruct->Resolution = LL_ADC_RESOLUTION_16B;
0892 ADC_InitStruct->LeftBitShift = LL_ADC_LEFT_BIT_SHIFT_NONE;
0893 ADC_InitStruct->LowPowerMode = LL_ADC_LP_MODE_NONE;
0894
0895 }
0896
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907
0908
0909
0910
0911
0912
0913
0914
0915
0916
0917
0918
0919
0920
0921
0922
0923
0924
0925
0926
0927
0928
0929 ErrorStatus LL_ADC_REG_Init(ADC_TypeDef *ADCx, LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct)
0930 {
0931 ErrorStatus status = SUCCESS;
0932
0933
0934 assert_param(IS_ADC_ALL_INSTANCE(ADCx));
0935 assert_param(IS_LL_ADC_REG_TRIG_SOURCE(ADC_REG_InitStruct->TriggerSource));
0936 assert_param(IS_LL_ADC_REG_SEQ_SCAN_LENGTH(ADC_REG_InitStruct->SequencerLength));
0937 if (ADC_REG_InitStruct->SequencerLength != LL_ADC_REG_SEQ_SCAN_DISABLE)
0938 {
0939 assert_param(IS_LL_ADC_REG_SEQ_SCAN_DISCONT_MODE(ADC_REG_InitStruct->SequencerDiscont));
0940
0941
0942
0943 assert_param((ADC_REG_InitStruct->ContinuousMode == LL_ADC_REG_CONV_SINGLE)
0944 || (ADC_REG_InitStruct->SequencerDiscont == LL_ADC_REG_SEQ_DISCONT_DISABLE));
0945 }
0946 assert_param(IS_LL_ADC_REG_CONTINUOUS_MODE(ADC_REG_InitStruct->ContinuousMode));
0947 assert_param(IS_LL_ADC_REG_DATA_TRANSFER_MODE(ADC_REG_InitStruct->DataTransferMode));
0948 assert_param(IS_LL_ADC_REG_OVR_DATA_BEHAVIOR(ADC_REG_InitStruct->Overrun));
0949
0950
0951
0952 if (LL_ADC_IsEnabled(ADCx) == 0UL)
0953 {
0954
0955
0956
0957
0958
0959
0960
0961
0962
0963
0964
0965 if (ADC_REG_InitStruct->SequencerLength != LL_ADC_REG_SEQ_SCAN_DISABLE)
0966 {
0967 MODIFY_REG(ADCx->CFGR,
0968 ADC_CFGR_EXTSEL
0969 | ADC_CFGR_EXTEN
0970 | ADC_CFGR_DISCEN
0971 | ADC_CFGR_DISCNUM
0972 | ADC_CFGR_CONT
0973 | ADC_CFGR_DMNGT
0974 | ADC_CFGR_OVRMOD
0975 ,
0976 ADC_REG_InitStruct->TriggerSource
0977 | ADC_REG_InitStruct->SequencerDiscont
0978 | ADC_REG_InitStruct->ContinuousMode
0979 | ADC_REG_InitStruct->DataTransferMode
0980 | ADC_REG_InitStruct->Overrun
0981 );
0982 }
0983 else
0984 {
0985 MODIFY_REG(ADCx->CFGR,
0986 ADC_CFGR_EXTSEL
0987 | ADC_CFGR_EXTEN
0988 | ADC_CFGR_DISCEN
0989 | ADC_CFGR_DISCNUM
0990 | ADC_CFGR_CONT
0991 | ADC_CFGR_DMNGT
0992 | ADC_CFGR_OVRMOD
0993 ,
0994 ADC_REG_InitStruct->TriggerSource
0995 | LL_ADC_REG_SEQ_DISCONT_DISABLE
0996 | ADC_REG_InitStruct->ContinuousMode
0997 | ADC_REG_InitStruct->DataTransferMode
0998 | ADC_REG_InitStruct->Overrun
0999 );
1000 }
1001
1002
1003 LL_ADC_REG_SetSequencerLength(ADCx, ADC_REG_InitStruct->SequencerLength);
1004 }
1005 else
1006 {
1007
1008 status = ERROR;
1009 }
1010 return status;
1011 }
1012
1013
1014
1015
1016
1017
1018
1019 void LL_ADC_REG_StructInit(LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct)
1020 {
1021
1022
1023
1024
1025 ADC_REG_InitStruct->TriggerSource = LL_ADC_REG_TRIG_SOFTWARE;
1026 ADC_REG_InitStruct->SequencerLength = LL_ADC_REG_SEQ_SCAN_DISABLE;
1027 ADC_REG_InitStruct->SequencerDiscont = LL_ADC_REG_SEQ_DISCONT_DISABLE;
1028 ADC_REG_InitStruct->ContinuousMode = LL_ADC_REG_CONV_SINGLE;
1029 ADC_REG_InitStruct->DataTransferMode = LL_ADC_REG_DR_TRANSFER;
1030 ADC_REG_InitStruct->Overrun = LL_ADC_REG_OVR_DATA_OVERWRITTEN;
1031 }
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065 ErrorStatus LL_ADC_INJ_Init(ADC_TypeDef *ADCx, LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct)
1066 {
1067 ErrorStatus status = SUCCESS;
1068
1069
1070 assert_param(IS_ADC_ALL_INSTANCE(ADCx));
1071 assert_param(IS_LL_ADC_INJ_TRIG_SOURCE(ADC_INJ_InitStruct->TriggerSource));
1072 assert_param(IS_LL_ADC_INJ_SEQ_SCAN_LENGTH(ADC_INJ_InitStruct->SequencerLength));
1073 if (ADC_INJ_InitStruct->SequencerLength != LL_ADC_INJ_SEQ_SCAN_DISABLE)
1074 {
1075 assert_param(IS_LL_ADC_INJ_SEQ_SCAN_DISCONT_MODE(ADC_INJ_InitStruct->SequencerDiscont));
1076 }
1077 assert_param(IS_LL_ADC_INJ_TRIG_AUTO(ADC_INJ_InitStruct->TrigAuto));
1078
1079
1080
1081 if (LL_ADC_IsEnabled(ADCx) == 0UL)
1082 {
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092 if (ADC_INJ_InitStruct->SequencerLength != LL_ADC_REG_SEQ_SCAN_DISABLE)
1093 {
1094 MODIFY_REG(ADCx->CFGR,
1095 ADC_CFGR_JDISCEN
1096 | ADC_CFGR_JAUTO
1097 ,
1098 ADC_INJ_InitStruct->SequencerDiscont
1099 | ADC_INJ_InitStruct->TrigAuto
1100 );
1101 }
1102 else
1103 {
1104 MODIFY_REG(ADCx->CFGR,
1105 ADC_CFGR_JDISCEN
1106 | ADC_CFGR_JAUTO
1107 ,
1108 LL_ADC_REG_SEQ_DISCONT_DISABLE
1109 | ADC_INJ_InitStruct->TrigAuto
1110 );
1111 }
1112
1113 MODIFY_REG(ADCx->JSQR,
1114 ADC_JSQR_JEXTSEL
1115 | ADC_JSQR_JEXTEN
1116 | ADC_JSQR_JL
1117 ,
1118 ADC_INJ_InitStruct->TriggerSource
1119 | ADC_INJ_InitStruct->SequencerLength
1120 );
1121 }
1122 else
1123 {
1124
1125 status = ERROR;
1126 }
1127 return status;
1128 }
1129
1130
1131
1132
1133
1134
1135
1136 void LL_ADC_INJ_StructInit(LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct)
1137 {
1138
1139
1140 ADC_INJ_InitStruct->TriggerSource = LL_ADC_INJ_TRIG_SOFTWARE;
1141 ADC_INJ_InitStruct->SequencerLength = LL_ADC_INJ_SEQ_SCAN_DISABLE;
1142 ADC_INJ_InitStruct->SequencerDiscont = LL_ADC_INJ_SEQ_DISCONT_DISABLE;
1143 ADC_INJ_InitStruct->TrigAuto = LL_ADC_INJ_TRIG_INDEPENDENT;
1144 }
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158 #endif
1159
1160
1161
1162
1163
1164 #endif
1165