STM32H735xx HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32h7xx_ll_rcc.h 00004 * @author MCD Application Team 00005 * @version $VERSION$ 00006 * @date $DATE$ 00007 * @brief Header file of RCC LL module. 00008 ****************************************************************************** 00009 * @attention 00010 * 00011 * Copyright (c) 2017 STMicroelectronics. 00012 * All rights reserved. 00013 * 00014 * This software is licensed under terms that can be found in the LICENSE file in 00015 * the root directory of this software component. 00016 * If no LICENSE file comes with this software, it is provided AS-IS. 00017 ****************************************************************************** 00018 */ 00019 00020 /* Define to prevent recursive inclusion -------------------------------------*/ 00021 #ifndef STM32H7xx_LL_RCC_H 00022 #define STM32H7xx_LL_RCC_H 00023 00024 #ifdef __cplusplus 00025 extern "C" { 00026 #endif 00027 00028 /* Includes ------------------------------------------------------------------*/ 00029 #include "stm32h7xx.h" 00030 #include <math.h> 00031 00032 /** @addtogroup STM32H7xx_LL_Driver 00033 * @{ 00034 */ 00035 00036 #if defined(RCC) 00037 00038 /** @defgroup RCC_LL RCC 00039 * @{ 00040 */ 00041 00042 /* Private types -------------------------------------------------------------*/ 00043 /* Private variables ---------------------------------------------------------*/ 00044 /** @defgroup RCC_LL_Private_Variables RCC Private Variables 00045 * @{ 00046 */ 00047 extern const uint8_t LL_RCC_PrescTable[16]; 00048 00049 /** 00050 * @} 00051 */ 00052 /* Private constants ---------------------------------------------------------*/ 00053 /* Private macros ------------------------------------------------------------*/ 00054 #if !defined(UNUSED) 00055 #define UNUSED(x) ((void)(x)) 00056 #endif 00057 00058 /* 32 24 16 8 0 00059 -------------------------------------------------------- 00060 | Mask | ClkSource | Bit | Register | 00061 | | Config | Position | Offset | 00062 --------------------------------------------------------*/ 00063 00064 #if defined(RCC_VER_2_0) 00065 /* Clock source register offset Vs CDCCIPR register */ 00066 #define CDCCIP 0x0UL 00067 #define CDCCIP1 0x4UL 00068 #define CDCCIP2 0x8UL 00069 #define SRDCCIP 0xCUL 00070 #else 00071 /* Clock source register offset Vs D1CCIPR register */ 00072 #define D1CCIP 0x0UL 00073 #define D2CCIP1 0x4UL 00074 #define D2CCIP2 0x8UL 00075 #define D3CCIP 0xCUL 00076 #endif /* RCC_VER_2_0 */ 00077 00078 #define LL_RCC_REG_SHIFT 0U 00079 #define LL_RCC_POS_SHIFT 8U 00080 #define LL_RCC_CONFIG_SHIFT 16U 00081 #define LL_RCC_MASK_SHIFT 24U 00082 00083 #define LL_CLKSOURCE_SHIFT(__CLKSOURCE__) (((__CLKSOURCE__) >> LL_RCC_POS_SHIFT ) & 0x1FUL) 00084 00085 #define LL_CLKSOURCE_MASK(__CLKSOURCE__) ((((__CLKSOURCE__) >> LL_RCC_MASK_SHIFT ) & 0xFFUL) << LL_CLKSOURCE_SHIFT(__CLKSOURCE__)) 00086 00087 #define LL_CLKSOURCE_CONFIG(__CLKSOURCE__) ((((__CLKSOURCE__) >> LL_RCC_CONFIG_SHIFT) & 0xFFUL) << LL_CLKSOURCE_SHIFT(__CLKSOURCE__)) 00088 00089 #define LL_CLKSOURCE_REG(__CLKSOURCE__) (((__CLKSOURCE__) >> LL_RCC_REG_SHIFT ) & 0xFFUL) 00090 00091 #define LL_CLKSOURCE(__REG__, __MSK__, __POS__, __CLK__) ((uint32_t)((((__MSK__) >> (__POS__)) << LL_RCC_MASK_SHIFT) | \ 00092 (( __POS__ ) << LL_RCC_POS_SHIFT) | \ 00093 (( __REG__ ) << LL_RCC_REG_SHIFT) | \ 00094 (((__CLK__) >> (__POS__)) << LL_RCC_CONFIG_SHIFT))) 00095 00096 #if defined(USE_FULL_LL_DRIVER) 00097 /** @defgroup RCC_LL_Private_Macros RCC Private Macros 00098 * @{ 00099 */ 00100 /** 00101 * @} 00102 */ 00103 #endif /*USE_FULL_LL_DRIVER*/ 00104 /* Exported types ------------------------------------------------------------*/ 00105 #if defined(USE_FULL_LL_DRIVER) 00106 /** @defgroup RCC_LL_Exported_Types RCC Exported Types 00107 * @{ 00108 */ 00109 00110 /** @defgroup LL_ES_CLOCK_FREQ Clocks Frequency Structure 00111 * @{ 00112 */ 00113 00114 /** 00115 * @brief RCC Clocks Frequency Structure 00116 */ 00117 typedef struct 00118 { 00119 uint32_t SYSCLK_Frequency; 00120 uint32_t CPUCLK_Frequency; 00121 uint32_t HCLK_Frequency; 00122 uint32_t PCLK1_Frequency; 00123 uint32_t PCLK2_Frequency; 00124 uint32_t PCLK3_Frequency; 00125 uint32_t PCLK4_Frequency; 00126 } LL_RCC_ClocksTypeDef; 00127 00128 /** 00129 * @} 00130 */ 00131 00132 /** 00133 * @brief PLL Clocks Frequency Structure 00134 */ 00135 typedef struct 00136 { 00137 uint32_t PLL_P_Frequency; 00138 uint32_t PLL_Q_Frequency; 00139 uint32_t PLL_R_Frequency; 00140 } LL_PLL_ClocksTypeDef; 00141 00142 /** 00143 * @} 00144 */ 00145 00146 #endif /* USE_FULL_LL_DRIVER */ 00147 00148 /* Exported constants --------------------------------------------------------*/ 00149 /** @defgroup RCC_LL_Exported_Constants RCC Exported Constants 00150 * @{ 00151 */ 00152 00153 /** @defgroup RCC_LL_EC_OSC_VALUES Oscillator Values adaptation 00154 * @brief Defines used to adapt values of different oscillators 00155 * @note These values could be modified in the user environment according to 00156 * HW set-up. 00157 * @{ 00158 */ 00159 #if !defined (HSE_VALUE) 00160 #if defined(RCC_VER_X) || defined(RCC_VER_3_0) 00161 #define HSE_VALUE 25000000U /*!< Value of the HSE oscillator in Hz */ 00162 #else 00163 #define HSE_VALUE 24000000U /*!< Value of the HSE oscillator in Hz */ 00164 #endif /* RCC_VER_X || RCC_VER_3_0 */ 00165 #endif /* HSE_VALUE */ 00166 00167 #if !defined (HSI_VALUE) 00168 #define HSI_VALUE 64000000U /*!< Value of the HSI oscillator in Hz */ 00169 #endif /* HSI_VALUE */ 00170 00171 #if !defined (CSI_VALUE) 00172 #define CSI_VALUE 4000000U /*!< Value of the CSI oscillator in Hz */ 00173 #endif /* CSI_VALUE */ 00174 00175 #if !defined (LSE_VALUE) 00176 #define LSE_VALUE 32768U /*!< Value of the LSE oscillator in Hz */ 00177 #endif /* LSE_VALUE */ 00178 00179 #if !defined (LSI_VALUE) 00180 #define LSI_VALUE 32000U /*!< Value of the LSI oscillator in Hz */ 00181 #endif /* LSI_VALUE */ 00182 00183 #if !defined (EXTERNAL_CLOCK_VALUE) 00184 #define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the I2S_CKIN external oscillator in Hz */ 00185 #endif /* EXTERNAL_CLOCK_VALUE */ 00186 00187 #if !defined (HSI48_VALUE) 00188 #define HSI48_VALUE 48000000U /*!< Value of the HSI48 oscillator in Hz */ 00189 #endif /* HSI48_VALUE */ 00190 00191 /** 00192 * @} 00193 */ 00194 00195 /** @defgroup RCC_LL_EC_HSIDIV HSI oscillator divider 00196 * @{ 00197 */ 00198 #define LL_RCC_HSI_DIV1 RCC_CR_HSIDIV_1 00199 #define LL_RCC_HSI_DIV2 RCC_CR_HSIDIV_2 00200 #define LL_RCC_HSI_DIV4 RCC_CR_HSIDIV_4 00201 #define LL_RCC_HSI_DIV8 RCC_CR_HSIDIV_8 00202 /** 00203 * @} 00204 */ 00205 00206 /** @defgroup RCC_LL_EC_LSEDRIVE LSE oscillator drive capability 00207 * @{ 00208 */ 00209 #define LL_RCC_LSEDRIVE_LOW (uint32_t)(0x00000000U) 00210 #define LL_RCC_LSEDRIVE_MEDIUMLOW (uint32_t)(RCC_BDCR_LSEDRV_0) 00211 #define LL_RCC_LSEDRIVE_MEDIUMHIGH (uint32_t)(RCC_BDCR_LSEDRV_1) 00212 #define LL_RCC_LSEDRIVE_HIGH (uint32_t)(RCC_BDCR_LSEDRV) 00213 /** 00214 * @} 00215 */ 00216 00217 /** @defgroup RCC_LL_EC_SYS_CLKSOURCE System clock switch 00218 * @{ 00219 */ 00220 #define LL_RCC_SYS_CLKSOURCE_HSI RCC_CFGR_SW_HSI 00221 #define LL_RCC_SYS_CLKSOURCE_CSI RCC_CFGR_SW_CSI 00222 #define LL_RCC_SYS_CLKSOURCE_HSE RCC_CFGR_SW_HSE 00223 #define LL_RCC_SYS_CLKSOURCE_PLL1 RCC_CFGR_SW_PLL1 00224 /** 00225 * @} 00226 */ 00227 00228 /** @defgroup RCC_LL_EC_SYS_CLKSOURCE_STATUS System clock switch status 00229 * @{ 00230 */ 00231 #define LL_RCC_SYS_CLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */ 00232 #define LL_RCC_SYS_CLKSOURCE_STATUS_CSI RCC_CFGR_SWS_CSI /*!< CSI used as system clock */ 00233 #define LL_RCC_SYS_CLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */ 00234 #define LL_RCC_SYS_CLKSOURCE_STATUS_PLL1 RCC_CFGR_SWS_PLL1 /*!< PLL1 used as system clock */ 00235 /** 00236 * @} 00237 */ 00238 00239 /** @defgroup RCC_LL_EC_SYSWAKEUP_CLKSOURCE System wakeup clock source 00240 * @{ 00241 */ 00242 #define LL_RCC_SYSWAKEUP_CLKSOURCE_HSI (uint32_t)(0x00000000U) 00243 #define LL_RCC_SYSWAKEUP_CLKSOURCE_CSI (uint32_t)(RCC_CFGR_STOPWUCK) 00244 /** 00245 * @} 00246 */ 00247 00248 /** @defgroup RCC_LL_EC_KERWAKEUP_CLKSOURCE Kernel wakeup clock source 00249 * @{ 00250 */ 00251 #define LL_RCC_KERWAKEUP_CLKSOURCE_HSI (uint32_t)(0x00000000U) 00252 #define LL_RCC_KERWAKEUP_CLKSOURCE_CSI (uint32_t)(RCC_CFGR_STOPKERWUCK) 00253 /** 00254 * @} 00255 */ 00256 00257 /** @defgroup RCC_LL_EC_SYSCLK_DIV System prescaler 00258 * @{ 00259 */ 00260 #if defined(RCC_D1CFGR_D1CPRE_DIV1) 00261 #define LL_RCC_SYSCLK_DIV_1 RCC_D1CFGR_D1CPRE_DIV1 00262 #define LL_RCC_SYSCLK_DIV_2 RCC_D1CFGR_D1CPRE_DIV2 00263 #define LL_RCC_SYSCLK_DIV_4 RCC_D1CFGR_D1CPRE_DIV4 00264 #define LL_RCC_SYSCLK_DIV_8 RCC_D1CFGR_D1CPRE_DIV8 00265 #define LL_RCC_SYSCLK_DIV_16 RCC_D1CFGR_D1CPRE_DIV16 00266 #define LL_RCC_SYSCLK_DIV_64 RCC_D1CFGR_D1CPRE_DIV64 00267 #define LL_RCC_SYSCLK_DIV_128 RCC_D1CFGR_D1CPRE_DIV128 00268 #define LL_RCC_SYSCLK_DIV_256 RCC_D1CFGR_D1CPRE_DIV256 00269 #define LL_RCC_SYSCLK_DIV_512 RCC_D1CFGR_D1CPRE_DIV512 00270 #else 00271 #define LL_RCC_SYSCLK_DIV_1 RCC_CDCFGR1_CDCPRE_DIV1 00272 #define LL_RCC_SYSCLK_DIV_2 RCC_CDCFGR1_CDCPRE_DIV2 00273 #define LL_RCC_SYSCLK_DIV_4 RCC_CDCFGR1_CDCPRE_DIV4 00274 #define LL_RCC_SYSCLK_DIV_8 RCC_CDCFGR1_CDCPRE_DIV8 00275 #define LL_RCC_SYSCLK_DIV_16 RCC_CDCFGR1_CDCPRE_DIV16 00276 #define LL_RCC_SYSCLK_DIV_64 RCC_CDCFGR1_CDCPRE_DIV64 00277 #define LL_RCC_SYSCLK_DIV_128 RCC_CDCFGR1_CDCPRE_DIV128 00278 #define LL_RCC_SYSCLK_DIV_256 RCC_CDCFGR1_CDCPRE_DIV256 00279 #define LL_RCC_SYSCLK_DIV_512 RCC_CDCFGR1_CDCPRE_DIV512 00280 #endif /* RCC_D1CFGR_D1CPRE_DIV1 */ 00281 /** 00282 * @} 00283 */ 00284 00285 /** @defgroup RCC_LL_EC_AHB_DIV AHB prescaler 00286 * @{ 00287 */ 00288 #if defined(RCC_D1CFGR_HPRE_DIV1) 00289 #define LL_RCC_AHB_DIV_1 RCC_D1CFGR_HPRE_DIV1 00290 #define LL_RCC_AHB_DIV_2 RCC_D1CFGR_HPRE_DIV2 00291 #define LL_RCC_AHB_DIV_4 RCC_D1CFGR_HPRE_DIV4 00292 #define LL_RCC_AHB_DIV_8 RCC_D1CFGR_HPRE_DIV8 00293 #define LL_RCC_AHB_DIV_16 RCC_D1CFGR_HPRE_DIV16 00294 #define LL_RCC_AHB_DIV_64 RCC_D1CFGR_HPRE_DIV64 00295 #define LL_RCC_AHB_DIV_128 RCC_D1CFGR_HPRE_DIV128 00296 #define LL_RCC_AHB_DIV_256 RCC_D1CFGR_HPRE_DIV256 00297 #define LL_RCC_AHB_DIV_512 RCC_D1CFGR_HPRE_DIV512 00298 #else 00299 #define LL_RCC_AHB_DIV_1 RCC_CDCFGR1_HPRE_DIV1 00300 #define LL_RCC_AHB_DIV_2 RCC_CDCFGR1_HPRE_DIV2 00301 #define LL_RCC_AHB_DIV_4 RCC_CDCFGR1_HPRE_DIV4 00302 #define LL_RCC_AHB_DIV_8 RCC_CDCFGR1_HPRE_DIV8 00303 #define LL_RCC_AHB_DIV_16 RCC_CDCFGR1_HPRE_DIV16 00304 #define LL_RCC_AHB_DIV_64 RCC_CDCFGR1_HPRE_DIV64 00305 #define LL_RCC_AHB_DIV_128 RCC_CDCFGR1_HPRE_DIV128 00306 #define LL_RCC_AHB_DIV_256 RCC_CDCFGR1_HPRE_DIV256 00307 #define LL_RCC_AHB_DIV_512 RCC_CDCFGR1_HPRE_DIV512 00308 #endif /* RCC_D1CFGR_HPRE_DIV1 */ 00309 /** 00310 * @} 00311 */ 00312 00313 /** @defgroup RCC_LL_EC_APB1_DIV APB low-speed prescaler (APB1) 00314 * @{ 00315 */ 00316 #if defined(RCC_D2CFGR_D2PPRE1_DIV1) 00317 #define LL_RCC_APB1_DIV_1 RCC_D2CFGR_D2PPRE1_DIV1 00318 #define LL_RCC_APB1_DIV_2 RCC_D2CFGR_D2PPRE1_DIV2 00319 #define LL_RCC_APB1_DIV_4 RCC_D2CFGR_D2PPRE1_DIV4 00320 #define LL_RCC_APB1_DIV_8 RCC_D2CFGR_D2PPRE1_DIV8 00321 #define LL_RCC_APB1_DIV_16 RCC_D2CFGR_D2PPRE1_DIV16 00322 #else 00323 #define LL_RCC_APB1_DIV_1 RCC_CDCFGR2_CDPPRE1_DIV1 00324 #define LL_RCC_APB1_DIV_2 RCC_CDCFGR2_CDPPRE1_DIV2 00325 #define LL_RCC_APB1_DIV_4 RCC_CDCFGR2_CDPPRE1_DIV4 00326 #define LL_RCC_APB1_DIV_8 RCC_CDCFGR2_CDPPRE1_DIV8 00327 #define LL_RCC_APB1_DIV_16 RCC_CDCFGR2_CDPPRE1_DIV16 00328 #endif /* RCC_D2CFGR_D2PPRE1_DIV1 */ 00329 /** 00330 * @} 00331 */ 00332 00333 /** @defgroup RCC_LL_EC_APB2_DIV APB low-speed prescaler (APB2) 00334 * @{ 00335 */ 00336 #if defined(RCC_D2CFGR_D2PPRE2_DIV1) 00337 #define LL_RCC_APB2_DIV_1 RCC_D2CFGR_D2PPRE2_DIV1 00338 #define LL_RCC_APB2_DIV_2 RCC_D2CFGR_D2PPRE2_DIV2 00339 #define LL_RCC_APB2_DIV_4 RCC_D2CFGR_D2PPRE2_DIV4 00340 #define LL_RCC_APB2_DIV_8 RCC_D2CFGR_D2PPRE2_DIV8 00341 #define LL_RCC_APB2_DIV_16 RCC_D2CFGR_D2PPRE2_DIV16 00342 #else 00343 #define LL_RCC_APB2_DIV_1 RCC_CDCFGR2_CDPPRE2_DIV1 00344 #define LL_RCC_APB2_DIV_2 RCC_CDCFGR2_CDPPRE2_DIV2 00345 #define LL_RCC_APB2_DIV_4 RCC_CDCFGR2_CDPPRE2_DIV4 00346 #define LL_RCC_APB2_DIV_8 RCC_CDCFGR2_CDPPRE2_DIV8 00347 #define LL_RCC_APB2_DIV_16 RCC_CDCFGR2_CDPPRE2_DIV16 00348 #endif /* RCC_D2CFGR_D2PPRE2_DIV1 */ 00349 /** 00350 * @} 00351 */ 00352 00353 /** @defgroup RCC_LL_EC_APB3_DIV APB low-speed prescaler (APB3) 00354 * @{ 00355 */ 00356 #if defined(RCC_D1CFGR_D1PPRE_DIV1) 00357 #define LL_RCC_APB3_DIV_1 RCC_D1CFGR_D1PPRE_DIV1 00358 #define LL_RCC_APB3_DIV_2 RCC_D1CFGR_D1PPRE_DIV2 00359 #define LL_RCC_APB3_DIV_4 RCC_D1CFGR_D1PPRE_DIV4 00360 #define LL_RCC_APB3_DIV_8 RCC_D1CFGR_D1PPRE_DIV8 00361 #define LL_RCC_APB3_DIV_16 RCC_D1CFGR_D1PPRE_DIV16 00362 #else 00363 #define LL_RCC_APB3_DIV_1 RCC_CDCFGR1_CDPPRE_DIV1 00364 #define LL_RCC_APB3_DIV_2 RCC_CDCFGR1_CDPPRE_DIV2 00365 #define LL_RCC_APB3_DIV_4 RCC_CDCFGR1_CDPPRE_DIV4 00366 #define LL_RCC_APB3_DIV_8 RCC_CDCFGR1_CDPPRE_DIV8 00367 #define LL_RCC_APB3_DIV_16 RCC_CDCFGR1_CDPPRE_DIV16 00368 #endif /* RCC_D1CFGR_D1PPRE_DIV1 */ 00369 /** 00370 * @} 00371 */ 00372 00373 /** @defgroup RCC_LL_EC_APB4_DIV APB low-speed prescaler (APB4) 00374 * @{ 00375 */ 00376 #if defined(RCC_D3CFGR_D3PPRE_DIV1) 00377 #define LL_RCC_APB4_DIV_1 RCC_D3CFGR_D3PPRE_DIV1 00378 #define LL_RCC_APB4_DIV_2 RCC_D3CFGR_D3PPRE_DIV2 00379 #define LL_RCC_APB4_DIV_4 RCC_D3CFGR_D3PPRE_DIV4 00380 #define LL_RCC_APB4_DIV_8 RCC_D3CFGR_D3PPRE_DIV8 00381 #define LL_RCC_APB4_DIV_16 RCC_D3CFGR_D3PPRE_DIV16 00382 #else 00383 #define LL_RCC_APB4_DIV_1 RCC_SRDCFGR_SRDPPRE_DIV1 00384 #define LL_RCC_APB4_DIV_2 RCC_SRDCFGR_SRDPPRE_DIV2 00385 #define LL_RCC_APB4_DIV_4 RCC_SRDCFGR_SRDPPRE_DIV4 00386 #define LL_RCC_APB4_DIV_8 RCC_SRDCFGR_SRDPPRE_DIV8 00387 #define LL_RCC_APB4_DIV_16 RCC_SRDCFGR_SRDPPRE_DIV16 00388 #endif /* RCC_D3CFGR_D3PPRE_DIV1 */ 00389 /** 00390 * @} 00391 */ 00392 00393 /** @defgroup RCC_LL_EC_MCOxSOURCE MCO source selection 00394 * @{ 00395 */ 00396 #define LL_RCC_MCO1SOURCE_HSI (uint32_t)((RCC_CFGR_MCO1>>16U) | 0x00000000U) 00397 #define LL_RCC_MCO1SOURCE_LSE (uint32_t)((RCC_CFGR_MCO1>>16U) | RCC_CFGR_MCO1_0) 00398 #define LL_RCC_MCO1SOURCE_HSE (uint32_t)((RCC_CFGR_MCO1>>16U) | RCC_CFGR_MCO1_1) 00399 #define LL_RCC_MCO1SOURCE_PLL1QCLK (uint32_t)((RCC_CFGR_MCO1>>16U) | RCC_CFGR_MCO1_1|RCC_CFGR_MCO1_0) 00400 #define LL_RCC_MCO1SOURCE_HSI48 (uint32_t)((RCC_CFGR_MCO1>>16U) | RCC_CFGR_MCO1_2) 00401 #define LL_RCC_MCO2SOURCE_SYSCLK (uint32_t)((RCC_CFGR_MCO2>>16U) | 0x00000000U) 00402 #define LL_RCC_MCO2SOURCE_PLL2PCLK (uint32_t)((RCC_CFGR_MCO2>>16U) | RCC_CFGR_MCO2_0) 00403 #define LL_RCC_MCO2SOURCE_HSE (uint32_t)((RCC_CFGR_MCO2>>16U) | RCC_CFGR_MCO2_1) 00404 #define LL_RCC_MCO2SOURCE_PLL1PCLK (uint32_t)((RCC_CFGR_MCO2>>16U) | RCC_CFGR_MCO2_1|RCC_CFGR_MCO2_0) 00405 #define LL_RCC_MCO2SOURCE_CSI (uint32_t)((RCC_CFGR_MCO2>>16U) | RCC_CFGR_MCO2_2) 00406 #define LL_RCC_MCO2SOURCE_LSI (uint32_t)((RCC_CFGR_MCO2>>16U) | RCC_CFGR_MCO2_2|RCC_CFGR_MCO2_0) 00407 /** 00408 * @} 00409 */ 00410 00411 /** @defgroup RCC_LL_EC_MCOx_DIV MCO prescaler 00412 * @{ 00413 */ 00414 #define LL_RCC_MCO1_DIV_1 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0) 00415 #define LL_RCC_MCO1_DIV_2 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_1) 00416 #define LL_RCC_MCO1_DIV_3 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_1) 00417 #define LL_RCC_MCO1_DIV_4 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_2) 00418 #define LL_RCC_MCO1_DIV_5 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_2) 00419 #define LL_RCC_MCO1_DIV_6 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2) 00420 #define LL_RCC_MCO1_DIV_7 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2) 00421 #define LL_RCC_MCO1_DIV_8 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_3) 00422 #define LL_RCC_MCO1_DIV_9 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_3) 00423 #define LL_RCC_MCO1_DIV_10 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_3) 00424 #define LL_RCC_MCO1_DIV_11 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_3) 00425 #define LL_RCC_MCO1_DIV_12 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_2 | RCC_CFGR_MCO1PRE_3) 00426 #define LL_RCC_MCO1_DIV_13 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_2 | RCC_CFGR_MCO1PRE_3) 00427 #define LL_RCC_MCO1_DIV_14 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2 | RCC_CFGR_MCO1PRE_3) 00428 #define LL_RCC_MCO1_DIV_15 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE) 00429 #define LL_RCC_MCO2_DIV_1 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0) 00430 #define LL_RCC_MCO2_DIV_2 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_1) 00431 #define LL_RCC_MCO2_DIV_3 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_1) 00432 #define LL_RCC_MCO2_DIV_4 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_2) 00433 #define LL_RCC_MCO2_DIV_5 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_2) 00434 #define LL_RCC_MCO2_DIV_6 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_2) 00435 #define LL_RCC_MCO2_DIV_7 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_2) 00436 #define LL_RCC_MCO2_DIV_8 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_3) 00437 #define LL_RCC_MCO2_DIV_9 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_3) 00438 #define LL_RCC_MCO2_DIV_10 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_3) 00439 #define LL_RCC_MCO2_DIV_11 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_3) 00440 #define LL_RCC_MCO2_DIV_12 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_3) 00441 #define LL_RCC_MCO2_DIV_13 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_3) 00442 #define LL_RCC_MCO2_DIV_14 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_3) 00443 #define LL_RCC_MCO2_DIV_15 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE) 00444 00445 /** 00446 * @} 00447 */ 00448 00449 /** @defgroup RCC_LL_EC_RTC_HSEDIV HSE prescaler for RTC clock 00450 * @{ 00451 */ 00452 #define LL_RCC_RTC_NOCLOCK (uint32_t)(0x00000000U) 00453 #define LL_RCC_RTC_HSE_DIV_2 (uint32_t)(RCC_CFGR_RTCPRE_1) 00454 #define LL_RCC_RTC_HSE_DIV_3 (uint32_t)(RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00455 #define LL_RCC_RTC_HSE_DIV_4 (uint32_t)(RCC_CFGR_RTCPRE_2) 00456 #define LL_RCC_RTC_HSE_DIV_5 (uint32_t)(RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) 00457 #define LL_RCC_RTC_HSE_DIV_6 (uint32_t)(RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) 00458 #define LL_RCC_RTC_HSE_DIV_7 (uint32_t)(RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00459 #define LL_RCC_RTC_HSE_DIV_8 (uint32_t)(RCC_CFGR_RTCPRE_3) 00460 #define LL_RCC_RTC_HSE_DIV_9 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0) 00461 #define LL_RCC_RTC_HSE_DIV_10 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1) 00462 #define LL_RCC_RTC_HSE_DIV_11 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00463 #define LL_RCC_RTC_HSE_DIV_12 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2) 00464 #define LL_RCC_RTC_HSE_DIV_13 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) 00465 #define LL_RCC_RTC_HSE_DIV_14 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) 00466 #define LL_RCC_RTC_HSE_DIV_15 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00467 #define LL_RCC_RTC_HSE_DIV_16 (uint32_t)(RCC_CFGR_RTCPRE_4) 00468 #define LL_RCC_RTC_HSE_DIV_17 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_0) 00469 #define LL_RCC_RTC_HSE_DIV_18 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1) 00470 #define LL_RCC_RTC_HSE_DIV_19 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00471 #define LL_RCC_RTC_HSE_DIV_20 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2) 00472 #define LL_RCC_RTC_HSE_DIV_21 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) 00473 #define LL_RCC_RTC_HSE_DIV_22 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) 00474 #define LL_RCC_RTC_HSE_DIV_23 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00475 #define LL_RCC_RTC_HSE_DIV_24 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3) 00476 #define LL_RCC_RTC_HSE_DIV_25 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0) 00477 #define LL_RCC_RTC_HSE_DIV_26 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1) 00478 #define LL_RCC_RTC_HSE_DIV_27 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00479 #define LL_RCC_RTC_HSE_DIV_28 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2) 00480 #define LL_RCC_RTC_HSE_DIV_29 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) 00481 #define LL_RCC_RTC_HSE_DIV_30 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) 00482 #define LL_RCC_RTC_HSE_DIV_31 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00483 #define LL_RCC_RTC_HSE_DIV_32 (uint32_t)(RCC_CFGR_RTCPRE_5) 00484 #define LL_RCC_RTC_HSE_DIV_33 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_0) 00485 #define LL_RCC_RTC_HSE_DIV_34 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_1) 00486 #define LL_RCC_RTC_HSE_DIV_35 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00487 #define LL_RCC_RTC_HSE_DIV_36 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_2) 00488 #define LL_RCC_RTC_HSE_DIV_37 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) 00489 #define LL_RCC_RTC_HSE_DIV_38 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) 00490 #define LL_RCC_RTC_HSE_DIV_39 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00491 #define LL_RCC_RTC_HSE_DIV_40 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3) 00492 #define LL_RCC_RTC_HSE_DIV_41 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0) 00493 #define LL_RCC_RTC_HSE_DIV_42 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1) 00494 #define LL_RCC_RTC_HSE_DIV_43 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00495 #define LL_RCC_RTC_HSE_DIV_44 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2) 00496 #define LL_RCC_RTC_HSE_DIV_45 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) 00497 #define LL_RCC_RTC_HSE_DIV_46 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) 00498 #define LL_RCC_RTC_HSE_DIV_47 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00499 #define LL_RCC_RTC_HSE_DIV_48 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4) 00500 #define LL_RCC_RTC_HSE_DIV_49 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_0) 00501 #define LL_RCC_RTC_HSE_DIV_50 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1) 00502 #define LL_RCC_RTC_HSE_DIV_51 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00503 #define LL_RCC_RTC_HSE_DIV_52 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2) 00504 #define LL_RCC_RTC_HSE_DIV_53 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) 00505 #define LL_RCC_RTC_HSE_DIV_54 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) 00506 #define LL_RCC_RTC_HSE_DIV_55 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00507 #define LL_RCC_RTC_HSE_DIV_56 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3) 00508 #define LL_RCC_RTC_HSE_DIV_57 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0) 00509 #define LL_RCC_RTC_HSE_DIV_58 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1) 00510 #define LL_RCC_RTC_HSE_DIV_59 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00511 #define LL_RCC_RTC_HSE_DIV_60 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2) 00512 #define LL_RCC_RTC_HSE_DIV_61 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) 00513 #define LL_RCC_RTC_HSE_DIV_62 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) 00514 #define LL_RCC_RTC_HSE_DIV_63 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) 00515 /** 00516 * @} 00517 */ 00518 00519 /** @defgroup RCC_LL_EC_USARTx_CLKSOURCE Peripheral USART clock source selection 00520 * @{ 00521 */ 00522 #if defined(RCC_D2CCIP2R_USART16SEL) 00523 #define LL_RCC_USART16_CLKSOURCE_PCLK2 LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, 0x00000000U) 00524 #define LL_RCC_USART16_CLKSOURCE_PLL2Q LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, RCC_D2CCIP2R_USART16SEL_0) 00525 #define LL_RCC_USART16_CLKSOURCE_PLL3Q LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, RCC_D2CCIP2R_USART16SEL_1) 00526 #define LL_RCC_USART16_CLKSOURCE_HSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, RCC_D2CCIP2R_USART16SEL_0 | RCC_D2CCIP2R_USART16SEL_1) 00527 #define LL_RCC_USART16_CLKSOURCE_CSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, RCC_D2CCIP2R_USART16SEL_2) 00528 #define LL_RCC_USART16_CLKSOURCE_LSE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, RCC_D2CCIP2R_USART16SEL_0 | RCC_D2CCIP2R_USART16SEL_2) 00529 /* Aliases */ 00530 #define LL_RCC_USART16910_CLKSOURCE_PCLK2 LL_RCC_USART16_CLKSOURCE_PCLK2 00531 #define LL_RCC_USART16910_CLKSOURCE_PLL2Q LL_RCC_USART16_CLKSOURCE_PLL2Q 00532 #define LL_RCC_USART16910_CLKSOURCE_PLL3Q LL_RCC_USART16_CLKSOURCE_PLL3Q 00533 #define LL_RCC_USART16910_CLKSOURCE_HSI LL_RCC_USART16_CLKSOURCE_HSI 00534 #define LL_RCC_USART16910_CLKSOURCE_CSI LL_RCC_USART16_CLKSOURCE_CSI 00535 #define LL_RCC_USART16910_CLKSOURCE_LSE LL_RCC_USART16_CLKSOURCE_LSE 00536 00537 #elif defined(RCC_D2CCIP2R_USART16910SEL) 00538 #define LL_RCC_USART16910_CLKSOURCE_PCLK2 LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16910SEL, RCC_D2CCIP2R_USART16910SEL_Pos, 0x00000000U) 00539 #define LL_RCC_USART16910_CLKSOURCE_PLL2Q LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16910SEL, RCC_D2CCIP2R_USART16910SEL_Pos, RCC_D2CCIP2R_USART16910SEL_0) 00540 #define LL_RCC_USART16910_CLKSOURCE_PLL3Q LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16910SEL, RCC_D2CCIP2R_USART16910SEL_Pos, RCC_D2CCIP2R_USART16910SEL_1) 00541 #define LL_RCC_USART16910_CLKSOURCE_HSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16910SEL, RCC_D2CCIP2R_USART16910SEL_Pos, RCC_D2CCIP2R_USART16910SEL_0 | RCC_D2CCIP2R_USART16910SEL_1) 00542 #define LL_RCC_USART16910_CLKSOURCE_CSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16910SEL, RCC_D2CCIP2R_USART16910SEL_Pos, RCC_D2CCIP2R_USART16910SEL_2) 00543 #define LL_RCC_USART16910_CLKSOURCE_LSE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16910SEL, RCC_D2CCIP2R_USART16910SEL_Pos, RCC_D2CCIP2R_USART16910SEL_0 | RCC_D2CCIP2R_USART16910SEL_2) 00544 /* Aliases */ 00545 #define LL_RCC_USART16_CLKSOURCE_PCLK2 LL_RCC_USART16910_CLKSOURCE_PCLK2 00546 #define LL_RCC_USART16_CLKSOURCE_PLL2Q LL_RCC_USART16910_CLKSOURCE_PLL2Q 00547 #define LL_RCC_USART16_CLKSOURCE_PLL3Q LL_RCC_USART16910_CLKSOURCE_PLL3Q 00548 #define LL_RCC_USART16_CLKSOURCE_HSI LL_RCC_USART16910_CLKSOURCE_HSI 00549 #define LL_RCC_USART16_CLKSOURCE_CSI LL_RCC_USART16910_CLKSOURCE_CSI 00550 #define LL_RCC_USART16_CLKSOURCE_LSE LL_RCC_USART16910_CLKSOURCE_LSE 00551 00552 #else 00553 #define LL_RCC_USART16910_CLKSOURCE_PCLK2 LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART16910SEL, RCC_CDCCIP2R_USART16910SEL_Pos, 0x00000000U) 00554 #define LL_RCC_USART16910_CLKSOURCE_PLL2Q LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART16910SEL, RCC_CDCCIP2R_USART16910SEL_Pos, RCC_CDCCIP2R_USART16910SEL_0) 00555 #define LL_RCC_USART16910_CLKSOURCE_PLL3Q LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART16910SEL, RCC_CDCCIP2R_USART16910SEL_Pos, RCC_CDCCIP2R_USART16910SEL_1) 00556 #define LL_RCC_USART16910_CLKSOURCE_HSI LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART16910SEL, RCC_CDCCIP2R_USART16910SEL_Pos, RCC_CDCCIP2R_USART16910SEL_0 | RCC_CDCCIP2R_USART16910SEL_1) 00557 #define LL_RCC_USART16910_CLKSOURCE_CSI LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART16910SEL, RCC_CDCCIP2R_USART16910SEL_Pos, RCC_CDCCIP2R_USART16910SEL_2) 00558 #define LL_RCC_USART16910_CLKSOURCE_LSE LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART16910SEL, RCC_CDCCIP2R_USART16910SEL_Pos, RCC_CDCCIP2R_USART16910SEL_0 | RCC_CDCCIP2R_USART16910SEL_2) 00559 /* Aliases */ 00560 #define LL_RCC_USART16_CLKSOURCE_PCLK2 LL_RCC_USART16910_CLKSOURCE_PCLK2 00561 #define LL_RCC_USART16_CLKSOURCE_PLL2Q LL_RCC_USART16910_CLKSOURCE_PLL2Q 00562 #define LL_RCC_USART16_CLKSOURCE_PLL3Q LL_RCC_USART16910_CLKSOURCE_PLL3Q 00563 #define LL_RCC_USART16_CLKSOURCE_HSI LL_RCC_USART16910_CLKSOURCE_HSI 00564 #define LL_RCC_USART16_CLKSOURCE_CSI LL_RCC_USART16910_CLKSOURCE_CSI 00565 #define LL_RCC_USART16_CLKSOURCE_LSE LL_RCC_USART16910_CLKSOURCE_LSE 00566 #endif /* RCC_D2CCIP2R_USART16SEL */ 00567 #if defined(RCC_D2CCIP2R_USART28SEL) 00568 #define LL_RCC_USART234578_CLKSOURCE_PCLK1 LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, 0x00000000U) 00569 #define LL_RCC_USART234578_CLKSOURCE_PLL2Q LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, RCC_D2CCIP2R_USART28SEL_0) 00570 #define LL_RCC_USART234578_CLKSOURCE_PLL3Q LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, RCC_D2CCIP2R_USART28SEL_1) 00571 #define LL_RCC_USART234578_CLKSOURCE_HSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, RCC_D2CCIP2R_USART28SEL_0 | RCC_D2CCIP2R_USART28SEL_1) 00572 #define LL_RCC_USART234578_CLKSOURCE_CSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, RCC_D2CCIP2R_USART28SEL_2) 00573 #define LL_RCC_USART234578_CLKSOURCE_LSE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, RCC_D2CCIP2R_USART28SEL_0 | RCC_D2CCIP2R_USART28SEL_2) 00574 #else 00575 #define LL_RCC_USART234578_CLKSOURCE_PCLK1 LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART234578SEL, RCC_CDCCIP2R_USART234578SEL_Pos, 0x00000000U) 00576 #define LL_RCC_USART234578_CLKSOURCE_PLL2Q LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART234578SEL, RCC_CDCCIP2R_USART234578SEL_Pos, RCC_CDCCIP2R_USART234578SEL_0) 00577 #define LL_RCC_USART234578_CLKSOURCE_PLL3Q LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART234578SEL, RCC_CDCCIP2R_USART234578SEL_Pos, RCC_CDCCIP2R_USART234578SEL_1) 00578 #define LL_RCC_USART234578_CLKSOURCE_HSI LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART234578SEL, RCC_CDCCIP2R_USART234578SEL_Pos, RCC_CDCCIP2R_USART234578SEL_0 | RCC_CDCCIP2R_USART234578SEL_1) 00579 #define LL_RCC_USART234578_CLKSOURCE_CSI LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART234578SEL, RCC_CDCCIP2R_USART234578SEL_Pos, RCC_CDCCIP2R_USART234578SEL_2) 00580 #define LL_RCC_USART234578_CLKSOURCE_LSE LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART234578SEL, RCC_CDCCIP2R_USART234578SEL_Pos, RCC_CDCCIP2R_USART234578SEL_0 | RCC_CDCCIP2R_USART234578SEL_2) 00581 #endif /* RCC_D2CCIP2R_USART28SEL */ 00582 /** 00583 * @} 00584 */ 00585 00586 /** @defgroup RCC_LL_EC_LPUARTx_CLKSOURCE Peripheral LPUART clock source selection 00587 * @{ 00588 */ 00589 #if defined(RCC_D3CCIPR_LPUART1SEL) 00590 #define LL_RCC_LPUART1_CLKSOURCE_PCLK4 (0x00000000U) 00591 #define LL_RCC_LPUART1_CLKSOURCE_PLL2Q (RCC_D3CCIPR_LPUART1SEL_0) 00592 #define LL_RCC_LPUART1_CLKSOURCE_PLL3Q (RCC_D3CCIPR_LPUART1SEL_1) 00593 #define LL_RCC_LPUART1_CLKSOURCE_HSI (RCC_D3CCIPR_LPUART1SEL_0 | RCC_D3CCIPR_LPUART1SEL_1) 00594 #define LL_RCC_LPUART1_CLKSOURCE_CSI (RCC_D3CCIPR_LPUART1SEL_2) 00595 #define LL_RCC_LPUART1_CLKSOURCE_LSE (RCC_D3CCIPR_LPUART1SEL_0 | RCC_D3CCIPR_LPUART1SEL_2) 00596 #else 00597 #define LL_RCC_LPUART1_CLKSOURCE_PCLK4 (0x00000000U) 00598 #define LL_RCC_LPUART1_CLKSOURCE_PLL2Q (RCC_SRDCCIPR_LPUART1SEL_0) 00599 #define LL_RCC_LPUART1_CLKSOURCE_PLL3Q (RCC_SRDCCIPR_LPUART1SEL_1) 00600 #define LL_RCC_LPUART1_CLKSOURCE_HSI (RCC_SRDCCIPR_LPUART1SEL_0 | RCC_SRDCCIPR_LPUART1SEL_1) 00601 #define LL_RCC_LPUART1_CLKSOURCE_CSI (RCC_SRDCCIPR_LPUART1SEL_2) 00602 #define LL_RCC_LPUART1_CLKSOURCE_LSE (RCC_SRDCCIPR_LPUART1SEL_0 | RCC_SRDCCIPR_LPUART1SEL_2) 00603 #endif /* RCC_D3CCIPR_LPUART1SEL */ 00604 /** 00605 * @} 00606 */ 00607 00608 /** @defgroup RCC_LL_EC_I2Cx_CLKSOURCE Peripheral I2C clock source selection 00609 * @{ 00610 */ 00611 #if defined (RCC_D2CCIP2R_I2C123SEL) 00612 #define LL_RCC_I2C123_CLKSOURCE_PCLK1 LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C123SEL, RCC_D2CCIP2R_I2C123SEL_Pos, 0x00000000U) 00613 #define LL_RCC_I2C123_CLKSOURCE_PLL3R LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C123SEL, RCC_D2CCIP2R_I2C123SEL_Pos, RCC_D2CCIP2R_I2C123SEL_0) 00614 #define LL_RCC_I2C123_CLKSOURCE_HSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C123SEL, RCC_D2CCIP2R_I2C123SEL_Pos, RCC_D2CCIP2R_I2C123SEL_1) 00615 #define LL_RCC_I2C123_CLKSOURCE_CSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C123SEL, RCC_D2CCIP2R_I2C123SEL_Pos, RCC_D2CCIP2R_I2C123SEL_0 | RCC_D2CCIP2R_I2C123SEL_1) 00616 /* Aliases */ 00617 #define LL_RCC_I2C1235_CLKSOURCE_PCLK1 LL_RCC_I2C123_CLKSOURCE_PCLK1 00618 #define LL_RCC_I2C1235_CLKSOURCE_PLL3R LL_RCC_I2C123_CLKSOURCE_PLL3R 00619 #define LL_RCC_I2C1235_CLKSOURCE_HSI LL_RCC_I2C123_CLKSOURCE_HSI 00620 #define LL_RCC_I2C1235_CLKSOURCE_CSI LL_RCC_I2C123_CLKSOURCE_CSI 00621 00622 #elif defined (RCC_D2CCIP2R_I2C1235SEL) 00623 #define LL_RCC_I2C1235_CLKSOURCE_PCLK1 LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C1235SEL, RCC_D2CCIP2R_I2C1235SEL_Pos, 0x00000000U) 00624 #define LL_RCC_I2C1235_CLKSOURCE_PLL3R LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C1235SEL, RCC_D2CCIP2R_I2C1235SEL_Pos, RCC_D2CCIP2R_I2C1235SEL_0) 00625 #define LL_RCC_I2C1235_CLKSOURCE_HSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C1235SEL, RCC_D2CCIP2R_I2C1235SEL_Pos, RCC_D2CCIP2R_I2C1235SEL_1) 00626 #define LL_RCC_I2C1235_CLKSOURCE_CSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C1235SEL, RCC_D2CCIP2R_I2C1235SEL_Pos, RCC_D2CCIP2R_I2C1235SEL_0 | RCC_D2CCIP2R_I2C1235SEL_1) 00627 /* Aliases */ 00628 #define LL_RCC_I2C123_CLKSOURCE_PCLK1 LL_RCC_I2C1235_CLKSOURCE_PCLK1 00629 #define LL_RCC_I2C123_CLKSOURCE_PLL3R LL_RCC_I2C1235_CLKSOURCE_PLL3R 00630 #define LL_RCC_I2C123_CLKSOURCE_HSI LL_RCC_I2C1235_CLKSOURCE_HSI 00631 #define LL_RCC_I2C123_CLKSOURCE_CSI LL_RCC_I2C1235_CLKSOURCE_CSI 00632 00633 #else 00634 #define LL_RCC_I2C123_CLKSOURCE_PCLK1 LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_I2C123SEL, RCC_CDCCIP2R_I2C123SEL_Pos, 0x00000000U) 00635 #define LL_RCC_I2C123_CLKSOURCE_PLL3R LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_I2C123SEL, RCC_CDCCIP2R_I2C123SEL_Pos, RCC_CDCCIP2R_I2C123SEL_0) 00636 #define LL_RCC_I2C123_CLKSOURCE_HSI LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_I2C123SEL, RCC_CDCCIP2R_I2C123SEL_Pos, RCC_CDCCIP2R_I2C123SEL_1) 00637 #define LL_RCC_I2C123_CLKSOURCE_CSI LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_I2C123SEL, RCC_CDCCIP2R_I2C123SEL_Pos, RCC_CDCCIP2R_I2C123SEL_0 | RCC_CDCCIP2R_I2C123SEL_1) 00638 #endif /* RCC_D2CCIP2R_I2C123SEL */ 00639 #if defined (RCC_D3CCIPR_I2C4SEL) 00640 #define LL_RCC_I2C4_CLKSOURCE_PCLK4 LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_I2C4SEL, RCC_D3CCIPR_I2C4SEL_Pos, 0x00000000U) 00641 #define LL_RCC_I2C4_CLKSOURCE_PLL3R LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_I2C4SEL, RCC_D3CCIPR_I2C4SEL_Pos, RCC_D3CCIPR_I2C4SEL_0) 00642 #define LL_RCC_I2C4_CLKSOURCE_HSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_I2C4SEL, RCC_D3CCIPR_I2C4SEL_Pos, RCC_D3CCIPR_I2C4SEL_1) 00643 #define LL_RCC_I2C4_CLKSOURCE_CSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_I2C4SEL, RCC_D3CCIPR_I2C4SEL_Pos, RCC_D3CCIPR_I2C4SEL_0 | RCC_D3CCIPR_I2C4SEL_1) 00644 #else 00645 #define LL_RCC_I2C4_CLKSOURCE_PCLK4 LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_I2C4SEL, RCC_SRDCCIPR_I2C4SEL_Pos, 0x00000000U) 00646 #define LL_RCC_I2C4_CLKSOURCE_PLL3R LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_I2C4SEL, RCC_SRDCCIPR_I2C4SEL_Pos, RCC_SRDCCIPR_I2C4SEL_0) 00647 #define LL_RCC_I2C4_CLKSOURCE_HSI LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_I2C4SEL, RCC_SRDCCIPR_I2C4SEL_Pos, RCC_SRDCCIPR_I2C4SEL_1) 00648 #define LL_RCC_I2C4_CLKSOURCE_CSI LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_I2C4SEL, RCC_SRDCCIPR_I2C4SEL_Pos, RCC_SRDCCIPR_I2C4SEL_0 | RCC_SRDCCIPR_I2C4SEL_1) 00649 #endif /* RCC_D3CCIPR_I2C4SEL */ 00650 /** 00651 * @} 00652 */ 00653 00654 /** @defgroup RCC_LL_EC_LPTIMx_CLKSOURCE Peripheral LPTIM clock source selection 00655 * @{ 00656 */ 00657 #if defined(RCC_D2CCIP2R_LPTIM1SEL) 00658 #define LL_RCC_LPTIM1_CLKSOURCE_PCLK1 LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, 0x00000000U) 00659 #define LL_RCC_LPTIM1_CLKSOURCE_PLL2P LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, RCC_D2CCIP2R_LPTIM1SEL_0) 00660 #define LL_RCC_LPTIM1_CLKSOURCE_PLL3R LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, RCC_D2CCIP2R_LPTIM1SEL_1) 00661 #define LL_RCC_LPTIM1_CLKSOURCE_LSE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, RCC_D2CCIP2R_LPTIM1SEL_0 | RCC_D2CCIP2R_LPTIM1SEL_1) 00662 #define LL_RCC_LPTIM1_CLKSOURCE_LSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, RCC_D2CCIP2R_LPTIM1SEL_2) 00663 #define LL_RCC_LPTIM1_CLKSOURCE_CLKP LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, RCC_D2CCIP2R_LPTIM1SEL_0 | RCC_D2CCIP2R_LPTIM1SEL_2) 00664 #else 00665 #define LL_RCC_LPTIM1_CLKSOURCE_PCLK1 LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_LPTIM1SEL, RCC_CDCCIP2R_LPTIM1SEL_Pos, 0x00000000U) 00666 #define LL_RCC_LPTIM1_CLKSOURCE_PLL2P LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_LPTIM1SEL, RCC_CDCCIP2R_LPTIM1SEL_Pos, RCC_CDCCIP2R_LPTIM1SEL_0) 00667 #define LL_RCC_LPTIM1_CLKSOURCE_PLL3R LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_LPTIM1SEL, RCC_CDCCIP2R_LPTIM1SEL_Pos, RCC_CDCCIP2R_LPTIM1SEL_1) 00668 #define LL_RCC_LPTIM1_CLKSOURCE_LSE LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_LPTIM1SEL, RCC_CDCCIP2R_LPTIM1SEL_Pos, RCC_CDCCIP2R_LPTIM1SEL_0 | RCC_CDCCIP2R_LPTIM1SEL_1) 00669 #define LL_RCC_LPTIM1_CLKSOURCE_LSI LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_LPTIM1SEL, RCC_CDCCIP2R_LPTIM1SEL_Pos, RCC_CDCCIP2R_LPTIM1SEL_2) 00670 #define LL_RCC_LPTIM1_CLKSOURCE_CLKP LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_LPTIM1SEL, RCC_CDCCIP2R_LPTIM1SEL_Pos, RCC_CDCCIP2R_LPTIM1SEL_0 | RCC_CDCCIP2R_LPTIM1SEL_2) 00671 #endif /* RCC_D2CCIP2R_LPTIM1SEL */ 00672 #if defined(RCC_D3CCIPR_LPTIM2SEL) 00673 #define LL_RCC_LPTIM2_CLKSOURCE_PCLK4 LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, 0x00000000U) 00674 #define LL_RCC_LPTIM2_CLKSOURCE_PLL2P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, RCC_D3CCIPR_LPTIM2SEL_0) 00675 #define LL_RCC_LPTIM2_CLKSOURCE_PLL3R LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, RCC_D3CCIPR_LPTIM2SEL_1) 00676 #define LL_RCC_LPTIM2_CLKSOURCE_LSE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, RCC_D3CCIPR_LPTIM2SEL_0 | RCC_D3CCIPR_LPTIM2SEL_1) 00677 #define LL_RCC_LPTIM2_CLKSOURCE_LSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, RCC_D3CCIPR_LPTIM2SEL_2) 00678 #define LL_RCC_LPTIM2_CLKSOURCE_CLKP LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, RCC_D3CCIPR_LPTIM2SEL_0 | RCC_D3CCIPR_LPTIM2SEL_2) 00679 #else 00680 #define LL_RCC_LPTIM2_CLKSOURCE_PCLK4 LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM2SEL, RCC_SRDCCIPR_LPTIM2SEL_Pos, 0x00000000U) 00681 #define LL_RCC_LPTIM2_CLKSOURCE_PLL2P LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM2SEL, RCC_SRDCCIPR_LPTIM2SEL_Pos, RCC_SRDCCIPR_LPTIM2SEL_0) 00682 #define LL_RCC_LPTIM2_CLKSOURCE_PLL3R LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM2SEL, RCC_SRDCCIPR_LPTIM2SEL_Pos, RCC_SRDCCIPR_LPTIM2SEL_1) 00683 #define LL_RCC_LPTIM2_CLKSOURCE_LSE LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM2SEL, RCC_SRDCCIPR_LPTIM2SEL_Pos, RCC_SRDCCIPR_LPTIM2SEL_0 | RCC_SRDCCIPR_LPTIM2SEL_1) 00684 #define LL_RCC_LPTIM2_CLKSOURCE_LSI LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM2SEL, RCC_SRDCCIPR_LPTIM2SEL_Pos, RCC_SRDCCIPR_LPTIM2SEL_2) 00685 #define LL_RCC_LPTIM2_CLKSOURCE_CLKP LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM2SEL, RCC_SRDCCIPR_LPTIM2SEL_Pos, RCC_SRDCCIPR_LPTIM2SEL_0 | RCC_SRDCCIPR_LPTIM2SEL_2) 00686 #endif /* RCC_D3CCIPR_LPTIM2SEL */ 00687 #if defined(RCC_D3CCIPR_LPTIM345SEL) 00688 #define LL_RCC_LPTIM345_CLKSOURCE_PCLK4 LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, 0x00000000U) 00689 #define LL_RCC_LPTIM345_CLKSOURCE_PLL2P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, RCC_D3CCIPR_LPTIM345SEL_0) 00690 #define LL_RCC_LPTIM345_CLKSOURCE_PLL3R LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, RCC_D3CCIPR_LPTIM345SEL_1) 00691 #define LL_RCC_LPTIM345_CLKSOURCE_LSE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, RCC_D3CCIPR_LPTIM345SEL_0 | RCC_D3CCIPR_LPTIM345SEL_1) 00692 #define LL_RCC_LPTIM345_CLKSOURCE_LSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, RCC_D3CCIPR_LPTIM345SEL_2) 00693 #define LL_RCC_LPTIM345_CLKSOURCE_CLKP LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, RCC_D3CCIPR_LPTIM345SEL_0 | RCC_D3CCIPR_LPTIM345SEL_2) 00694 #else 00695 #define LL_RCC_LPTIM345_CLKSOURCE_PCLK4 LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM3SEL, RCC_SRDCCIPR_LPTIM3SEL_Pos, 0x00000000U) 00696 #define LL_RCC_LPTIM345_CLKSOURCE_PLL2P LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM3SEL, RCC_SRDCCIPR_LPTIM3SEL_Pos, RCC_SRDCCIPR_LPTIM3SEL_0) 00697 #define LL_RCC_LPTIM345_CLKSOURCE_PLL3R LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM3SEL, RCC_SRDCCIPR_LPTIM3SEL_Pos, RCC_SRDCCIPR_LPTIM3SEL_1) 00698 #define LL_RCC_LPTIM345_CLKSOURCE_LSE LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM3SEL, RCC_SRDCCIPR_LPTIM3SEL_Pos, RCC_SRDCCIPR_LPTIM3SEL_0 | RCC_SRDCCIPR_LPTIM3SEL_1) 00699 #define LL_RCC_LPTIM345_CLKSOURCE_LSI LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM3SEL, RCC_SRDCCIPR_LPTIM3SEL_Pos, RCC_SRDCCIPR_LPTIM3SEL_2) 00700 #define LL_RCC_LPTIM345_CLKSOURCE_CLKP LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM3SEL, RCC_SRDCCIPR_LPTIM3SEL_Pos, RCC_SRDCCIPR_LPTIM3SEL_0 | RCC_SRDCCIPR_LPTIM3SEL_2) 00701 /* aliases*/ 00702 #define LL_RCC_LPTIM3_CLKSOURCE_PCLK4 LL_RCC_LPTIM345_CLKSOURCE_PCLK4 00703 #define LL_RCC_LPTIM3_CLKSOURCE_PLL2P LL_RCC_LPTIM345_CLKSOURCE_PLL2P 00704 #define LL_RCC_LPTIM3_CLKSOURCE_PLL3R LL_RCC_LPTIM345_CLKSOURCE_PLL3R 00705 #define LL_RCC_LPTIM3_CLKSOURCE_LSE LL_RCC_LPTIM345_CLKSOURCE_LSE 00706 #define LL_RCC_LPTIM3_CLKSOURCE_LSI LL_RCC_LPTIM345_CLKSOURCE_LSI 00707 #define LL_RCC_LPTIM3_CLKSOURCE_CLKP LL_RCC_LPTIM345_CLKSOURCE_CLKP 00708 #endif /* RCC_D3CCIPR_LPTIM345SEL */ 00709 /** 00710 * @} 00711 */ 00712 00713 /** @defgroup RCC_LL_EC_SAIx_CLKSOURCE Peripheral SAI clock source selection 00714 * @{ 00715 */ 00716 #if defined(RCC_D2CCIP1R_SAI1SEL) 00717 #define LL_RCC_SAI1_CLKSOURCE_PLL1Q LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, 0x00000000U) 00718 #define LL_RCC_SAI1_CLKSOURCE_PLL2P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, RCC_D2CCIP1R_SAI1SEL_0) 00719 #define LL_RCC_SAI1_CLKSOURCE_PLL3P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, RCC_D2CCIP1R_SAI1SEL_1) 00720 #define LL_RCC_SAI1_CLKSOURCE_I2S_CKIN LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, RCC_D2CCIP1R_SAI1SEL_0 | RCC_D2CCIP1R_SAI1SEL_1) 00721 #define LL_RCC_SAI1_CLKSOURCE_CLKP LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, RCC_D2CCIP1R_SAI1SEL_2) 00722 #else 00723 #define LL_RCC_SAI1_CLKSOURCE_PLL1Q LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI1SEL, RCC_CDCCIP1R_SAI1SEL_Pos, 0x00000000U) 00724 #define LL_RCC_SAI1_CLKSOURCE_PLL2P LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI1SEL, RCC_CDCCIP1R_SAI1SEL_Pos, RCC_CDCCIP1R_SAI1SEL_0) 00725 #define LL_RCC_SAI1_CLKSOURCE_PLL3P LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI1SEL, RCC_CDCCIP1R_SAI1SEL_Pos, RCC_CDCCIP1R_SAI1SEL_1) 00726 #define LL_RCC_SAI1_CLKSOURCE_I2S_CKIN LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI1SEL, RCC_CDCCIP1R_SAI1SEL_Pos, RCC_CDCCIP1R_SAI1SEL_0 | RCC_CDCCIP1R_SAI1SEL_1) 00727 #define LL_RCC_SAI1_CLKSOURCE_CLKP LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI1SEL, RCC_CDCCIP1R_SAI1SEL_Pos, RCC_CDCCIP1R_SAI1SEL_2) 00728 #endif 00729 #if defined(SAI3) 00730 #define LL_RCC_SAI23_CLKSOURCE_PLL1Q LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, 0x00000000U) 00731 #define LL_RCC_SAI23_CLKSOURCE_PLL2P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, RCC_D2CCIP1R_SAI23SEL_0) 00732 #define LL_RCC_SAI23_CLKSOURCE_PLL3P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, RCC_D2CCIP1R_SAI23SEL_1) 00733 #define LL_RCC_SAI23_CLKSOURCE_I2S_CKIN LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, RCC_D2CCIP1R_SAI23SEL_0 | RCC_D2CCIP1R_SAI23SEL_1) 00734 #define LL_RCC_SAI23_CLKSOURCE_CLKP LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, RCC_D2CCIP1R_SAI23SEL_2) 00735 #endif /* SAI3 */ 00736 #if defined(RCC_CDCCIP1R_SAI2ASEL) 00737 #define LL_RCC_SAI2A_CLKSOURCE_PLL1Q LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2ASEL, RCC_CDCCIP1R_SAI2ASEL_Pos, 0x00000000U) 00738 #define LL_RCC_SAI2A_CLKSOURCE_PLL2P LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2ASEL, RCC_CDCCIP1R_SAI2ASEL_Pos, RCC_CDCCIP1R_SAI2ASEL_0) 00739 #define LL_RCC_SAI2A_CLKSOURCE_PLL3P LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2ASEL, RCC_CDCCIP1R_SAI2ASEL_Pos, RCC_CDCCIP1R_SAI2ASEL_1) 00740 #define LL_RCC_SAI2A_CLKSOURCE_I2S_CKIN LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2ASEL, RCC_CDCCIP1R_SAI2ASEL_Pos, RCC_CDCCIP1R_SAI2ASEL_0 | RCC_CDCCIP1R_SAI2ASEL_1) 00741 #define LL_RCC_SAI2A_CLKSOURCE_CLKP LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2ASEL, RCC_CDCCIP1R_SAI2ASEL_Pos, RCC_CDCCIP1R_SAI2ASEL_2) 00742 #define LL_RCC_SAI2A_CLKSOURCE_SPDIF LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2ASEL, RCC_CDCCIP1R_SAI2ASEL_Pos, RCC_CDCCIP1R_SAI2ASEL_0 | RCC_CDCCIP1R_SAI2ASEL_2) 00743 #endif /* RCC_CDCCIP1R_SAI2ASEL */ 00744 #if defined(RCC_CDCCIP1R_SAI2BSEL) 00745 #define LL_RCC_SAI2B_CLKSOURCE_PLL1Q LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2BSEL, RCC_CDCCIP1R_SAI2BSEL_Pos, 0x00000000U) 00746 #define LL_RCC_SAI2B_CLKSOURCE_PLL2P LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2BSEL, RCC_CDCCIP1R_SAI2BSEL_Pos, RCC_CDCCIP1R_SAI2BSEL_0) 00747 #define LL_RCC_SAI2B_CLKSOURCE_PLL3P LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2BSEL, RCC_CDCCIP1R_SAI2BSEL_Pos, RCC_CDCCIP1R_SAI2BSEL_1) 00748 #define LL_RCC_SAI2B_CLKSOURCE_I2S_CKIN LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2BSEL, RCC_CDCCIP1R_SAI2BSEL_Pos, RCC_CDCCIP1R_SAI2BSEL_0 | RCC_CDCCIP1R_SAI2BSEL_1) 00749 #define LL_RCC_SAI2B_CLKSOURCE_CLKP LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2BSEL, RCC_CDCCIP1R_SAI2BSEL_Pos, RCC_CDCCIP1R_SAI2BSEL_2) 00750 #define LL_RCC_SAI2B_CLKSOURCE_SPDIF LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2BSEL, RCC_CDCCIP1R_SAI2BSEL_Pos, RCC_CDCCIP1R_SAI2BSEL_0 | RCC_CDCCIP1R_SAI2BSEL_2) 00751 #endif /* RCC_CDCCIP1R_SAI2BSEL */ 00752 #if defined(SAI4_Block_A) 00753 #define LL_RCC_SAI4A_CLKSOURCE_PLL1Q LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, 0x00000000U) 00754 #define LL_RCC_SAI4A_CLKSOURCE_PLL2P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, RCC_D3CCIPR_SAI4ASEL_0) 00755 #define LL_RCC_SAI4A_CLKSOURCE_PLL3P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, RCC_D3CCIPR_SAI4ASEL_1) 00756 #define LL_RCC_SAI4A_CLKSOURCE_I2S_CKIN LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, RCC_D3CCIPR_SAI4ASEL_0 | RCC_D3CCIPR_SAI4ASEL_1) 00757 #define LL_RCC_SAI4A_CLKSOURCE_CLKP LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, RCC_D3CCIPR_SAI4ASEL_2) 00758 #if defined(RCC_VER_3_0) 00759 #define LL_RCC_SAI4A_CLKSOURCE_SPDIF LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, RCC_D3CCIPR_SAI4ASEL_2 | RCC_D3CCIPR_SAI4ASEL_0) 00760 #endif /* RCC_VER_3_0 */ 00761 #endif /* SAI4_Block_A */ 00762 #if defined(SAI4_Block_B) 00763 #define LL_RCC_SAI4B_CLKSOURCE_PLL1Q LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, 0x00000000U) 00764 #define LL_RCC_SAI4B_CLKSOURCE_PLL2P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, RCC_D3CCIPR_SAI4BSEL_0) 00765 #define LL_RCC_SAI4B_CLKSOURCE_PLL3P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, RCC_D3CCIPR_SAI4BSEL_1) 00766 #define LL_RCC_SAI4B_CLKSOURCE_I2S_CKIN LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, RCC_D3CCIPR_SAI4BSEL_0 | RCC_D3CCIPR_SAI4BSEL_1) 00767 #define LL_RCC_SAI4B_CLKSOURCE_CLKP LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, RCC_D3CCIPR_SAI4BSEL_2) 00768 #if defined(RCC_VER_3_0) 00769 #define LL_RCC_SAI4B_CLKSOURCE_SPDIF LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, RCC_D3CCIPR_SAI4BSEL_2 | RCC_D3CCIPR_SAI4BSEL_0) 00770 #endif /* RCC_VER_3_0 */ 00771 #endif /* SAI4_Block_B */ 00772 /** 00773 * @} 00774 */ 00775 00776 /** @defgroup RCC_LL_EC_SDMMC_CLKSOURCE Peripheral SDMMC clock source selection 00777 * @{ 00778 */ 00779 #if defined(RCC_D1CCIPR_SDMMCSEL) 00780 #define LL_RCC_SDMMC_CLKSOURCE_PLL1Q (0x00000000U) 00781 #define LL_RCC_SDMMC_CLKSOURCE_PLL2R (RCC_D1CCIPR_SDMMCSEL) 00782 #else 00783 #define LL_RCC_SDMMC_CLKSOURCE_PLL1Q (0x00000000U) 00784 #define LL_RCC_SDMMC_CLKSOURCE_PLL2R (RCC_CDCCIPR_SDMMCSEL) 00785 #endif /* RCC_D1CCIPR_SDMMCSEL */ 00786 /** 00787 * @} 00788 */ 00789 00790 /** @defgroup RCC_LL_EC_RNG_CLKSOURCE Peripheral RNG clock source selection 00791 * @{ 00792 */ 00793 #if defined(RCC_D2CCIP2R_RNGSEL) 00794 #define LL_RCC_RNG_CLKSOURCE_HSI48 (0x00000000U) 00795 #define LL_RCC_RNG_CLKSOURCE_PLL1Q (RCC_D2CCIP2R_RNGSEL_0) 00796 #define LL_RCC_RNG_CLKSOURCE_LSE (RCC_D2CCIP2R_RNGSEL_1) 00797 #define LL_RCC_RNG_CLKSOURCE_LSI (RCC_D2CCIP2R_RNGSEL_1 | RCC_D2CCIP2R_RNGSEL_0) 00798 #else 00799 #define LL_RCC_RNG_CLKSOURCE_HSI48 (0x00000000U) 00800 #define LL_RCC_RNG_CLKSOURCE_PLL1Q (RCC_CDCCIP2R_RNGSEL_0) 00801 #define LL_RCC_RNG_CLKSOURCE_LSE (RCC_CDCCIP2R_RNGSEL_1) 00802 #define LL_RCC_RNG_CLKSOURCE_LSI (RCC_CDCCIP2R_RNGSEL_1 | RCC_CDCCIP2R_RNGSEL_0) 00803 #endif /* RCC_D2CCIP2R_RNGSEL */ 00804 /** 00805 * @} 00806 */ 00807 00808 /** @defgroup RCC_LL_EC_USB_CLKSOURCE Peripheral USB clock source selection 00809 * @{ 00810 */ 00811 #if defined(RCC_D2CCIP2R_USBSEL) 00812 #define LL_RCC_USB_CLKSOURCE_DISABLE (0x00000000U) 00813 #define LL_RCC_USB_CLKSOURCE_PLL1Q (RCC_D2CCIP2R_USBSEL_0) 00814 #define LL_RCC_USB_CLKSOURCE_PLL3Q (RCC_D2CCIP2R_USBSEL_1) 00815 #define LL_RCC_USB_CLKSOURCE_HSI48 (RCC_D2CCIP2R_USBSEL_1 | RCC_D2CCIP2R_USBSEL_0) 00816 #else 00817 #define LL_RCC_USB_CLKSOURCE_DISABLE (0x00000000U) 00818 #define LL_RCC_USB_CLKSOURCE_PLL1Q (RCC_CDCCIP2R_USBSEL_0) 00819 #define LL_RCC_USB_CLKSOURCE_PLL3Q (RCC_CDCCIP2R_USBSEL_1) 00820 #define LL_RCC_USB_CLKSOURCE_HSI48 (RCC_CDCCIP2R_USBSEL_1 | RCC_CDCCIP2R_USBSEL_0) 00821 #endif /* RCC_D2CCIP2R_USBSEL */ 00822 /** 00823 * @} 00824 */ 00825 00826 /** @defgroup RCC_LL_EC_CEC_CLKSOURCE Peripheral CEC clock source selection 00827 * @{ 00828 */ 00829 #if defined(RCC_D2CCIP2R_CECSEL) 00830 #define LL_RCC_CEC_CLKSOURCE_LSE (0x00000000U) 00831 #define LL_RCC_CEC_CLKSOURCE_LSI (RCC_D2CCIP2R_CECSEL_0) 00832 #define LL_RCC_CEC_CLKSOURCE_CSI_DIV122 (RCC_D2CCIP2R_CECSEL_1) 00833 #else 00834 #define LL_RCC_CEC_CLKSOURCE_LSE (0x00000000U) 00835 #define LL_RCC_CEC_CLKSOURCE_LSI (RCC_CDCCIP2R_CECSEL_0) 00836 #define LL_RCC_CEC_CLKSOURCE_CSI_DIV122 (RCC_CDCCIP2R_CECSEL_1) 00837 #endif 00838 /** 00839 * @} 00840 */ 00841 00842 #if defined(DSI) 00843 /** @defgroup RCC_LL_EC_DSI_CLKSOURCE Peripheral DSI clock source selection 00844 * @{ 00845 */ 00846 #define LL_RCC_DSI_CLKSOURCE_PHY (0x00000000U) 00847 #define LL_RCC_DSI_CLKSOURCE_PLL2Q (RCC_D1CCIPR_DSISEL) 00848 /** 00849 * @} 00850 */ 00851 #endif /* DSI */ 00852 00853 /** @defgroup RCC_LL_EC_DFSDM_CLKSOURCE Peripheral DFSDM clock source selection 00854 * @{ 00855 */ 00856 #if defined(RCC_D2CCIP1R_DFSDM1SEL) 00857 #define LL_RCC_DFSDM1_CLKSOURCE_PCLK2 (0x00000000U) 00858 #define LL_RCC_DFSDM1_CLKSOURCE_SYSCLK (RCC_D2CCIP1R_DFSDM1SEL) 00859 #else 00860 #define LL_RCC_DFSDM1_CLKSOURCE_PCLK2 (0x00000000U) 00861 #define LL_RCC_DFSDM1_CLKSOURCE_SYSCLK (RCC_CDCCIP1R_DFSDM1SEL) 00862 #endif /* RCC_D2CCIP1R_DFSDM1SEL */ 00863 /** 00864 * @} 00865 */ 00866 00867 #if defined(DFSDM2_BASE) 00868 /** @defgroup RCC_LL_EC_DFSDM2_CLKSOURCE Peripheral DFSDM2 clock source selection 00869 * @{ 00870 */ 00871 #define LL_RCC_DFSDM2_CLKSOURCE_PCLK4 (0x00000000U) 00872 #define LL_RCC_DFSDM2_CLKSOURCE_SYSCLK (RCC_SRDCCIPR_DFSDM2SEL) 00873 /** 00874 * @} 00875 */ 00876 #endif /* DFSDM2_BASE */ 00877 00878 /** @defgroup RCC_LL_EC_FMC_CLKSOURCE Peripheral FMC clock source selection 00879 * @{ 00880 */ 00881 #if defined(RCC_D1CCIPR_FMCSEL) 00882 #define LL_RCC_FMC_CLKSOURCE_HCLK (0x00000000U) 00883 #define LL_RCC_FMC_CLKSOURCE_PLL1Q (RCC_D1CCIPR_FMCSEL_0) 00884 #define LL_RCC_FMC_CLKSOURCE_PLL2R (RCC_D1CCIPR_FMCSEL_1) 00885 #define LL_RCC_FMC_CLKSOURCE_CLKP (RCC_D1CCIPR_FMCSEL_0 | RCC_D1CCIPR_FMCSEL_1) 00886 #else 00887 #define LL_RCC_FMC_CLKSOURCE_HCLK (0x00000000U) 00888 #define LL_RCC_FMC_CLKSOURCE_PLL1Q (RCC_CDCCIPR_FMCSEL_0) 00889 #define LL_RCC_FMC_CLKSOURCE_PLL2R (RCC_CDCCIPR_FMCSEL_1) 00890 #define LL_RCC_FMC_CLKSOURCE_CLKP (RCC_CDCCIPR_FMCSEL_0 | RCC_CDCCIPR_FMCSEL_1) 00891 #endif /* RCC_D1CCIPR_FMCSEL */ 00892 /** 00893 * @} 00894 */ 00895 00896 #if defined(QUADSPI) 00897 /** @defgroup RCC_LL_EC_QSPI_CLKSOURCE Peripheral QSPI clock source selection 00898 * @{ 00899 */ 00900 #define LL_RCC_QSPI_CLKSOURCE_HCLK (0x00000000U) 00901 #define LL_RCC_QSPI_CLKSOURCE_PLL1Q (RCC_D1CCIPR_QSPISEL_0) 00902 #define LL_RCC_QSPI_CLKSOURCE_PLL2R (RCC_D1CCIPR_QSPISEL_1) 00903 #define LL_RCC_QSPI_CLKSOURCE_CLKP (RCC_D1CCIPR_QSPISEL_0 | RCC_D1CCIPR_QSPISEL_1) 00904 /** 00905 * @} 00906 */ 00907 #endif /* QUADSPI */ 00908 00909 00910 #if defined(OCTOSPI1) || defined(OCTOSPI2) 00911 /** @defgroup RCC_LL_EC_OSPI_CLKSOURCE Peripheral OSPI clock source selection 00912 * @{ 00913 */ 00914 #if defined(RCC_D1CCIPR_OCTOSPISEL) 00915 #define LL_RCC_OSPI_CLKSOURCE_HCLK (0x00000000U) 00916 #define LL_RCC_OSPI_CLKSOURCE_PLL1Q (RCC_D1CCIPR_OCTOSPISEL_0) 00917 #define LL_RCC_OSPI_CLKSOURCE_PLL2R (RCC_D1CCIPR_OCTOSPISEL_1) 00918 #define LL_RCC_OSPI_CLKSOURCE_CLKP (RCC_D1CCIPR_OCTOSPISEL_0 | RCC_D1CCIPR_OCTOSPISEL_1) 00919 #else 00920 #define LL_RCC_OSPI_CLKSOURCE_HCLK (0x00000000U) 00921 #define LL_RCC_OSPI_CLKSOURCE_PLL1Q (RCC_CDCCIPR_OCTOSPISEL_0) 00922 #define LL_RCC_OSPI_CLKSOURCE_PLL2R (RCC_CDCCIPR_OCTOSPISEL_1) 00923 #define LL_RCC_OSPI_CLKSOURCE_CLKP (RCC_CDCCIPR_OCTOSPISEL_0 | RCC_CDCCIPR_OCTOSPISEL_1) 00924 #endif /* RCC_D1CCIPR_OCTOSPISEL */ 00925 /** 00926 * @} 00927 */ 00928 #endif /* defined(OCTOSPI1) || defined(OCTOSPI2) */ 00929 00930 00931 /** @defgroup RCC_LL_EC_CLKP_CLKSOURCE Peripheral CLKP clock source selection 00932 * @{ 00933 */ 00934 #if defined(RCC_D1CCIPR_CKPERSEL) 00935 #define LL_RCC_CLKP_CLKSOURCE_HSI (0x00000000U) 00936 #define LL_RCC_CLKP_CLKSOURCE_CSI (RCC_D1CCIPR_CKPERSEL_0) 00937 #define LL_RCC_CLKP_CLKSOURCE_HSE (RCC_D1CCIPR_CKPERSEL_1) 00938 #else 00939 #define LL_RCC_CLKP_CLKSOURCE_HSI (0x00000000U) 00940 #define LL_RCC_CLKP_CLKSOURCE_CSI (RCC_CDCCIPR_CKPERSEL_0) 00941 #define LL_RCC_CLKP_CLKSOURCE_HSE (RCC_CDCCIPR_CKPERSEL_1) 00942 #endif /* RCC_D1CCIPR_CKPERSEL */ 00943 /** 00944 * @} 00945 */ 00946 00947 /** @defgroup RCC_LL_EC_SPIx_CLKSOURCE Peripheral SPI clock source selection 00948 * @{ 00949 */ 00950 #if defined(RCC_D2CCIP1R_SPI123SEL) 00951 #define LL_RCC_SPI123_CLKSOURCE_PLL1Q LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, 0x00000000U) 00952 #define LL_RCC_SPI123_CLKSOURCE_PLL2P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, RCC_D2CCIP1R_SPI123SEL_0) 00953 #define LL_RCC_SPI123_CLKSOURCE_PLL3P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, RCC_D2CCIP1R_SPI123SEL_1) 00954 #define LL_RCC_SPI123_CLKSOURCE_I2S_CKIN LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, RCC_D2CCIP1R_SPI123SEL_0 | RCC_D2CCIP1R_SPI123SEL_1) 00955 #define LL_RCC_SPI123_CLKSOURCE_CLKP LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, RCC_D2CCIP1R_SPI123SEL_2) 00956 #else 00957 #define LL_RCC_SPI123_CLKSOURCE_PLL1Q LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI123SEL, RCC_CDCCIP1R_SPI123SEL_Pos, 0x00000000U) 00958 #define LL_RCC_SPI123_CLKSOURCE_PLL2P LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI123SEL, RCC_CDCCIP1R_SPI123SEL_Pos, RCC_CDCCIP1R_SPI123SEL_0) 00959 #define LL_RCC_SPI123_CLKSOURCE_PLL3P LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI123SEL, RCC_CDCCIP1R_SPI123SEL_Pos, RCC_CDCCIP1R_SPI123SEL_1) 00960 #define LL_RCC_SPI123_CLKSOURCE_I2S_CKIN LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI123SEL, RCC_CDCCIP1R_SPI123SEL_Pos, RCC_CDCCIP1R_SPI123SEL_0 | RCC_CDCCIP1R_SPI123SEL_1) 00961 #define LL_RCC_SPI123_CLKSOURCE_CLKP LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI123SEL, RCC_CDCCIP1R_SPI123SEL_Pos, RCC_CDCCIP1R_SPI123SEL_2) 00962 #endif /* RCC_D2CCIP1R_SPI123SEL */ 00963 #if defined(RCC_D2CCIP1R_SPI45SEL) 00964 #define LL_RCC_SPI45_CLKSOURCE_PCLK2 LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, 0x00000000U) 00965 #define LL_RCC_SPI45_CLKSOURCE_PLL2Q LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, RCC_D2CCIP1R_SPI45SEL_0) 00966 #define LL_RCC_SPI45_CLKSOURCE_PLL3Q LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, RCC_D2CCIP1R_SPI45SEL_1) 00967 #define LL_RCC_SPI45_CLKSOURCE_HSI LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, RCC_D2CCIP1R_SPI45SEL_0 | RCC_D2CCIP1R_SPI45SEL_1) 00968 #define LL_RCC_SPI45_CLKSOURCE_CSI LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, RCC_D2CCIP1R_SPI45SEL_2) 00969 #define LL_RCC_SPI45_CLKSOURCE_HSE LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, RCC_D2CCIP1R_SPI45SEL_0 | RCC_D2CCIP1R_SPI45SEL_2) 00970 #else 00971 #define LL_RCC_SPI45_CLKSOURCE_PCLK2 LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI45SEL, RCC_CDCCIP1R_SPI45SEL_Pos, 0x00000000U) 00972 #define LL_RCC_SPI45_CLKSOURCE_PLL2Q LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI45SEL, RCC_CDCCIP1R_SPI45SEL_Pos, RCC_CDCCIP1R_SPI45SEL_0) 00973 #define LL_RCC_SPI45_CLKSOURCE_PLL3Q LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI45SEL, RCC_CDCCIP1R_SPI45SEL_Pos, RCC_CDCCIP1R_SPI45SEL_1) 00974 #define LL_RCC_SPI45_CLKSOURCE_HSI LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI45SEL, RCC_CDCCIP1R_SPI45SEL_Pos, RCC_CDCCIP1R_SPI45SEL_0 | RCC_CDCCIP1R_SPI45SEL_1) 00975 #define LL_RCC_SPI45_CLKSOURCE_CSI LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI45SEL, RCC_CDCCIP1R_SPI45SEL_Pos, RCC_CDCCIP1R_SPI45SEL_2) 00976 #define LL_RCC_SPI45_CLKSOURCE_HSE LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI45SEL, RCC_CDCCIP1R_SPI45SEL_Pos, RCC_CDCCIP1R_SPI45SEL_0 | RCC_CDCCIP1R_SPI45SEL_2) 00977 #endif /* (RCC_D2CCIP1R_SPI45SEL */ 00978 #if defined(RCC_D3CCIPR_SPI6SEL) 00979 #define LL_RCC_SPI6_CLKSOURCE_PCLK4 LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, 0x00000000U) 00980 #define LL_RCC_SPI6_CLKSOURCE_PLL2Q LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, RCC_D3CCIPR_SPI6SEL_0) 00981 #define LL_RCC_SPI6_CLKSOURCE_PLL3Q LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, RCC_D3CCIPR_SPI6SEL_1) 00982 #define LL_RCC_SPI6_CLKSOURCE_HSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, RCC_D3CCIPR_SPI6SEL_0 | RCC_D3CCIPR_SPI6SEL_1) 00983 #define LL_RCC_SPI6_CLKSOURCE_CSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, RCC_D3CCIPR_SPI6SEL_2) 00984 #define LL_RCC_SPI6_CLKSOURCE_HSE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, RCC_D3CCIPR_SPI6SEL_0 | RCC_D3CCIPR_SPI6SEL_2) 00985 #else 00986 #define LL_RCC_SPI6_CLKSOURCE_PCLK4 LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_SPI6SEL, RCC_SRDCCIPR_SPI6SEL_Pos, 0x00000000U) 00987 #define LL_RCC_SPI6_CLKSOURCE_PLL2Q LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_SPI6SEL, RCC_SRDCCIPR_SPI6SEL_Pos, RCC_SRDCCIPR_SPI6SEL_0) 00988 #define LL_RCC_SPI6_CLKSOURCE_PLL3Q LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_SPI6SEL, RCC_SRDCCIPR_SPI6SEL_Pos, RCC_SRDCCIPR_SPI6SEL_1) 00989 #define LL_RCC_SPI6_CLKSOURCE_HSI LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_SPI6SEL, RCC_SRDCCIPR_SPI6SEL_Pos, RCC_SRDCCIPR_SPI6SEL_0 | RCC_SRDCCIPR_SPI6SEL_1) 00990 #define LL_RCC_SPI6_CLKSOURCE_CSI LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_SPI6SEL, RCC_SRDCCIPR_SPI6SEL_Pos, RCC_SRDCCIPR_SPI6SEL_2) 00991 #define LL_RCC_SPI6_CLKSOURCE_HSE LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_SPI6SEL, RCC_SRDCCIPR_SPI6SEL_Pos, RCC_SRDCCIPR_SPI6SEL_0 | RCC_SRDCCIPR_SPI6SEL_2) 00992 #define LL_RCC_SPI6_CLKSOURCE_I2S_CKIN LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_SPI6SEL, RCC_SRDCCIPR_SPI6SEL_Pos, RCC_SRDCCIPR_SPI6SEL_1 | RCC_SRDCCIPR_SPI6SEL_2) 00993 #endif /* RCC_D3CCIPR_SPI6SEL */ 00994 /** 00995 * @} 00996 */ 00997 00998 /** @defgroup RCC_LL_EC_SPDIF_CLKSOURCE Peripheral SPDIF clock source selection 00999 * @{ 01000 */ 01001 #if defined(RCC_D2CCIP1R_SPDIFSEL) 01002 #define LL_RCC_SPDIF_CLKSOURCE_PLL1Q (0x00000000U) 01003 #define LL_RCC_SPDIF_CLKSOURCE_PLL2R (RCC_D2CCIP1R_SPDIFSEL_0) 01004 #define LL_RCC_SPDIF_CLKSOURCE_PLL3R (RCC_D2CCIP1R_SPDIFSEL_1) 01005 #define LL_RCC_SPDIF_CLKSOURCE_HSI (RCC_D2CCIP1R_SPDIFSEL_0 | RCC_D2CCIP1R_SPDIFSEL_1) 01006 #else 01007 #define LL_RCC_SPDIF_CLKSOURCE_PLL1Q (0x00000000U) 01008 #define LL_RCC_SPDIF_CLKSOURCE_PLL2R (RCC_CDCCIP1R_SPDIFSEL_0) 01009 #define LL_RCC_SPDIF_CLKSOURCE_PLL3R (RCC_CDCCIP1R_SPDIFSEL_1) 01010 #define LL_RCC_SPDIF_CLKSOURCE_HSI (RCC_CDCCIP1R_SPDIFSEL_0 | RCC_CDCCIP1R_SPDIFSEL_1) 01011 #endif /* RCC_D2CCIP1R_SPDIFSEL */ 01012 /** 01013 * @} 01014 */ 01015 01016 #if defined(FDCAN1) || defined(FDCAN2) 01017 /** @defgroup RCC_LL_EC_FDCAN_CLKSOURCE Peripheral FDCAN clock source selection 01018 * @{ 01019 */ 01020 #if defined(RCC_D2CCIP1R_FDCANSEL) 01021 #define LL_RCC_FDCAN_CLKSOURCE_HSE (0x00000000U) 01022 #define LL_RCC_FDCAN_CLKSOURCE_PLL1Q (RCC_D2CCIP1R_FDCANSEL_0) 01023 #define LL_RCC_FDCAN_CLKSOURCE_PLL2Q (RCC_D2CCIP1R_FDCANSEL_1) 01024 #else 01025 #define LL_RCC_FDCAN_CLKSOURCE_HSE (0x00000000U) 01026 #define LL_RCC_FDCAN_CLKSOURCE_PLL1Q (RCC_CDCCIP1R_FDCANSEL_0) 01027 #define LL_RCC_FDCAN_CLKSOURCE_PLL2Q (RCC_CDCCIP1R_FDCANSEL_1) 01028 #endif /* RCC_D2CCIP1R_FDCANSEL */ 01029 /** 01030 * @} 01031 */ 01032 #endif /*FDCAN1 || FDCAN2*/ 01033 01034 /** @defgroup RCC_LL_EC_SWP_CLKSOURCE Peripheral SWP clock source selection 01035 * @{ 01036 */ 01037 #if defined(RCC_D2CCIP1R_SWPSEL) 01038 #define LL_RCC_SWP_CLKSOURCE_PCLK1 (0x00000000U) 01039 #define LL_RCC_SWP_CLKSOURCE_HSI (RCC_D2CCIP1R_SWPSEL) 01040 #else 01041 #define LL_RCC_SWP_CLKSOURCE_PCLK1 (0x00000000U) 01042 #define LL_RCC_SWP_CLKSOURCE_HSI (RCC_CDCCIP1R_SWPSEL) 01043 #endif /* RCC_D2CCIP1R_SWPSEL */ 01044 /** 01045 * @} 01046 */ 01047 01048 /** @defgroup RCC_LL_EC_ADC_CLKSOURCE Peripheral ADC clock source selection 01049 * @{ 01050 */ 01051 #if defined(RCC_D3CCIPR_ADCSEL) 01052 #define LL_RCC_ADC_CLKSOURCE_PLL2P (0x00000000U) 01053 #define LL_RCC_ADC_CLKSOURCE_PLL3R (RCC_D3CCIPR_ADCSEL_0) 01054 #define LL_RCC_ADC_CLKSOURCE_CLKP (RCC_D3CCIPR_ADCSEL_1) 01055 #else 01056 #define LL_RCC_ADC_CLKSOURCE_PLL2P (0x00000000U) 01057 #define LL_RCC_ADC_CLKSOURCE_PLL3R (RCC_SRDCCIPR_ADCSEL_0) 01058 #define LL_RCC_ADC_CLKSOURCE_CLKP (RCC_SRDCCIPR_ADCSEL_1) 01059 #endif /* RCC_D3CCIPR_ADCSEL */ 01060 /** 01061 * @} 01062 */ 01063 01064 /** @defgroup RCC_LL_EC_USARTx Peripheral USART get clock source 01065 * @{ 01066 */ 01067 #if defined (RCC_D2CCIP2R_USART16SEL) 01068 #define LL_RCC_USART16_CLKSOURCE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, 0x00000000U) 01069 #elif defined (RCC_D2CCIP2R_USART16910SEL) 01070 #define LL_RCC_USART16_CLKSOURCE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16910SEL, RCC_D2CCIP2R_USART16910SEL_Pos, 0x00000000U) 01071 /* alias*/ 01072 #define LL_RCC_USART16910_CLKSOURCE LL_RCC_USART16_CLKSOURCE 01073 #else 01074 #define LL_RCC_USART16_CLKSOURCE LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART16910SEL, RCC_CDCCIP2R_USART16910SEL_Pos, 0x00000000U) 01075 /* alias*/ 01076 #define LL_RCC_USART16910_CLKSOURCE LL_RCC_USART16_CLKSOURCE 01077 #endif /* RCC_D2CCIP2R_USART16SEL */ 01078 #if defined (RCC_D2CCIP2R_USART28SEL) 01079 #define LL_RCC_USART234578_CLKSOURCE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, 0x00000000U) 01080 #else 01081 #define LL_RCC_USART234578_CLKSOURCE LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_USART234578SEL, RCC_CDCCIP2R_USART234578SEL_Pos, 0x00000000U) 01082 #endif /* RCC_D2CCIP2R_USART28SEL */ 01083 /** 01084 * @} 01085 */ 01086 01087 /** @defgroup RCC_LL_EC_LPUARTx Peripheral LPUART get clock source 01088 * @{ 01089 */ 01090 #if defined(RCC_D3CCIPR_LPUART1SEL) 01091 #define LL_RCC_LPUART1_CLKSOURCE RCC_D3CCIPR_LPUART1SEL 01092 #else 01093 #define LL_RCC_LPUART1_CLKSOURCE RCC_SRDCCIPR_LPUART1SEL 01094 #endif /* RCC_D3CCIPR_LPUART1SEL */ 01095 /** 01096 * @} 01097 */ 01098 01099 /** @defgroup RCC_LL_EC_I2Cx Peripheral I2C get clock source 01100 * @{ 01101 */ 01102 #if defined(RCC_D2CCIP2R_I2C123SEL) 01103 #define LL_RCC_I2C123_CLKSOURCE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C123SEL, RCC_D2CCIP2R_I2C123SEL_Pos, 0x00000000U) 01104 /* alias */ 01105 #define LL_RCC_I2C1235_CLKSOURCE LL_RCC_I2C123_CLKSOURCE 01106 #elif defined(RCC_D2CCIP2R_I2C1235SEL) 01107 #define LL_RCC_I2C1235_CLKSOURCE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C1235SEL, RCC_D2CCIP2R_I2C1235SEL_Pos, 0x00000000U) 01108 /* alias */ 01109 #define LL_RCC_I2C123_CLKSOURCE LL_RCC_I2C1235_CLKSOURCE 01110 #else 01111 #define LL_RCC_I2C123_CLKSOURCE LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_I2C123SEL, RCC_CDCCIP2R_I2C123SEL_Pos, 0x00000000U) 01112 /* alias */ 01113 #define LL_RCC_I2C1235_CLKSOURCE LL_RCC_I2C123_CLKSOURCE 01114 #endif /* RCC_D2CCIP2R_I2C123SEL */ 01115 #if defined(RCC_D3CCIPR_I2C4SEL) 01116 #define LL_RCC_I2C4_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_I2C4SEL, RCC_D3CCIPR_I2C4SEL_Pos, 0x00000000U) 01117 #else 01118 #define LL_RCC_I2C4_CLKSOURCE LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_I2C4SEL, RCC_SRDCCIPR_I2C4SEL_Pos, 0x00000000U) 01119 #endif /* RCC_D3CCIPR_I2C4SEL */ 01120 /** 01121 * @} 01122 */ 01123 01124 /** @defgroup RCC_LL_EC_LPTIMx Peripheral LPTIM get clock source 01125 * @{ 01126 */ 01127 #if defined(RCC_D2CCIP2R_LPTIM1SEL) 01128 #define LL_RCC_LPTIM1_CLKSOURCE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, 0x00000000U) 01129 #else 01130 #define LL_RCC_LPTIM1_CLKSOURCE LL_CLKSOURCE(CDCCIP2, RCC_CDCCIP2R_LPTIM1SEL, RCC_CDCCIP2R_LPTIM1SEL_Pos, 0x00000000U) 01131 #endif /* RCC_D2CCIP2R_LPTIM1SEL) */ 01132 #if defined(RCC_D3CCIPR_LPTIM2SEL) 01133 #define LL_RCC_LPTIM2_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, 0x00000000U) 01134 #else 01135 #define LL_RCC_LPTIM2_CLKSOURCE LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM2SEL, RCC_SRDCCIPR_LPTIM2SEL_Pos, 0x00000000U) 01136 #endif /* RCC_D3CCIPR_LPTIM2SEL */ 01137 #if defined(RCC_D3CCIPR_LPTIM345SEL) 01138 #define LL_RCC_LPTIM345_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, 0x00000000U) 01139 #else 01140 #define LL_RCC_LPTIM345_CLKSOURCE LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_LPTIM3SEL, RCC_SRDCCIPR_LPTIM3SEL_Pos, 0x00000000U) 01141 #define LL_RCC_LPTIM3_CLKSOURCE LL_RCC_LPTIM345_CLKSOURCE /* alias */ 01142 #endif /* RCC_D3CCIPR_LPTIM345SEL */ 01143 /** 01144 * @} 01145 */ 01146 01147 /** @defgroup RCC_LL_EC_SAIx Peripheral SAI get clock source 01148 * @{ 01149 */ 01150 #if defined(RCC_D2CCIP1R_SAI1SEL) 01151 #define LL_RCC_SAI1_CLKSOURCE LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, 0x00000000U) 01152 #else 01153 #define LL_RCC_SAI1_CLKSOURCE LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI1SEL, RCC_CDCCIP1R_SAI1SEL_Pos, 0x00000000U) 01154 #endif /* RCC_D2CCIP1R_SAI1SEL */ 01155 #if defined(RCC_D2CCIP1R_SAI23SEL) 01156 #define LL_RCC_SAI23_CLKSOURCE LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, 0x00000000U) 01157 #endif /* RCC_D2CCIP1R_SAI23SEL */ 01158 #if defined(RCC_CDCCIP1R_SAI2ASEL) 01159 #define LL_RCC_SAI2A_CLKSOURCE LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2ASEL, RCC_CDCCIP1R_SAI2ASEL_Pos, 0x00000000U) 01160 #endif /* RCC_CDCCIP1R_SAI2ASEL */ 01161 #if defined(RCC_CDCCIP1R_SAI2BSEL) 01162 #define LL_RCC_SAI2B_CLKSOURCE LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SAI2BSEL, RCC_CDCCIP1R_SAI2BSEL_Pos, 0x00000000U) 01163 #endif /* RCC_CDCCIP1R_SAI2BSEL */ 01164 #if defined(RCC_D3CCIPR_SAI4ASEL) 01165 #define LL_RCC_SAI4A_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, 0x00000000U) 01166 #endif /* RCC_D3CCIPR_SAI4ASEL */ 01167 #if defined(RCC_D3CCIPR_SAI4BSEL) 01168 #define LL_RCC_SAI4B_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, 0x00000000U) 01169 #endif /* RCC_D3CCIPR_SAI4BSEL */ 01170 /** 01171 * @} 01172 */ 01173 01174 /** @defgroup RCC_LL_EC_SDMMC Peripheral SDMMC get clock source 01175 * @{ 01176 */ 01177 #if defined(RCC_D1CCIPR_SDMMCSEL) 01178 #define LL_RCC_SDMMC_CLKSOURCE RCC_D1CCIPR_SDMMCSEL 01179 #else 01180 #define LL_RCC_SDMMC_CLKSOURCE RCC_CDCCIPR_SDMMCSEL 01181 #endif /* RCC_D1CCIPR_SDMMCSEL */ 01182 /** 01183 * @} 01184 */ 01185 01186 /** @defgroup RCC_LL_EC_RNG Peripheral RNG get clock source 01187 * @{ 01188 */ 01189 #if (RCC_D2CCIP2R_RNGSEL) 01190 #define LL_RCC_RNG_CLKSOURCE RCC_D2CCIP2R_RNGSEL 01191 #else 01192 #define LL_RCC_RNG_CLKSOURCE RCC_CDCCIP2R_RNGSEL 01193 #endif /* RCC_D2CCIP2R_RNGSEL */ 01194 /** 01195 * @} 01196 */ 01197 01198 /** @defgroup RCC_LL_EC_USB Peripheral USB get clock source 01199 * @{ 01200 */ 01201 #if (RCC_D2CCIP2R_USBSEL) 01202 #define LL_RCC_USB_CLKSOURCE RCC_D2CCIP2R_USBSEL 01203 #else 01204 #define LL_RCC_USB_CLKSOURCE RCC_CDCCIP2R_USBSEL 01205 #endif /* RCC_D2CCIP2R_USBSEL */ 01206 /** 01207 * @} 01208 */ 01209 01210 /** @defgroup RCC_LL_EC_CEC Peripheral CEC get clock source 01211 * @{ 01212 */ 01213 #if (RCC_D2CCIP2R_CECSEL) 01214 #define LL_RCC_CEC_CLKSOURCE RCC_D2CCIP2R_CECSEL 01215 #else 01216 #define LL_RCC_CEC_CLKSOURCE RCC_CDCCIP2R_CECSEL 01217 #endif /* RCC_D2CCIP2R_CECSEL */ 01218 /** 01219 * @} 01220 */ 01221 01222 #if defined(DSI) 01223 /** @defgroup RCC_LL_EC_DSI Peripheral DSI get clock source 01224 * @{ 01225 */ 01226 #define LL_RCC_DSI_CLKSOURCE RCC_D1CCIPR_DSISEL 01227 /** 01228 * @} 01229 */ 01230 #endif /* DSI */ 01231 01232 /** @defgroup RCC_LL_EC_DFSDM Peripheral DFSDM get clock source 01233 * @{ 01234 */ 01235 #if defined(RCC_D2CCIP1R_DFSDM1SEL) 01236 #define LL_RCC_DFSDM1_CLKSOURCE RCC_D2CCIP1R_DFSDM1SEL 01237 #else 01238 #define LL_RCC_DFSDM1_CLKSOURCE RCC_CDCCIP1R_DFSDM1SEL 01239 #endif /* RCC_D2CCIP1R_DFSDM1SEL */ 01240 /** 01241 * @} 01242 */ 01243 01244 #if defined(DFSDM2_BASE) 01245 /** @defgroup RCC_LL_EC_DFSDM2 Peripheral DFSDM2 get clock source 01246 * @{ 01247 */ 01248 #define LL_RCC_DFSDM2_CLKSOURCE RCC_SRDCCIPR_DFSDM2SEL 01249 /** 01250 * @} 01251 */ 01252 #endif /* DFSDM2_BASE */ 01253 01254 01255 01256 /** @defgroup RCC_LL_EC_FMC Peripheral FMC get clock source 01257 * @{ 01258 */ 01259 #if defined(RCC_D1CCIPR_FMCSEL) 01260 #define LL_RCC_FMC_CLKSOURCE RCC_D1CCIPR_FMCSEL 01261 #else 01262 #define LL_RCC_FMC_CLKSOURCE RCC_CDCCIPR_FMCSEL 01263 #endif 01264 /** 01265 * @} 01266 */ 01267 01268 #if defined(QUADSPI) 01269 /** @defgroup RCC_LL_EC_QSPI Peripheral QSPI get clock source 01270 * @{ 01271 */ 01272 #define LL_RCC_QSPI_CLKSOURCE RCC_D1CCIPR_QSPISEL 01273 /** 01274 * @} 01275 */ 01276 #endif /* QUADSPI */ 01277 01278 #if defined(OCTOSPI1) || defined(OCTOSPI2) 01279 /** @defgroup RCC_LL_EC_OSPI Peripheral OSPI get clock source 01280 * @{ 01281 */ 01282 #if defined(RCC_CDCCIPR_OCTOSPISEL) 01283 #define LL_RCC_OSPI_CLKSOURCE RCC_CDCCIPR_OCTOSPISEL 01284 #else 01285 #define LL_RCC_OSPI_CLKSOURCE RCC_D1CCIPR_OCTOSPISEL 01286 #endif /* RCC_CDCCIPR_OCTOSPISEL */ 01287 /** 01288 * @} 01289 */ 01290 #endif /* OCTOSPI1 || OCTOSPI2 */ 01291 01292 /** @defgroup RCC_LL_EC_CLKP Peripheral CLKP get clock source 01293 * @{ 01294 */ 01295 #if defined(RCC_D1CCIPR_CKPERSEL) 01296 #define LL_RCC_CLKP_CLKSOURCE RCC_D1CCIPR_CKPERSEL 01297 #else 01298 #define LL_RCC_CLKP_CLKSOURCE RCC_CDCCIPR_CKPERSEL 01299 #endif /* RCC_D1CCIPR_CKPERSEL */ 01300 /** 01301 * @} 01302 */ 01303 01304 /** @defgroup RCC_LL_EC_SPIx Peripheral SPI get clock source 01305 * @{ 01306 */ 01307 #if defined(RCC_D2CCIP1R_SPI123SEL) 01308 #define LL_RCC_SPI123_CLKSOURCE LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, 0x00000000U) 01309 #else 01310 #define LL_RCC_SPI123_CLKSOURCE LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI123SEL, RCC_CDCCIP1R_SPI123SEL_Pos, 0x00000000U) 01311 #endif /* RCC_D2CCIP1R_SPI123SEL */ 01312 #if defined(RCC_D2CCIP1R_SPI45SEL) 01313 #define LL_RCC_SPI45_CLKSOURCE LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, 0x00000000U) 01314 #else 01315 #define LL_RCC_SPI45_CLKSOURCE LL_CLKSOURCE(CDCCIP1, RCC_CDCCIP1R_SPI45SEL, RCC_CDCCIP1R_SPI45SEL_Pos, 0x00000000U) 01316 #endif /* RCC_D2CCIP1R_SPI45SEL */ 01317 #if defined(RCC_D3CCIPR_SPI6SEL) 01318 #define LL_RCC_SPI6_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, 0x00000000U) 01319 #else 01320 #define LL_RCC_SPI6_CLKSOURCE LL_CLKSOURCE(SRDCCIP, RCC_SRDCCIPR_SPI6SEL, RCC_SRDCCIPR_SPI6SEL_Pos, 0x00000000U) 01321 #endif /* RCC_D3CCIPR_SPI6SEL */ 01322 /** 01323 * @} 01324 */ 01325 01326 /** @defgroup RCC_LL_EC_SPDIF Peripheral SPDIF get clock source 01327 * @{ 01328 */ 01329 #if defined(RCC_D2CCIP1R_SPDIFSEL) 01330 #define LL_RCC_SPDIF_CLKSOURCE RCC_D2CCIP1R_SPDIFSEL 01331 #else 01332 #define LL_RCC_SPDIF_CLKSOURCE RCC_CDCCIP1R_SPDIFSEL 01333 #endif /* RCC_D2CCIP1R_SPDIFSEL */ 01334 /** 01335 * @} 01336 */ 01337 01338 #if defined(FDCAN1) || defined(FDCAN2) 01339 /** @defgroup RCC_LL_EC_FDCAN Peripheral FDCAN get clock source 01340 * @{ 01341 */ 01342 #if defined(RCC_D2CCIP1R_FDCANSEL) 01343 #define LL_RCC_FDCAN_CLKSOURCE RCC_D2CCIP1R_FDCANSEL 01344 #else 01345 #define LL_RCC_FDCAN_CLKSOURCE RCC_CDCCIP1R_FDCANSEL 01346 #endif 01347 /** 01348 * @} 01349 */ 01350 #endif /*FDCAN1 || FDCAN2*/ 01351 01352 /** @defgroup RCC_LL_EC_SWP Peripheral SWP get clock source 01353 * @{ 01354 */ 01355 #if defined(RCC_D2CCIP1R_SWPSEL) 01356 #define LL_RCC_SWP_CLKSOURCE RCC_D2CCIP1R_SWPSEL 01357 #else 01358 #define LL_RCC_SWP_CLKSOURCE RCC_CDCCIP1R_SWPSEL 01359 #endif /* RCC_D2CCIP1R_SWPSEL */ 01360 /** 01361 * @} 01362 */ 01363 01364 /** @defgroup RCC_LL_EC_ADC Peripheral ADC get clock source 01365 * @{ 01366 */ 01367 #if defined(RCC_D3CCIPR_ADCSEL) 01368 #define LL_RCC_ADC_CLKSOURCE RCC_D3CCIPR_ADCSEL 01369 #else 01370 #define LL_RCC_ADC_CLKSOURCE RCC_SRDCCIPR_ADCSEL 01371 #endif /* RCC_D3CCIPR_ADCSEL */ 01372 /** 01373 * @} 01374 */ 01375 01376 /** @defgroup RCC_LL_EC_RTC_CLKSOURCE RTC clock source selection 01377 * @{ 01378 */ 01379 #define LL_RCC_RTC_CLKSOURCE_NONE (uint32_t)(0x00000000U) 01380 #define LL_RCC_RTC_CLKSOURCE_LSE (uint32_t)(RCC_BDCR_RTCSEL_0) 01381 #define LL_RCC_RTC_CLKSOURCE_LSI (uint32_t)(RCC_BDCR_RTCSEL_1) 01382 #define LL_RCC_RTC_CLKSOURCE_HSE (uint32_t)(RCC_BDCR_RTCSEL_0 | RCC_BDCR_RTCSEL_1) 01383 /** 01384 * @} 01385 */ 01386 01387 /** @defgroup RCC_LL_EC_TIM_CLKPRESCALER Timers clocks prescalers selection 01388 * @{ 01389 */ 01390 #define LL_RCC_TIM_PRESCALER_TWICE (uint32_t)(0x00000000U) 01391 #define LL_RCC_TIM_PRESCALER_FOUR_TIMES (uint32_t)(RCC_CFGR_TIMPRE) 01392 /** 01393 * @} 01394 */ 01395 01396 #if defined(HRTIM1) 01397 /** @defgroup RCC_LL_EC_HRTIM_CLKSOURCE High Resolution Timers clock selection 01398 * @{ 01399 */ 01400 #define LL_RCC_HRTIM_CLKSOURCE_TIM (uint32_t)(0x00000000U) /* HRTIM Clock source is same as other timers */ 01401 #define LL_RCC_HRTIM_CLKSOURCE_CPU (uint32_t)(RCC_CFGR_HRTIMSEL) /* HRTIM Clock source is the CPU clock */ 01402 /** 01403 * @} 01404 */ 01405 #endif /* HRTIM1 */ 01406 01407 /** @defgroup RCC_LL_EC_PLLSOURCE All PLLs entry clock source 01408 * @{ 01409 */ 01410 #define LL_RCC_PLLSOURCE_HSI RCC_PLLCKSELR_PLLSRC_HSI 01411 #define LL_RCC_PLLSOURCE_CSI RCC_PLLCKSELR_PLLSRC_CSI 01412 #define LL_RCC_PLLSOURCE_HSE RCC_PLLCKSELR_PLLSRC_HSE 01413 #define LL_RCC_PLLSOURCE_NONE RCC_PLLCKSELR_PLLSRC_NONE 01414 /** 01415 * @} 01416 */ 01417 01418 /** @defgroup RCC_LL_EC_PLLINPUTRANGE All PLLs input range 01419 * @{ 01420 */ 01421 #define LL_RCC_PLLINPUTRANGE_1_2 (uint32_t)(0x00000000U) 01422 #define LL_RCC_PLLINPUTRANGE_2_4 (uint32_t)(0x00000001) 01423 #define LL_RCC_PLLINPUTRANGE_4_8 (uint32_t)(0x00000002) 01424 #define LL_RCC_PLLINPUTRANGE_8_16 (uint32_t)(0x00000003) 01425 /** 01426 * @} 01427 */ 01428 01429 /** @defgroup RCC_LL_EC_PLLVCORANGE All PLLs VCO range 01430 * @{ 01431 */ 01432 #define LL_RCC_PLLVCORANGE_WIDE (uint32_t)(0x00000000U) /* VCO output range: 192 to 836 MHz OR 128 to 544 MHz (*) */ 01433 #define LL_RCC_PLLVCORANGE_MEDIUM (uint32_t)(0x00000001) /* VCO output range: 150 to 420 MHz */ 01434 /** 01435 * (*) : For stm32h7a3xx and stm32h7b3xx family lines. 01436 * @} 01437 */ 01438 01439 /** 01440 * @} 01441 */ 01442 01443 /* Exported macro ------------------------------------------------------------*/ 01444 /** @defgroup RCC_LL_Exported_Macros RCC Exported Macros 01445 * @{ 01446 */ 01447 01448 /** @defgroup RCC_LL_EM_WRITE_READ Common Write and read registers Macros 01449 * @{ 01450 */ 01451 01452 /** 01453 * @brief Write a value in RCC register 01454 * @param __REG__ Register to be written 01455 * @param __VALUE__ Value to be written in the register 01456 * @retval None 01457 */ 01458 #define LL_RCC_WriteReg(__REG__, __VALUE__) WRITE_REG(RCC->__REG__, (__VALUE__)) 01459 01460 /** 01461 * @brief Read a value in RCC register 01462 * @param __REG__ Register to be read 01463 * @retval Register value 01464 */ 01465 #define LL_RCC_ReadReg(__REG__) READ_REG(RCC->__REG__) 01466 /** 01467 * @} 01468 */ 01469 01470 /** @defgroup RCC_LL_EM_CALC_FREQ Calculate frequencies 01471 * @{ 01472 */ 01473 01474 /** 01475 * @brief Helper macro to calculate the SYSCLK frequency 01476 * @param __SYSINPUTCLKFREQ__ Frequency of the input of sys_ck (based on HSE/CSI/HSI/PLL1P) 01477 * @param __SYSPRESCALER__ This parameter can be one of the following values: 01478 * @arg @ref LL_RCC_SYSCLK_DIV_1 01479 * @arg @ref LL_RCC_SYSCLK_DIV_2 01480 * @arg @ref LL_RCC_SYSCLK_DIV_4 01481 * @arg @ref LL_RCC_SYSCLK_DIV_8 01482 * @arg @ref LL_RCC_SYSCLK_DIV_16 01483 * @arg @ref LL_RCC_SYSCLK_DIV_64 01484 * @arg @ref LL_RCC_SYSCLK_DIV_128 01485 * @arg @ref LL_RCC_SYSCLK_DIV_256 01486 * @arg @ref LL_RCC_SYSCLK_DIV_512 01487 * @retval SYSCLK clock frequency (in Hz) 01488 */ 01489 #if defined(RCC_D1CFGR_D1CPRE) 01490 #define LL_RCC_CALC_SYSCLK_FREQ(__SYSINPUTCLKFREQ__, __SYSPRESCALER__) ((__SYSINPUTCLKFREQ__) >> ((LL_RCC_PrescTable[((__SYSPRESCALER__) & RCC_D1CFGR_D1CPRE) >> RCC_D1CFGR_D1CPRE_Pos]) & 0x1FU)) 01491 #else 01492 #define LL_RCC_CALC_SYSCLK_FREQ(__SYSINPUTCLKFREQ__, __SYSPRESCALER__) ((__SYSINPUTCLKFREQ__) >> ((LL_RCC_PrescTable[((__SYSPRESCALER__) & RCC_CDCFGR1_CDCPRE) >> RCC_CDCFGR1_CDCPRE_Pos]) & 0x1FU)) 01493 #endif /* RCC_D1CFGR_D1CPRE */ 01494 01495 /** 01496 * @brief Helper macro to calculate the HCLK frequency 01497 * @param __SYSCLKFREQ__ SYSCLK frequency. 01498 * @param __HPRESCALER__ This parameter can be one of the following values: 01499 * @arg @ref LL_RCC_AHB_DIV_1 01500 * @arg @ref LL_RCC_AHB_DIV_2 01501 * @arg @ref LL_RCC_AHB_DIV_4 01502 * @arg @ref LL_RCC_AHB_DIV_8 01503 * @arg @ref LL_RCC_AHB_DIV_16 01504 * @arg @ref LL_RCC_AHB_DIV_64 01505 * @arg @ref LL_RCC_AHB_DIV_128 01506 * @arg @ref LL_RCC_AHB_DIV_256 01507 * @arg @ref LL_RCC_AHB_DIV_512 01508 * @retval HCLK clock frequency (in Hz) 01509 */ 01510 #if defined(RCC_D1CFGR_HPRE) 01511 #define LL_RCC_CALC_HCLK_FREQ(__SYSCLKFREQ__, __HPRESCALER__) ((__SYSCLKFREQ__) >> ((LL_RCC_PrescTable[((__HPRESCALER__) & RCC_D1CFGR_HPRE) >> RCC_D1CFGR_HPRE_Pos]) & 0x1FU)) 01512 #else 01513 #define LL_RCC_CALC_HCLK_FREQ(__SYSCLKFREQ__, __HPRESCALER__) ((__SYSCLKFREQ__) >> ((LL_RCC_PrescTable[((__HPRESCALER__) & RCC_CDCFGR1_HPRE) >> RCC_CDCFGR1_HPRE_Pos]) & 0x1FU)) 01514 #endif /* RCC_D1CFGR_HPRE */ 01515 01516 /** 01517 * @brief Helper macro to calculate the PCLK1 frequency (ABP1) 01518 * @param __HCLKFREQ__ HCLK frequency 01519 * @param __APB1PRESCALER__ This parameter can be one of the following values: 01520 * @arg @ref LL_RCC_APB1_DIV_1 01521 * @arg @ref LL_RCC_APB1_DIV_2 01522 * @arg @ref LL_RCC_APB1_DIV_4 01523 * @arg @ref LL_RCC_APB1_DIV_8 01524 * @arg @ref LL_RCC_APB1_DIV_16 01525 * @retval PCLK1 clock frequency (in Hz) 01526 */ 01527 #if defined(RCC_D2CFGR_D2PPRE1) 01528 #define LL_RCC_CALC_PCLK1_FREQ(__HCLKFREQ__, __APB1PRESCALER__) ((__HCLKFREQ__) >> ((LL_RCC_PrescTable[((__APB1PRESCALER__) & RCC_D2CFGR_D2PPRE1) >> RCC_D2CFGR_D2PPRE1_Pos]) & 0x1FU)) 01529 #else 01530 #define LL_RCC_CALC_PCLK1_FREQ(__HCLKFREQ__, __APB1PRESCALER__) ((__HCLKFREQ__) >> ((LL_RCC_PrescTable[((__APB1PRESCALER__) & RCC_CDCFGR2_CDPPRE1) >> RCC_CDCFGR2_CDPPRE1_Pos]) & 0x1FU)) 01531 #endif /* RCC_D2CFGR_D2PPRE1 */ 01532 01533 /** 01534 * @brief Helper macro to calculate the PCLK2 frequency (ABP2) 01535 * @param __HCLKFREQ__ HCLK frequency 01536 * @param __APB2PRESCALER__ This parameter can be one of the following values: 01537 * @arg @ref LL_RCC_APB2_DIV_1 01538 * @arg @ref LL_RCC_APB2_DIV_2 01539 * @arg @ref LL_RCC_APB2_DIV_4 01540 * @arg @ref LL_RCC_APB2_DIV_8 01541 * @arg @ref LL_RCC_APB2_DIV_16 01542 * @retval PCLK2 clock frequency (in Hz) 01543 */ 01544 #if defined(RCC_D2CFGR_D2PPRE2) 01545 #define LL_RCC_CALC_PCLK2_FREQ(__HCLKFREQ__, __APB2PRESCALER__) ((__HCLKFREQ__) >> ((LL_RCC_PrescTable[((__APB2PRESCALER__) & RCC_D2CFGR_D2PPRE2) >> RCC_D2CFGR_D2PPRE2_Pos]) & 0x1FU)) 01546 #else 01547 #define LL_RCC_CALC_PCLK2_FREQ(__HCLKFREQ__, __APB2PRESCALER__) ((__HCLKFREQ__) >> ((LL_RCC_PrescTable[((__APB2PRESCALER__) & RCC_CDCFGR2_CDPPRE2) >> RCC_CDCFGR2_CDPPRE2_Pos]) & 0x1FU)) 01548 #endif /* RCC_D2CFGR_D2PPRE2 */ 01549 01550 /** 01551 * @brief Helper macro to calculate the PCLK3 frequency (APB3) 01552 * @param __HCLKFREQ__ HCLK frequency 01553 * @param __APB3PRESCALER__ This parameter can be one of the following values: 01554 * @arg @ref LL_RCC_APB3_DIV_1 01555 * @arg @ref LL_RCC_APB3_DIV_2 01556 * @arg @ref LL_RCC_APB3_DIV_4 01557 * @arg @ref LL_RCC_APB3_DIV_8 01558 * @arg @ref LL_RCC_APB3_DIV_16 01559 * @retval PCLK1 clock frequency (in Hz) 01560 */ 01561 #if defined(RCC_D1CFGR_D1PPRE) 01562 #define LL_RCC_CALC_PCLK3_FREQ(__HCLKFREQ__, __APB3PRESCALER__) ((__HCLKFREQ__) >> ((LL_RCC_PrescTable[((__APB3PRESCALER__) & RCC_D1CFGR_D1PPRE) >> RCC_D1CFGR_D1PPRE_Pos]) & 0x1FU)) 01563 #else 01564 #define LL_RCC_CALC_PCLK3_FREQ(__HCLKFREQ__, __APB3PRESCALER__) ((__HCLKFREQ__) >> ((LL_RCC_PrescTable[((__APB3PRESCALER__) & RCC_CDCFGR1_CDPPRE) >> RCC_CDCFGR1_CDPPRE_Pos]) & 0x1FU)) 01565 #endif /* RCC_D1CFGR_D1PPRE */ 01566 01567 /** 01568 * @brief Helper macro to calculate the PCLK4 frequency (ABP4) 01569 * @param __HCLKFREQ__ HCLK frequency 01570 * @param __APB4PRESCALER__ This parameter can be one of the following values: 01571 * @arg @ref LL_RCC_APB4_DIV_1 01572 * @arg @ref LL_RCC_APB4_DIV_2 01573 * @arg @ref LL_RCC_APB4_DIV_4 01574 * @arg @ref LL_RCC_APB4_DIV_8 01575 * @arg @ref LL_RCC_APB4_DIV_16 01576 * @retval PCLK1 clock frequency (in Hz) 01577 */ 01578 #if defined(RCC_D3CFGR_D3PPRE) 01579 #define LL_RCC_CALC_PCLK4_FREQ(__HCLKFREQ__, __APB4PRESCALER__) ((__HCLKFREQ__) >> ((LL_RCC_PrescTable[((__APB4PRESCALER__) & RCC_D3CFGR_D3PPRE) >> RCC_D3CFGR_D3PPRE_Pos]) & 0x1FU)) 01580 #else 01581 #define LL_RCC_CALC_PCLK4_FREQ(__HCLKFREQ__, __APB4PRESCALER__) ((__HCLKFREQ__) >> ((LL_RCC_PrescTable[((__APB4PRESCALER__) & RCC_SRDCFGR_SRDPPRE) >> RCC_SRDCFGR_SRDPPRE_Pos]) & 0x1FU)) 01582 #endif /* RCC_D3CFGR_D3PPRE */ 01583 01584 /** 01585 * @} 01586 */ 01587 01588 #if defined(USE_FULL_LL_DRIVER) 01589 /** @defgroup RCC_LL_EC_PERIPH_FREQUENCY Peripheral clock frequency 01590 * @{ 01591 */ 01592 #define LL_RCC_PERIPH_FREQUENCY_NO 0x00000000U /*!< No clock enabled for the peripheral */ 01593 #define LL_RCC_PERIPH_FREQUENCY_NA 0xFFFFFFFFU /*!< Frequency cannot be provided as external clock */ 01594 /** 01595 * @} 01596 */ 01597 #endif /* USE_FULL_LL_DRIVER */ 01598 01599 /** 01600 * @} 01601 */ 01602 01603 /* Exported functions --------------------------------------------------------*/ 01604 /** @defgroup RCC_LL_Exported_Functions RCC Exported Functions 01605 * @{ 01606 */ 01607 01608 /** @defgroup RCC_LL_EF_HSE HSE 01609 * @{ 01610 */ 01611 01612 /** 01613 * @brief Enable the Clock Security System. 01614 * @note Once HSE Clock Security System is enabled it cannot be changed anymore unless 01615 * a reset occurs or system enter in standby mode. 01616 * @rmtoll CR CSSHSEON LL_RCC_HSE_EnableCSS 01617 * @retval None 01618 */ 01619 __STATIC_INLINE void LL_RCC_HSE_EnableCSS(void) 01620 { 01621 SET_BIT(RCC->CR, RCC_CR_CSSHSEON); 01622 } 01623 01624 /** 01625 * @brief Enable HSE external oscillator (HSE Bypass) 01626 * @rmtoll CR HSEBYP LL_RCC_HSE_EnableBypass 01627 * @retval None 01628 */ 01629 __STATIC_INLINE void LL_RCC_HSE_EnableBypass(void) 01630 { 01631 SET_BIT(RCC->CR, RCC_CR_HSEBYP); 01632 } 01633 01634 /** 01635 * @brief Disable HSE external oscillator (HSE Bypass) 01636 * @rmtoll CR HSEBYP LL_RCC_HSE_DisableBypass 01637 * @retval None 01638 */ 01639 __STATIC_INLINE void LL_RCC_HSE_DisableBypass(void) 01640 { 01641 CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); 01642 } 01643 01644 #if defined(RCC_CR_HSEEXT) 01645 /** 01646 * @brief Select the Analog HSE external clock type in Bypass mode 01647 * @rmtoll CR HSEEXT LL_RCC_HSE_SelectAnalogClock 01648 * @retval None 01649 */ 01650 __STATIC_INLINE void LL_RCC_HSE_SelectAnalogClock(void) 01651 { 01652 CLEAR_BIT(RCC->CR, RCC_CR_HSEEXT); 01653 } 01654 01655 /** 01656 * @brief Select the Digital HSE external clock type in Bypass mode 01657 * @rmtoll CR HSEEXT LL_RCC_HSE_SelectDigitalClock 01658 * @retval None 01659 */ 01660 __STATIC_INLINE void LL_RCC_HSE_SelectDigitalClock(void) 01661 { 01662 SET_BIT(RCC->CR, RCC_CR_HSEEXT); 01663 } 01664 #endif /* RCC_CR_HSEEXT */ 01665 01666 /** 01667 * @brief Enable HSE crystal oscillator (HSE ON) 01668 * @rmtoll CR HSEON LL_RCC_HSE_Enable 01669 * @retval None 01670 */ 01671 __STATIC_INLINE void LL_RCC_HSE_Enable(void) 01672 { 01673 SET_BIT(RCC->CR, RCC_CR_HSEON); 01674 } 01675 01676 /** 01677 * @brief Disable HSE crystal oscillator (HSE ON) 01678 * @rmtoll CR HSEON LL_RCC_HSE_Disable 01679 * @retval None 01680 */ 01681 __STATIC_INLINE void LL_RCC_HSE_Disable(void) 01682 { 01683 CLEAR_BIT(RCC->CR, RCC_CR_HSEON); 01684 } 01685 01686 /** 01687 * @brief Check if HSE oscillator Ready 01688 * @rmtoll CR HSERDY LL_RCC_HSE_IsReady 01689 * @retval State of bit (1 or 0). 01690 */ 01691 __STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void) 01692 { 01693 return ((READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY))?1UL:0UL); 01694 } 01695 01696 /** 01697 * @} 01698 */ 01699 01700 /** @defgroup RCC_LL_EF_HSI HSI 01701 * @{ 01702 */ 01703 01704 /** 01705 * @brief Enable HSI oscillator 01706 * @rmtoll CR HSION LL_RCC_HSI_Enable 01707 * @retval None 01708 */ 01709 __STATIC_INLINE void LL_RCC_HSI_Enable(void) 01710 { 01711 SET_BIT(RCC->CR, RCC_CR_HSION); 01712 } 01713 01714 /** 01715 * @brief Disable HSI oscillator 01716 * @rmtoll CR HSION LL_RCC_HSI_Disable 01717 * @retval None 01718 */ 01719 __STATIC_INLINE void LL_RCC_HSI_Disable(void) 01720 { 01721 CLEAR_BIT(RCC->CR, RCC_CR_HSION); 01722 } 01723 01724 /** 01725 * @brief Check if HSI clock is ready 01726 * @rmtoll CR HSIRDY LL_RCC_HSI_IsReady 01727 * @retval State of bit (1 or 0). 01728 */ 01729 __STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void) 01730 { 01731 return ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY))?1UL:0UL); 01732 } 01733 01734 /** 01735 * @brief Check if HSI new divider applied and ready 01736 * @rmtoll CR HSIDIVF LL_RCC_HSI_IsDividerReady 01737 * @retval State of bit (1 or 0). 01738 */ 01739 __STATIC_INLINE uint32_t LL_RCC_HSI_IsDividerReady(void) 01740 { 01741 return ((READ_BIT(RCC->CR, RCC_CR_HSIDIVF) == (RCC_CR_HSIDIVF))?1UL:0UL); 01742 } 01743 01744 /** 01745 * @brief Set HSI divider 01746 * @rmtoll CR HSIDIV LL_RCC_HSI_SetDivider 01747 * @param Divider This parameter can be one of the following values: 01748 * @arg @ref LL_RCC_HSI_DIV1 01749 * @arg @ref LL_RCC_HSI_DIV2 01750 * @arg @ref LL_RCC_HSI_DIV4 01751 * @arg @ref LL_RCC_HSI_DIV8 01752 * @retval None. 01753 */ 01754 __STATIC_INLINE void LL_RCC_HSI_SetDivider(uint32_t Divider) 01755 { 01756 MODIFY_REG(RCC->CR, RCC_CR_HSIDIV, Divider); 01757 } 01758 01759 /** 01760 * @brief Get HSI divider 01761 * @rmtoll CR HSIDIV LL_RCC_HSI_GetDivider 01762 * @retval can be one of the following values: 01763 * @arg @ref LL_RCC_HSI_DIV1 01764 * @arg @ref LL_RCC_HSI_DIV2 01765 * @arg @ref LL_RCC_HSI_DIV4 01766 * @arg @ref LL_RCC_HSI_DIV8 01767 */ 01768 __STATIC_INLINE uint32_t LL_RCC_HSI_GetDivider(void) 01769 { 01770 return (READ_BIT(RCC->CR, RCC_CR_HSIDIV)); 01771 } 01772 01773 /** 01774 * @brief Enable HSI oscillator in Stop mode 01775 * @rmtoll CR HSIKERON LL_RCC_HSI_EnableStopMode 01776 * @retval None 01777 */ 01778 __STATIC_INLINE void LL_RCC_HSI_EnableStopMode(void) 01779 { 01780 SET_BIT(RCC->CR, RCC_CR_HSIKERON); 01781 } 01782 01783 /** 01784 * @brief Disable HSI oscillator in Stop mode 01785 * @rmtoll CR HSION LL_RCC_HSI_DisableStopMode 01786 * @retval None 01787 */ 01788 __STATIC_INLINE void LL_RCC_HSI_DisableStopMode(void) 01789 { 01790 CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON); 01791 } 01792 01793 /** 01794 * @brief Get HSI Calibration value 01795 * @note When HSITRIM is written, HSICAL is updated with the sum of 01796 * HSITRIM and the factory trim value 01797 * @rmtoll HSICFGR HSICAL LL_RCC_HSI_GetCalibration 01798 * @retval A value between 0 and 4095 (0xFFF) 01799 */ 01800 __STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibration(void) 01801 { 01802 return (uint32_t)(READ_BIT(RCC->HSICFGR, RCC_HSICFGR_HSICAL) >> RCC_HSICFGR_HSICAL_Pos); 01803 } 01804 01805 /** 01806 * @brief Set HSI Calibration trimming 01807 * @note user-programmable trimming value that is added to the HSICAL 01808 * @note Default value is 64 (32 for Cut1.x), which, when added to the HSICAL value, 01809 * should trim the HSI to 64 MHz +/- 1 % 01810 * @rmtoll HSICFGR HSITRIM LL_RCC_HSI_SetCalibTrimming 01811 * @param Value can be a value between 0 and 127 (63 for Cut1.x) 01812 * @retval None 01813 */ 01814 __STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value) 01815 { 01816 #if defined(RCC_VER_X) 01817 if ((DBGMCU->IDCODE & 0xF0000000U) == 0x10000000U) 01818 { 01819 /* STM32H7 Rev.Y */ 01820 MODIFY_REG(RCC->HSICFGR, 0x3F000U, Value << 12U); 01821 } 01822 else 01823 { 01824 /* STM32H7 Rev.V */ 01825 MODIFY_REG(RCC->HSICFGR, RCC_HSICFGR_HSITRIM, Value << RCC_HSICFGR_HSITRIM_Pos); 01826 } 01827 #else 01828 MODIFY_REG(RCC->HSICFGR, RCC_HSICFGR_HSITRIM, Value << RCC_HSICFGR_HSITRIM_Pos); 01829 #endif /* RCC_VER_X */ 01830 } 01831 01832 /** 01833 * @brief Get HSI Calibration trimming 01834 * @rmtoll HSICFGR HSITRIM LL_RCC_HSI_GetCalibTrimming 01835 * @retval A value between 0 and 127 (63 for Cut1.x) 01836 */ 01837 __STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibTrimming(void) 01838 { 01839 #if defined(RCC_VER_X) 01840 if ((DBGMCU->IDCODE & 0xF0000000U) == 0x10000000U) 01841 { 01842 /* STM32H7 Rev.Y */ 01843 return (uint32_t)(READ_BIT(RCC->HSICFGR, 0x3F000U) >> 12U); 01844 } 01845 else 01846 { 01847 /* STM32H7 Rev.V */ 01848 return (uint32_t)(READ_BIT(RCC->HSICFGR, RCC_HSICFGR_HSITRIM) >> RCC_HSICFGR_HSITRIM_Pos); 01849 } 01850 #else 01851 return (uint32_t)(READ_BIT(RCC->HSICFGR, RCC_HSICFGR_HSITRIM) >> RCC_HSICFGR_HSITRIM_Pos); 01852 #endif /* RCC_VER_X */ 01853 } 01854 01855 /** 01856 * @} 01857 */ 01858 01859 /** @defgroup RCC_LL_EF_CSI CSI 01860 * @{ 01861 */ 01862 01863 /** 01864 * @brief Enable CSI oscillator 01865 * @rmtoll CR CSION LL_RCC_CSI_Enable 01866 * @retval None 01867 */ 01868 __STATIC_INLINE void LL_RCC_CSI_Enable(void) 01869 { 01870 SET_BIT(RCC->CR, RCC_CR_CSION); 01871 } 01872 01873 /** 01874 * @brief Disable CSI oscillator 01875 * @rmtoll CR CSION LL_RCC_CSI_Disable 01876 * @retval None 01877 */ 01878 __STATIC_INLINE void LL_RCC_CSI_Disable(void) 01879 { 01880 CLEAR_BIT(RCC->CR, RCC_CR_CSION); 01881 } 01882 01883 /** 01884 * @brief Check if CSI clock is ready 01885 * @rmtoll CR CSIRDY LL_RCC_CSI_IsReady 01886 * @retval State of bit (1 or 0). 01887 */ 01888 __STATIC_INLINE uint32_t LL_RCC_CSI_IsReady(void) 01889 { 01890 return ((READ_BIT(RCC->CR, RCC_CR_CSIRDY) == (RCC_CR_CSIRDY))?1UL:0UL); 01891 } 01892 01893 /** 01894 * @brief Enable CSI oscillator in Stop mode 01895 * @rmtoll CR CSIKERON LL_RCC_CSI_EnableStopMode 01896 * @retval None 01897 */ 01898 __STATIC_INLINE void LL_RCC_CSI_EnableStopMode(void) 01899 { 01900 SET_BIT(RCC->CR, RCC_CR_CSIKERON); 01901 } 01902 01903 /** 01904 * @brief Disable CSI oscillator in Stop mode 01905 * @rmtoll CR CSIKERON LL_RCC_CSI_DisableStopMode 01906 * @retval None 01907 */ 01908 __STATIC_INLINE void LL_RCC_CSI_DisableStopMode(void) 01909 { 01910 CLEAR_BIT(RCC->CR, RCC_CR_CSIKERON); 01911 } 01912 01913 /** 01914 * @brief Get CSI Calibration value 01915 * @note When CSITRIM is written, CSICAL is updated with the sum of 01916 * CSITRIM and the factory trim value 01917 * @rmtoll CSICFGR CSICAL LL_RCC_CSI_GetCalibration 01918 * @retval A value between 0 and 255 (0xFF) 01919 */ 01920 __STATIC_INLINE uint32_t LL_RCC_CSI_GetCalibration(void) 01921 { 01922 #if defined(RCC_VER_X) 01923 if ((DBGMCU->IDCODE & 0xF0000000U) == 0x10000000U) 01924 { 01925 /* STM32H7 Rev.Y */ 01926 return (uint32_t)(READ_BIT(RCC->HSICFGR, 0x3FC0000U) >> 18U); 01927 } 01928 else 01929 { 01930 /* STM32H7 Rev.V */ 01931 return (uint32_t)(READ_BIT(RCC->CSICFGR, RCC_CSICFGR_CSICAL) >> RCC_CSICFGR_CSICAL_Pos); 01932 } 01933 #else 01934 return (uint32_t)(READ_BIT(RCC->CSICFGR, RCC_CSICFGR_CSICAL) >> RCC_CSICFGR_CSICAL_Pos); 01935 #endif /* RCC_VER_X */ 01936 } 01937 01938 /** 01939 * @brief Set CSI Calibration trimming 01940 * @note user-programmable trimming value that is added to the CSICAL 01941 * @note Default value is 16, which, when added to the CSICAL value, 01942 * should trim the CSI to 4 MHz +/- 1 % 01943 * @rmtoll CSICFGR CSITRIM LL_RCC_CSI_SetCalibTrimming 01944 * @param Value can be a value between 0 and 31 01945 * @retval None 01946 */ 01947 __STATIC_INLINE void LL_RCC_CSI_SetCalibTrimming(uint32_t Value) 01948 { 01949 #if defined(RCC_VER_X) 01950 if ((DBGMCU->IDCODE & 0xF0000000U) == 0x10000000U) 01951 { 01952 /* STM32H7 Rev.Y */ 01953 MODIFY_REG(RCC->HSICFGR, 0x7C000000U, Value << 26U); 01954 } 01955 else 01956 { 01957 /* STM32H7 Rev.V */ 01958 MODIFY_REG(RCC->CSICFGR, RCC_CSICFGR_CSITRIM, Value << RCC_CSICFGR_CSITRIM_Pos); 01959 } 01960 #else 01961 MODIFY_REG(RCC->CSICFGR, RCC_CSICFGR_CSITRIM, Value << RCC_CSICFGR_CSITRIM_Pos); 01962 #endif /* RCC_VER_X */ 01963 } 01964 01965 /** 01966 * @brief Get CSI Calibration trimming 01967 * @rmtoll CSICFGR CSITRIM LL_RCC_CSI_GetCalibTrimming 01968 * @retval A value between 0 and 31 01969 */ 01970 __STATIC_INLINE uint32_t LL_RCC_CSI_GetCalibTrimming(void) 01971 { 01972 #if defined(RCC_VER_X) 01973 if ((DBGMCU->IDCODE & 0xF0000000U) == 0x10000000U) 01974 { 01975 /* STM32H7 Rev.Y */ 01976 return (uint32_t)(READ_BIT(RCC->HSICFGR, 0x7C000000U) >> 26U); 01977 } 01978 else 01979 { 01980 /* STM32H7 Rev.V */ 01981 return (uint32_t)(READ_BIT(RCC->CSICFGR, RCC_CSICFGR_CSITRIM) >> RCC_CSICFGR_CSITRIM_Pos); 01982 } 01983 #else 01984 return (uint32_t)(READ_BIT(RCC->CSICFGR, RCC_CSICFGR_CSITRIM) >> RCC_CSICFGR_CSITRIM_Pos); 01985 #endif /* RCC_VER_X */ 01986 } 01987 01988 /** 01989 * @} 01990 */ 01991 01992 /** @defgroup RCC_LL_EF_HSI48 HSI48 01993 * @{ 01994 */ 01995 01996 /** 01997 * @brief Enable HSI48 oscillator 01998 * @rmtoll CR HSI48ON LL_RCC_HSI48_Enable 01999 * @retval None 02000 */ 02001 __STATIC_INLINE void LL_RCC_HSI48_Enable(void) 02002 { 02003 SET_BIT(RCC->CR, RCC_CR_HSI48ON); 02004 } 02005 02006 /** 02007 * @brief Disable HSI48 oscillator 02008 * @rmtoll CR HSI48ON LL_RCC_HSI48_Disable 02009 * @retval None 02010 */ 02011 __STATIC_INLINE void LL_RCC_HSI48_Disable(void) 02012 { 02013 CLEAR_BIT(RCC->CR, RCC_CR_HSI48ON); 02014 } 02015 02016 /** 02017 * @brief Check if HSI48 clock is ready 02018 * @rmtoll CR HSI48RDY LL_RCC_HSI48_IsReady 02019 * @retval State of bit (1 or 0). 02020 */ 02021 __STATIC_INLINE uint32_t LL_RCC_HSI48_IsReady(void) 02022 { 02023 return ((READ_BIT(RCC->CR, RCC_CR_HSI48RDY) == (RCC_CR_HSI48RDY))?1UL:0UL); 02024 } 02025 02026 /** 02027 * @brief Get HSI48 Calibration value 02028 * @note When HSI48TRIM is written, HSI48CAL is updated with the sum of 02029 * HSI48TRIM and the factory trim value 02030 * @rmtoll CRRCR HSI48CAL LL_RCC_HSI48_GetCalibration 02031 * @retval A value between 0 and 1023 (0x3FF) 02032 */ 02033 __STATIC_INLINE uint32_t LL_RCC_HSI48_GetCalibration(void) 02034 { 02035 return (uint32_t)(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48CAL) >> RCC_CRRCR_HSI48CAL_Pos); 02036 } 02037 /** 02038 * @} 02039 */ 02040 02041 #if defined(RCC_CR_D1CKRDY) 02042 02043 /** @defgroup RCC_LL_EF_D1CLK D1CKREADY 02044 * @{ 02045 */ 02046 02047 /** 02048 * @brief Check if D1 clock is ready 02049 * @rmtoll CR D1CKRDY LL_RCC_D1CK_IsReady 02050 * @retval State of bit (1 or 0). 02051 */ 02052 __STATIC_INLINE uint32_t LL_RCC_D1CK_IsReady(void) 02053 { 02054 return ((READ_BIT(RCC->CR, RCC_CR_D1CKRDY) == (RCC_CR_D1CKRDY))?1UL:0UL); 02055 } 02056 02057 /** 02058 * @} 02059 */ 02060 #else 02061 02062 /** @defgroup RCC_LL_EF_CPUCLK CPUCKREADY 02063 * @{ 02064 */ 02065 02066 /** 02067 * @brief Check if CPU clock is ready 02068 * @rmtoll CR CPUCKRDY LL_RCC_CPUCK_IsReady 02069 * @retval State of bit (1 or 0). 02070 */ 02071 __STATIC_INLINE uint32_t LL_RCC_CPUCK_IsReady(void) 02072 { 02073 return ((READ_BIT(RCC->CR, RCC_CR_CPUCKRDY) == (RCC_CR_CPUCKRDY))?1UL:0UL); 02074 } 02075 /* alias */ 02076 #define LL_RCC_D1CK_IsReady LL_RCC_CPUCK_IsReady 02077 /** 02078 * @} 02079 */ 02080 #endif /* RCC_CR_D1CKRDY */ 02081 02082 #if defined(RCC_CR_D2CKRDY) 02083 02084 /** @defgroup RCC_LL_EF_D2CLK D2CKREADY 02085 * @{ 02086 */ 02087 02088 /** 02089 * @brief Check if D2 clock is ready 02090 * @rmtoll CR D2CKRDY LL_RCC_D2CK_IsReady 02091 * @retval State of bit (1 or 0). 02092 */ 02093 __STATIC_INLINE uint32_t LL_RCC_D2CK_IsReady(void) 02094 { 02095 return ((READ_BIT(RCC->CR, RCC_CR_D2CKRDY) == (RCC_CR_D2CKRDY))?1UL:0UL); 02096 } 02097 /** 02098 * @} 02099 */ 02100 #else 02101 02102 /** @defgroup RCC_LL_EF_CDCLK CDCKREADY 02103 * @{ 02104 */ 02105 02106 /** 02107 * @brief Check if CD clock is ready 02108 * @rmtoll CR CDCKRDY LL_RCC_CDCK_IsReady 02109 * @retval State of bit (1 or 0). 02110 */ 02111 __STATIC_INLINE uint32_t LL_RCC_CDCK_IsReady(void) 02112 { 02113 return ((READ_BIT(RCC->CR, RCC_CR_CDCKRDY) == (RCC_CR_CDCKRDY))?1UL:0UL); 02114 } 02115 #define LL_RCC_D2CK_IsReady LL_RCC_CDCK_IsReady 02116 /** 02117 * @} 02118 */ 02119 #endif /* RCC_CR_D2CKRDY */ 02120 02121 /** @defgroup RCC_LL_EF_SYSTEM_WIDE_RESET RESET 02122 * @{ 02123 */ 02124 #if defined(RCC_GCR_WW1RSC) 02125 02126 /** 02127 * @brief Enable system wide reset for Window Watch Dog 1 02128 * @rmtoll GCR WW1RSC LL_RCC_WWDG1_EnableSystemReset 02129 * @retval None. 02130 */ 02131 __STATIC_INLINE void LL_RCC_WWDG1_EnableSystemReset(void) 02132 { 02133 SET_BIT(RCC->GCR, RCC_GCR_WW1RSC); 02134 } 02135 02136 /** 02137 * @brief Check if Window Watch Dog 1 reset is system wide 02138 * @rmtoll GCR WW1RSC LL_RCC_WWDG1_IsSystemReset 02139 * @retval State of bit (1 or 0). 02140 */ 02141 __STATIC_INLINE uint32_t LL_RCC_WWDG1_IsSystemReset(void) 02142 { 02143 return ((READ_BIT(RCC->GCR, RCC_GCR_WW1RSC) == RCC_GCR_WW1RSC)?1UL:0UL); 02144 } 02145 #endif /* RCC_GCR_WW1RSC */ 02146 02147 #if defined(DUAL_CORE) 02148 /** 02149 * @brief Enable system wide reset for Window Watch Dog 2 02150 * @rmtoll GCR WW1RSC LL_RCC_WWDG2_EnableSystemReset 02151 * @retval None. 02152 */ 02153 __STATIC_INLINE void LL_RCC_WWDG2_EnableSystemReset(void) 02154 { 02155 SET_BIT(RCC->GCR, RCC_GCR_WW2RSC); 02156 } 02157 02158 /** 02159 * @brief Check if Window Watch Dog 2 reset is system wide 02160 * @rmtoll GCR WW2RSC LL_RCC_WWDG2_IsSystemReset 02161 * @retval State of bit (1 or 0). 02162 */ 02163 __STATIC_INLINE uint32_t LL_RCC_WWDG2_IsSystemReset(void) 02164 { 02165 return ((READ_BIT(RCC->GCR, RCC_GCR_WW2RSC) == RCC_GCR_WW2RSC)?1UL:0UL); 02166 } 02167 #endif /*DUAL_CORE*/ 02168 /** 02169 * @} 02170 */ 02171 02172 #if defined(DUAL_CORE) 02173 /** @defgroup RCC_LL_EF_BOOT_CPU CPU 02174 * @{ 02175 */ 02176 02177 /** 02178 * @brief Force CM4 boot (if hold by option byte BCM4 = 0) 02179 * @rmtoll GCR BOOT_C2 LL_RCC_ForceCM4Boot 02180 * @retval None. 02181 */ 02182 __STATIC_INLINE void LL_RCC_ForceCM4Boot(void) 02183 { 02184 SET_BIT(RCC->GCR, RCC_GCR_BOOT_C2); 02185 } 02186 02187 /** 02188 * @brief Check if CM4 boot is forced 02189 * @rmtoll GCR BOOT_C2 LL_RCC_IsCM4BootForced 02190 * @retval State of bit (1 or 0). 02191 */ 02192 __STATIC_INLINE uint32_t LL_RCC_IsCM4BootForced(void) 02193 { 02194 return ((READ_BIT(RCC->GCR, RCC_GCR_BOOT_C2) == RCC_GCR_BOOT_C2)?1UL:0UL); 02195 } 02196 02197 /** 02198 * @brief Force CM7 boot (if hold by option byte BCM7 = 0) 02199 * @rmtoll GCR BOOT_C1 LL_RCC_ForceCM7Boot 02200 * @retval None. 02201 */ 02202 __STATIC_INLINE void LL_RCC_ForceCM7Boot(void) 02203 { 02204 SET_BIT(RCC->GCR, RCC_GCR_BOOT_C1); 02205 } 02206 02207 /** 02208 * @brief Check if CM7 boot is forced 02209 * @rmtoll GCR BOOT_C1 LL_RCC_IsCM7BootForced 02210 * @retval State of bit (1 or 0). 02211 */ 02212 __STATIC_INLINE uint32_t LL_RCC_IsCM7BootForced(void) 02213 { 02214 return ((READ_BIT(RCC->GCR, RCC_GCR_BOOT_C1) == RCC_GCR_BOOT_C1)?1UL:0UL); 02215 } 02216 02217 /** 02218 * @} 02219 */ 02220 #endif /*DUAL_CORE*/ 02221 02222 /** @defgroup RCC_LL_EF_LSE LSE 02223 * @{ 02224 */ 02225 02226 /** 02227 * @brief Enable the Clock Security System on LSE. 02228 * @note Once LSE Clock Security System is enabled it cannot be changed anymore unless 02229 * a clock failure is detected. 02230 * @rmtoll BDCR LSECSSON LL_RCC_LSE_EnableCSS 02231 * @retval None 02232 */ 02233 __STATIC_INLINE void LL_RCC_LSE_EnableCSS(void) 02234 { 02235 SET_BIT(RCC->BDCR, RCC_BDCR_LSECSSON); 02236 } 02237 02238 /** 02239 * @brief Check if LSE failure is detected by Clock Security System 02240 * @rmtoll BDCR LSECSSD LL_RCC_LSE_IsFailureDetected 02241 * @retval State of bit (1 or 0). 02242 */ 02243 __STATIC_INLINE uint32_t LL_RCC_LSE_IsFailureDetected(void) 02244 { 02245 return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSECSSD) == (RCC_BDCR_LSECSSD))?1UL:0UL); 02246 } 02247 02248 /** 02249 * @brief Enable Low Speed External (LSE) crystal. 02250 * @rmtoll BDCR LSEON LL_RCC_LSE_Enable 02251 * @retval None 02252 */ 02253 __STATIC_INLINE void LL_RCC_LSE_Enable(void) 02254 { 02255 SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); 02256 } 02257 02258 /** 02259 * @brief Disable Low Speed External (LSE) crystal. 02260 * @rmtoll BDCR LSEON LL_RCC_LSE_Disable 02261 * @retval None 02262 */ 02263 __STATIC_INLINE void LL_RCC_LSE_Disable(void) 02264 { 02265 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); 02266 } 02267 02268 /** 02269 * @brief Enable external clock source (LSE bypass). 02270 * @rmtoll BDCR LSEBYP LL_RCC_LSE_EnableBypass 02271 * @retval None 02272 */ 02273 __STATIC_INLINE void LL_RCC_LSE_EnableBypass(void) 02274 { 02275 SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); 02276 } 02277 02278 /** 02279 * @brief Disable external clock source (LSE bypass). 02280 * @rmtoll BDCR LSEBYP LL_RCC_LSE_DisableBypass 02281 * @retval None 02282 */ 02283 __STATIC_INLINE void LL_RCC_LSE_DisableBypass(void) 02284 { 02285 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); 02286 } 02287 02288 #if defined(RCC_BDCR_LSEEXT) 02289 /** 02290 * @brief Enable Low-speed external DIGITAL clock type in Bypass mode (not to be used if RTC is active). 02291 * @note The external clock must be enabled with the LSEON bit, to be used by the device. 02292 * The LSEEXT bit can be written only if the LSE oscillator is disabled. 02293 * @rmtoll BDCR LSEEXT LL_RCC_LSE_SelectDigitalClock 02294 * @retval None 02295 */ 02296 __STATIC_INLINE void LL_RCC_LSE_SelectDigitalClock(void) 02297 { 02298 SET_BIT(RCC->BDCR, RCC_BDCR_LSEEXT); 02299 } 02300 02301 /** 02302 * @brief Enable Low-speed external ANALOG clock type in Bypass mode (default after Backup domain reset). 02303 * @note The external clock must be enabled with the LSEON bit, to be used by the device. 02304 * The LSEEXT bit can be written only if the LSE oscillator is disabled. 02305 * @rmtoll BDCR LSEEXT LL_RCC_LSE_SelectAnalogClock 02306 * @retval None 02307 */ 02308 __STATIC_INLINE void LL_RCC_LSE_SelectAnalogClock(void) 02309 { 02310 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEEXT); 02311 } 02312 #endif /* RCC_BDCR_LSEEXT */ 02313 02314 /** 02315 * @brief Set LSE oscillator drive capability 02316 * @note The oscillator is in Xtal mode when it is not in bypass mode. 02317 * @rmtoll BDCR LSEDRV LL_RCC_LSE_SetDriveCapability 02318 * @param LSEDrive This parameter can be one of the following values: 02319 * @arg @ref LL_RCC_LSEDRIVE_LOW 02320 * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW 02321 * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH 02322 * @arg @ref LL_RCC_LSEDRIVE_HIGH 02323 * @retval None 02324 */ 02325 __STATIC_INLINE void LL_RCC_LSE_SetDriveCapability(uint32_t LSEDrive) 02326 { 02327 MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, LSEDrive); 02328 } 02329 02330 /** 02331 * @brief Get LSE oscillator drive capability 02332 * @rmtoll BDCR LSEDRV LL_RCC_LSE_GetDriveCapability 02333 * @retval Returned value can be one of the following values: 02334 * @arg @ref LL_RCC_LSEDRIVE_LOW 02335 * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW 02336 * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH 02337 * @arg @ref LL_RCC_LSEDRIVE_HIGH 02338 */ 02339 __STATIC_INLINE uint32_t LL_RCC_LSE_GetDriveCapability(void) 02340 { 02341 return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_LSEDRV)); 02342 } 02343 02344 /** 02345 * @brief Check if LSE oscillator Ready 02346 * @rmtoll BDCR LSERDY LL_RCC_LSE_IsReady 02347 * @retval State of bit (1 or 0). 02348 */ 02349 __STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void) 02350 { 02351 return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY))?1UL:0UL); 02352 } 02353 02354 /** 02355 * @} 02356 */ 02357 02358 /** @defgroup RCC_LL_EF_LSI LSI 02359 * @{ 02360 */ 02361 02362 /** 02363 * @brief Enable LSI Oscillator 02364 * @rmtoll CSR LSION LL_RCC_LSI_Enable 02365 * @retval None 02366 */ 02367 __STATIC_INLINE void LL_RCC_LSI_Enable(void) 02368 { 02369 SET_BIT(RCC->CSR, RCC_CSR_LSION); 02370 } 02371 02372 /** 02373 * @brief Disable LSI Oscillator 02374 * @rmtoll CSR LSION LL_RCC_LSI_Disable 02375 * @retval None 02376 */ 02377 __STATIC_INLINE void LL_RCC_LSI_Disable(void) 02378 { 02379 CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); 02380 } 02381 02382 /** 02383 * @brief Check if LSI is Ready 02384 * @rmtoll CSR LSIRDY LL_RCC_LSI_IsReady 02385 * @retval State of bit (1 or 0). 02386 */ 02387 __STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void) 02388 { 02389 return ((READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY))?1UL:0UL); 02390 } 02391 02392 /** 02393 * @} 02394 */ 02395 02396 /** @defgroup RCC_LL_EF_System System 02397 * @{ 02398 */ 02399 02400 /** 02401 * @brief Configure the system clock source 02402 * @rmtoll CFGR SW LL_RCC_SetSysClkSource 02403 * @param Source This parameter can be one of the following values: 02404 * @arg @ref LL_RCC_SYS_CLKSOURCE_HSI 02405 * @arg @ref LL_RCC_SYS_CLKSOURCE_CSI 02406 * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE 02407 * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL1 02408 * @retval None 02409 */ 02410 __STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source) 02411 { 02412 MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); 02413 } 02414 02415 /** 02416 * @brief Get the system clock source 02417 * @rmtoll CFGR SWS LL_RCC_GetSysClkSource 02418 * @retval Returned value can be one of the following values: 02419 * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI 02420 * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_CSI 02421 * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE 02422 * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL1 02423 */ 02424 __STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void) 02425 { 02426 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); 02427 } 02428 02429 /** 02430 * @brief Configure the system wakeup clock source 02431 * @rmtoll CFGR STOPWUCK LL_RCC_SetSysWakeUpClkSource 02432 * @param Source This parameter can be one of the following values: 02433 * @arg @ref LL_RCC_SYSWAKEUP_CLKSOURCE_HSI 02434 * @arg @ref LL_RCC_SYSWAKEUP_CLKSOURCE_CSI 02435 * @retval None 02436 */ 02437 __STATIC_INLINE void LL_RCC_SetSysWakeUpClkSource(uint32_t Source) 02438 { 02439 MODIFY_REG(RCC->CFGR, RCC_CFGR_STOPWUCK, Source); 02440 } 02441 02442 /** 02443 * @brief Get the system wakeup clock source 02444 * @rmtoll CFGR STOPWUCK LL_RCC_GetSysWakeUpClkSource 02445 * @retval Returned value can be one of the following values: 02446 * @arg @ref LL_RCC_SYSWAKEUP_CLKSOURCE_HSI 02447 * @arg @ref LL_RCC_SYSWAKEUP_CLKSOURCE_CSI 02448 */ 02449 __STATIC_INLINE uint32_t LL_RCC_GetSysWakeUpClkSource(void) 02450 { 02451 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_STOPWUCK)); 02452 } 02453 02454 /** 02455 * @brief Configure the kernel wakeup clock source 02456 * @rmtoll CFGR STOPKERWUCK LL_RCC_SetKerWakeUpClkSource 02457 * @param Source This parameter can be one of the following values: 02458 * @arg @ref LL_RCC_KERWAKEUP_CLKSOURCE_HSI 02459 * @arg @ref LL_RCC_KERWAKEUP_CLKSOURCE_CSI 02460 * @retval None 02461 */ 02462 __STATIC_INLINE void LL_RCC_SetKerWakeUpClkSource(uint32_t Source) 02463 { 02464 MODIFY_REG(RCC->CFGR, RCC_CFGR_STOPKERWUCK, Source); 02465 } 02466 02467 /** 02468 * @brief Get the kernel wakeup clock source 02469 * @rmtoll CFGR STOPKERWUCK LL_RCC_GetKerWakeUpClkSource 02470 * @retval Returned value can be one of the following values: 02471 * @arg @ref LL_RCC_KERWAKEUP_CLKSOURCE_HSI 02472 * @arg @ref LL_RCC_KERWAKEUP_CLKSOURCE_CSI 02473 */ 02474 __STATIC_INLINE uint32_t LL_RCC_GetKerWakeUpClkSource(void) 02475 { 02476 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_STOPKERWUCK)); 02477 } 02478 02479 /** 02480 * @brief Set System prescaler 02481 * @rmtoll D1CFGR/CDCFGR1 D1CPRE/CDCPRE LL_RCC_SetSysPrescaler 02482 * @param Prescaler This parameter can be one of the following values: 02483 * @arg @ref LL_RCC_SYSCLK_DIV_1 02484 * @arg @ref LL_RCC_SYSCLK_DIV_2 02485 * @arg @ref LL_RCC_SYSCLK_DIV_4 02486 * @arg @ref LL_RCC_SYSCLK_DIV_8 02487 * @arg @ref LL_RCC_SYSCLK_DIV_16 02488 * @arg @ref LL_RCC_SYSCLK_DIV_64 02489 * @arg @ref LL_RCC_SYSCLK_DIV_128 02490 * @arg @ref LL_RCC_SYSCLK_DIV_256 02491 * @arg @ref LL_RCC_SYSCLK_DIV_512 02492 * @retval None 02493 */ 02494 __STATIC_INLINE void LL_RCC_SetSysPrescaler(uint32_t Prescaler) 02495 { 02496 #if defined(RCC_D1CFGR_D1CPRE) 02497 MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1CPRE, Prescaler); 02498 #else 02499 MODIFY_REG(RCC->CDCFGR1, RCC_CDCFGR1_CDCPRE, Prescaler); 02500 #endif /* RCC_D1CFGR_D1CPRE */ 02501 } 02502 02503 /** 02504 * @brief Set AHB prescaler 02505 * @rmtoll D1CFGR/CDCFGR1 HPRE LL_RCC_SetAHBPrescaler 02506 * @param Prescaler This parameter can be one of the following values: 02507 * @arg @ref LL_RCC_AHB_DIV_1 02508 * @arg @ref LL_RCC_AHB_DIV_2 02509 * @arg @ref LL_RCC_AHB_DIV_4 02510 * @arg @ref LL_RCC_AHB_DIV_8 02511 * @arg @ref LL_RCC_AHB_DIV_16 02512 * @arg @ref LL_RCC_AHB_DIV_64 02513 * @arg @ref LL_RCC_AHB_DIV_128 02514 * @arg @ref LL_RCC_AHB_DIV_256 02515 * @arg @ref LL_RCC_AHB_DIV_512 02516 * @retval None 02517 */ 02518 __STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler) 02519 { 02520 #if defined(RCC_D1CFGR_HPRE) 02521 MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_HPRE, Prescaler); 02522 #else 02523 MODIFY_REG(RCC->CDCFGR1, RCC_CDCFGR1_HPRE, Prescaler); 02524 #endif /* RCC_D1CFGR_HPRE */ 02525 } 02526 02527 /** 02528 * @brief Set APB1 prescaler 02529 * @rmtoll D2CFGR/CDCFGR2 D2PPRE1/CDPPRE1 LL_RCC_SetAPB1Prescaler 02530 * @param Prescaler This parameter can be one of the following values: 02531 * @arg @ref LL_RCC_APB1_DIV_1 02532 * @arg @ref LL_RCC_APB1_DIV_2 02533 * @arg @ref LL_RCC_APB1_DIV_4 02534 * @arg @ref LL_RCC_APB1_DIV_8 02535 * @arg @ref LL_RCC_APB1_DIV_16 02536 * @retval None 02537 */ 02538 __STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler) 02539 { 02540 #if defined(RCC_D2CFGR_D2PPRE1) 02541 MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE1, Prescaler); 02542 #else 02543 MODIFY_REG(RCC->CDCFGR2, RCC_CDCFGR2_CDPPRE1, Prescaler); 02544 #endif /* RCC_D2CFGR_D2PPRE1 */ 02545 } 02546 02547 /** 02548 * @brief Set APB2 prescaler 02549 * @rmtoll D2CFGR/CDCFGR2 D2PPRE2/CDPPRE2 LL_RCC_SetAPB2Prescaler 02550 * @param Prescaler This parameter can be one of the following values: 02551 * @arg @ref LL_RCC_APB2_DIV_1 02552 * @arg @ref LL_RCC_APB2_DIV_2 02553 * @arg @ref LL_RCC_APB2_DIV_4 02554 * @arg @ref LL_RCC_APB2_DIV_8 02555 * @arg @ref LL_RCC_APB2_DIV_16 02556 * @retval None 02557 */ 02558 __STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler) 02559 { 02560 #if defined(RCC_D2CFGR_D2PPRE2) 02561 MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE2, Prescaler); 02562 #else 02563 MODIFY_REG(RCC->CDCFGR2, RCC_CDCFGR2_CDPPRE2, Prescaler); 02564 #endif /* RCC_D2CFGR_D2PPRE2 */ 02565 } 02566 02567 /** 02568 * @brief Set APB3 prescaler 02569 * @rmtoll D1CFGR/CDCFGR1 D1PPRE/CDPPRE LL_RCC_SetAPB3Prescaler 02570 * @param Prescaler This parameter can be one of the following values: 02571 * @arg @ref LL_RCC_APB3_DIV_1 02572 * @arg @ref LL_RCC_APB3_DIV_2 02573 * @arg @ref LL_RCC_APB3_DIV_4 02574 * @arg @ref LL_RCC_APB3_DIV_8 02575 * @arg @ref LL_RCC_APB3_DIV_16 02576 * @retval None 02577 */ 02578 __STATIC_INLINE void LL_RCC_SetAPB3Prescaler(uint32_t Prescaler) 02579 { 02580 #if defined(RCC_D1CFGR_D1PPRE) 02581 MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1PPRE, Prescaler); 02582 #else 02583 MODIFY_REG(RCC->CDCFGR1, RCC_CDCFGR1_CDPPRE, Prescaler); 02584 #endif /* RCC_D1CFGR_D1PPRE */ 02585 } 02586 02587 /** 02588 * @brief Set APB4 prescaler 02589 * @rmtoll D3CFGR/SRDCFGR D3PPRE/SRDPPRE LL_RCC_SetAPB4Prescaler 02590 * @param Prescaler This parameter can be one of the following values: 02591 * @arg @ref LL_RCC_APB4_DIV_1 02592 * @arg @ref LL_RCC_APB4_DIV_2 02593 * @arg @ref LL_RCC_APB4_DIV_4 02594 * @arg @ref LL_RCC_APB4_DIV_8 02595 * @arg @ref LL_RCC_APB4_DIV_16 02596 * @retval None 02597 */ 02598 __STATIC_INLINE void LL_RCC_SetAPB4Prescaler(uint32_t Prescaler) 02599 { 02600 #if defined(RCC_D3CFGR_D3PPRE) 02601 MODIFY_REG(RCC->D3CFGR, RCC_D3CFGR_D3PPRE, Prescaler); 02602 #else 02603 MODIFY_REG(RCC->SRDCFGR, RCC_SRDCFGR_SRDPPRE, Prescaler); 02604 #endif /* RCC_D3CFGR_D3PPRE */ 02605 } 02606 02607 /** 02608 * @brief Get System prescaler 02609 * @rmtoll D1CFGR/CDCFGR1 D1CPRE/CDCPRE LL_RCC_GetSysPrescaler 02610 * @retval Returned value can be one of the following values: 02611 * @arg @ref LL_RCC_SYSCLK_DIV_1 02612 * @arg @ref LL_RCC_SYSCLK_DIV_2 02613 * @arg @ref LL_RCC_SYSCLK_DIV_4 02614 * @arg @ref LL_RCC_SYSCLK_DIV_8 02615 * @arg @ref LL_RCC_SYSCLK_DIV_16 02616 * @arg @ref LL_RCC_SYSCLK_DIV_64 02617 * @arg @ref LL_RCC_SYSCLK_DIV_128 02618 * @arg @ref LL_RCC_SYSCLK_DIV_256 02619 * @arg @ref LL_RCC_SYSCLK_DIV_512 02620 */ 02621 __STATIC_INLINE uint32_t LL_RCC_GetSysPrescaler(void) 02622 { 02623 #if defined(RCC_D1CFGR_D1CPRE) 02624 return (uint32_t)(READ_BIT(RCC->D1CFGR, RCC_D1CFGR_D1CPRE)); 02625 #else 02626 return (uint32_t)(READ_BIT(RCC->CDCFGR1, RCC_CDCFGR1_CDCPRE)); 02627 #endif /* RCC_D1CFGR_D1CPRE */ 02628 } 02629 02630 /** 02631 * @brief Get AHB prescaler 02632 * @rmtoll D1CFGR/ CDCFGR1 HPRE LL_RCC_GetAHBPrescaler 02633 * @retval Returned value can be one of the following values: 02634 * @arg @ref LL_RCC_AHB_DIV_1 02635 * @arg @ref LL_RCC_AHB_DIV_2 02636 * @arg @ref LL_RCC_AHB_DIV_4 02637 * @arg @ref LL_RCC_AHB_DIV_8 02638 * @arg @ref LL_RCC_AHB_DIV_16 02639 * @arg @ref LL_RCC_AHB_DIV_64 02640 * @arg @ref LL_RCC_AHB_DIV_128 02641 * @arg @ref LL_RCC_AHB_DIV_256 02642 * @arg @ref LL_RCC_AHB_DIV_512 02643 */ 02644 __STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void) 02645 { 02646 #if defined(RCC_D1CFGR_HPRE) 02647 return (uint32_t)(READ_BIT(RCC->D1CFGR, RCC_D1CFGR_HPRE)); 02648 #else 02649 return (uint32_t)(READ_BIT(RCC->CDCFGR1, RCC_CDCFGR1_HPRE)); 02650 #endif /* RCC_D1CFGR_HPRE */ 02651 } 02652 02653 /** 02654 * @brief Get APB1 prescaler 02655 * @rmtoll D2CFGR/CDCFGR2 D2PPRE1/CDPPRE1 LL_RCC_GetAPB1Prescaler 02656 * @retval Returned value can be one of the following values: 02657 * @arg @ref LL_RCC_APB1_DIV_1 02658 * @arg @ref LL_RCC_APB1_DIV_2 02659 * @arg @ref LL_RCC_APB1_DIV_4 02660 * @arg @ref LL_RCC_APB1_DIV_8 02661 * @arg @ref LL_RCC_APB1_DIV_16 02662 */ 02663 __STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void) 02664 { 02665 #if defined(RCC_D2CFGR_D2PPRE1) 02666 return (uint32_t)(READ_BIT(RCC->D2CFGR, RCC_D2CFGR_D2PPRE1)); 02667 #else 02668 return (uint32_t)(READ_BIT(RCC->CDCFGR2, RCC_CDCFGR2_CDPPRE1)); 02669 #endif /* RCC_D2CFGR_D2PPRE1 */ 02670 } 02671 02672 /** 02673 * @brief Get APB2 prescaler 02674 * @rmtoll D2CFGR/CDCFGR2 D2PPRE2/CDPPRE2 LL_RCC_GetAPB2Prescaler 02675 * @retval Returned value can be one of the following values: 02676 * @arg @ref LL_RCC_APB2_DIV_1 02677 * @arg @ref LL_RCC_APB2_DIV_2 02678 * @arg @ref LL_RCC_APB2_DIV_4 02679 * @arg @ref LL_RCC_APB2_DIV_8 02680 * @arg @ref LL_RCC_APB2_DIV_16 02681 */ 02682 __STATIC_INLINE uint32_t LL_RCC_GetAPB2Prescaler(void) 02683 { 02684 #if defined(RCC_D2CFGR_D2PPRE2) 02685 return (uint32_t)(READ_BIT(RCC->D2CFGR, RCC_D2CFGR_D2PPRE2)); 02686 #else 02687 return (uint32_t)(READ_BIT(RCC->CDCFGR2, RCC_CDCFGR2_CDPPRE2)); 02688 #endif /* RCC_D2CFGR_D2PPRE2 */ 02689 } 02690 02691 /** 02692 * @brief Get APB3 prescaler 02693 * @rmtoll D1CFGR/CDCFGR1 D1PPRE/CDPPRE LL_RCC_GetAPB3Prescaler 02694 * @retval Returned value can be one of the following values: 02695 * @arg @ref LL_RCC_APB3_DIV_1 02696 * @arg @ref LL_RCC_APB3_DIV_2 02697 * @arg @ref LL_RCC_APB3_DIV_4 02698 * @arg @ref LL_RCC_APB3_DIV_8 02699 * @arg @ref LL_RCC_APB3_DIV_16 02700 */ 02701 __STATIC_INLINE uint32_t LL_RCC_GetAPB3Prescaler(void) 02702 { 02703 #if defined(RCC_D1CFGR_D1PPRE) 02704 return (uint32_t)(READ_BIT(RCC->D1CFGR, RCC_D1CFGR_D1PPRE)); 02705 #else 02706 return (uint32_t)(READ_BIT(RCC->CDCFGR1, RCC_CDCFGR1_CDPPRE)); 02707 #endif /* RCC_D1CFGR_D1PPRE */ 02708 } 02709 02710 /** 02711 * @brief Get APB4 prescaler 02712 * @rmtoll D3CFGR/SRDCFGR D3PPRE/SRDPPRE LL_RCC_GetAPB4Prescaler 02713 * @retval Returned value can be one of the following values: 02714 * @arg @ref LL_RCC_APB4_DIV_1 02715 * @arg @ref LL_RCC_APB4_DIV_2 02716 * @arg @ref LL_RCC_APB4_DIV_4 02717 * @arg @ref LL_RCC_APB4_DIV_8 02718 * @arg @ref LL_RCC_APB4_DIV_16 02719 */ 02720 __STATIC_INLINE uint32_t LL_RCC_GetAPB4Prescaler(void) 02721 { 02722 #if defined(RCC_D3CFGR_D3PPRE) 02723 return (uint32_t)(READ_BIT(RCC->D3CFGR, RCC_D3CFGR_D3PPRE)); 02724 #else 02725 return (uint32_t)(READ_BIT(RCC->SRDCFGR, RCC_SRDCFGR_SRDPPRE)); 02726 #endif /* RCC_D3CFGR_D3PPRE */ 02727 } 02728 02729 /** 02730 * @} 02731 */ 02732 02733 /** @defgroup RCC_LL_EF_MCO MCO 02734 * @{ 02735 */ 02736 02737 /** 02738 * @brief Configure MCOx 02739 * @rmtoll CFGR MCO1 LL_RCC_ConfigMCO\n 02740 * CFGR MCO1PRE LL_RCC_ConfigMCO\n 02741 * CFGR MCO2 LL_RCC_ConfigMCO\n 02742 * CFGR MCO2PRE LL_RCC_ConfigMCO 02743 * @param MCOxSource This parameter can be one of the following values: 02744 * @arg @ref LL_RCC_MCO1SOURCE_HSI 02745 * @arg @ref LL_RCC_MCO1SOURCE_LSE 02746 * @arg @ref LL_RCC_MCO1SOURCE_HSE 02747 * @arg @ref LL_RCC_MCO1SOURCE_PLL1QCLK 02748 * @arg @ref LL_RCC_MCO1SOURCE_HSI48 02749 * @arg @ref LL_RCC_MCO2SOURCE_SYSCLK 02750 * @arg @ref LL_RCC_MCO2SOURCE_PLL2PCLK 02751 * @arg @ref LL_RCC_MCO2SOURCE_HSE 02752 * @arg @ref LL_RCC_MCO2SOURCE_PLL1PCLK 02753 * @arg @ref LL_RCC_MCO2SOURCE_CSI 02754 * @arg @ref LL_RCC_MCO2SOURCE_LSI 02755 * @param MCOxPrescaler This parameter can be one of the following values: 02756 * @arg @ref LL_RCC_MCO1_DIV_1 02757 * @arg @ref LL_RCC_MCO1_DIV_2 02758 * @arg @ref LL_RCC_MCO1_DIV_3 02759 * @arg @ref LL_RCC_MCO1_DIV_4 02760 * @arg @ref LL_RCC_MCO1_DIV_5 02761 * @arg @ref LL_RCC_MCO1_DIV_6 02762 * @arg @ref LL_RCC_MCO1_DIV_7 02763 * @arg @ref LL_RCC_MCO1_DIV_8 02764 * @arg @ref LL_RCC_MCO1_DIV_9 02765 * @arg @ref LL_RCC_MCO1_DIV_10 02766 * @arg @ref LL_RCC_MCO1_DIV_11 02767 * @arg @ref LL_RCC_MCO1_DIV_12 02768 * @arg @ref LL_RCC_MCO1_DIV_13 02769 * @arg @ref LL_RCC_MCO1_DIV_14 02770 * @arg @ref LL_RCC_MCO1_DIV_15 02771 * @arg @ref LL_RCC_MCO2_DIV_1 02772 * @arg @ref LL_RCC_MCO2_DIV_2 02773 * @arg @ref LL_RCC_MCO2_DIV_3 02774 * @arg @ref LL_RCC_MCO2_DIV_4 02775 * @arg @ref LL_RCC_MCO2_DIV_5 02776 * @arg @ref LL_RCC_MCO2_DIV_6 02777 * @arg @ref LL_RCC_MCO2_DIV_7 02778 * @arg @ref LL_RCC_MCO2_DIV_8 02779 * @arg @ref LL_RCC_MCO2_DIV_9 02780 * @arg @ref LL_RCC_MCO2_DIV_10 02781 * @arg @ref LL_RCC_MCO2_DIV_11 02782 * @arg @ref LL_RCC_MCO2_DIV_12 02783 * @arg @ref LL_RCC_MCO2_DIV_13 02784 * @arg @ref LL_RCC_MCO2_DIV_14 02785 * @arg @ref LL_RCC_MCO2_DIV_15 02786 * @retval None 02787 */ 02788 __STATIC_INLINE void LL_RCC_ConfigMCO(uint32_t MCOxSource, uint32_t MCOxPrescaler) 02789 { 02790 MODIFY_REG(RCC->CFGR, (MCOxSource << 16U) | (MCOxPrescaler << 16U), (MCOxSource & 0xFFFF0000U) | (MCOxPrescaler & 0xFFFF0000U)); 02791 } 02792 02793 /** 02794 * @} 02795 */ 02796 02797 /** @defgroup RCC_LL_EF_Peripheral_Clock_Source Peripheral Clock Source 02798 * @{ 02799 */ 02800 02801 /** 02802 * @brief Configure periph clock source 02803 * @rmtoll D2CCIP1R/CDCCIP1R * LL_RCC_SetClockSource\n 02804 * D2CCIP2R/CDCCIP2R * LL_RCC_SetClockSource\n 02805 * D3CCIPR/SRDCCIPR * LL_RCC_SetClockSource 02806 * @param ClkSource This parameter can be one of the following values: 02807 * @arg @ref LL_RCC_USART16_CLKSOURCE_PCLK2 02808 * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL2Q 02809 * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL3Q 02810 * @arg @ref LL_RCC_USART16_CLKSOURCE_HSI 02811 * @arg @ref LL_RCC_USART16_CLKSOURCE_CSI 02812 * @arg @ref LL_RCC_USART16_CLKSOURCE_LSE 02813 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PCLK1 02814 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL2Q 02815 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL3Q 02816 * @arg @ref LL_RCC_USART234578_CLKSOURCE_HSI 02817 * @arg @ref LL_RCC_USART234578_CLKSOURCE_CSI 02818 * @arg @ref LL_RCC_USART234578_CLKSOURCE_LSE 02819 * @arg @ref LL_RCC_I2C123_CLKSOURCE_PCLK1 02820 * @arg @ref LL_RCC_I2C123_CLKSOURCE_PLL3R 02821 * @arg @ref LL_RCC_I2C123_CLKSOURCE_HSI 02822 * @arg @ref LL_RCC_I2C123_CLKSOURCE_CSI 02823 * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK4 02824 * @arg @ref LL_RCC_I2C4_CLKSOURCE_PLL3R 02825 * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI 02826 * @arg @ref LL_RCC_I2C4_CLKSOURCE_CSI 02827 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 02828 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL2P 02829 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL3R 02830 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE 02831 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI 02832 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_CLKP 02833 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK4 02834 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL2P 02835 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL3R 02836 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE 02837 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI 02838 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_CLKP 02839 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PCLK4 02840 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL2P 02841 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL3R 02842 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSE 02843 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSI 02844 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_CLKP 02845 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL1Q 02846 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL2P 02847 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL3P 02848 * @arg @ref LL_RCC_SAI1_CLKSOURCE_I2S_CKIN 02849 * @arg @ref LL_RCC_SAI1_CLKSOURCE_CLKP 02850 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL1Q (*) 02851 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL2P (*) 02852 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL3P (*) 02853 * @arg @ref LL_RCC_SAI23_CLKSOURCE_I2S_CKIN (*) 02854 * @arg @ref LL_RCC_SAI23_CLKSOURCE_CLKP (*) 02855 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL1Q (*) 02856 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL2P (*) 02857 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL3P (*) 02858 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_I2S_CKIN (*) 02859 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_SPDIF (*) 02860 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL1Q (*) 02861 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL2P (*) 02862 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL3P (*) 02863 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_I2S_CKIN (*) 02864 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_CLKP (*) 02865 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_SPDIF (*) 02866 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL1Q (*) 02867 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL2P (*) 02868 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL3P (*) 02869 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_I2S_CKIN (*) 02870 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_CLKP (*) 02871 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_SPDIF (*) 02872 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL1Q (*) 02873 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL2P (*) 02874 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL3P (*) 02875 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_I2S_CKIN (*) 02876 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_CLKP (*) 02877 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_SPDIF (*) 02878 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL1Q 02879 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL2P 02880 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL3P 02881 * @arg @ref LL_RCC_SPI123_CLKSOURCE_I2S_CKIN 02882 * @arg @ref LL_RCC_SPI123_CLKSOURCE_CLKP 02883 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PCLK2 02884 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL2Q 02885 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL3Q 02886 * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSI 02887 * @arg @ref LL_RCC_SPI45_CLKSOURCE_CSI 02888 * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSE 02889 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PCLK4 02890 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL2Q 02891 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL3Q 02892 * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSI 02893 * @arg @ref LL_RCC_SPI6_CLKSOURCE_CSI 02894 * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSE 02895 * @arg @ref LL_RCC_SPI6_CLKSOURCE_I2S_CKIN (*) 02896 * 02897 * (*) value not defined in all devices. 02898 * @retval None 02899 */ 02900 __STATIC_INLINE void LL_RCC_SetClockSource(uint32_t ClkSource) 02901 { 02902 #if defined(RCC_D1CCIPR_FMCSEL) 02903 uint32_t * pReg = (uint32_t *)((uint32_t)&RCC->D1CCIPR + LL_CLKSOURCE_REG(ClkSource)); 02904 #else 02905 uint32_t * pReg = (uint32_t *)((uint32_t)&RCC->CDCCIPR + LL_CLKSOURCE_REG(ClkSource)); 02906 #endif /* */ 02907 MODIFY_REG(*pReg, LL_CLKSOURCE_MASK(ClkSource), LL_CLKSOURCE_CONFIG(ClkSource)); 02908 } 02909 02910 /** 02911 * @brief Configure USARTx clock source 02912 * @rmtoll D2CCIP2R / D2CCIP2R USART16SEL LL_RCC_SetUSARTClockSource\n 02913 * D2CCIP2R / D2CCIP2R USART28SEL LL_RCC_SetUSARTClockSource 02914 * @param ClkSource This parameter can be one of the following values: 02915 * @arg @ref LL_RCC_USART16_CLKSOURCE_PCLK2 02916 * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL2Q 02917 * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL3Q 02918 * @arg @ref LL_RCC_USART16_CLKSOURCE_HSI 02919 * @arg @ref LL_RCC_USART16_CLKSOURCE_CSI 02920 * @arg @ref LL_RCC_USART16_CLKSOURCE_LSE 02921 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PCLK1 02922 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL2Q 02923 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL3Q 02924 * @arg @ref LL_RCC_USART234578_CLKSOURCE_HSI 02925 * @arg @ref LL_RCC_USART234578_CLKSOURCE_CSI 02926 * @arg @ref LL_RCC_USART234578_CLKSOURCE_LSE 02927 * @retval None 02928 */ 02929 __STATIC_INLINE void LL_RCC_SetUSARTClockSource(uint32_t ClkSource) 02930 { 02931 LL_RCC_SetClockSource(ClkSource); 02932 } 02933 02934 /** 02935 * @brief Configure LPUARTx clock source 02936 * @rmtoll D3CCIPR / SRDCCIPR LPUART1SEL LL_RCC_SetLPUARTClockSource 02937 * @param ClkSource This parameter can be one of the following values: 02938 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PCLK4 02939 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PLL2Q 02940 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PLL3Q 02941 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_HSI 02942 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_CSI 02943 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_LSE 02944 * @retval None 02945 */ 02946 __STATIC_INLINE void LL_RCC_SetLPUARTClockSource(uint32_t ClkSource) 02947 { 02948 #if defined(RCC_D3CCIPR_LPUART1SEL) 02949 MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_LPUART1SEL, ClkSource); 02950 #else 02951 MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_LPUART1SEL, ClkSource); 02952 #endif /* RCC_D3CCIPR_LPUART1SEL */ 02953 } 02954 02955 /** 02956 * @brief Configure I2Cx clock source 02957 * @rmtoll D2CCIP2R / CDCCIP2R I2C123SEL LL_RCC_SetI2CClockSource\n 02958 * D3CCIPR / SRDCCIPR I2C4SEL LL_RCC_SetI2CClockSource 02959 * @param ClkSource This parameter can be one of the following values: 02960 * @arg @ref LL_RCC_I2C123_CLKSOURCE_PCLK1 02961 * @arg @ref LL_RCC_I2C123_CLKSOURCE_PLL3R 02962 * @arg @ref LL_RCC_I2C123_CLKSOURCE_HSI 02963 * @arg @ref LL_RCC_I2C123_CLKSOURCE_CSI 02964 * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK4 02965 * @arg @ref LL_RCC_I2C4_CLKSOURCE_PLL3R 02966 * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI 02967 * @arg @ref LL_RCC_I2C4_CLKSOURCE_CSI 02968 * @retval None 02969 */ 02970 __STATIC_INLINE void LL_RCC_SetI2CClockSource(uint32_t ClkSource) 02971 { 02972 LL_RCC_SetClockSource(ClkSource); 02973 } 02974 02975 /** 02976 * @brief Configure LPTIMx clock source 02977 * @rmtoll D2CCIP2R / CDCCIP2R LPTIM1SEL LL_RCC_SetLPTIMClockSource 02978 * D3CCIPR / SRDCCIPR LPTIM2SEL LL_RCC_SetLPTIMClockSource\n 02979 * D3CCIPR / SRDCCIPR LPTIM345SEL LL_RCC_SetLPTIMClockSource 02980 * @param ClkSource This parameter can be one of the following values: 02981 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 02982 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL2P 02983 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL3R 02984 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE 02985 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI 02986 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_CLKP 02987 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK4 02988 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL2P 02989 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL3R 02990 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE 02991 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI 02992 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_CLKP 02993 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PCLK4 02994 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL2P 02995 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL3R 02996 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSE 02997 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSI 02998 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_CLKP 02999 * @retval None 03000 */ 03001 __STATIC_INLINE void LL_RCC_SetLPTIMClockSource(uint32_t ClkSource) 03002 { 03003 LL_RCC_SetClockSource(ClkSource); 03004 } 03005 03006 /** 03007 * @brief Configure SAIx clock source 03008 * @rmtoll D2CCIP1R / CDCCIP1R SAI1SEL LL_RCC_SetSAIClockSource\n 03009 * D2CCIP1R / CDCCIP1R SAI23SEL LL_RCC_SetSAIClockSource 03010 * D3CCIPR / SRDCCIPR SAI4ASEL LL_RCC_SetSAI4xClockSource\n 03011 * D3CCIPR / SRDCCIPR SAI4BSEL LL_RCC_SetSAI4xClockSource 03012 * @param ClkSource This parameter can be one of the following values: 03013 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL1Q 03014 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL2P 03015 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL3P 03016 * @arg @ref LL_RCC_SAI1_CLKSOURCE_I2S_CKIN 03017 * @arg @ref LL_RCC_SAI1_CLKSOURCE_CLKP 03018 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL1Q (*) 03019 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL2P (*) 03020 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL3P (*) 03021 * @arg @ref LL_RCC_SAI23_CLKSOURCE_I2S_CKIN (*) 03022 * @arg @ref LL_RCC_SAI23_CLKSOURCE_CLKP (*) 03023 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL1Q (*) 03024 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL2P (*) 03025 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL3P (*) 03026 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_I2S_CKIN (*) 03027 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_SPDIF (*) 03028 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL1Q (*) 03029 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL2P (*) 03030 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL3P (*) 03031 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_I2S_CKIN (*) 03032 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_CLKP (*) 03033 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_SPDIF (*) 03034 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL1Q (*) 03035 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL2P (*) 03036 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL3P (*) 03037 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_I2S_CKIN (*) 03038 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_CLKP (*) 03039 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_SPDIF (*) 03040 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL1Q (*) 03041 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL2P (*) 03042 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL3P (*) 03043 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_I2S_CKIN (*) 03044 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_CLKP (*) 03045 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_SPDIF (*) 03046 * 03047 * (*) value not defined in all devices. 03048 * @retval None 03049 */ 03050 __STATIC_INLINE void LL_RCC_SetSAIClockSource(uint32_t ClkSource) 03051 { 03052 LL_RCC_SetClockSource(ClkSource); 03053 } 03054 03055 /** 03056 * @brief Configure SDMMCx clock source 03057 * @rmtoll D1CCIPR / CDCCIPR SDMMCSEL LL_RCC_SetSDMMCClockSource 03058 * @param ClkSource This parameter can be one of the following values: 03059 * @arg @ref LL_RCC_SDMMC_CLKSOURCE_PLL1Q 03060 * @arg @ref LL_RCC_SDMMC_CLKSOURCE_PLL2R 03061 * @retval None 03062 */ 03063 __STATIC_INLINE void LL_RCC_SetSDMMCClockSource(uint32_t ClkSource) 03064 { 03065 #if defined(RCC_D1CCIPR_SDMMCSEL) 03066 MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_SDMMCSEL, ClkSource); 03067 #else 03068 MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_SDMMCSEL, ClkSource); 03069 #endif /* RCC_D1CCIPR_SDMMCSEL */ 03070 } 03071 03072 /** 03073 * @brief Configure RNGx clock source 03074 * @rmtoll D2CCIP2R / CDCCIP2R RNGSEL LL_RCC_SetRNGClockSource 03075 * @param ClkSource This parameter can be one of the following values: 03076 * @arg @ref LL_RCC_RNG_CLKSOURCE_HSI48 03077 * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL1Q 03078 * @arg @ref LL_RCC_RNG_CLKSOURCE_LSE 03079 * @arg @ref LL_RCC_RNG_CLKSOURCE_LSI 03080 * @retval None 03081 */ 03082 __STATIC_INLINE void LL_RCC_SetRNGClockSource(uint32_t ClkSource) 03083 { 03084 #if defined(RCC_D2CCIP2R_RNGSEL) 03085 MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_RNGSEL, ClkSource); 03086 #else 03087 MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_RNGSEL, ClkSource); 03088 #endif /* RCC_D2CCIP2R_RNGSEL */ 03089 } 03090 03091 /** 03092 * @brief Configure USBx clock source 03093 * @rmtoll D2CCIP2R / CDCCIP2R USBSEL LL_RCC_SetUSBClockSource 03094 * @param ClkSource This parameter can be one of the following values: 03095 * @arg @ref LL_RCC_USB_CLKSOURCE_DISABLE 03096 * @arg @ref LL_RCC_USB_CLKSOURCE_PLL1Q 03097 * @arg @ref LL_RCC_USB_CLKSOURCE_PLL3Q 03098 * @arg @ref LL_RCC_USB_CLKSOURCE_HSI48 03099 * @retval None 03100 */ 03101 __STATIC_INLINE void LL_RCC_SetUSBClockSource(uint32_t ClkSource) 03102 { 03103 #if defined(RCC_D2CCIP2R_USBSEL) 03104 MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_USBSEL, ClkSource); 03105 #else 03106 MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_USBSEL, ClkSource); 03107 #endif /* RCC_D2CCIP2R_USBSEL */ 03108 } 03109 03110 /** 03111 * @brief Configure CECx clock source 03112 * @rmtoll D2CCIP2R / CDCCIP2R CECSEL LL_RCC_SetCECClockSource 03113 * @param ClkSource This parameter can be one of the following values: 03114 * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE 03115 * @arg @ref LL_RCC_CEC_CLKSOURCE_LSI 03116 * @arg @ref LL_RCC_CEC_CLKSOURCE_CSI_DIV122 03117 * @retval None 03118 */ 03119 __STATIC_INLINE void LL_RCC_SetCECClockSource(uint32_t ClkSource) 03120 { 03121 #if defined(RCC_D2CCIP2R_CECSEL) 03122 MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_CECSEL, ClkSource); 03123 #else 03124 MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_CECSEL, ClkSource); 03125 #endif /* RCC_D2CCIP2R_CECSEL */ 03126 } 03127 03128 #if defined(DSI) 03129 /** 03130 * @brief Configure DSIx clock source 03131 * @rmtoll D1CCIPR DSISEL LL_RCC_SetDSIClockSource 03132 * @param ClkSource This parameter can be one of the following values: 03133 * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY 03134 * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL2Q 03135 * @retval None 03136 */ 03137 __STATIC_INLINE void LL_RCC_SetDSIClockSource(uint32_t ClkSource) 03138 { 03139 MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_DSISEL, ClkSource); 03140 } 03141 #endif /* DSI */ 03142 03143 /** 03144 * @brief Configure DFSDMx Kernel clock source 03145 * @rmtoll D2CCIP1R / CDCCIP1R DFSDM1SEL LL_RCC_SetDFSDMClockSource 03146 * @param ClkSource This parameter can be one of the following values: 03147 * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2 03148 * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK 03149 * @retval None 03150 */ 03151 __STATIC_INLINE void LL_RCC_SetDFSDMClockSource(uint32_t ClkSource) 03152 { 03153 #if defined(RCC_D2CCIP1R_DFSDM1SEL) 03154 MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_DFSDM1SEL, ClkSource); 03155 #else 03156 MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_DFSDM1SEL, ClkSource); 03157 #endif /* RCC_D2CCIP1R_DFSDM1SEL */ 03158 } 03159 03160 #if defined(DFSDM2_BASE) 03161 /** 03162 * @brief Configure DFSDMx Kernel clock source 03163 * @rmtoll SRDCCIPR DFSDM2SEL LL_RCC_SetDFSDM2ClockSource 03164 * @param ClkSource This parameter can be one of the following values: 03165 * @arg @ref LL_RCC_DFSDM2_CLKSOURCE_PCLK4 03166 * @arg @ref LL_RCC_DFSDM2_CLKSOURCE_SYSCLK 03167 * @retval None 03168 */ 03169 __STATIC_INLINE void LL_RCC_SetDFSDM2ClockSource(uint32_t ClkSource) 03170 { 03171 MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_DFSDM2SEL, ClkSource); 03172 } 03173 #endif /* DFSDM2_BASE */ 03174 03175 /** 03176 * @brief Configure FMCx Kernel clock source 03177 * @rmtoll D1CCIPR / CDCCIPR FMCSEL LL_RCC_SetFMCClockSource 03178 * @param ClkSource This parameter can be one of the following values: 03179 * @arg @ref LL_RCC_FMC_CLKSOURCE_HCLK 03180 * @arg @ref LL_RCC_FMC_CLKSOURCE_PLL1Q 03181 * @arg @ref LL_RCC_FMC_CLKSOURCE_PLL2R 03182 * @arg @ref LL_RCC_FMC_CLKSOURCE_CLKP 03183 * @retval None 03184 */ 03185 __STATIC_INLINE void LL_RCC_SetFMCClockSource(uint32_t ClkSource) 03186 { 03187 #if defined(RCC_D1CCIPR_FMCSEL) 03188 MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_FMCSEL, ClkSource); 03189 #else 03190 MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_FMCSEL, ClkSource); 03191 #endif /* RCC_D1CCIPR_FMCSEL */ 03192 } 03193 03194 #if defined(QUADSPI) 03195 /** 03196 * @brief Configure QSPIx Kernel clock source 03197 * @rmtoll D1CCIPR QSPISEL LL_RCC_SetQSPIClockSource 03198 * @param ClkSource This parameter can be one of the following values: 03199 * @arg @ref LL_RCC_QSPI_CLKSOURCE_HCLK 03200 * @arg @ref LL_RCC_QSPI_CLKSOURCE_PLL1Q 03201 * @arg @ref LL_RCC_QSPI_CLKSOURCE_PLL2R 03202 * @arg @ref LL_RCC_QSPI_CLKSOURCE_CLKP 03203 * @retval None 03204 */ 03205 __STATIC_INLINE void LL_RCC_SetQSPIClockSource(uint32_t ClkSource) 03206 { 03207 MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_QSPISEL, ClkSource); 03208 } 03209 #endif /* QUADSPI */ 03210 03211 #if defined(OCTOSPI1) || defined(OCTOSPI2) 03212 /** 03213 * @brief Configure OSPIx Kernel clock source 03214 * @rmtoll D1CCIPR OPISEL LL_RCC_SetOSPIClockSource 03215 * @param ClkSource This parameter can be one of the following values: 03216 * @arg @ref LL_RCC_OSPI_CLKSOURCE_HCLK 03217 * @arg @ref LL_RCC_OSPI_CLKSOURCE_PLL1Q 03218 * @arg @ref LL_RCC_OSPI_CLKSOURCE_PLL2R 03219 * @arg @ref LL_RCC_OSPI_CLKSOURCE_CLKP 03220 * @retval None 03221 */ 03222 __STATIC_INLINE void LL_RCC_SetOSPIClockSource(uint32_t ClkSource) 03223 { 03224 #if defined(RCC_D1CCIPR_OCTOSPISEL) 03225 MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_OCTOSPISEL, ClkSource); 03226 #else 03227 MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_OCTOSPISEL, ClkSource); 03228 #endif /* RCC_D1CCIPR_OCTOSPISEL */ 03229 } 03230 #endif /* OCTOSPI1 || OCTOSPI2 */ 03231 03232 /** 03233 * @brief Configure CLKP Kernel clock source 03234 * @rmtoll D1CCIPR / CDCCIPR CKPERSEL LL_RCC_SetCLKPClockSource 03235 * @param ClkSource This parameter can be one of the following values: 03236 * @arg @ref LL_RCC_CLKP_CLKSOURCE_HSI 03237 * @arg @ref LL_RCC_CLKP_CLKSOURCE_CSI 03238 * @arg @ref LL_RCC_CLKP_CLKSOURCE_HSE 03239 * @retval None 03240 */ 03241 __STATIC_INLINE void LL_RCC_SetCLKPClockSource(uint32_t ClkSource) 03242 { 03243 #if defined(RCC_D1CCIPR_CKPERSEL) 03244 MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_CKPERSEL, ClkSource); 03245 #else 03246 MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_CKPERSEL, ClkSource); 03247 #endif /* RCC_D1CCIPR_CKPERSEL */ 03248 } 03249 03250 /** 03251 * @brief Configure SPIx Kernel clock source 03252 * @rmtoll D2CCIP1R / CDCCIP1R SPI123SEL LL_RCC_SetSPIClockSource\n 03253 * D2CCIP1R / CDCCIP1R SPI45SEL LL_RCC_SetSPIClockSource\n 03254 * D3CCIPR / SRDCCIPR SPI6SEL LL_RCC_SetSPIClockSource 03255 * @param ClkSource This parameter can be one of the following values: 03256 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL1Q 03257 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL2P 03258 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL3P 03259 * @arg @ref LL_RCC_SPI123_CLKSOURCE_I2S_CKIN 03260 * @arg @ref LL_RCC_SPI123_CLKSOURCE_CLKP 03261 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PCLK2 03262 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL2Q 03263 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL3Q 03264 * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSI 03265 * @arg @ref LL_RCC_SPI45_CLKSOURCE_CSI 03266 * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSE 03267 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PCLK4 03268 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL2Q 03269 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL3Q 03270 * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSI 03271 * @arg @ref LL_RCC_SPI6_CLKSOURCE_CSI 03272 * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSE 03273 * @arg @ref LL_RCC_SPI6_CLKSOURCE_I2S_CKIN (*) 03274 * 03275 * (*) value not defined in all devices. 03276 * @retval None 03277 */ 03278 __STATIC_INLINE void LL_RCC_SetSPIClockSource(uint32_t ClkSource) 03279 { 03280 LL_RCC_SetClockSource(ClkSource); 03281 } 03282 03283 /** 03284 * @brief Configure SPDIFx Kernel clock source 03285 * @rmtoll D2CCIP1R / CDCCIP1R SPDIFSEL LL_RCC_SetSPDIFClockSource 03286 * @param ClkSource This parameter can be one of the following values: 03287 * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL1Q 03288 * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL2R 03289 * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL3R 03290 * @arg @ref LL_RCC_SPDIF_CLKSOURCE_HSI 03291 * @retval None 03292 */ 03293 __STATIC_INLINE void LL_RCC_SetSPDIFClockSource(uint32_t ClkSource) 03294 { 03295 #if defined(RCC_D2CCIP1R_SPDIFSEL) 03296 MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SPDIFSEL, ClkSource); 03297 #else 03298 MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SPDIFSEL, ClkSource); 03299 #endif /* RCC_D2CCIP1R_SPDIFSEL */ 03300 } 03301 03302 /** 03303 * @brief Configure FDCANx Kernel clock source 03304 * @rmtoll D2CCIP1R / CDCCIP1R FDCANSEL LL_RCC_SetFDCANClockSource 03305 * @param ClkSource This parameter can be one of the following values: 03306 * @arg @ref LL_RCC_FDCAN_CLKSOURCE_HSE 03307 * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PLL1Q 03308 * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PLL2Q 03309 * @retval None 03310 */ 03311 __STATIC_INLINE void LL_RCC_SetFDCANClockSource(uint32_t ClkSource) 03312 { 03313 #if defined(RCC_D2CCIP1R_FDCANSEL) 03314 MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_FDCANSEL, ClkSource); 03315 #else 03316 MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_FDCANSEL, ClkSource); 03317 #endif /* RCC_D2CCIP1R_FDCANSEL */ 03318 } 03319 03320 /** 03321 * @brief Configure SWPx Kernel clock source 03322 * @rmtoll D2CCIP1R / CDCCIP1R SWPSEL LL_RCC_SetSWPClockSource 03323 * @param ClkSource This parameter can be one of the following values: 03324 * @arg @ref LL_RCC_SWP_CLKSOURCE_PCLK1 03325 * @arg @ref LL_RCC_SWP_CLKSOURCE_HSI 03326 * @retval None 03327 */ 03328 __STATIC_INLINE void LL_RCC_SetSWPClockSource(uint32_t ClkSource) 03329 { 03330 #if defined(RCC_D2CCIP1R_SWPSEL) 03331 MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SWPSEL, ClkSource); 03332 #else 03333 MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SWPSEL, ClkSource); 03334 #endif /* RCC_D2CCIP1R_SWPSEL */ 03335 } 03336 03337 /** 03338 * @brief Configure ADCx Kernel clock source 03339 * @rmtoll D3CCIPR / SRDCCIPR ADCSEL LL_RCC_SetADCClockSource 03340 * @param ClkSource This parameter can be one of the following values: 03341 * @arg @ref LL_RCC_ADC_CLKSOURCE_PLL2P 03342 * @arg @ref LL_RCC_ADC_CLKSOURCE_PLL3R 03343 * @arg @ref LL_RCC_ADC_CLKSOURCE_CLKP 03344 * @retval None 03345 */ 03346 __STATIC_INLINE void LL_RCC_SetADCClockSource(uint32_t ClkSource) 03347 { 03348 #if defined(RCC_D3CCIPR_ADCSEL) 03349 MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_ADCSEL, ClkSource); 03350 #else 03351 MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_ADCSEL, ClkSource); 03352 #endif /* RCC_D3CCIPR_ADCSEL */ 03353 } 03354 03355 /** 03356 * @brief Get periph clock source 03357 * @rmtoll D1CCIPR / CDCCIPR * LL_RCC_GetClockSource\n 03358 * D2CCIP1R / CDCCIP1R * LL_RCC_GetClockSource\n 03359 * D2CCIP2R / CDCCIP2R * LL_RCC_GetClockSource\n 03360 * D3CCIPR / SRDCCIPR * LL_RCC_GetClockSource 03361 * @param Periph This parameter can be one of the following values: 03362 * @arg @ref LL_RCC_USART16_CLKSOURCE 03363 * @arg @ref LL_RCC_USART234578_CLKSOURCE 03364 * @arg @ref LL_RCC_I2C123_CLKSOURCE 03365 * @arg @ref LL_RCC_I2C4_CLKSOURCE 03366 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE 03367 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE 03368 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE 03369 * @arg @ref LL_RCC_SAI1_CLKSOURCE 03370 * @arg @ref LL_RCC_SAI23_CLKSOURCE 03371 * @arg @ref LL_RCC_SAI4A_CLKSOURCE (*) 03372 * @arg @ref LL_RCC_SAI4B_CLKSOURCE (*) 03373 * @arg @ref LL_RCC_SAI2A_CLKSOURCE (*) 03374 * @arg @ref LL_RCC_SAI2B_CLKSOURCE (*) 03375 * @arg @ref LL_RCC_SPI123_CLKSOURCE (*) 03376 * @arg @ref LL_RCC_SPI45_CLKSOURCE (*) 03377 * @arg @ref LL_RCC_SPI6_CLKSOURCE (*) 03378 * @retval Returned value can be one of the following values: 03379 * @arg @ref LL_RCC_USART16_CLKSOURCE_PCLK2 03380 * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL2Q 03381 * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL3Q 03382 * @arg @ref LL_RCC_USART16_CLKSOURCE_HSI 03383 * @arg @ref LL_RCC_USART16_CLKSOURCE_CSI 03384 * @arg @ref LL_RCC_USART16_CLKSOURCE_LSE 03385 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PCLK1 03386 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL2Q 03387 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL3Q 03388 * @arg @ref LL_RCC_USART234578_CLKSOURCE_HSI 03389 * @arg @ref LL_RCC_USART234578_CLKSOURCE_CSI 03390 * @arg @ref LL_RCC_USART234578_CLKSOURCE_LSE 03391 * @arg @ref LL_RCC_I2C123_CLKSOURCE_PCLK1 03392 * @arg @ref LL_RCC_I2C123_CLKSOURCE_PLL3R 03393 * @arg @ref LL_RCC_I2C123_CLKSOURCE_HSI 03394 * @arg @ref LL_RCC_I2C123_CLKSOURCE_CSI 03395 * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK4 03396 * @arg @ref LL_RCC_I2C4_CLKSOURCE_PLL3R 03397 * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI 03398 * @arg @ref LL_RCC_I2C4_CLKSOURCE_CSI 03399 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 03400 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL2P 03401 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL3R 03402 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE 03403 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI 03404 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_CLKP 03405 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK4 03406 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL2P 03407 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL3R 03408 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE 03409 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI 03410 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_CLKP 03411 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PCLK4 03412 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL2P 03413 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL3R 03414 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSE 03415 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSI 03416 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_CLKP 03417 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL1Q 03418 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL2P 03419 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL3P 03420 * @arg @ref LL_RCC_SAI1_CLKSOURCE_I2S_CKIN 03421 * @arg @ref LL_RCC_SAI1_CLKSOURCE_CLKP 03422 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL1Q (*) 03423 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL2P (*) 03424 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL3P (*) 03425 * @arg @ref LL_RCC_SAI23_CLKSOURCE_I2S_CKIN (*) 03426 * @arg @ref LL_RCC_SAI23_CLKSOURCE_CLKP (*) 03427 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL1Q (*) 03428 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL2P (*) 03429 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL3P (*) 03430 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_I2S_CKIN (*) 03431 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_CLKP (*) 03432 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL1Q (*) 03433 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL2P (*) 03434 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL3P (*) 03435 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_I2S_CKIN (*) 03436 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_CLKP (*) 03437 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL1Q (*) 03438 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL2P (*) 03439 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL3P (*) 03440 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_I2S_CKIN (*) 03441 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_CLKP (*) 03442 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_SPDIF (*) 03443 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL1Q (*) 03444 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL2P (*) 03445 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL3P (*) 03446 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_I2S_CKIN (*) 03447 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_CLKP (*) 03448 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_SPDIF (*) 03449 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL1Q 03450 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL2P 03451 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL3P 03452 * @arg @ref LL_RCC_SPI123_CLKSOURCE_I2S_CKIN 03453 * @arg @ref LL_RCC_SPI123_CLKSOURCE_CLKP 03454 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PCLK2 03455 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL2Q 03456 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL3Q 03457 * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSI 03458 * @arg @ref LL_RCC_SPI45_CLKSOURCE_CSI 03459 * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSE 03460 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PCLK4 03461 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL2Q 03462 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL3Q 03463 * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSI 03464 * @arg @ref LL_RCC_SPI6_CLKSOURCE_CSI 03465 * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSE 03466 * @arg @ref LL_RCC_SPI6_CLKSOURCE_I2S_CKIN (*) 03467 * 03468 * (*) value not defined in all devices. 03469 * @retval None 03470 */ 03471 __STATIC_INLINE uint32_t LL_RCC_GetClockSource(uint32_t Periph) 03472 { 03473 #if defined(RCC_D1CCIPR_FMCSEL) 03474 const uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&RCC->D1CCIPR) + LL_CLKSOURCE_REG(Periph))); 03475 #else 03476 const uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&RCC->CDCCIPR) + LL_CLKSOURCE_REG(Periph))); 03477 #endif /* RCC_D1CCIPR_FMCSEL */ 03478 return (uint32_t) (Periph | (((READ_BIT(*pReg, LL_CLKSOURCE_MASK(Periph))) >> LL_CLKSOURCE_SHIFT(Periph)) << LL_RCC_CONFIG_SHIFT) ); 03479 } 03480 03481 /** 03482 * @brief Get USARTx clock source 03483 * @rmtoll D2CCIP2R / CDCCIP2R USART16SEL LL_RCC_GetUSARTClockSource\n 03484 * D2CCIP2R / CDCCIP2R USART28SEL LL_RCC_GetUSARTClockSource 03485 * @param Periph This parameter can be one of the following values: 03486 * @arg @ref LL_RCC_USART16_CLKSOURCE 03487 * @arg @ref LL_RCC_USART234578_CLKSOURCE 03488 * @retval Returned value can be one of the following values: 03489 * @arg @ref LL_RCC_USART16_CLKSOURCE_PCLK2 03490 * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL2Q 03491 * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL3Q 03492 * @arg @ref LL_RCC_USART16_CLKSOURCE_HSI 03493 * @arg @ref LL_RCC_USART16_CLKSOURCE_CSI 03494 * @arg @ref LL_RCC_USART16_CLKSOURCE_LSE 03495 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PCLK1 03496 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL2Q 03497 * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL3Q 03498 * @arg @ref LL_RCC_USART234578_CLKSOURCE_HSI 03499 * @arg @ref LL_RCC_USART234578_CLKSOURCE_CSI 03500 * @arg @ref LL_RCC_USART234578_CLKSOURCE_LSE 03501 */ 03502 __STATIC_INLINE uint32_t LL_RCC_GetUSARTClockSource(uint32_t Periph) 03503 { 03504 return LL_RCC_GetClockSource(Periph); 03505 } 03506 03507 /** 03508 * @brief Get LPUART clock source 03509 * @rmtoll D3CCIPR / SRDCCIPR LPUART1SEL LL_RCC_GetLPUARTClockSource 03510 * @param Periph This parameter can be one of the following values: 03511 * @arg @ref LL_RCC_LPUART1_CLKSOURCE 03512 * @retval Returned value can be one of the following values: 03513 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PCLK4 03514 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PLL2Q 03515 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PLL3Q 03516 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_HSI 03517 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_CSI 03518 * @arg @ref LL_RCC_LPUART1_CLKSOURCE_LSE 03519 */ 03520 __STATIC_INLINE uint32_t LL_RCC_GetLPUARTClockSource(uint32_t Periph) 03521 { 03522 UNUSED(Periph); 03523 #if defined(RCC_D3CCIPR_LPUART1SEL) 03524 return (uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_LPUART1SEL)); 03525 #else 03526 return (uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_LPUART1SEL)); 03527 #endif /* RCC_D3CCIPR_LPUART1SEL */ 03528 } 03529 03530 /** 03531 * @brief Get I2Cx clock source 03532 * @rmtoll D2CCIP2R / CDCCIP2R I2C123SEL LL_RCC_GetI2CClockSource\n 03533 * D3CCIPR / SRDCCIPR I2C4SEL LL_RCC_GetI2CClockSource 03534 * @param Periph This parameter can be one of the following values: 03535 * @arg @ref LL_RCC_I2C123_CLKSOURCE 03536 * @arg @ref LL_RCC_I2C4_CLKSOURCE 03537 * @retval Returned value can be one of the following values: 03538 * @arg @ref LL_RCC_I2C123_CLKSOURCE_PCLK1 03539 * @arg @ref LL_RCC_I2C123_CLKSOURCE_PLL3R 03540 * @arg @ref LL_RCC_I2C123_CLKSOURCE_HSI 03541 * @arg @ref LL_RCC_I2C123_CLKSOURCE_CSI 03542 * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK4 03543 * @arg @ref LL_RCC_I2C4_CLKSOURCE_PLL3R 03544 * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI 03545 * @arg @ref LL_RCC_I2C4_CLKSOURCE_CSI 03546 */ 03547 __STATIC_INLINE uint32_t LL_RCC_GetI2CClockSource(uint32_t Periph) 03548 { 03549 return LL_RCC_GetClockSource(Periph); 03550 } 03551 03552 /** 03553 * @brief Get LPTIM clock source 03554 * @rmtoll D2CCIP2R / CDCCIP2R LPTIM1SEL LL_RCC_GetLPTIMClockSource\n 03555 * D3CCIPR / SRDCCIPR LPTIM2SEL LL_RCC_GetLPTIMClockSource\n 03556 * D3CCIPR / SRDCCIPR LPTIM345SEL LL_RCC_GetLPTIMClockSource 03557 * @param Periph This parameter can be one of the following values: 03558 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE 03559 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE 03560 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE 03561 * @retval Returned value can be one of the following values: 03562 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 03563 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL2P 03564 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL3R 03565 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE 03566 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI 03567 * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_CLKP 03568 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK4 03569 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL2P 03570 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL3R 03571 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE 03572 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI 03573 * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_CLKP 03574 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PCLK4 03575 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL2P 03576 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL3R 03577 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSE 03578 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSI 03579 * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_CLKP 03580 * @retval None 03581 */ 03582 __STATIC_INLINE uint32_t LL_RCC_GetLPTIMClockSource(uint32_t Periph) 03583 { 03584 return LL_RCC_GetClockSource(Periph); 03585 } 03586 03587 /** 03588 * @brief Get SAIx clock source 03589 * @rmtoll D2CCIP1R / CDCCIP1R SAI1SEL LL_RCC_GetSAIClockSource\n 03590 * D2CCIP1R / CDCCIP1R SAI23SEL LL_RCC_GetSAIClockSource 03591 * D3CCIPR / SRDCCIPR SAI4ASEL LL_RCC_GetSAIClockSource\n 03592 * D3CCIPR / SRDCCIPR SAI4BSEL LL_RCC_GetSAIClockSource 03593 * @param Periph This parameter can be one of the following values: 03594 * @arg @ref LL_RCC_SAI1_CLKSOURCE (*) 03595 * @arg @ref LL_RCC_SAI2A_CLKSOURCE (*) 03596 * @arg @ref LL_RCC_SAI2B_CLKSOURCE (*) 03597 * @arg @ref LL_RCC_SAI23_CLKSOURCE (*) 03598 * @arg @ref LL_RCC_SAI4A_CLKSOURCE (*) 03599 * @arg @ref LL_RCC_SAI4B_CLKSOURCE (*) 03600 * @retval Returned value can be one of the following values: 03601 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL1Q 03602 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL2P 03603 * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL3P 03604 * @arg @ref LL_RCC_SAI1_CLKSOURCE_I2S_CKIN 03605 * @arg @ref LL_RCC_SAI1_CLKSOURCE_CLKP 03606 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL1Q (*) 03607 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL2P (*) 03608 * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL3P (*) 03609 * @arg @ref LL_RCC_SAI23_CLKSOURCE_I2S_CKIN (*) 03610 * @arg @ref LL_RCC_SAI23_CLKSOURCE_CLKP (*) 03611 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL1Q (*) 03612 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL2P (*) 03613 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_PLL3P (*) 03614 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_I2S_CKIN (*) 03615 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_CLKP (*) 03616 * @arg @ref LL_RCC_SAI2A_CLKSOURCE_SPDIF (*) 03617 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL1Q (*) 03618 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL2P (*) 03619 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_PLL3P (*) 03620 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_I2S_CKIN (*) 03621 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_CLKP (*) 03622 * @arg @ref LL_RCC_SAI2B_CLKSOURCE_SPDIF (*) 03623 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL1Q (*) 03624 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL2P (*) 03625 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL3P (*) 03626 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_I2S_CKIN (*) 03627 * @arg @ref LL_RCC_SAI4A_CLKSOURCE_CLKP (*) 03628 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL1Q (*) 03629 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL2P (*) 03630 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL3P (*) 03631 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_I2S_CKIN (*) 03632 * @arg @ref LL_RCC_SAI4B_CLKSOURCE_CLKP (*) 03633 * 03634 * (*) value not defined in all devices. 03635 */ 03636 __STATIC_INLINE uint32_t LL_RCC_GetSAIClockSource(uint32_t Periph) 03637 { 03638 return LL_RCC_GetClockSource(Periph); 03639 } 03640 03641 /** 03642 * @brief Get SDMMC clock source 03643 * @rmtoll D1CCIPR / CDCCIPR SDMMCSEL LL_RCC_GetSDMMCClockSource 03644 * @param Periph This parameter can be one of the following values: 03645 * @arg @ref LL_RCC_SDMMC_CLKSOURCE 03646 * @retval Returned value can be one of the following values: 03647 * @arg @ref LL_RCC_SDMMC_CLKSOURCE_PLL1Q 03648 * @arg @ref LL_RCC_SDMMC_CLKSOURCE_PLL2R 03649 */ 03650 __STATIC_INLINE uint32_t LL_RCC_GetSDMMCClockSource(uint32_t Periph) 03651 { 03652 UNUSED(Periph); 03653 #if defined(RCC_D1CCIPR_SDMMCSEL) 03654 return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_SDMMCSEL)); 03655 #else 03656 return (uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_SDMMCSEL)); 03657 #endif /* RCC_D1CCIPR_SDMMCSEL */ 03658 } 03659 03660 /** 03661 * @brief Get RNG clock source 03662 * @rmtoll D2CCIP2R RNGSEL LL_RCC_GetRNGClockSource 03663 * @param Periph This parameter can be one of the following values: 03664 * @arg @ref LL_RCC_RNG_CLKSOURCE 03665 * @retval Returned value can be one of the following values: 03666 * @arg @ref LL_RCC_RNG_CLKSOURCE_HSI48 03667 * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL1Q 03668 * @arg @ref LL_RCC_RNG_CLKSOURCE_LSE 03669 * @arg @ref LL_RCC_RNG_CLKSOURCE_LSI 03670 */ 03671 __STATIC_INLINE uint32_t LL_RCC_GetRNGClockSource(uint32_t Periph) 03672 { 03673 UNUSED(Periph); 03674 #if defined(RCC_D2CCIP2R_RNGSEL) 03675 return (uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_RNGSEL)); 03676 #else 03677 return (uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_RNGSEL)); 03678 #endif /* RCC_D2CCIP2R_RNGSEL */ 03679 } 03680 03681 /** 03682 * @brief Get USB clock source 03683 * @rmtoll D2CCIP2R / CDCCIP2R USBSEL LL_RCC_GetUSBClockSource 03684 * @param Periph This parameter can be one of the following values: 03685 * @arg @ref LL_RCC_USB_CLKSOURCE 03686 * @retval Returned value can be one of the following values: 03687 * @arg @ref LL_RCC_USB_CLKSOURCE_DISABLE 03688 * @arg @ref LL_RCC_USB_CLKSOURCE_PLL1Q 03689 * @arg @ref LL_RCC_USB_CLKSOURCE_PLL3Q 03690 * @arg @ref LL_RCC_USB_CLKSOURCE_HSI48 03691 */ 03692 __STATIC_INLINE uint32_t LL_RCC_GetUSBClockSource(uint32_t Periph) 03693 { 03694 UNUSED(Periph); 03695 #if defined(RCC_D2CCIP2R_USBSEL) 03696 return (uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_USBSEL)); 03697 #else 03698 return (uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_USBSEL)); 03699 #endif /* RCC_D2CCIP2R_USBSEL */ 03700 } 03701 03702 /** 03703 * @brief Get CEC clock source 03704 * @rmtoll D2CCIP2R / CDCCIP2R CECSEL LL_RCC_GetCECClockSource 03705 * @param Periph This parameter can be one of the following values: 03706 * @arg @ref LL_RCC_CEC_CLKSOURCE 03707 * @retval Returned value can be one of the following values: 03708 * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE 03709 * @arg @ref LL_RCC_CEC_CLKSOURCE_LSI 03710 * @arg @ref LL_RCC_CEC_CLKSOURCE_CSI_DIV122 03711 */ 03712 __STATIC_INLINE uint32_t LL_RCC_GetCECClockSource(uint32_t Periph) 03713 { 03714 UNUSED(Periph); 03715 #if defined(RCC_D2CCIP2R_CECSEL) 03716 return (uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_CECSEL)); 03717 #else 03718 return (uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_CECSEL)); 03719 #endif /* RCC_D2CCIP2R_CECSEL */ 03720 } 03721 03722 #if defined(DSI) 03723 /** 03724 * @brief Get DSI clock source 03725 * @rmtoll D1CCIPR DSISEL LL_RCC_GetDSIClockSource 03726 * @param Periph This parameter can be one of the following values: 03727 * @arg @ref LL_RCC_DSI_CLKSOURCE 03728 * @retval Returned value can be one of the following values: 03729 * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY 03730 * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL2Q 03731 */ 03732 __STATIC_INLINE uint32_t LL_RCC_GetDSIClockSource(uint32_t Periph) 03733 { 03734 UNUSED(Periph); 03735 return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_DSISEL)); 03736 } 03737 #endif /* DSI */ 03738 03739 /** 03740 * @brief Get DFSDM Kernel clock source 03741 * @rmtoll D2CCIP1R / CDCCIP1R DFSDM1SEL LL_RCC_GetDFSDMClockSource 03742 * @param Periph This parameter can be one of the following values: 03743 * @arg @ref LL_RCC_DFSDM1_CLKSOURCE 03744 * @retval Returned value can be one of the following values: 03745 * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2 03746 * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK 03747 */ 03748 __STATIC_INLINE uint32_t LL_RCC_GetDFSDMClockSource(uint32_t Periph) 03749 { 03750 UNUSED(Periph); 03751 #if defined(RCC_D2CCIP1R_DFSDM1SEL) 03752 return (uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_DFSDM1SEL)); 03753 #else 03754 return (uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_DFSDM1SEL)); 03755 #endif /* RCC_D2CCIP1R_DFSDM1SEL */ 03756 } 03757 03758 #if defined(DFSDM2_BASE) 03759 /** 03760 * @brief Get DFSDM2 Kernel clock source 03761 * @rmtoll SRDCCIPR DFSDM2SEL LL_RCC_GetDFSDM2ClockSource 03762 * @param Periph This parameter can be one of the following values: 03763 * @arg @ref LL_RCC_DFSDM2_CLKSOURCE 03764 * @retval Returned value can be one of the following values: 03765 * @arg @ref LL_RCC_DFSDM2_CLKSOURCE_PCLK4 03766 * @arg @ref LL_RCC_DFSDM2_CLKSOURCE_SYSCLK 03767 */ 03768 __STATIC_INLINE uint32_t LL_RCC_GetDFSDM2ClockSource(uint32_t Periph) 03769 { 03770 UNUSED(Periph); 03771 return (uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_DFSDM2SEL)); 03772 } 03773 #endif /* DFSDM2_BASE */ 03774 03775 /** 03776 * @brief Get FMC Kernel clock source 03777 * @rmtoll D1CCIPR / D1CCIPR FMCSEL LL_RCC_GetFMCClockSource 03778 * @param Periph This parameter can be one of the following values: 03779 * @arg @ref LL_RCC_FMC_CLKSOURCE 03780 * @retval Returned value can be one of the following values: 03781 * @arg @ref LL_RCC_FMC_CLKSOURCE_HCLK 03782 * @arg @ref LL_RCC_FMC_CLKSOURCE_PLL1Q 03783 * @arg @ref LL_RCC_FMC_CLKSOURCE_PLL2R 03784 * @arg @ref LL_RCC_FMC_CLKSOURCE_CLKP 03785 */ 03786 __STATIC_INLINE uint32_t LL_RCC_GetFMCClockSource(uint32_t Periph) 03787 { 03788 UNUSED(Periph); 03789 #if defined(RCC_D1CCIPR_FMCSEL) 03790 return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_FMCSEL)); 03791 #else 03792 return (uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_FMCSEL)); 03793 #endif /* RCC_D1CCIPR_FMCSEL */ 03794 } 03795 03796 #if defined(QUADSPI) 03797 /** 03798 * @brief Get QSPI Kernel clock source 03799 * @rmtoll D1CCIPR / CDCCIPR QSPISEL LL_RCC_GetQSPIClockSource 03800 * @param Periph This parameter can be one of the following values: 03801 * @arg @ref LL_RCC_QSPI_CLKSOURCE 03802 * @retval Returned value can be one of the following values: 03803 * @arg @ref LL_RCC_QSPI_CLKSOURCE_HCLK 03804 * @arg @ref LL_RCC_QSPI_CLKSOURCE_PLL1Q 03805 * @arg @ref LL_RCC_QSPI_CLKSOURCE_PLL2R 03806 * @arg @ref LL_RCC_QSPI_CLKSOURCE_CLKP 03807 */ 03808 __STATIC_INLINE uint32_t LL_RCC_GetQSPIClockSource(uint32_t Periph) 03809 { 03810 UNUSED(Periph); 03811 return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_QSPISEL)); 03812 } 03813 #endif /* QUADSPI */ 03814 03815 #if defined(OCTOSPI1) || defined(OCTOSPI2) 03816 /** 03817 * @brief Get OSPI Kernel clock source 03818 * @rmtoll CDCCIPR OSPISEL LL_RCC_GetOSPIClockSource 03819 * @param Periph This parameter can be one of the following values: 03820 * @arg @ref LL_RCC_OSPI_CLKSOURCE 03821 * @retval Returned value can be one of the following values: 03822 * @arg @ref LL_RCC_OSPI_CLKSOURCE_HCLK 03823 * @arg @ref LL_RCC_OSPI_CLKSOURCE_PLL1Q 03824 * @arg @ref LL_RCC_OSPI_CLKSOURCE_PLL2R 03825 * @arg @ref LL_RCC_OSPI_CLKSOURCE_CLKP 03826 */ 03827 __STATIC_INLINE uint32_t LL_RCC_GetOSPIClockSource(uint32_t Periph) 03828 { 03829 UNUSED(Periph); 03830 #if defined(RCC_D1CCIPR_OCTOSPISEL) 03831 return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_OCTOSPISEL)); 03832 #else 03833 return (uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_OCTOSPISEL)); 03834 #endif /* RCC_D1CCIPR_OCTOSPISEL */ 03835 } 03836 #endif /* defined(OCTOSPI1) || defined(OCTOSPI2) */ 03837 03838 /** 03839 * @brief Get CLKP Kernel clock source 03840 * @rmtoll D1CCIPR / CDCCIPR CKPERSEL LL_RCC_GetCLKPClockSource 03841 * @param Periph This parameter can be one of the following values: 03842 * @arg @ref LL_RCC_CLKP_CLKSOURCE 03843 * @retval Returned value can be one of the following values: 03844 * @arg @ref LL_RCC_CLKP_CLKSOURCE_HSI 03845 * @arg @ref LL_RCC_CLKP_CLKSOURCE_CSI 03846 * @arg @ref LL_RCC_CLKP_CLKSOURCE_HSE 03847 */ 03848 __STATIC_INLINE uint32_t LL_RCC_GetCLKPClockSource(uint32_t Periph) 03849 { 03850 UNUSED(Periph); 03851 #if defined(RCC_D1CCIPR_CKPERSEL) 03852 return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_CKPERSEL)); 03853 #else 03854 return (uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_CKPERSEL)); 03855 #endif /* RCC_D1CCIPR_CKPERSEL */ 03856 } 03857 03858 /** 03859 * @brief Get SPIx Kernel clock source 03860 * @rmtoll D2CCIP1R / CDCCIP1R SPI123SEL LL_RCC_GetSPIClockSource\n 03861 * D2CCIP1R / CDCCIP1R SPI45SEL LL_RCC_GetSPIClockSource\n 03862 * D3CCIPR / SRDCCIPR SPI6SEL LL_RCC_GetSPIClockSource 03863 * @param Periph This parameter can be one of the following values: 03864 * @arg @ref LL_RCC_SPI123_CLKSOURCE 03865 * @arg @ref LL_RCC_SPI45_CLKSOURCE 03866 * @arg @ref LL_RCC_SPI6_CLKSOURCE 03867 * @retval Returned value can be one of the following values: 03868 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL1Q 03869 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL2P 03870 * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL3P 03871 * @arg @ref LL_RCC_SPI123_CLKSOURCE_I2S_CKIN 03872 * @arg @ref LL_RCC_SPI123_CLKSOURCE_CLKP 03873 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PCLK2 03874 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL2Q 03875 * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL3Q 03876 * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSI 03877 * @arg @ref LL_RCC_SPI45_CLKSOURCE_CSI 03878 * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSE 03879 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PCLK4 03880 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL2Q 03881 * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL3Q 03882 * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSI 03883 * @arg @ref LL_RCC_SPI6_CLKSOURCE_CSI 03884 * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSE 03885 * @arg @ref LL_RCC_SPI6_CLKSOURCE_I2S_CKIN (*) 03886 * 03887 * (*) value not defined in all stm32h7xx lines. 03888 */ 03889 __STATIC_INLINE uint32_t LL_RCC_GetSPIClockSource(uint32_t Periph) 03890 { 03891 return LL_RCC_GetClockSource(Periph); 03892 } 03893 03894 /** 03895 * @brief Get SPDIF Kernel clock source 03896 * @rmtoll D2CCIP1R / CDCCIP1R SPDIFSEL LL_RCC_GetSPDIFClockSource 03897 * @param Periph This parameter can be one of the following values: 03898 * @arg @ref LL_RCC_SPDIF_CLKSOURCE 03899 * @retval Returned value can be one of the following values: 03900 * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL1Q 03901 * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL2R 03902 * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL3R 03903 * @arg @ref LL_RCC_SPDIF_CLKSOURCE_HSI 03904 */ 03905 __STATIC_INLINE uint32_t LL_RCC_GetSPDIFClockSource(uint32_t Periph) 03906 { 03907 UNUSED(Periph); 03908 #if defined(RCC_D2CCIP1R_SPDIFSEL) 03909 return (uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SPDIFSEL)); 03910 #else 03911 return (uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SPDIFSEL)); 03912 #endif /* RCC_D2CCIP1R_SPDIFSEL */ 03913 } 03914 03915 /** 03916 * @brief Get FDCAN Kernel clock source 03917 * @rmtoll D2CCIP1R / CDCCIP1R FDCANSEL LL_RCC_GetFDCANClockSource 03918 * @param Periph This parameter can be one of the following values: 03919 * @arg @ref LL_RCC_FDCAN_CLKSOURCE 03920 * @retval Returned value can be one of the following values: 03921 * @arg @ref LL_RCC_FDCAN_CLKSOURCE_HSE 03922 * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PLL1Q 03923 * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PLL2Q 03924 */ 03925 __STATIC_INLINE uint32_t LL_RCC_GetFDCANClockSource(uint32_t Periph) 03926 { 03927 UNUSED(Periph); 03928 #if defined(RCC_D2CCIP1R_FDCANSEL) 03929 return (uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_FDCANSEL)); 03930 #else 03931 return (uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_FDCANSEL)); 03932 #endif /* RCC_D2CCIP1R_FDCANSEL */ 03933 } 03934 03935 /** 03936 * @brief Get SWP Kernel clock source 03937 * @rmtoll D2CCIP1R / CDCCIP1R SWPSEL LL_RCC_GetSWPClockSource 03938 * @param Periph This parameter can be one of the following values: 03939 * @arg @ref LL_RCC_SWP_CLKSOURCE 03940 * @retval Returned value can be one of the following values: 03941 * @arg @ref LL_RCC_SWP_CLKSOURCE_PCLK1 03942 * @arg @ref LL_RCC_SWP_CLKSOURCE_HSI 03943 */ 03944 __STATIC_INLINE uint32_t LL_RCC_GetSWPClockSource(uint32_t Periph) 03945 { 03946 UNUSED(Periph); 03947 #if defined(RCC_D2CCIP1R_SWPSEL) 03948 return (uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SWPSEL)); 03949 #else 03950 return (uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SWPSEL)); 03951 #endif /* RCC_D2CCIP1R_SWPSEL */ 03952 } 03953 03954 /** 03955 * @brief Get ADC Kernel clock source 03956 * @rmtoll D3CCIPR / SRDCCIPR ADCSEL LL_RCC_GetADCClockSource 03957 * @param Periph This parameter can be one of the following values: 03958 * @arg @ref LL_RCC_ADC_CLKSOURCE 03959 * @retval Returned value can be one of the following values: 03960 * @arg @ref LL_RCC_ADC_CLKSOURCE_PLL2P 03961 * @arg @ref LL_RCC_ADC_CLKSOURCE_PLL3R 03962 * @arg @ref LL_RCC_ADC_CLKSOURCE_CLKP 03963 */ 03964 __STATIC_INLINE uint32_t LL_RCC_GetADCClockSource(uint32_t Periph) 03965 { 03966 UNUSED(Periph); 03967 #if defined (RCC_D3CCIPR_ADCSEL) 03968 return (uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_ADCSEL)); 03969 #else 03970 return (uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_ADCSEL)); 03971 #endif /* RCC_D3CCIPR_ADCSEL */ 03972 } 03973 03974 /** 03975 * @} 03976 */ 03977 03978 /** @defgroup RCC_LL_EF_RTC RTC 03979 * @{ 03980 */ 03981 03982 /** 03983 * @brief Set RTC Clock Source 03984 * @note Once the RTC clock source has been selected, it cannot be changed anymore unless 03985 * the Backup domain is reset, or unless a failure is detected on LSE (LSECSSD is 03986 * set). The BDRST bit can be used to reset them. 03987 * @rmtoll BDCR RTCSEL LL_RCC_SetRTCClockSource 03988 * @param Source This parameter can be one of the following values: 03989 * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE 03990 * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE 03991 * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI 03992 * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE 03993 * @retval None 03994 */ 03995 __STATIC_INLINE void LL_RCC_SetRTCClockSource(uint32_t Source) 03996 { 03997 MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, Source); 03998 } 03999 04000 /** 04001 * @brief Get RTC Clock Source 04002 * @rmtoll BDCR RTCSEL LL_RCC_GetRTCClockSource 04003 * @retval Returned value can be one of the following values: 04004 * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE 04005 * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE 04006 * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI 04007 * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE 04008 */ 04009 __STATIC_INLINE uint32_t LL_RCC_GetRTCClockSource(void) 04010 { 04011 return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)); 04012 } 04013 04014 /** 04015 * @brief Enable RTC 04016 * @rmtoll BDCR RTCEN LL_RCC_EnableRTC 04017 * @retval None 04018 */ 04019 __STATIC_INLINE void LL_RCC_EnableRTC(void) 04020 { 04021 SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN); 04022 } 04023 04024 /** 04025 * @brief Disable RTC 04026 * @rmtoll BDCR RTCEN LL_RCC_DisableRTC 04027 * @retval None 04028 */ 04029 __STATIC_INLINE void LL_RCC_DisableRTC(void) 04030 { 04031 CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN); 04032 } 04033 04034 /** 04035 * @brief Check if RTC has been enabled or not 04036 * @rmtoll BDCR RTCEN LL_RCC_IsEnabledRTC 04037 * @retval State of bit (1 or 0). 04038 */ 04039 __STATIC_INLINE uint32_t LL_RCC_IsEnabledRTC(void) 04040 { 04041 return ((READ_BIT(RCC->BDCR, RCC_BDCR_RTCEN) == (RCC_BDCR_RTCEN))?1UL:0UL); 04042 } 04043 04044 /** 04045 * @brief Force the Backup domain reset 04046 * @rmtoll BDCR BDRST / VSWRST LL_RCC_ForceBackupDomainReset 04047 * @retval None 04048 */ 04049 __STATIC_INLINE void LL_RCC_ForceBackupDomainReset(void) 04050 { 04051 SET_BIT(RCC->BDCR, RCC_BDCR_BDRST); 04052 } 04053 04054 /** 04055 * @brief Release the Backup domain reset 04056 * @rmtoll BDCR BDRST / VSWRST LL_RCC_ReleaseBackupDomainReset 04057 * @retval None 04058 */ 04059 __STATIC_INLINE void LL_RCC_ReleaseBackupDomainReset(void) 04060 { 04061 #if defined(RCC_BDCR_BDRST) 04062 CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST); 04063 #else 04064 CLEAR_BIT(RCC->BDCR, RCC_BDCR_VSWRST); 04065 #endif /* RCC_BDCR_BDRST */ 04066 } 04067 04068 /** 04069 * @brief Set HSE Prescalers for RTC Clock 04070 * @rmtoll CFGR RTCPRE LL_RCC_SetRTC_HSEPrescaler 04071 * @param Prescaler This parameter can be one of the following values: 04072 * @arg @ref LL_RCC_RTC_NOCLOCK 04073 * @arg @ref LL_RCC_RTC_HSE_DIV_2 04074 * @arg @ref LL_RCC_RTC_HSE_DIV_3 04075 * @arg @ref LL_RCC_RTC_HSE_DIV_4 04076 * @arg @ref LL_RCC_RTC_HSE_DIV_5 04077 * @arg @ref LL_RCC_RTC_HSE_DIV_6 04078 * @arg @ref LL_RCC_RTC_HSE_DIV_7 04079 * @arg @ref LL_RCC_RTC_HSE_DIV_8 04080 * @arg @ref LL_RCC_RTC_HSE_DIV_9 04081 * @arg @ref LL_RCC_RTC_HSE_DIV_10 04082 * @arg @ref LL_RCC_RTC_HSE_DIV_11 04083 * @arg @ref LL_RCC_RTC_HSE_DIV_12 04084 * @arg @ref LL_RCC_RTC_HSE_DIV_13 04085 * @arg @ref LL_RCC_RTC_HSE_DIV_14 04086 * @arg @ref LL_RCC_RTC_HSE_DIV_15 04087 * @arg @ref LL_RCC_RTC_HSE_DIV_16 04088 * @arg @ref LL_RCC_RTC_HSE_DIV_17 04089 * @arg @ref LL_RCC_RTC_HSE_DIV_18 04090 * @arg @ref LL_RCC_RTC_HSE_DIV_19 04091 * @arg @ref LL_RCC_RTC_HSE_DIV_20 04092 * @arg @ref LL_RCC_RTC_HSE_DIV_21 04093 * @arg @ref LL_RCC_RTC_HSE_DIV_22 04094 * @arg @ref LL_RCC_RTC_HSE_DIV_23 04095 * @arg @ref LL_RCC_RTC_HSE_DIV_24 04096 * @arg @ref LL_RCC_RTC_HSE_DIV_25 04097 * @arg @ref LL_RCC_RTC_HSE_DIV_26 04098 * @arg @ref LL_RCC_RTC_HSE_DIV_27 04099 * @arg @ref LL_RCC_RTC_HSE_DIV_28 04100 * @arg @ref LL_RCC_RTC_HSE_DIV_29 04101 * @arg @ref LL_RCC_RTC_HSE_DIV_30 04102 * @arg @ref LL_RCC_RTC_HSE_DIV_31 04103 * @arg @ref LL_RCC_RTC_HSE_DIV_32 04104 * @arg @ref LL_RCC_RTC_HSE_DIV_33 04105 * @arg @ref LL_RCC_RTC_HSE_DIV_34 04106 * @arg @ref LL_RCC_RTC_HSE_DIV_35 04107 * @arg @ref LL_RCC_RTC_HSE_DIV_36 04108 * @arg @ref LL_RCC_RTC_HSE_DIV_37 04109 * @arg @ref LL_RCC_RTC_HSE_DIV_38 04110 * @arg @ref LL_RCC_RTC_HSE_DIV_39 04111 * @arg @ref LL_RCC_RTC_HSE_DIV_40 04112 * @arg @ref LL_RCC_RTC_HSE_DIV_41 04113 * @arg @ref LL_RCC_RTC_HSE_DIV_42 04114 * @arg @ref LL_RCC_RTC_HSE_DIV_43 04115 * @arg @ref LL_RCC_RTC_HSE_DIV_44 04116 * @arg @ref LL_RCC_RTC_HSE_DIV_45 04117 * @arg @ref LL_RCC_RTC_HSE_DIV_46 04118 * @arg @ref LL_RCC_RTC_HSE_DIV_47 04119 * @arg @ref LL_RCC_RTC_HSE_DIV_48 04120 * @arg @ref LL_RCC_RTC_HSE_DIV_49 04121 * @arg @ref LL_RCC_RTC_HSE_DIV_50 04122 * @arg @ref LL_RCC_RTC_HSE_DIV_51 04123 * @arg @ref LL_RCC_RTC_HSE_DIV_52 04124 * @arg @ref LL_RCC_RTC_HSE_DIV_53 04125 * @arg @ref LL_RCC_RTC_HSE_DIV_54 04126 * @arg @ref LL_RCC_RTC_HSE_DIV_55 04127 * @arg @ref LL_RCC_RTC_HSE_DIV_56 04128 * @arg @ref LL_RCC_RTC_HSE_DIV_57 04129 * @arg @ref LL_RCC_RTC_HSE_DIV_58 04130 * @arg @ref LL_RCC_RTC_HSE_DIV_59 04131 * @arg @ref LL_RCC_RTC_HSE_DIV_60 04132 * @arg @ref LL_RCC_RTC_HSE_DIV_61 04133 * @arg @ref LL_RCC_RTC_HSE_DIV_62 04134 * @arg @ref LL_RCC_RTC_HSE_DIV_63 04135 * @retval None 04136 */ 04137 __STATIC_INLINE void LL_RCC_SetRTC_HSEPrescaler(uint32_t Prescaler) 04138 { 04139 MODIFY_REG(RCC->CFGR, RCC_CFGR_RTCPRE, Prescaler); 04140 } 04141 04142 /** 04143 * @brief Get HSE Prescalers for RTC Clock 04144 * @rmtoll CFGR RTCPRE LL_RCC_GetRTC_HSEPrescaler 04145 * @retval Returned value can be one of the following values: 04146 * @arg @ref LL_RCC_RTC_NOCLOCK 04147 * @arg @ref LL_RCC_RTC_HSE_DIV_2 04148 * @arg @ref LL_RCC_RTC_HSE_DIV_3 04149 * @arg @ref LL_RCC_RTC_HSE_DIV_4 04150 * @arg @ref LL_RCC_RTC_HSE_DIV_5 04151 * @arg @ref LL_RCC_RTC_HSE_DIV_6 04152 * @arg @ref LL_RCC_RTC_HSE_DIV_7 04153 * @arg @ref LL_RCC_RTC_HSE_DIV_8 04154 * @arg @ref LL_RCC_RTC_HSE_DIV_9 04155 * @arg @ref LL_RCC_RTC_HSE_DIV_10 04156 * @arg @ref LL_RCC_RTC_HSE_DIV_11 04157 * @arg @ref LL_RCC_RTC_HSE_DIV_12 04158 * @arg @ref LL_RCC_RTC_HSE_DIV_13 04159 * @arg @ref LL_RCC_RTC_HSE_DIV_14 04160 * @arg @ref LL_RCC_RTC_HSE_DIV_15 04161 * @arg @ref LL_RCC_RTC_HSE_DIV_16 04162 * @arg @ref LL_RCC_RTC_HSE_DIV_17 04163 * @arg @ref LL_RCC_RTC_HSE_DIV_18 04164 * @arg @ref LL_RCC_RTC_HSE_DIV_19 04165 * @arg @ref LL_RCC_RTC_HSE_DIV_20 04166 * @arg @ref LL_RCC_RTC_HSE_DIV_21 04167 * @arg @ref LL_RCC_RTC_HSE_DIV_22 04168 * @arg @ref LL_RCC_RTC_HSE_DIV_23 04169 * @arg @ref LL_RCC_RTC_HSE_DIV_24 04170 * @arg @ref LL_RCC_RTC_HSE_DIV_25 04171 * @arg @ref LL_RCC_RTC_HSE_DIV_26 04172 * @arg @ref LL_RCC_RTC_HSE_DIV_27 04173 * @arg @ref LL_RCC_RTC_HSE_DIV_28 04174 * @arg @ref LL_RCC_RTC_HSE_DIV_29 04175 * @arg @ref LL_RCC_RTC_HSE_DIV_30 04176 * @arg @ref LL_RCC_RTC_HSE_DIV_31 04177 * @arg @ref LL_RCC_RTC_HSE_DIV_32 04178 * @arg @ref LL_RCC_RTC_HSE_DIV_33 04179 * @arg @ref LL_RCC_RTC_HSE_DIV_34 04180 * @arg @ref LL_RCC_RTC_HSE_DIV_35 04181 * @arg @ref LL_RCC_RTC_HSE_DIV_36 04182 * @arg @ref LL_RCC_RTC_HSE_DIV_37 04183 * @arg @ref LL_RCC_RTC_HSE_DIV_38 04184 * @arg @ref LL_RCC_RTC_HSE_DIV_39 04185 * @arg @ref LL_RCC_RTC_HSE_DIV_40 04186 * @arg @ref LL_RCC_RTC_HSE_DIV_41 04187 * @arg @ref LL_RCC_RTC_HSE_DIV_42 04188 * @arg @ref LL_RCC_RTC_HSE_DIV_43 04189 * @arg @ref LL_RCC_RTC_HSE_DIV_44 04190 * @arg @ref LL_RCC_RTC_HSE_DIV_45 04191 * @arg @ref LL_RCC_RTC_HSE_DIV_46 04192 * @arg @ref LL_RCC_RTC_HSE_DIV_47 04193 * @arg @ref LL_RCC_RTC_HSE_DIV_48 04194 * @arg @ref LL_RCC_RTC_HSE_DIV_49 04195 * @arg @ref LL_RCC_RTC_HSE_DIV_50 04196 * @arg @ref LL_RCC_RTC_HSE_DIV_51 04197 * @arg @ref LL_RCC_RTC_HSE_DIV_52 04198 * @arg @ref LL_RCC_RTC_HSE_DIV_53 04199 * @arg @ref LL_RCC_RTC_HSE_DIV_54 04200 * @arg @ref LL_RCC_RTC_HSE_DIV_55 04201 * @arg @ref LL_RCC_RTC_HSE_DIV_56 04202 * @arg @ref LL_RCC_RTC_HSE_DIV_57 04203 * @arg @ref LL_RCC_RTC_HSE_DIV_58 04204 * @arg @ref LL_RCC_RTC_HSE_DIV_59 04205 * @arg @ref LL_RCC_RTC_HSE_DIV_60 04206 * @arg @ref LL_RCC_RTC_HSE_DIV_61 04207 * @arg @ref LL_RCC_RTC_HSE_DIV_62 04208 * @arg @ref LL_RCC_RTC_HSE_DIV_63 04209 */ 04210 __STATIC_INLINE uint32_t LL_RCC_GetRTC_HSEPrescaler(void) 04211 { 04212 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_RTCPRE)); 04213 } 04214 04215 /** 04216 * @} 04217 */ 04218 04219 /** @defgroup RCC_LL_EF_TIM_CLOCK_PRESCALER TIM 04220 * @{ 04221 */ 04222 04223 /** 04224 * @brief Set Timers Clock Prescalers 04225 * @rmtoll CFGR TIMPRE LL_RCC_SetTIMPrescaler 04226 * @param Prescaler This parameter can be one of the following values: 04227 * @arg @ref LL_RCC_TIM_PRESCALER_TWICE 04228 * @arg @ref LL_RCC_TIM_PRESCALER_FOUR_TIMES 04229 * @retval None 04230 */ 04231 __STATIC_INLINE void LL_RCC_SetTIMPrescaler(uint32_t Prescaler) 04232 { 04233 MODIFY_REG(RCC->CFGR, RCC_CFGR_TIMPRE, Prescaler); 04234 } 04235 04236 /** 04237 * @brief Get Timers Clock Prescalers 04238 * @rmtoll CFGR TIMPRE LL_RCC_GetTIMPrescaler 04239 * @retval Returned value can be one of the following values: 04240 * @arg @ref LL_RCC_TIM_PRESCALER_TWICE 04241 * @arg @ref LL_RCC_TIM_PRESCALER_FOUR_TIMES 04242 */ 04243 __STATIC_INLINE uint32_t LL_RCC_GetTIMPrescaler(void) 04244 { 04245 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_TIMPRE)); 04246 } 04247 04248 /** 04249 * @} 04250 */ 04251 04252 #if defined(HRTIM1) 04253 /** @defgroup RCC_LL_EF_HRTIM_SET_CLOCK_SOURCE HRTIM 04254 * @{ 04255 */ 04256 04257 /** 04258 * @brief Set High Resolution Timers Clock Source 04259 * @rmtoll CFGR HRTIMSEL LL_RCC_SetHRTIMClockSource 04260 * @param Prescaler This parameter can be one of the following values: 04261 * @arg @ref LL_RCC_HRTIM_CLKSOURCE_TIM 04262 * @arg @ref LL_RCC_HRTIM_CLKSOURCE_CPU 04263 * @retval None 04264 */ 04265 __STATIC_INLINE void LL_RCC_SetHRTIMClockSource(uint32_t Prescaler) 04266 { 04267 MODIFY_REG(RCC->CFGR, RCC_CFGR_HRTIMSEL, Prescaler); 04268 } 04269 #endif /* HRTIM1 */ 04270 04271 #if defined(HRTIM1) 04272 /** 04273 * @brief Get High Resolution Timers Clock Source 04274 * @rmtoll CFGR HRTIMSEL LL_RCC_GetHRTIMClockSource 04275 * @retval Returned value can be one of the following values: 04276 * @arg @ref LL_RCC_HRTIM_CLKSOURCE_TIM 04277 * @arg @ref LL_RCC_HRTIM_CLKSOURCE_CPU 04278 */ 04279 __STATIC_INLINE uint32_t LL_RCC_GetHRTIMClockSource(void) 04280 { 04281 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HRTIMSEL)); 04282 } 04283 /** 04284 * @} 04285 */ 04286 #endif /* HRTIM1 */ 04287 04288 /** @defgroup RCC_LL_EF_PLL PLL 04289 * @{ 04290 */ 04291 04292 /** 04293 * @brief Set the oscillator used as PLL clock source. 04294 * @note PLLSRC can be written only when All PLLs are disabled. 04295 * @rmtoll PLLCKSELR PLLSRC LL_RCC_PLL_SetSource 04296 * @param PLLSource parameter can be one of the following values: 04297 * @arg @ref LL_RCC_PLLSOURCE_HSI 04298 * @arg @ref LL_RCC_PLLSOURCE_CSI 04299 * @arg @ref LL_RCC_PLLSOURCE_HSE 04300 * @arg @ref LL_RCC_PLLSOURCE_NONE 04301 * @retval None 04302 */ 04303 __STATIC_INLINE void LL_RCC_PLL_SetSource(uint32_t PLLSource) 04304 { 04305 MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_PLLSRC, PLLSource); 04306 } 04307 04308 /** 04309 * @brief Get the oscillator used as PLL clock source. 04310 * @rmtoll PLLCKSELR PLLSRC LL_RCC_PLL_GetSource 04311 * @retval Returned value can be one of the following values: 04312 * @arg @ref LL_RCC_PLLSOURCE_HSI 04313 * @arg @ref LL_RCC_PLLSOURCE_CSI 04314 * @arg @ref LL_RCC_PLLSOURCE_HSE 04315 * @arg @ref LL_RCC_PLLSOURCE_NONE 04316 */ 04317 __STATIC_INLINE uint32_t LL_RCC_PLL_GetSource(void) 04318 { 04319 return (uint32_t)(READ_BIT(RCC->PLLCKSELR, RCC_PLLCKSELR_PLLSRC)); 04320 } 04321 04322 /** 04323 * @brief Enable PLL1 04324 * @rmtoll CR PLL1ON LL_RCC_PLL1_Enable 04325 * @retval None 04326 */ 04327 __STATIC_INLINE void LL_RCC_PLL1_Enable(void) 04328 { 04329 SET_BIT(RCC->CR, RCC_CR_PLL1ON); 04330 } 04331 04332 /** 04333 * @brief Disable PLL1 04334 * @note Cannot be disabled if the PLL1 clock is used as the system clock 04335 * @rmtoll CR PLL1ON LL_RCC_PLL1_Disable 04336 * @retval None 04337 */ 04338 __STATIC_INLINE void LL_RCC_PLL1_Disable(void) 04339 { 04340 CLEAR_BIT(RCC->CR, RCC_CR_PLL1ON); 04341 } 04342 04343 /** 04344 * @brief Check if PLL1 Ready 04345 * @rmtoll CR PLL1RDY LL_RCC_PLL1_IsReady 04346 * @retval State of bit (1 or 0). 04347 */ 04348 __STATIC_INLINE uint32_t LL_RCC_PLL1_IsReady(void) 04349 { 04350 return ((READ_BIT(RCC->CR, RCC_CR_PLL1RDY) == (RCC_CR_PLL1RDY))?1UL:0UL); 04351 } 04352 04353 /** 04354 * @brief Enable PLL1P 04355 * @note This API shall be called only when PLL1 is disabled. 04356 * @rmtoll PLLCFGR DIVP1EN LL_RCC_PLL1P_Enable 04357 * @retval None 04358 */ 04359 __STATIC_INLINE void LL_RCC_PLL1P_Enable(void) 04360 { 04361 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP1EN); 04362 } 04363 04364 /** 04365 * @brief Enable PLL1Q 04366 * @note This API shall be called only when PLL1 is disabled. 04367 * @rmtoll PLLCFGR DIVQ1EN LL_RCC_PLL1Q_Enable 04368 * @retval None 04369 */ 04370 __STATIC_INLINE void LL_RCC_PLL1Q_Enable(void) 04371 { 04372 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ1EN); 04373 } 04374 04375 /** 04376 * @brief Enable PLL1R 04377 * @note This API shall be called only when PLL1 is disabled. 04378 * @rmtoll PLLCFGR DIVR1EN LL_RCC_PLL1R_Enable 04379 * @retval None 04380 */ 04381 __STATIC_INLINE void LL_RCC_PLL1R_Enable(void) 04382 { 04383 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR1EN); 04384 } 04385 04386 /** 04387 * @brief Enable PLL1 FRACN 04388 * @rmtoll PLLCFGR PLL1FRACEN LL_RCC_PLL1FRACN_Enable 04389 * @retval None 04390 */ 04391 __STATIC_INLINE void LL_RCC_PLL1FRACN_Enable(void) 04392 { 04393 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL1FRACEN); 04394 } 04395 04396 /** 04397 * @brief Check if PLL1 P is enabled 04398 * @rmtoll PLLCFGR DIVP1EN LL_RCC_PLL1P_IsEnabled 04399 * @retval State of bit (1 or 0). 04400 */ 04401 __STATIC_INLINE uint32_t LL_RCC_PLL1P_IsEnabled(void) 04402 { 04403 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP1EN) == RCC_PLLCFGR_DIVP1EN)?1UL:0UL); 04404 } 04405 04406 /** 04407 * @brief Check if PLL1 Q is enabled 04408 * @rmtoll PLLCFGR DIVQ1EN LL_RCC_PLL1Q_IsEnabled 04409 * @retval State of bit (1 or 0). 04410 */ 04411 __STATIC_INLINE uint32_t LL_RCC_PLL1Q_IsEnabled(void) 04412 { 04413 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ1EN) == RCC_PLLCFGR_DIVQ1EN)?1UL:0UL); 04414 } 04415 04416 /** 04417 * @brief Check if PLL1 R is enabled 04418 * @rmtoll PLLCFGR DIVR1EN LL_RCC_PLL1R_IsEnabled 04419 * @retval State of bit (1 or 0). 04420 */ 04421 __STATIC_INLINE uint32_t LL_RCC_PLL1R_IsEnabled(void) 04422 { 04423 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR1EN) == RCC_PLLCFGR_DIVR1EN)?1UL:0UL); 04424 } 04425 04426 /** 04427 * @brief Check if PLL1 FRACN is enabled 04428 * @rmtoll PLLCFGR PLL1FRACEN LL_RCC_PLL1FRACN_IsEnabled 04429 * @retval State of bit (1 or 0). 04430 */ 04431 __STATIC_INLINE uint32_t LL_RCC_PLL1FRACN_IsEnabled(void) 04432 { 04433 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL1FRACEN) == RCC_PLLCFGR_PLL1FRACEN)?1UL:0UL); 04434 } 04435 04436 /** 04437 * @brief Disable PLL1P 04438 * @note This API shall be called only when PLL1 is disabled. 04439 * @rmtoll PLLCFGR DIVP1EN LL_RCC_PLL1P_Disable 04440 * @retval None 04441 */ 04442 __STATIC_INLINE void LL_RCC_PLL1P_Disable(void) 04443 { 04444 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP1EN); 04445 } 04446 04447 /** 04448 * @brief Disable PLL1Q 04449 * @note This API shall be called only when PLL1 is disabled. 04450 * @rmtoll PLLCFGR DIVQ1EN LL_RCC_PLL1Q_Disable 04451 * @retval None 04452 */ 04453 __STATIC_INLINE void LL_RCC_PLL1Q_Disable(void) 04454 { 04455 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ1EN); 04456 } 04457 04458 /** 04459 * @brief Disable PLL1R 04460 * @note This API shall be called only when PLL1 is disabled. 04461 * @rmtoll PLLCFGR DIVR1EN LL_RCC_PLL1R_Disable 04462 * @retval None 04463 */ 04464 __STATIC_INLINE void LL_RCC_PLL1R_Disable(void) 04465 { 04466 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR1EN); 04467 } 04468 04469 /** 04470 * @brief Disable PLL1 FRACN 04471 * @rmtoll PLLCFGR PLL1FRACEN LL_RCC_PLL1FRACN_Enable 04472 * @retval None 04473 */ 04474 __STATIC_INLINE void LL_RCC_PLL1FRACN_Disable(void) 04475 { 04476 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL1FRACEN); 04477 } 04478 04479 /** 04480 * @brief Set PLL1 VCO OutputRange 04481 * @note This API shall be called only when PLL1 is disabled. 04482 * @rmtoll PLLCFGR PLL1VCOSEL LL_RCC_PLL1_SetVCOOuputRange 04483 * @param VCORange This parameter can be one of the following values: 04484 * @arg @ref LL_RCC_PLLVCORANGE_WIDE 04485 * @arg @ref LL_RCC_PLLVCORANGE_MEDIUM 04486 * @retval None 04487 */ 04488 __STATIC_INLINE void LL_RCC_PLL1_SetVCOOutputRange(uint32_t VCORange) 04489 { 04490 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL1VCOSEL, VCORange << RCC_PLLCFGR_PLL1VCOSEL_Pos); 04491 } 04492 04493 /** 04494 * @brief Set PLL1 VCO Input Range 04495 * @note This API shall be called only when PLL1 is disabled. 04496 * @rmtoll PLLCFGR PLL1RGE LL_RCC_PLL1_SetVCOInputRange 04497 * @param InputRange This parameter can be one of the following values: 04498 * @arg @ref LL_RCC_PLLINPUTRANGE_1_2 04499 * @arg @ref LL_RCC_PLLINPUTRANGE_2_4 04500 * @arg @ref LL_RCC_PLLINPUTRANGE_4_8 04501 * @arg @ref LL_RCC_PLLINPUTRANGE_8_16 04502 * @retval None 04503 */ 04504 __STATIC_INLINE void LL_RCC_PLL1_SetVCOInputRange(uint32_t InputRange) 04505 { 04506 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL1RGE, InputRange << RCC_PLLCFGR_PLL1RGE_Pos); 04507 } 04508 04509 /** 04510 * @brief Get PLL1 N Coefficient 04511 * @rmtoll PLL1DIVR N1 LL_RCC_PLL1_GetN 04512 * @retval A value between 4 and 512 04513 */ 04514 __STATIC_INLINE uint32_t LL_RCC_PLL1_GetN(void) 04515 { 04516 return (uint32_t)((READ_BIT(RCC->PLL1DIVR, RCC_PLL1DIVR_N1) >> RCC_PLL1DIVR_N1_Pos) + 1UL); 04517 } 04518 04519 /** 04520 * @brief Get PLL1 M Coefficient 04521 * @rmtoll PLLCKSELR DIVM1 LL_RCC_PLL1_GetM 04522 * @retval A value between 0 and 63 04523 */ 04524 __STATIC_INLINE uint32_t LL_RCC_PLL1_GetM(void) 04525 { 04526 return (uint32_t)(READ_BIT(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM1) >> RCC_PLLCKSELR_DIVM1_Pos); 04527 } 04528 04529 /** 04530 * @brief Get PLL1 P Coefficient 04531 * @rmtoll PLL1DIVR P1 LL_RCC_PLL1_GetP 04532 * @retval A value between 2 and 128 04533 */ 04534 __STATIC_INLINE uint32_t LL_RCC_PLL1_GetP(void) 04535 { 04536 return (uint32_t)((READ_BIT(RCC->PLL1DIVR, RCC_PLL1DIVR_P1) >> RCC_PLL1DIVR_P1_Pos) + 1UL); 04537 } 04538 04539 /** 04540 * @brief Get PLL1 Q Coefficient 04541 * @rmtoll PLL1DIVR Q1 LL_RCC_PLL1_GetQ 04542 * @retval A value between 1 and 128 04543 */ 04544 __STATIC_INLINE uint32_t LL_RCC_PLL1_GetQ(void) 04545 { 04546 return (uint32_t)((READ_BIT(RCC->PLL1DIVR, RCC_PLL1DIVR_Q1) >> RCC_PLL1DIVR_Q1_Pos) + 1UL); 04547 } 04548 04549 /** 04550 * @brief Get PLL1 R Coefficient 04551 * @rmtoll PLL1DIVR R1 LL_RCC_PLL1_GetR 04552 * @retval A value between 1 and 128 04553 */ 04554 __STATIC_INLINE uint32_t LL_RCC_PLL1_GetR(void) 04555 { 04556 return (uint32_t)((READ_BIT(RCC->PLL1DIVR, RCC_PLL1DIVR_R1) >> RCC_PLL1DIVR_R1_Pos) + 1UL); 04557 } 04558 04559 /** 04560 * @brief Get PLL1 FRACN Coefficient 04561 * @rmtoll PLL1FRACR FRACN1 LL_RCC_PLL1_GetFRACN 04562 * @retval A value between 0 and 8191 (0x1FFF) 04563 */ 04564 __STATIC_INLINE uint32_t LL_RCC_PLL1_GetFRACN(void) 04565 { 04566 return (uint32_t)(READ_BIT(RCC->PLL1FRACR, RCC_PLL1FRACR_FRACN1) >> RCC_PLL1FRACR_FRACN1_Pos); 04567 } 04568 04569 /** 04570 * @brief Set PLL1 N Coefficient 04571 * @note This API shall be called only when PLL1 is disabled. 04572 * @rmtoll PLL1DIVR N1 LL_RCC_PLL1_SetN 04573 * @param N parameter can be a value between 4 and 512 04574 */ 04575 __STATIC_INLINE void LL_RCC_PLL1_SetN(uint32_t N) 04576 { 04577 MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_N1, (N-1UL) << RCC_PLL1DIVR_N1_Pos); 04578 } 04579 04580 /** 04581 * @brief Set PLL1 M Coefficient 04582 * @note This API shall be called only when PLL1 is disabled. 04583 * @rmtoll PLLCKSELR DIVM1 LL_RCC_PLL1_SetM 04584 * @param M parameter can be a value between 0 and 63 04585 */ 04586 __STATIC_INLINE void LL_RCC_PLL1_SetM(uint32_t M) 04587 { 04588 MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM1, M << RCC_PLLCKSELR_DIVM1_Pos); 04589 } 04590 04591 /** 04592 * @brief Set PLL1 P Coefficient 04593 * @note This API shall be called only when PLL1 is disabled. 04594 * @rmtoll PLL1DIVR P1 LL_RCC_PLL1_SetP 04595 * @param P parameter can be a value between 2 (or 1*) and 128 (ODD division factor not supported) 04596 * 04597 * (*) : For stm32h72xxx and stm32h73xxx family lines. 04598 */ 04599 __STATIC_INLINE void LL_RCC_PLL1_SetP(uint32_t P) 04600 { 04601 MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_P1, (P-1UL) << RCC_PLL1DIVR_P1_Pos); 04602 } 04603 04604 /** 04605 * @brief Set PLL1 Q Coefficient 04606 * @note This API shall be called only when PLL1 is disabled. 04607 * @rmtoll PLL1DIVR Q1 LL_RCC_PLL1_SetQ 04608 * @param Q parameter can be a value between 1 and 128 04609 */ 04610 __STATIC_INLINE void LL_RCC_PLL1_SetQ(uint32_t Q) 04611 { 04612 MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_Q1, (Q-1UL) << RCC_PLL1DIVR_Q1_Pos); 04613 } 04614 04615 /** 04616 * @brief Set PLL1 R Coefficient 04617 * @note This API shall be called only when PLL1 is disabled. 04618 * @rmtoll PLL1DIVR R1 LL_RCC_PLL1_SetR 04619 * @param R parameter can be a value between 1 and 128 04620 */ 04621 __STATIC_INLINE void LL_RCC_PLL1_SetR(uint32_t R) 04622 { 04623 MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_R1, (R-1UL) << RCC_PLL1DIVR_R1_Pos); 04624 } 04625 04626 /** 04627 * @brief Set PLL1 FRACN Coefficient 04628 * @rmtoll PLL1FRACR FRACN1 LL_RCC_PLL1_SetFRACN 04629 * @param FRACN parameter can be a value between 0 and 8191 (0x1FFF) 04630 */ 04631 __STATIC_INLINE void LL_RCC_PLL1_SetFRACN(uint32_t FRACN) 04632 { 04633 MODIFY_REG(RCC->PLL1FRACR, RCC_PLL1FRACR_FRACN1, FRACN << RCC_PLL1FRACR_FRACN1_Pos); 04634 } 04635 04636 /** 04637 * @brief Enable PLL2 04638 * @rmtoll CR PLL2ON LL_RCC_PLL2_Enable 04639 * @retval None 04640 */ 04641 __STATIC_INLINE void LL_RCC_PLL2_Enable(void) 04642 { 04643 SET_BIT(RCC->CR, RCC_CR_PLL2ON); 04644 } 04645 04646 /** 04647 * @brief Disable PLL2 04648 * @note Cannot be disabled if the PLL2 clock is used as the system clock 04649 * @rmtoll CR PLL2ON LL_RCC_PLL2_Disable 04650 * @retval None 04651 */ 04652 __STATIC_INLINE void LL_RCC_PLL2_Disable(void) 04653 { 04654 CLEAR_BIT(RCC->CR, RCC_CR_PLL2ON); 04655 } 04656 04657 /** 04658 * @brief Check if PLL2 Ready 04659 * @rmtoll CR PLL2RDY LL_RCC_PLL2_IsReady 04660 * @retval State of bit (1 or 0). 04661 */ 04662 __STATIC_INLINE uint32_t LL_RCC_PLL2_IsReady(void) 04663 { 04664 return ((READ_BIT(RCC->CR, RCC_CR_PLL2RDY) == (RCC_CR_PLL2RDY))?1UL:0UL); 04665 } 04666 04667 /** 04668 * @brief Enable PLL2P 04669 * @note This API shall be called only when PLL2 is disabled. 04670 * @rmtoll PLLCFGR DIVP2EN LL_RCC_PLL2P_Enable 04671 * @retval None 04672 */ 04673 __STATIC_INLINE void LL_RCC_PLL2P_Enable(void) 04674 { 04675 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP2EN); 04676 } 04677 04678 /** 04679 * @brief Enable PLL2Q 04680 * @note This API shall be called only when PLL2 is disabled. 04681 * @rmtoll PLLCFGR DIVQ2EN LL_RCC_PLL2Q_Enable 04682 * @retval None 04683 */ 04684 __STATIC_INLINE void LL_RCC_PLL2Q_Enable(void) 04685 { 04686 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ2EN); 04687 } 04688 04689 /** 04690 * @brief Enable PLL2R 04691 * @note This API shall be called only when PLL2 is disabled. 04692 * @rmtoll PLLCFGR DIVR2EN LL_RCC_PLL2R_Enable 04693 * @retval None 04694 */ 04695 __STATIC_INLINE void LL_RCC_PLL2R_Enable(void) 04696 { 04697 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR2EN); 04698 } 04699 04700 /** 04701 * @brief Enable PLL2 FRACN 04702 * @rmtoll PLLCFGR PLL2FRACEN LL_RCC_PLL2FRACN_Enable 04703 * @retval None 04704 */ 04705 __STATIC_INLINE void LL_RCC_PLL2FRACN_Enable(void) 04706 { 04707 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL2FRACEN); 04708 } 04709 04710 /** 04711 * @brief Check if PLL2 P is enabled 04712 * @rmtoll PLLCFGR DIVP2EN LL_RCC_PLL2P_IsEnabled 04713 * @retval State of bit (1 or 0). 04714 */ 04715 __STATIC_INLINE uint32_t LL_RCC_PLL2P_IsEnabled(void) 04716 { 04717 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP2EN) == RCC_PLLCFGR_DIVP2EN)?1UL:0UL); 04718 } 04719 04720 /** 04721 * @brief Check if PLL2 Q is enabled 04722 * @rmtoll PLLCFGR DIVQ2EN LL_RCC_PLL2Q_IsEnabled 04723 * @retval State of bit (1 or 0). 04724 */ 04725 __STATIC_INLINE uint32_t LL_RCC_PLL2Q_IsEnabled(void) 04726 { 04727 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ2EN) == RCC_PLLCFGR_DIVQ2EN)?1UL:0UL); 04728 } 04729 04730 /** 04731 * @brief Check if PLL2 R is enabled 04732 * @rmtoll PLLCFGR DIVR2EN LL_RCC_PLL2R_IsEnabled 04733 * @retval State of bit (1 or 0). 04734 */ 04735 __STATIC_INLINE uint32_t LL_RCC_PLL2R_IsEnabled(void) 04736 { 04737 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR2EN) == RCC_PLLCFGR_DIVR2EN)?1UL:0UL); 04738 } 04739 04740 /** 04741 * @brief Check if PLL2 FRACN is enabled 04742 * @rmtoll PLLCFGR PLL2FRACEN LL_RCC_PLL2FRACN_IsEnabled 04743 * @retval State of bit (1 or 0). 04744 */ 04745 __STATIC_INLINE uint32_t LL_RCC_PLL2FRACN_IsEnabled(void) 04746 { 04747 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL2FRACEN) == RCC_PLLCFGR_PLL2FRACEN)?1UL:0UL); 04748 } 04749 04750 /** 04751 * @brief Disable PLL2P 04752 * @note This API shall be called only when PLL2 is disabled. 04753 * @rmtoll PLLCFGR DIVP2EN LL_RCC_PLL2P_Disable 04754 * @retval None 04755 */ 04756 __STATIC_INLINE void LL_RCC_PLL2P_Disable(void) 04757 { 04758 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP2EN); 04759 } 04760 04761 /** 04762 * @brief Disable PLL2Q 04763 * @note This API shall be called only when PLL2 is disabled. 04764 * @rmtoll PLLCFGR DIVQ2EN LL_RCC_PLL2Q_Disable 04765 * @retval None 04766 */ 04767 __STATIC_INLINE void LL_RCC_PLL2Q_Disable(void) 04768 { 04769 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ2EN); 04770 } 04771 04772 /** 04773 * @brief Disable PLL2R 04774 * @note This API shall be called only when PLL2 is disabled. 04775 * @rmtoll PLLCFGR DIVR2EN LL_RCC_PLL2R_Disable 04776 * @retval None 04777 */ 04778 __STATIC_INLINE void LL_RCC_PLL2R_Disable(void) 04779 { 04780 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR2EN); 04781 } 04782 04783 /** 04784 * @brief Disable PLL2 FRACN 04785 * @rmtoll PLLCFGR PLL2FRACEN LL_RCC_PLL2FRACN_Enable 04786 * @retval None 04787 */ 04788 __STATIC_INLINE void LL_RCC_PLL2FRACN_Disable(void) 04789 { 04790 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL2FRACEN); 04791 } 04792 04793 /** 04794 * @brief Set PLL2 VCO OutputRange 04795 * @note This API shall be called only when PLL2 is disabled. 04796 * @rmtoll PLLCFGR PLL2VCOSEL LL_RCC_PLL2_SetVCOOuputRange 04797 * @param VCORange This parameter can be one of the following values: 04798 * @arg @ref LL_RCC_PLLVCORANGE_WIDE 04799 * @arg @ref LL_RCC_PLLVCORANGE_MEDIUM 04800 * @retval None 04801 */ 04802 __STATIC_INLINE void LL_RCC_PLL2_SetVCOOutputRange(uint32_t VCORange) 04803 { 04804 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL2VCOSEL, VCORange << RCC_PLLCFGR_PLL2VCOSEL_Pos); 04805 } 04806 04807 /** 04808 * @brief Set PLL2 VCO Input Range 04809 * @note This API shall be called only when PLL2 is disabled. 04810 * @rmtoll PLLCFGR PLL2RGE LL_RCC_PLL2_SetVCOInputRange 04811 * @param InputRange This parameter can be one of the following values: 04812 * @arg @ref LL_RCC_PLLINPUTRANGE_1_2 04813 * @arg @ref LL_RCC_PLLINPUTRANGE_2_4 04814 * @arg @ref LL_RCC_PLLINPUTRANGE_4_8 04815 * @arg @ref LL_RCC_PLLINPUTRANGE_8_16 04816 * @retval None 04817 */ 04818 __STATIC_INLINE void LL_RCC_PLL2_SetVCOInputRange(uint32_t InputRange) 04819 { 04820 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL2RGE, InputRange << RCC_PLLCFGR_PLL2RGE_Pos); 04821 } 04822 04823 /** 04824 * @brief Get PLL2 N Coefficient 04825 * @rmtoll PLL2DIVR N2 LL_RCC_PLL2_GetN 04826 * @retval A value between 4 and 512 04827 */ 04828 __STATIC_INLINE uint32_t LL_RCC_PLL2_GetN(void) 04829 { 04830 return (uint32_t)((READ_BIT(RCC->PLL2DIVR, RCC_PLL2DIVR_N2) >> RCC_PLL2DIVR_N2_Pos) + 1UL); 04831 } 04832 04833 /** 04834 * @brief Get PLL2 M Coefficient 04835 * @rmtoll PLLCKSELR DIVM2 LL_RCC_PLL2_GetM 04836 * @retval A value between 0 and 63 04837 */ 04838 __STATIC_INLINE uint32_t LL_RCC_PLL2_GetM(void) 04839 { 04840 return (uint32_t)(READ_BIT(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM2) >> RCC_PLLCKSELR_DIVM2_Pos); 04841 } 04842 04843 /** 04844 * @brief Get PLL2 P Coefficient 04845 * @rmtoll PLL2DIVR P2 LL_RCC_PLL2_GetP 04846 * @retval A value between 1 and 128 04847 */ 04848 __STATIC_INLINE uint32_t LL_RCC_PLL2_GetP(void) 04849 { 04850 return (uint32_t)((READ_BIT(RCC->PLL2DIVR, RCC_PLL2DIVR_P2) >> RCC_PLL2DIVR_P2_Pos) + 1UL); 04851 } 04852 04853 /** 04854 * @brief Get PLL2 Q Coefficient 04855 * @rmtoll PLL2DIVR Q2 LL_RCC_PLL2_GetQ 04856 * @retval A value between 1 and 128 04857 */ 04858 __STATIC_INLINE uint32_t LL_RCC_PLL2_GetQ(void) 04859 { 04860 return (uint32_t)((READ_BIT(RCC->PLL2DIVR, RCC_PLL2DIVR_Q2) >> RCC_PLL2DIVR_Q2_Pos) + 1UL); 04861 } 04862 04863 /** 04864 * @brief Get PLL2 R Coefficient 04865 * @rmtoll PLL2DIVR R2 LL_RCC_PLL2_GetR 04866 * @retval A value between 1 and 128 04867 */ 04868 __STATIC_INLINE uint32_t LL_RCC_PLL2_GetR(void) 04869 { 04870 return (uint32_t)((READ_BIT(RCC->PLL2DIVR, RCC_PLL2DIVR_R2) >> RCC_PLL2DIVR_R2_Pos) + 1UL); 04871 } 04872 04873 /** 04874 * @brief Get PLL2 FRACN Coefficient 04875 * @rmtoll PLL2FRACR FRACN2 LL_RCC_PLL2_GetFRACN 04876 * @retval A value between 0 and 8191 (0x1FFF) 04877 */ 04878 __STATIC_INLINE uint32_t LL_RCC_PLL2_GetFRACN(void) 04879 { 04880 return (uint32_t)(READ_BIT(RCC->PLL2FRACR, RCC_PLL2FRACR_FRACN2) >> RCC_PLL2FRACR_FRACN2_Pos); 04881 } 04882 04883 /** 04884 * @brief Set PLL2 N Coefficient 04885 * @note This API shall be called only when PLL2 is disabled. 04886 * @rmtoll PLL2DIVR N2 LL_RCC_PLL2_SetN 04887 * @param N parameter can be a value between 4 and 512 04888 */ 04889 __STATIC_INLINE void LL_RCC_PLL2_SetN(uint32_t N) 04890 { 04891 MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_N2, (N-1UL) << RCC_PLL2DIVR_N2_Pos); 04892 } 04893 04894 /** 04895 * @brief Set PLL2 M Coefficient 04896 * @note This API shall be called only when PLL2 is disabled. 04897 * @rmtoll PLLCKSELR DIVM2 LL_RCC_PLL2_SetM 04898 * @param M parameter can be a value between 0 and 63 04899 */ 04900 __STATIC_INLINE void LL_RCC_PLL2_SetM(uint32_t M) 04901 { 04902 MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM2, M << RCC_PLLCKSELR_DIVM2_Pos); 04903 } 04904 04905 /** 04906 * @brief Set PLL2 P Coefficient 04907 * @note This API shall be called only when PLL2 is disabled. 04908 * @rmtoll PLL2DIVR P2 LL_RCC_PLL2_SetP 04909 * @param P parameter can be a value between 1 and 128 04910 */ 04911 __STATIC_INLINE void LL_RCC_PLL2_SetP(uint32_t P) 04912 { 04913 MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_P2, (P-1UL) << RCC_PLL2DIVR_P2_Pos); 04914 } 04915 04916 /** 04917 * @brief Set PLL2 Q Coefficient 04918 * @note This API shall be called only when PLL2 is disabled. 04919 * @rmtoll PLL2DIVR Q2 LL_RCC_PLL2_SetQ 04920 * @param Q parameter can be a value between 1 and 128 04921 */ 04922 __STATIC_INLINE void LL_RCC_PLL2_SetQ(uint32_t Q) 04923 { 04924 MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_Q2, (Q-1UL) << RCC_PLL2DIVR_Q2_Pos); 04925 } 04926 04927 /** 04928 * @brief Set PLL2 R Coefficient 04929 * @note This API shall be called only when PLL2 is disabled. 04930 * @rmtoll PLL2DIVR R2 LL_RCC_PLL2_SetR 04931 * @param R parameter can be a value between 1 and 128 04932 */ 04933 __STATIC_INLINE void LL_RCC_PLL2_SetR(uint32_t R) 04934 { 04935 MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_R2, (R-1UL) << RCC_PLL2DIVR_R2_Pos); 04936 } 04937 04938 /** 04939 * @brief Set PLL2 FRACN Coefficient 04940 * @rmtoll PLL2FRACR FRACN2 LL_RCC_PLL2_SetFRACN 04941 * @param FRACN parameter can be a value between 0 and 8191 (0x1FFF) 04942 */ 04943 __STATIC_INLINE void LL_RCC_PLL2_SetFRACN(uint32_t FRACN) 04944 { 04945 MODIFY_REG(RCC->PLL2FRACR, RCC_PLL2FRACR_FRACN2, FRACN << RCC_PLL2FRACR_FRACN2_Pos); 04946 } 04947 04948 /** 04949 * @brief Enable PLL3 04950 * @rmtoll CR PLL3ON LL_RCC_PLL3_Enable 04951 * @retval None 04952 */ 04953 __STATIC_INLINE void LL_RCC_PLL3_Enable(void) 04954 { 04955 SET_BIT(RCC->CR, RCC_CR_PLL3ON); 04956 } 04957 04958 /** 04959 * @brief Disable PLL3 04960 * @note Cannot be disabled if the PLL3 clock is used as the system clock 04961 * @rmtoll CR PLL3ON LL_RCC_PLL3_Disable 04962 * @retval None 04963 */ 04964 __STATIC_INLINE void LL_RCC_PLL3_Disable(void) 04965 { 04966 CLEAR_BIT(RCC->CR, RCC_CR_PLL3ON); 04967 } 04968 04969 /** 04970 * @brief Check if PLL3 Ready 04971 * @rmtoll CR PLL3RDY LL_RCC_PLL3_IsReady 04972 * @retval State of bit (1 or 0). 04973 */ 04974 __STATIC_INLINE uint32_t LL_RCC_PLL3_IsReady(void) 04975 { 04976 return ((READ_BIT(RCC->CR, RCC_CR_PLL3RDY) == (RCC_CR_PLL3RDY))?1UL:0UL); 04977 } 04978 04979 /** 04980 * @brief Enable PLL3P 04981 * @note This API shall be called only when PLL3 is disabled. 04982 * @rmtoll PLLCFGR DIVP3EN LL_RCC_PLL3P_Enable 04983 * @retval None 04984 */ 04985 __STATIC_INLINE void LL_RCC_PLL3P_Enable(void) 04986 { 04987 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP3EN); 04988 } 04989 04990 /** 04991 * @brief Enable PLL3Q 04992 * @note This API shall be called only when PLL3 is disabled. 04993 * @rmtoll PLLCFGR DIVQ3EN LL_RCC_PLL3Q_Enable 04994 * @retval None 04995 */ 04996 __STATIC_INLINE void LL_RCC_PLL3Q_Enable(void) 04997 { 04998 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ3EN); 04999 } 05000 05001 /** 05002 * @brief Enable PLL3R 05003 * @note This API shall be called only when PLL3 is disabled. 05004 * @rmtoll PLLCFGR DIVR3EN LL_RCC_PLL3R_Enable 05005 * @retval None 05006 */ 05007 __STATIC_INLINE void LL_RCC_PLL3R_Enable(void) 05008 { 05009 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR3EN); 05010 } 05011 05012 /** 05013 * @brief Enable PLL3 FRACN 05014 * @rmtoll PLLCFGR PLL3FRACEN LL_RCC_PLL3FRACN_Enable 05015 * @retval None 05016 */ 05017 __STATIC_INLINE void LL_RCC_PLL3FRACN_Enable(void) 05018 { 05019 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL3FRACEN); 05020 } 05021 05022 /** 05023 * @brief Check if PLL3 P is enabled 05024 * @rmtoll PLLCFGR DIVP3EN LL_RCC_PLL3P_IsEnabled 05025 * @retval State of bit (1 or 0). 05026 */ 05027 __STATIC_INLINE uint32_t LL_RCC_PLL3P_IsEnabled(void) 05028 { 05029 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP3EN) == RCC_PLLCFGR_DIVP3EN)?1UL:0UL); 05030 } 05031 05032 /** 05033 * @brief Check if PLL3 Q is enabled 05034 * @rmtoll PLLCFGR DIVQ3EN LL_RCC_PLL3Q_IsEnabled 05035 * @retval State of bit (1 or 0). 05036 */ 05037 __STATIC_INLINE uint32_t LL_RCC_PLL3Q_IsEnabled(void) 05038 { 05039 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ3EN) == RCC_PLLCFGR_DIVQ3EN)?1UL:0UL); 05040 } 05041 05042 /** 05043 * @brief Check if PLL3 R is enabled 05044 * @rmtoll PLLCFGR DIVR3EN LL_RCC_PLL3R_IsEnabled 05045 * @retval State of bit (1 or 0). 05046 */ 05047 __STATIC_INLINE uint32_t LL_RCC_PLL3R_IsEnabled(void) 05048 { 05049 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR3EN) == RCC_PLLCFGR_DIVR3EN)?1UL:0UL); 05050 } 05051 05052 /** 05053 * @brief Check if PLL3 FRACN is enabled 05054 * @rmtoll PLLCFGR PLL3FRACEN LL_RCC_PLL3FRACN_IsEnabled 05055 * @retval State of bit (1 or 0). 05056 */ 05057 __STATIC_INLINE uint32_t LL_RCC_PLL3FRACN_IsEnabled(void) 05058 { 05059 return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL3FRACEN) == RCC_PLLCFGR_PLL3FRACEN)?1UL:0UL); 05060 } 05061 05062 /** 05063 * @brief Disable PLL3P 05064 * @note This API shall be called only when PLL3 is disabled. 05065 * @rmtoll PLLCFGR DIVP2EN LL_RCC_PLL3P_Disable 05066 * @retval None 05067 */ 05068 __STATIC_INLINE void LL_RCC_PLL3P_Disable(void) 05069 { 05070 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP3EN); 05071 } 05072 05073 /** 05074 * @brief Disable PLL3Q 05075 * @note This API shall be called only when PLL3 is disabled. 05076 * @rmtoll PLLCFGR DIVQ3EN LL_RCC_PLL3Q_Disable 05077 * @retval None 05078 */ 05079 __STATIC_INLINE void LL_RCC_PLL3Q_Disable(void) 05080 { 05081 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ3EN); 05082 } 05083 05084 /** 05085 * @brief Disable PLL3R 05086 * @note This API shall be called only when PLL3 is disabled. 05087 * @rmtoll PLLCFGR DIVR3EN LL_RCC_PLL3R_Disable 05088 * @retval None 05089 */ 05090 __STATIC_INLINE void LL_RCC_PLL3R_Disable(void) 05091 { 05092 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR3EN); 05093 } 05094 05095 /** 05096 * @brief Disable PLL3 FRACN 05097 * @rmtoll PLLCFGR PLL3FRACEN LL_RCC_PLL3FRACN_Enable 05098 * @retval None 05099 */ 05100 __STATIC_INLINE void LL_RCC_PLL3FRACN_Disable(void) 05101 { 05102 CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL3FRACEN); 05103 } 05104 05105 /** 05106 * @brief Set PLL3 VCO OutputRange 05107 * @note This API shall be called only when PLL3 is disabled. 05108 * @rmtoll PLLCFGR PLL3VCOSEL LL_RCC_PLL3_SetVCOOuputRange 05109 * @param VCORange This parameter can be one of the following values: 05110 * @arg @ref LL_RCC_PLLVCORANGE_WIDE 05111 * @arg @ref LL_RCC_PLLVCORANGE_MEDIUM 05112 * @retval None 05113 */ 05114 __STATIC_INLINE void LL_RCC_PLL3_SetVCOOutputRange(uint32_t VCORange) 05115 { 05116 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL3VCOSEL, VCORange << RCC_PLLCFGR_PLL3VCOSEL_Pos); 05117 } 05118 05119 /** 05120 * @brief Set PLL3 VCO Input Range 05121 * @note This API shall be called only when PLL3 is disabled. 05122 * @rmtoll PLLCFGR PLL3RGE LL_RCC_PLL3_SetVCOInputRange 05123 * @param InputRange This parameter can be one of the following values: 05124 * @arg @ref LL_RCC_PLLINPUTRANGE_1_2 05125 * @arg @ref LL_RCC_PLLINPUTRANGE_2_4 05126 * @arg @ref LL_RCC_PLLINPUTRANGE_4_8 05127 * @arg @ref LL_RCC_PLLINPUTRANGE_8_16 05128 * @retval None 05129 */ 05130 __STATIC_INLINE void LL_RCC_PLL3_SetVCOInputRange(uint32_t InputRange) 05131 { 05132 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL3RGE, InputRange << RCC_PLLCFGR_PLL3RGE_Pos); 05133 } 05134 05135 /** 05136 * @brief Get PLL3 N Coefficient 05137 * @rmtoll PLL3DIVR N3 LL_RCC_PLL3_GetN 05138 * @retval A value between 4 and 512 05139 */ 05140 __STATIC_INLINE uint32_t LL_RCC_PLL3_GetN(void) 05141 { 05142 return (uint32_t)((READ_BIT(RCC->PLL3DIVR, RCC_PLL3DIVR_N3) >> RCC_PLL3DIVR_N3_Pos) + 1UL); 05143 } 05144 05145 /** 05146 * @brief Get PLL3 M Coefficient 05147 * @rmtoll PLLCKSELR DIVM3 LL_RCC_PLL3_GetM 05148 * @retval A value between 0 and 63 05149 */ 05150 __STATIC_INLINE uint32_t LL_RCC_PLL3_GetM(void) 05151 { 05152 return (uint32_t)(READ_BIT(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM3) >> RCC_PLLCKSELR_DIVM3_Pos); 05153 } 05154 05155 /** 05156 * @brief Get PLL3 P Coefficient 05157 * @rmtoll PLL3DIVR P3 LL_RCC_PLL3_GetP 05158 * @retval A value between 1 and 128 05159 */ 05160 __STATIC_INLINE uint32_t LL_RCC_PLL3_GetP(void) 05161 { 05162 return (uint32_t)((READ_BIT(RCC->PLL3DIVR, RCC_PLL3DIVR_P3) >> RCC_PLL3DIVR_P3_Pos) + 1UL); 05163 } 05164 05165 /** 05166 * @brief Get PLL3 Q Coefficient 05167 * @rmtoll PLL3DIVR Q3 LL_RCC_PLL3_GetQ 05168 * @retval A value between 1 and 128 05169 */ 05170 __STATIC_INLINE uint32_t LL_RCC_PLL3_GetQ(void) 05171 { 05172 return (uint32_t)((READ_BIT(RCC->PLL3DIVR, RCC_PLL3DIVR_Q3) >> RCC_PLL3DIVR_Q3_Pos) + 1UL); 05173 } 05174 05175 /** 05176 * @brief Get PLL3 R Coefficient 05177 * @rmtoll PLL3DIVR R3 LL_RCC_PLL3_GetR 05178 * @retval A value between 1 and 128 05179 */ 05180 __STATIC_INLINE uint32_t LL_RCC_PLL3_GetR(void) 05181 { 05182 return (uint32_t)((READ_BIT(RCC->PLL3DIVR, RCC_PLL3DIVR_R3) >> RCC_PLL3DIVR_R3_Pos) + 1UL); 05183 } 05184 05185 /** 05186 * @brief Get PLL3 FRACN Coefficient 05187 * @rmtoll PLL3FRACR FRACN3 LL_RCC_PLL3_GetFRACN 05188 * @retval A value between 0 and 8191 (0x1FFF) 05189 */ 05190 __STATIC_INLINE uint32_t LL_RCC_PLL3_GetFRACN(void) 05191 { 05192 return (uint32_t)(READ_BIT(RCC->PLL3FRACR, RCC_PLL3FRACR_FRACN3) >> RCC_PLL3FRACR_FRACN3_Pos); 05193 } 05194 05195 /** 05196 * @brief Set PLL3 N Coefficient 05197 * @note This API shall be called only when PLL3 is disabled. 05198 * @rmtoll PLL3DIVR N3 LL_RCC_PLL3_SetN 05199 * @param N parameter can be a value between 4 and 512 05200 */ 05201 __STATIC_INLINE void LL_RCC_PLL3_SetN(uint32_t N) 05202 { 05203 MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_N3, (N-1UL) << RCC_PLL3DIVR_N3_Pos); 05204 } 05205 05206 /** 05207 * @brief Set PLL3 M Coefficient 05208 * @note This API shall be called only when PLL3 is disabled. 05209 * @rmtoll PLLCKSELR DIVM3 LL_RCC_PLL3_SetM 05210 * @param M parameter can be a value between 0 and 63 05211 */ 05212 __STATIC_INLINE void LL_RCC_PLL3_SetM(uint32_t M) 05213 { 05214 MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM3, M << RCC_PLLCKSELR_DIVM3_Pos); 05215 } 05216 05217 /** 05218 * @brief Set PLL3 P Coefficient 05219 * @note This API shall be called only when PLL3 is disabled. 05220 * @rmtoll PLL3DIVR P3 LL_RCC_PLL3_SetP 05221 * @param P parameter can be a value between 1 and 128 05222 */ 05223 __STATIC_INLINE void LL_RCC_PLL3_SetP(uint32_t P) 05224 { 05225 MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_P3, (P-1UL) << RCC_PLL3DIVR_P3_Pos); 05226 } 05227 05228 /** 05229 * @brief Set PLL3 Q Coefficient 05230 * @note This API shall be called only when PLL3 is disabled. 05231 * @rmtoll PLL3DIVR Q3 LL_RCC_PLL3_SetQ 05232 * @param Q parameter can be a value between 1 and 128 05233 */ 05234 __STATIC_INLINE void LL_RCC_PLL3_SetQ(uint32_t Q) 05235 { 05236 MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_Q3, (Q-1UL) << RCC_PLL3DIVR_Q3_Pos); 05237 } 05238 05239 /** 05240 * @brief Set PLL3 R Coefficient 05241 * @note This API shall be called only when PLL3 is disabled. 05242 * @rmtoll PLL3DIVR R3 LL_RCC_PLL3_SetR 05243 * @param R parameter can be a value between 1 and 128 05244 */ 05245 __STATIC_INLINE void LL_RCC_PLL3_SetR(uint32_t R) 05246 { 05247 MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_R3, (R-1UL) << RCC_PLL3DIVR_R3_Pos); 05248 } 05249 05250 /** 05251 * @brief Set PLL3 FRACN Coefficient 05252 * @rmtoll PLL3FRACR FRACN3 LL_RCC_PLL3_SetFRACN 05253 * @param FRACN parameter can be a value between 0 and 8191 (0x1FFF) 05254 */ 05255 __STATIC_INLINE void LL_RCC_PLL3_SetFRACN(uint32_t FRACN) 05256 { 05257 MODIFY_REG(RCC->PLL3FRACR, RCC_PLL3FRACR_FRACN3, FRACN << RCC_PLL3FRACR_FRACN3_Pos); 05258 } 05259 05260 05261 /** 05262 * @} 05263 */ 05264 05265 05266 /** @defgroup RCC_LL_EF_FLAG_Management FLAG Management 05267 * @{ 05268 */ 05269 05270 /** 05271 * @brief Clear LSI ready interrupt flag 05272 * @rmtoll CICR LSIRDYC LL_RCC_ClearFlag_LSIRDY 05273 * @retval None 05274 */ 05275 __STATIC_INLINE void LL_RCC_ClearFlag_LSIRDY(void) 05276 { 05277 SET_BIT(RCC->CICR, RCC_CICR_LSIRDYC); 05278 } 05279 05280 /** 05281 * @brief Clear LSE ready interrupt flag 05282 * @rmtoll CICR LSERDYC LL_RCC_ClearFlag_LSERDY 05283 * @retval None 05284 */ 05285 __STATIC_INLINE void LL_RCC_ClearFlag_LSERDY(void) 05286 { 05287 SET_BIT(RCC->CICR, RCC_CICR_LSERDYC); 05288 } 05289 05290 /** 05291 * @brief Clear HSI ready interrupt flag 05292 * @rmtoll CICR HSIRDYC LL_RCC_ClearFlag_HSIRDY 05293 * @retval None 05294 */ 05295 __STATIC_INLINE void LL_RCC_ClearFlag_HSIRDY(void) 05296 { 05297 SET_BIT(RCC->CICR, RCC_CICR_HSIRDYC); 05298 } 05299 05300 /** 05301 * @brief Clear HSE ready interrupt flag 05302 * @rmtoll CICR HSERDYC LL_RCC_ClearFlag_HSERDY 05303 * @retval None 05304 */ 05305 __STATIC_INLINE void LL_RCC_ClearFlag_HSERDY(void) 05306 { 05307 SET_BIT(RCC->CICR, RCC_CICR_HSERDYC); 05308 } 05309 05310 /** 05311 * @brief Clear CSI ready interrupt flag 05312 * @rmtoll CICR CSIRDYC LL_RCC_ClearFlag_CSIRDY 05313 * @retval None 05314 */ 05315 __STATIC_INLINE void LL_RCC_ClearFlag_CSIRDY(void) 05316 { 05317 SET_BIT(RCC->CICR, RCC_CICR_CSIRDYC); 05318 } 05319 05320 /** 05321 * @brief Clear HSI48 ready interrupt flag 05322 * @rmtoll CICR HSI48RDYC LL_RCC_ClearFlag_HSI48RDY 05323 * @retval None 05324 */ 05325 __STATIC_INLINE void LL_RCC_ClearFlag_HSI48RDY(void) 05326 { 05327 SET_BIT(RCC->CICR, RCC_CICR_HSI48RDYC); 05328 } 05329 05330 /** 05331 * @brief Clear PLL1 ready interrupt flag 05332 * @rmtoll CICR PLL1RDYC LL_RCC_ClearFlag_PLL1RDY 05333 * @retval None 05334 */ 05335 __STATIC_INLINE void LL_RCC_ClearFlag_PLL1RDY(void) 05336 { 05337 SET_BIT(RCC->CICR, RCC_CICR_PLLRDYC); 05338 } 05339 05340 /** 05341 * @brief Clear PLL2 ready interrupt flag 05342 * @rmtoll CICR PLL2RDYC LL_RCC_ClearFlag_PLL2RDY 05343 * @retval None 05344 */ 05345 __STATIC_INLINE void LL_RCC_ClearFlag_PLL2RDY(void) 05346 { 05347 SET_BIT(RCC->CICR, RCC_CICR_PLL2RDYC); 05348 } 05349 05350 /** 05351 * @brief Clear PLL3 ready interrupt flag 05352 * @rmtoll CICR PLL3RDYC LL_RCC_ClearFlag_PLL3RDY 05353 * @retval None 05354 */ 05355 __STATIC_INLINE void LL_RCC_ClearFlag_PLL3RDY(void) 05356 { 05357 SET_BIT(RCC->CICR, RCC_CICR_PLL3RDYC); 05358 } 05359 05360 /** 05361 * @brief Clear LSE Clock security system interrupt flag 05362 * @rmtoll CICR LSECSSC LL_RCC_ClearFlag_LSECSS 05363 * @retval None 05364 */ 05365 __STATIC_INLINE void LL_RCC_ClearFlag_LSECSS(void) 05366 { 05367 SET_BIT(RCC->CICR, RCC_CICR_LSECSSC); 05368 } 05369 05370 /** 05371 * @brief Clear HSE Clock security system interrupt flag 05372 * @rmtoll CICR HSECSSC LL_RCC_ClearFlag_HSECSS 05373 * @retval None 05374 */ 05375 __STATIC_INLINE void LL_RCC_ClearFlag_HSECSS(void) 05376 { 05377 SET_BIT(RCC->CICR, RCC_CICR_HSECSSC); 05378 } 05379 05380 /** 05381 * @brief Check if LSI ready interrupt occurred or not 05382 * @rmtoll CIFR LSIRDYF LL_RCC_IsActiveFlag_LSIRDY 05383 * @retval State of bit (1 or 0). 05384 */ 05385 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSIRDY(void) 05386 { 05387 return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSIRDYF) == (RCC_CIFR_LSIRDYF))?1UL:0UL); 05388 } 05389 05390 /** 05391 * @brief Check if LSE ready interrupt occurred or not 05392 * @rmtoll CIFR LSERDYF LL_RCC_IsActiveFlag_LSERDY 05393 * @retval State of bit (1 or 0). 05394 */ 05395 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSERDY(void) 05396 { 05397 return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSERDYF) == (RCC_CIFR_LSERDYF))?1UL:0UL); 05398 } 05399 05400 /** 05401 * @brief Check if HSI ready interrupt occurred or not 05402 * @rmtoll CIFR HSIRDYF LL_RCC_IsActiveFlag_HSIRDY 05403 * @retval State of bit (1 or 0). 05404 */ 05405 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSIRDY(void) 05406 { 05407 return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSIRDYF) == (RCC_CIFR_HSIRDYF))?1UL:0UL); 05408 } 05409 05410 /** 05411 * @brief Check if HSE ready interrupt occurred or not 05412 * @rmtoll CIFR HSERDYF LL_RCC_IsActiveFlag_HSERDY 05413 * @retval State of bit (1 or 0). 05414 */ 05415 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSERDY(void) 05416 { 05417 return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSERDYF) == (RCC_CIFR_HSERDYF))?1UL:0UL); 05418 } 05419 05420 /** 05421 * @brief Check if CSI ready interrupt occurred or not 05422 * @rmtoll CIFR CSIRDYF LL_RCC_IsActiveFlag_CSIRDY 05423 * @retval State of bit (1 or 0). 05424 */ 05425 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_CSIRDY(void) 05426 { 05427 return ((READ_BIT(RCC->CIFR, RCC_CIFR_CSIRDYF) == (RCC_CIFR_CSIRDYF))?1UL:0UL); 05428 } 05429 05430 /** 05431 * @brief Check if HSI48 ready interrupt occurred or not 05432 * @rmtoll CIFR HSI48RDYF LL_RCC_IsActiveFlag_HSI48RDY 05433 * @retval State of bit (1 or 0). 05434 */ 05435 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSI48RDY(void) 05436 { 05437 return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSI48RDYF) == (RCC_CIFR_HSI48RDYF))?1UL:0UL); 05438 } 05439 05440 /** 05441 * @brief Check if PLL1 ready interrupt occurred or not 05442 * @rmtoll CIFR PLLRDYF LL_RCC_IsActiveFlag_PLL1RDY 05443 * @retval State of bit (1 or 0). 05444 */ 05445 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLL1RDY(void) 05446 { 05447 return ((READ_BIT(RCC->CIFR, RCC_CIFR_PLLRDYF) == (RCC_CIFR_PLLRDYF))?1UL:0UL); 05448 } 05449 05450 /** 05451 * @brief Check if PLL2 ready interrupt occurred or not 05452 * @rmtoll CIFR PLL2RDYF LL_RCC_IsActiveFlag_PLL2RDY 05453 * @retval State of bit (1 or 0). 05454 */ 05455 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLL2RDY(void) 05456 { 05457 return ((READ_BIT(RCC->CIFR, RCC_CIFR_PLL2RDYF) == (RCC_CIFR_PLL2RDYF))?1UL:0UL); 05458 } 05459 05460 /** 05461 * @brief Check if PLL3 ready interrupt occurred or not 05462 * @rmtoll CIFR PLL3RDYF LL_RCC_IsActiveFlag_PLL3RDY 05463 * @retval State of bit (1 or 0). 05464 */ 05465 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLL3RDY(void) 05466 { 05467 return ((READ_BIT(RCC->CIFR, RCC_CIFR_PLL3RDYF) == (RCC_CIFR_PLL3RDYF))?1UL:0UL); 05468 } 05469 05470 /** 05471 * @brief Check if LSE Clock security system interrupt occurred or not 05472 * @rmtoll CIFR LSECSSF LL_RCC_IsActiveFlag_LSECSS 05473 * @retval State of bit (1 or 0). 05474 */ 05475 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSECSS(void) 05476 { 05477 return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSECSSF) == (RCC_CIFR_LSECSSF))?1UL:0UL); 05478 } 05479 05480 /** 05481 * @brief Check if HSE Clock security system interrupt occurred or not 05482 * @rmtoll CIFR HSECSSF LL_RCC_IsActiveFlag_HSECSS 05483 * @retval State of bit (1 or 0). 05484 */ 05485 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSECSS(void) 05486 { 05487 return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSECSSF) == (RCC_CIFR_HSECSSF))?1UL:0UL); 05488 } 05489 05490 /** 05491 * @brief Check if RCC flag Low Power D1 reset is set or not. 05492 * @rmtoll RSR LPWRRSTF LL_RCC_IsActiveFlag_LPWRRST (*)\n 05493 * RSR LPWR1RSTF LL_RCC_IsActiveFlag_LPWRRST (**) 05494 * 05495 * (*) Only available for single core devices 05496 * (**) Only available for Dual core devices 05497 * @retval State of bit (1 or 0). 05498 */ 05499 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LPWRRST(void) 05500 { 05501 #if defined(DUAL_CORE) 05502 return ((READ_BIT(RCC->RSR, RCC_RSR_LPWR1RSTF) == (RCC_RSR_LPWR1RSTF))?1UL:0UL); 05503 #else 05504 return ((READ_BIT(RCC->RSR, RCC_RSR_LPWRRSTF) == (RCC_RSR_LPWRRSTF))?1UL:0UL); 05505 #endif /*DUAL_CORE*/ 05506 } 05507 05508 #if defined(DUAL_CORE) 05509 /** 05510 * @brief Check if RCC flag Low Power D2 reset is set or not. 05511 * @rmtoll RSR LPWR2RSTF LL_RCC_IsActiveFlag_LPWR2RST 05512 * @retval State of bit (1 or 0). 05513 */ 05514 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LPWR2RST(void) 05515 { 05516 return ((READ_BIT(RCC->RSR, RCC_RSR_LPWR2RSTF) == (RCC_RSR_LPWR2RSTF))?1UL:0UL); 05517 } 05518 #endif /*DUAL_CORE*/ 05519 05520 /** 05521 * @brief Check if RCC flag Window Watchdog 1 reset is set or not. 05522 * @rmtoll RSR WWDG1RSTF LL_RCC_IsActiveFlag_WWDG1RST 05523 * @retval State of bit (1 or 0). 05524 */ 05525 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_WWDG1RST(void) 05526 { 05527 return ((READ_BIT(RCC->RSR, RCC_RSR_WWDG1RSTF) == (RCC_RSR_WWDG1RSTF))?1UL:0UL); 05528 } 05529 05530 #if defined(DUAL_CORE) 05531 /** 05532 * @brief Check if RCC flag Window Watchdog 2 reset is set or not. 05533 * @rmtoll RSR WWDG2RSTF LL_RCC_IsActiveFlag_WWDG2RST 05534 * @retval State of bit (1 or 0). 05535 */ 05536 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_WWDG2RST(void) 05537 { 05538 return ((READ_BIT(RCC->RSR, RCC_RSR_WWDG2RSTF) == (RCC_RSR_WWDG2RSTF))?1UL:0UL); 05539 } 05540 #endif /*DUAL_CORE*/ 05541 05542 /** 05543 * @brief Check if RCC flag Independent Watchdog 1 reset is set or not. 05544 * @rmtoll RSR IWDG1RSTF LL_RCC_IsActiveFlag_IWDG1RST 05545 * @retval State of bit (1 or 0). 05546 */ 05547 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_IWDG1RST(void) 05548 { 05549 return ((READ_BIT(RCC->RSR, RCC_RSR_IWDG1RSTF) == (RCC_RSR_IWDG1RSTF))?1UL:0UL); 05550 } 05551 05552 #if defined(DUAL_CORE) 05553 /** 05554 * @brief Check if RCC flag Independent Watchdog 2 reset is set or not. 05555 * @rmtoll RSR IWDG2RSTF LL_RCC_IsActiveFlag_IWDG2RST 05556 * @retval State of bit (1 or 0). 05557 */ 05558 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_IWDG2RST(void) 05559 { 05560 return ((READ_BIT(RCC->RSR, RCC_RSR_IWDG2RSTF) == (RCC_RSR_IWDG2RSTF))?1UL:0UL); 05561 } 05562 #endif /*DUAL_CORE*/ 05563 05564 /** 05565 * @brief Check if RCC flag Software reset is set or not. 05566 * @rmtoll RSR SFTRSTF LL_RCC_IsActiveFlag_SFTRST (*)\n 05567 * RSR SFT1RSTF LL_RCC_IsActiveFlag_SFTRST (**) 05568 * 05569 * (*) Only available for single core devices 05570 * (**) Only available for Dual core devices 05571 * @retval State of bit (1 or 0). 05572 */ 05573 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SFTRST(void) 05574 { 05575 #if defined(DUAL_CORE) 05576 return ((READ_BIT(RCC->RSR, RCC_RSR_SFT1RSTF) == (RCC_RSR_SFT1RSTF))?1UL:0UL); 05577 #else 05578 return ((READ_BIT(RCC->RSR, RCC_RSR_SFTRSTF) == (RCC_RSR_SFTRSTF))?1UL:0UL); 05579 #endif /*DUAL_CORE*/ 05580 } 05581 05582 #if defined(DUAL_CORE) 05583 /** 05584 * @brief Check if RCC flag Software reset is set or not. 05585 * @rmtoll RSR SFT2RSTF LL_RCC_IsActiveFlag_SFT2RST 05586 * @retval State of bit (1 or 0). 05587 */ 05588 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SFT2RST(void) 05589 { 05590 return ((READ_BIT(RCC->RSR, RCC_RSR_SFT2RSTF) == (RCC_RSR_SFT2RSTF))?1UL:0UL); 05591 } 05592 #endif /*DUAL_CORE*/ 05593 05594 /** 05595 * @brief Check if RCC flag POR/PDR reset is set or not. 05596 * @rmtoll RSR PORRSTF LL_RCC_IsActiveFlag_PORRST 05597 * @retval State of bit (1 or 0). 05598 */ 05599 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PORRST(void) 05600 { 05601 return ((READ_BIT(RCC->RSR, RCC_RSR_PORRSTF) == (RCC_RSR_PORRSTF))?1UL:0UL); 05602 } 05603 05604 /** 05605 * @brief Check if RCC flag Pin reset is set or not. 05606 * @rmtoll RSR PINRSTF LL_RCC_IsActiveFlag_PINRST 05607 * @retval State of bit (1 or 0). 05608 */ 05609 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PINRST(void) 05610 { 05611 return ((READ_BIT(RCC->RSR, RCC_RSR_PINRSTF) == (RCC_RSR_PINRSTF))?1UL:0UL); 05612 } 05613 05614 /** 05615 * @brief Check if RCC flag BOR reset is set or not. 05616 * @rmtoll RSR BORRSTF LL_RCC_IsActiveFlag_BORRST 05617 * @retval State of bit (1 or 0). 05618 */ 05619 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_BORRST(void) 05620 { 05621 return ((READ_BIT(RCC->RSR, RCC_RSR_BORRSTF) == (RCC_RSR_BORRSTF))?1UL:0UL); 05622 } 05623 05624 #if defined(RCC_RSR_D1RSTF) 05625 /** 05626 * @brief Check if RCC flag D1 reset is set or not. 05627 * @rmtoll RSR D1RSTF LL_RCC_IsActiveFlag_D1RST 05628 * @retval State of bit (1 or 0). 05629 */ 05630 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_D1RST(void) 05631 { 05632 return ((READ_BIT(RCC->RSR, RCC_RSR_D1RSTF) == (RCC_RSR_D1RSTF))?1UL:0UL); 05633 } 05634 #endif /* RCC_RSR_D1RSTF */ 05635 05636 #if defined(RCC_RSR_CDRSTF) 05637 /** 05638 * @brief Check if RCC flag CD reset is set or not. 05639 * @rmtoll RSR CDRSTF LL_RCC_IsActiveFlag_CDRST 05640 * @retval State of bit (1 or 0). 05641 */ 05642 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_CDRST(void) 05643 { 05644 return ((READ_BIT(RCC->RSR, RCC_RSR_CDRSTF) == (RCC_RSR_CDRSTF))?1UL:0UL); 05645 } 05646 #endif /* RCC_RSR_CDRSTF */ 05647 05648 #if defined(RCC_RSR_D2RSTF) 05649 /** 05650 * @brief Check if RCC flag D2 reset is set or not. 05651 * @rmtoll RSR D2RSTF LL_RCC_IsActiveFlag_D2RST 05652 * @retval State of bit (1 or 0). 05653 */ 05654 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_D2RST(void) 05655 { 05656 return ((READ_BIT(RCC->RSR, RCC_RSR_D2RSTF) == (RCC_RSR_D2RSTF))?1UL:0UL); 05657 } 05658 #endif /* RCC_RSR_D2RSTF */ 05659 05660 #if defined(RCC_RSR_C1RSTF) || defined(RCC_RSR_CPURSTF) 05661 /** 05662 * @brief Check if RCC flag CPU reset is set or not. 05663 * @rmtoll RSR CPURSTF LL_RCC_IsActiveFlag_CPURST (*)\n 05664 * RSR C1RSTF LL_RCC_IsActiveFlag_CPURST (**) 05665 * 05666 * (*) Only available for single core devices 05667 * (**) Only available for Dual core devices 05668 * @retval State of bit (1 or 0). 05669 */ 05670 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_CPURST(void) 05671 { 05672 #if defined(DUAL_CORE) 05673 return ((READ_BIT(RCC->RSR, RCC_RSR_C1RSTF) == (RCC_RSR_C1RSTF))?1UL:0UL); 05674 #else 05675 return ((READ_BIT(RCC->RSR, RCC_RSR_CPURSTF) == (RCC_RSR_CPURSTF))?1UL:0UL); 05676 #endif/*DUAL_CORE*/ 05677 } 05678 #endif /* defined(RCC_RSR_C1RSTF) || defined(RCC_RSR_CPURSTF) */ 05679 05680 #if defined(DUAL_CORE) 05681 /** 05682 * @brief Check if RCC flag CPU2 reset is set or not. 05683 * @rmtoll RSR C2RSTF LL_RCC_IsActiveFlag_CPU2RST 05684 * @retval State of bit (1 or 0). 05685 */ 05686 __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_CPU2RST(void) 05687 { 05688 return ((READ_BIT(RCC->RSR, RCC_RSR_C2RSTF) == (RCC_RSR_C2RSTF))?1UL:0UL); 05689 } 05690 #endif /*DUAL_CORE*/ 05691 05692 /** 05693 * @brief Set RMVF bit to clear all reset flags. 05694 * @rmtoll RSR RMVF LL_RCC_ClearResetFlags 05695 * @retval None 05696 */ 05697 __STATIC_INLINE void LL_RCC_ClearResetFlags(void) 05698 { 05699 SET_BIT(RCC->RSR, RCC_RSR_RMVF); 05700 } 05701 05702 #if defined(DUAL_CORE) 05703 /** 05704 * @brief Check if RCC_C1 flag Low Power D1 reset is set or not. 05705 * @rmtoll RSR LPWR1RSTF LL_C1_RCC_IsActiveFlag_LPWRRST 05706 * @retval State of bit (1 or 0). 05707 */ 05708 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_LPWRRST(void) 05709 { 05710 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_LPWR1RSTF) == (RCC_RSR_LPWR1RSTF))?1UL:0UL); 05711 } 05712 05713 /** 05714 * @brief Check if RCC_C1 flag Low Power D2 reset is set or not. 05715 * @rmtoll RSR LPWR2RSTF LL_C1_RCC_IsActiveFlag_LPWR2RST 05716 * @retval State of bit (1 or 0). 05717 */ 05718 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_LPWR2RST(void) 05719 { 05720 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_LPWR2RSTF) == (RCC_RSR_LPWR2RSTF))?1UL:0UL); 05721 } 05722 05723 /** 05724 * @brief Check if RCC_C1 flag Window Watchdog 1 reset is set or not. 05725 * @rmtoll RSR WWDG1RSTF LL_C1_RCC_IsActiveFlag_WWDG1RST 05726 * @retval State of bit (1 or 0). 05727 */ 05728 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_WWDG1RST(void) 05729 { 05730 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_WWDG1RSTF) == (RCC_RSR_WWDG1RSTF))?1UL:0UL); 05731 } 05732 05733 /** 05734 * @brief Check if RCC_C1 flag Window Watchdog 2 reset is set or not. 05735 * @rmtoll RSR WWDG2RSTF LL_C1_RCC_IsActiveFlag_WWDG2RST 05736 * @retval State of bit (1 or 0). 05737 */ 05738 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_WWDG2RST(void) 05739 { 05740 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_WWDG2RSTF) == (RCC_RSR_WWDG2RSTF))?1UL:0UL); 05741 } 05742 05743 /** 05744 * @brief Check if RCC_C1 flag Independent Watchdog 1 reset is set or not. 05745 * @rmtoll RSR IWDG1RSTF LL_C1_RCC_IsActiveFlag_IWDG1RST 05746 * @retval State of bit (1 or 0). 05747 */ 05748 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_IWDG1RST(void) 05749 { 05750 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_IWDG1RSTF) == (RCC_RSR_IWDG1RSTF))?1UL:0UL); 05751 } 05752 05753 /** 05754 * @brief Check if RCC_C1 flag Independent Watchdog 2 reset is set or not. 05755 * @rmtoll RSR IWDG2RSTF LL_C1_RCC_IsActiveFlag_IWDG2RST 05756 * @retval State of bit (1 or 0). 05757 */ 05758 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_IWDG2RST(void) 05759 { 05760 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_IWDG2RSTF) == (RCC_RSR_IWDG2RSTF))?1UL:0UL); 05761 } 05762 05763 /** 05764 * @brief Check if RCC_C1 flag Software reset is set or not. 05765 * @rmtoll RSR SFT1RSTF LL_C1_RCC_IsActiveFlag_SFTRST 05766 * @retval State of bit (1 or 0). 05767 */ 05768 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_SFTRST(void) 05769 { 05770 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_SFT1RSTF) == (RCC_RSR_SFT1RSTF))?1UL:0UL); 05771 } 05772 05773 /** 05774 * @brief Check if RCC_C1 flag Software reset is set or not. 05775 * @rmtoll RSR SFT2RSTF LL_C1_RCC_IsActiveFlag_SFT2RST 05776 * @retval State of bit (1 or 0). 05777 */ 05778 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_SFT2RST(void) 05779 { 05780 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_SFT2RSTF) == (RCC_RSR_SFT2RSTF))?1UL:0UL); 05781 } 05782 05783 /** 05784 * @brief Check if RCC_C1 flag POR/PDR reset is set or not. 05785 * @rmtoll RSR PORRSTF LL_C1_RCC_IsActiveFlag_PORRST 05786 * @retval State of bit (1 or 0). 05787 */ 05788 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_PORRST(void) 05789 { 05790 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_PORRSTF) == (RCC_RSR_PORRSTF))?1UL:0UL); 05791 } 05792 05793 /** 05794 * @brief Check if RCC_C1 flag Pin reset is set or not. 05795 * @rmtoll RSR PINRSTF LL_C1_RCC_IsActiveFlag_PINRST 05796 * @retval State of bit (1 or 0). 05797 */ 05798 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_PINRST(void) 05799 { 05800 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_PINRSTF) == (RCC_RSR_PINRSTF))?1UL:0UL); 05801 } 05802 05803 /** 05804 * @brief Check if RCC_C1 flag BOR reset is set or not. 05805 * @rmtoll RSR BORRSTF LL_C1_RCC_IsActiveFlag_BORRST 05806 * @retval State of bit (1 or 0). 05807 */ 05808 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_BORRST(void) 05809 { 05810 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_BORRSTF) == (RCC_RSR_BORRSTF))?1UL:0UL); 05811 } 05812 05813 /** 05814 * @brief Check if RCC_C1 flag D1 reset is set or not. 05815 * @rmtoll RSR D1RSTF LL_C1_RCC_IsActiveFlag_D1RST 05816 * @retval State of bit (1 or 0). 05817 */ 05818 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_D1RST(void) 05819 { 05820 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_D1RSTF) == (RCC_RSR_D1RSTF))?1UL:0UL); 05821 } 05822 05823 /** 05824 * @brief Check if RCC_C1 flag D2 reset is set or not. 05825 * @rmtoll RSR D2RSTF LL_C1_RCC_IsActiveFlag_D2RST 05826 * @retval State of bit (1 or 0). 05827 */ 05828 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_D2RST(void) 05829 { 05830 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_D2RSTF) == (RCC_RSR_D2RSTF))?1UL:0UL); 05831 } 05832 05833 /** 05834 * @brief Check if RCC_C1 flag CPU reset is set or not. 05835 * @rmtoll RSR C1RSTF LL_C1_RCC_IsActiveFlag_CPURST 05836 * @retval State of bit (1 or 0). 05837 */ 05838 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_CPURST(void) 05839 { 05840 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_C1RSTF) == (RCC_RSR_C1RSTF))?1UL:0UL); 05841 } 05842 05843 /** 05844 * @brief Check if RCC_C1 flag CPU2 reset is set or not. 05845 * @rmtoll RSR C2RSTF LL_C1_RCC_IsActiveFlag_CPU2RST 05846 * @retval State of bit (1 or 0). 05847 */ 05848 __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_CPU2RST(void) 05849 { 05850 return ((READ_BIT(RCC_C1->RSR, RCC_RSR_C2RSTF) == (RCC_RSR_C2RSTF))?1UL:0UL); 05851 } 05852 05853 /** 05854 * @brief Set RMVF bit to clear the reset flags. 05855 * @rmtoll RSR RMVF LL_C1_RCC_ClearResetFlags 05856 * @retval None 05857 */ 05858 __STATIC_INLINE void LL_C1_RCC_ClearResetFlags(void) 05859 { 05860 SET_BIT(RCC_C1->RSR, RCC_RSR_RMVF); 05861 } 05862 05863 /** 05864 * @brief Check if RCC_C2 flag Low Power D1 reset is set or not. 05865 * @rmtoll RSR LPWR1RSTF LL_C2_RCC_IsActiveFlag_LPWRRST 05866 * @retval State of bit (1 or 0). 05867 */ 05868 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_LPWRRST(void) 05869 { 05870 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_LPWR1RSTF) == (RCC_RSR_LPWR1RSTF))?1UL:0UL); 05871 } 05872 05873 /** 05874 * @brief Check if RCC_C2 flag Low Power D2 reset is set or not. 05875 * @rmtoll RSR LPWR2RSTF LL_C2_RCC_IsActiveFlag_LPWR2RST 05876 * @retval State of bit (1 or 0). 05877 */ 05878 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_LPWR2RST(void) 05879 { 05880 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_LPWR2RSTF) == (RCC_RSR_LPWR2RSTF))?1UL:0UL); 05881 } 05882 05883 /** 05884 * @brief Check if RCC_C2 flag Window Watchdog 1 reset is set or not. 05885 * @rmtoll RSR WWDG1RSTF LL_C2_RCC_IsActiveFlag_WWDG1RST 05886 * @retval State of bit (1 or 0). 05887 */ 05888 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_WWDG1RST(void) 05889 { 05890 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_WWDG1RSTF) == (RCC_RSR_WWDG1RSTF))?1UL:0UL); 05891 } 05892 05893 /** 05894 * @brief Check if RCC_C2 flag Window Watchdog 2 reset is set or not. 05895 * @rmtoll RSR WWDG2RSTF LL_C2_RCC_IsActiveFlag_WWDG2RST 05896 * @retval State of bit (1 or 0). 05897 */ 05898 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_WWDG2RST(void) 05899 { 05900 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_WWDG2RSTF) == (RCC_RSR_WWDG2RSTF))?1UL:0UL); 05901 } 05902 05903 /** 05904 * @brief Check if RCC_C2 flag Independent Watchdog 1 reset is set or not. 05905 * @rmtoll RSR IWDG1RSTF LL_C2_RCC_IsActiveFlag_IWDG1RST 05906 * @retval State of bit (1 or 0). 05907 */ 05908 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_IWDG1RST(void) 05909 { 05910 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_IWDG1RSTF) == (RCC_RSR_IWDG1RSTF))?1UL:0UL); 05911 } 05912 05913 /** 05914 * @brief Check if RCC_C2 flag Independent Watchdog 2 reset is set or not. 05915 * @rmtoll RSR IWDG2RSTF LL_C2_RCC_IsActiveFlag_IWDG2RST 05916 * @retval State of bit (1 or 0). 05917 */ 05918 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_IWDG2RST(void) 05919 { 05920 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_IWDG2RSTF) == (RCC_RSR_IWDG2RSTF))?1UL:0UL); 05921 } 05922 05923 /** 05924 * @brief Check if RCC_C2 flag Software reset is set or not. 05925 * @rmtoll RSR SFT1RSTF LL_C2_RCC_IsActiveFlag_SFTRST 05926 * @retval State of bit (1 or 0). 05927 */ 05928 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_SFTRST(void) 05929 { 05930 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_SFT1RSTF) == (RCC_RSR_SFT1RSTF))?1UL:0UL); 05931 } 05932 05933 /** 05934 * @brief Check if RCC_C2 flag Software reset is set or not. 05935 * @rmtoll RSR SFT2RSTF LL_C2_RCC_IsActiveFlag_SFT2RST 05936 * @retval State of bit (1 or 0). 05937 */ 05938 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_SFT2RST(void) 05939 { 05940 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_SFT2RSTF) == (RCC_RSR_SFT2RSTF))?1UL:0UL); 05941 } 05942 05943 /** 05944 * @brief Check if RCC_C2 flag POR/PDR reset is set or not. 05945 * @rmtoll RSR PORRSTF LL_C2_RCC_IsActiveFlag_PORRST 05946 * @retval State of bit (1 or 0). 05947 */ 05948 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_PORRST(void) 05949 { 05950 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_PORRSTF) == (RCC_RSR_PORRSTF))?1UL:0UL); 05951 } 05952 05953 /** 05954 * @brief Check if RCC_C2 flag Pin reset is set or not. 05955 * @rmtoll RSR PINRSTF LL_C2_RCC_IsActiveFlag_PINRST 05956 * @retval State of bit (1 or 0). 05957 */ 05958 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_PINRST(void) 05959 { 05960 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_PINRSTF) == (RCC_RSR_PINRSTF))?1UL:0UL); 05961 } 05962 05963 /** 05964 * @brief Check if RCC_C2 flag BOR reset is set or not. 05965 * @rmtoll RSR BORRSTF LL_C2_RCC_IsActiveFlag_BORRST 05966 * @retval State of bit (1 or 0). 05967 */ 05968 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_BORRST(void) 05969 { 05970 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_BORRSTF) == (RCC_RSR_BORRSTF))?1UL:0UL); 05971 } 05972 05973 /** 05974 * @brief Check if RCC_C2 flag D1 reset is set or not. 05975 * @rmtoll RSR D1RSTF LL_C2_RCC_IsActiveFlag_D1RST 05976 * @retval State of bit (1 or 0). 05977 */ 05978 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_D1RST(void) 05979 { 05980 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_D1RSTF) == (RCC_RSR_D1RSTF))?1UL:0UL); 05981 } 05982 05983 /** 05984 * @brief Check if RCC_C2 flag D2 reset is set or not. 05985 * @rmtoll RSR D2RSTF LL_C2_RCC_IsActiveFlag_D2RST 05986 * @retval State of bit (1 or 0). 05987 */ 05988 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_D2RST(void) 05989 { 05990 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_D2RSTF) == (RCC_RSR_D2RSTF))?1UL:0UL); 05991 } 05992 05993 /** 05994 * @brief Check if RCC_C2 flag CPU reset is set or not. 05995 * @rmtoll RSR C1RSTF LL_C2_RCC_IsActiveFlag_CPURST 05996 * @retval State of bit (1 or 0). 05997 */ 05998 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_CPURST(void) 05999 { 06000 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_C1RSTF) == (RCC_RSR_C1RSTF))?1UL:0UL); 06001 } 06002 06003 /** 06004 * @brief Check if RCC_C2 flag CPU2 reset is set or not. 06005 * @rmtoll RSR C2RSTF LL_C2_RCC_IsActiveFlag_CPU2RST 06006 * @retval State of bit (1 or 0). 06007 */ 06008 __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_CPU2RST(void) 06009 { 06010 return ((READ_BIT(RCC_C2->RSR, RCC_RSR_C2RSTF) == (RCC_RSR_C2RSTF))?1UL:0UL); 06011 } 06012 06013 /** 06014 * @brief Set RMVF bit to clear the reset flags. 06015 * @rmtoll RSR RMVF LL_C2_RCC_ClearResetFlags 06016 * @retval None 06017 */ 06018 __STATIC_INLINE void LL_C2_RCC_ClearResetFlags(void) 06019 { 06020 SET_BIT(RCC_C2->RSR, RCC_RSR_RMVF); 06021 } 06022 #endif /*DUAL_CORE*/ 06023 06024 /** 06025 * @} 06026 */ 06027 06028 /** @defgroup RCC_LL_EF_IT_Management IT Management 06029 * @{ 06030 */ 06031 06032 /** 06033 * @brief Enable LSI ready interrupt 06034 * @rmtoll CIER LSIRDYIE LL_RCC_EnableIT_LSIRDY 06035 * @retval None 06036 */ 06037 __STATIC_INLINE void LL_RCC_EnableIT_LSIRDY(void) 06038 { 06039 SET_BIT(RCC->CIER, RCC_CIER_LSIRDYIE); 06040 } 06041 06042 /** 06043 * @brief Enable LSE ready interrupt 06044 * @rmtoll CIER LSERDYIE LL_RCC_EnableIT_LSERDY 06045 * @retval None 06046 */ 06047 __STATIC_INLINE void LL_RCC_EnableIT_LSERDY(void) 06048 { 06049 SET_BIT(RCC->CIER, RCC_CIER_LSERDYIE); 06050 } 06051 06052 /** 06053 * @brief Enable HSI ready interrupt 06054 * @rmtoll CIER HSIRDYIE LL_RCC_EnableIT_HSIRDY 06055 * @retval None 06056 */ 06057 __STATIC_INLINE void LL_RCC_EnableIT_HSIRDY(void) 06058 { 06059 SET_BIT(RCC->CIER, RCC_CIER_HSIRDYIE); 06060 } 06061 06062 /** 06063 * @brief Enable HSE ready interrupt 06064 * @rmtoll CIER HSERDYIE LL_RCC_EnableIT_HSERDY 06065 * @retval None 06066 */ 06067 __STATIC_INLINE void LL_RCC_EnableIT_HSERDY(void) 06068 { 06069 SET_BIT(RCC->CIER, RCC_CIER_HSERDYIE); 06070 } 06071 06072 /** 06073 * @brief Enable CSI ready interrupt 06074 * @rmtoll CIER CSIRDYIE LL_RCC_EnableIT_CSIRDY 06075 * @retval None 06076 */ 06077 __STATIC_INLINE void LL_RCC_EnableIT_CSIRDY(void) 06078 { 06079 SET_BIT(RCC->CIER, RCC_CIER_CSIRDYIE); 06080 } 06081 06082 /** 06083 * @brief Enable HSI48 ready interrupt 06084 * @rmtoll CIER HSI48RDYIE LL_RCC_EnableIT_HSI48RDY 06085 * @retval None 06086 */ 06087 __STATIC_INLINE void LL_RCC_EnableIT_HSI48RDY(void) 06088 { 06089 SET_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE); 06090 } 06091 06092 /** 06093 * @brief Enable PLL1 ready interrupt 06094 * @rmtoll CIER PLL1RDYIE LL_RCC_EnableIT_PLL1RDY 06095 * @retval None 06096 */ 06097 __STATIC_INLINE void LL_RCC_EnableIT_PLL1RDY(void) 06098 { 06099 SET_BIT(RCC->CIER, RCC_CIER_PLL1RDYIE); 06100 } 06101 06102 /** 06103 * @brief Enable PLL2 ready interrupt 06104 * @rmtoll CIER PLL2RDYIE LL_RCC_EnableIT_PLL2RDY 06105 * @retval None 06106 */ 06107 __STATIC_INLINE void LL_RCC_EnableIT_PLL2RDY(void) 06108 { 06109 SET_BIT(RCC->CIER, RCC_CIER_PLL2RDYIE); 06110 } 06111 06112 /** 06113 * @brief Enable PLL3 ready interrupt 06114 * @rmtoll CIER PLL3RDYIE LL_RCC_EnableIT_PLL3RDY 06115 * @retval None 06116 */ 06117 __STATIC_INLINE void LL_RCC_EnableIT_PLL3RDY(void) 06118 { 06119 SET_BIT(RCC->CIER, RCC_CIER_PLL3RDYIE); 06120 } 06121 06122 /** 06123 * @brief Enable LSECSS interrupt 06124 * @rmtoll CIER LSECSSIE LL_RCC_EnableIT_LSECSS 06125 * @retval None 06126 */ 06127 __STATIC_INLINE void LL_RCC_EnableIT_LSECSS(void) 06128 { 06129 SET_BIT(RCC->CIER, RCC_CIER_LSECSSIE); 06130 } 06131 06132 /** 06133 * @brief Disable LSI ready interrupt 06134 * @rmtoll CIER LSIRDYIE LL_RCC_DisableIT_LSIRDY 06135 * @retval None 06136 */ 06137 __STATIC_INLINE void LL_RCC_DisableIT_LSIRDY(void) 06138 { 06139 CLEAR_BIT(RCC->CIER, RCC_CIER_LSIRDYIE); 06140 } 06141 06142 /** 06143 * @brief Disable LSE ready interrupt 06144 * @rmtoll CIER LSERDYIE LL_RCC_DisableIT_LSERDY 06145 * @retval None 06146 */ 06147 __STATIC_INLINE void LL_RCC_DisableIT_LSERDY(void) 06148 { 06149 CLEAR_BIT(RCC->CIER, RCC_CIER_LSERDYIE); 06150 } 06151 06152 /** 06153 * @brief Disable HSI ready interrupt 06154 * @rmtoll CIER HSIRDYIE LL_RCC_DisableIT_HSIRDY 06155 * @retval None 06156 */ 06157 __STATIC_INLINE void LL_RCC_DisableIT_HSIRDY(void) 06158 { 06159 CLEAR_BIT(RCC->CIER, RCC_CIER_HSIRDYIE); 06160 } 06161 06162 /** 06163 * @brief Disable HSE ready interrupt 06164 * @rmtoll CIER HSERDYIE LL_RCC_DisableIT_HSERDY 06165 * @retval None 06166 */ 06167 __STATIC_INLINE void LL_RCC_DisableIT_HSERDY(void) 06168 { 06169 CLEAR_BIT(RCC->CIER, RCC_CIER_HSERDYIE); 06170 } 06171 06172 /** 06173 * @brief Disable CSI ready interrupt 06174 * @rmtoll CIER CSIRDYIE LL_RCC_DisableIT_CSIRDY 06175 * @retval None 06176 */ 06177 __STATIC_INLINE void LL_RCC_DisableIT_CSIRDY(void) 06178 { 06179 CLEAR_BIT(RCC->CIER, RCC_CIER_CSIRDYIE); 06180 } 06181 06182 /** 06183 * @brief Disable HSI48 ready interrupt 06184 * @rmtoll CIER HSI48RDYIE LL_RCC_DisableIT_HSI48RDY 06185 * @retval None 06186 */ 06187 __STATIC_INLINE void LL_RCC_DisableIT_HSI48RDY(void) 06188 { 06189 CLEAR_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE); 06190 } 06191 06192 /** 06193 * @brief Disable PLL1 ready interrupt 06194 * @rmtoll CIER PLL1RDYIE LL_RCC_DisableIT_PLL1RDY 06195 * @retval None 06196 */ 06197 __STATIC_INLINE void LL_RCC_DisableIT_PLL1RDY(void) 06198 { 06199 CLEAR_BIT(RCC->CIER, RCC_CIER_PLL1RDYIE); 06200 } 06201 06202 /** 06203 * @brief Disable PLL2 ready interrupt 06204 * @rmtoll CIER PLL2RDYIE LL_RCC_DisableIT_PLL2RDY 06205 * @retval None 06206 */ 06207 __STATIC_INLINE void LL_RCC_DisableIT_PLL2RDY(void) 06208 { 06209 CLEAR_BIT(RCC->CIER, RCC_CIER_PLL2RDYIE); 06210 } 06211 06212 /** 06213 * @brief Disable PLL3 ready interrupt 06214 * @rmtoll CIER PLL3RDYIE LL_RCC_DisableIT_PLL3RDY 06215 * @retval None 06216 */ 06217 __STATIC_INLINE void LL_RCC_DisableIT_PLL3RDY(void) 06218 { 06219 CLEAR_BIT(RCC->CIER, RCC_CIER_PLL3RDYIE); 06220 } 06221 06222 /** 06223 * @brief Disable LSECSS interrupt 06224 * @rmtoll CIER LSECSSIE LL_RCC_DisableIT_LSECSS 06225 * @retval None 06226 */ 06227 __STATIC_INLINE void LL_RCC_DisableIT_LSECSS(void) 06228 { 06229 CLEAR_BIT(RCC->CIER, RCC_CIER_LSECSSIE); 06230 } 06231 06232 /** 06233 * @brief Checks if LSI ready interrupt source is enabled or disabled. 06234 * @rmtoll CIER LSIRDYIE LL_RCC_IsEnableIT_LSIRDY 06235 * @retval State of bit (1 or 0). 06236 */ 06237 __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_LSIRDY(void) 06238 { 06239 return ((READ_BIT(RCC->CIER, RCC_CIER_LSIRDYIE) == RCC_CIER_LSIRDYIE)?1UL:0UL); 06240 } 06241 06242 /** 06243 * @brief Checks if LSE ready interrupt source is enabled or disabled. 06244 * @rmtoll CIER LSERDYIE LL_RCC_IsEnableIT_LSERDY 06245 * @retval State of bit (1 or 0). 06246 */ 06247 __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_LSERDY(void) 06248 { 06249 return ((READ_BIT(RCC->CIER, RCC_CIER_LSERDYIE) == RCC_CIER_LSERDYIE)?1UL:0UL); 06250 } 06251 06252 /** 06253 * @brief Checks if HSI ready interrupt source is enabled or disabled. 06254 * @rmtoll CIER HSIRDYIE LL_RCC_IsEnableIT_HSIRDY 06255 * @retval State of bit (1 or 0). 06256 */ 06257 __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_HSIRDY(void) 06258 { 06259 return ((READ_BIT(RCC->CIER, RCC_CIER_HSIRDYIE) == RCC_CIER_HSIRDYIE)?1UL:0UL); 06260 } 06261 06262 /** 06263 * @brief Checks if HSE ready interrupt source is enabled or disabled. 06264 * @rmtoll CIER HSERDYIE LL_RCC_IsEnableIT_HSERDY 06265 * @retval State of bit (1 or 0). 06266 */ 06267 __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_HSERDY(void) 06268 { 06269 return ((READ_BIT(RCC->CIER, RCC_CIER_HSERDYIE) == RCC_CIER_HSERDYIE)?1UL:0UL); 06270 } 06271 06272 /** 06273 * @brief Checks if CSI ready interrupt source is enabled or disabled. 06274 * @rmtoll CIER CSIRDYIE LL_RCC_IsEnableIT_CSIRDY 06275 * @retval State of bit (1 or 0). 06276 */ 06277 __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_CSIRDY(void) 06278 { 06279 return ((READ_BIT(RCC->CIER, RCC_CIER_CSIRDYIE) == RCC_CIER_CSIRDYIE)?1UL:0UL); 06280 } 06281 06282 /** 06283 * @brief Checks if HSI48 ready interrupt source is enabled or disabled. 06284 * @rmtoll CIER HSI48RDYIE LL_RCC_IsEnableIT_HSI48RDY 06285 * @retval State of bit (1 or 0). 06286 */ 06287 __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_HSI48RDY(void) 06288 { 06289 return ((READ_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE) == RCC_CIER_HSI48RDYIE)?1UL:0UL); 06290 } 06291 06292 /** 06293 * @brief Checks if PLL1 ready interrupt source is enabled or disabled. 06294 * @rmtoll CIER PLL1RDYIE LL_RCC_IsEnableIT_PLL1RDY 06295 * @retval State of bit (1 or 0). 06296 */ 06297 __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_PLL1RDY(void) 06298 { 06299 return ((READ_BIT(RCC->CIER, RCC_CIER_PLL1RDYIE) == RCC_CIER_PLL1RDYIE)?1UL:0UL); 06300 } 06301 06302 /** 06303 * @brief Checks if PLL2 ready interrupt source is enabled or disabled. 06304 * @rmtoll CIER PLL2RDYIE LL_RCC_IsEnableIT_PLL2RDY 06305 * @retval State of bit (1 or 0). 06306 */ 06307 __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_PLL2RDY(void) 06308 { 06309 return ((READ_BIT(RCC->CIER, RCC_CIER_PLL2RDYIE) == RCC_CIER_PLL2RDYIE)?1UL:0UL); 06310 } 06311 06312 /** 06313 * @brief Checks if PLL3 ready interrupt source is enabled or disabled. 06314 * @rmtoll CIER PLL3RDYIE LL_RCC_IsEnableIT_PLL3RDY 06315 * @retval State of bit (1 or 0). 06316 */ 06317 __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_PLL3RDY(void) 06318 { 06319 return ((READ_BIT(RCC->CIER, RCC_CIER_PLL3RDYIE) == RCC_CIER_PLL3RDYIE)?1UL:0UL); 06320 } 06321 06322 /** 06323 * @brief Checks if LSECSS interrupt source is enabled or disabled. 06324 * @rmtoll CIER LSECSSIE LL_RCC_IsEnableIT_LSECSS 06325 * @retval State of bit (1 or 0). 06326 */ 06327 __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_LSECSS(void) 06328 { 06329 return ((READ_BIT(RCC->CIER, RCC_CIER_LSECSSIE) == RCC_CIER_LSECSSIE)?1UL:0UL); 06330 } 06331 /** 06332 * @} 06333 */ 06334 06335 #if defined(USE_FULL_LL_DRIVER) 06336 /** @defgroup RCC_LL_EF_Init De-initialization function 06337 * @{ 06338 */ 06339 void LL_RCC_DeInit(void); 06340 /** 06341 * @} 06342 */ 06343 06344 /** @defgroup RCC_LL_EF_Get_Freq Get system and peripherals clocks frequency functions 06345 * @{ 06346 */ 06347 uint32_t LL_RCC_CalcPLLClockFreq(uint32_t PLLInputFreq, uint32_t M, uint32_t N, uint32_t FRACN, uint32_t PQR); 06348 06349 void LL_RCC_GetPLL1ClockFreq(LL_PLL_ClocksTypeDef *PLL_Clocks); 06350 void LL_RCC_GetPLL2ClockFreq(LL_PLL_ClocksTypeDef *PLL_Clocks); 06351 void LL_RCC_GetPLL3ClockFreq(LL_PLL_ClocksTypeDef *PLL_Clocks); 06352 void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks); 06353 06354 uint32_t LL_RCC_GetUSARTClockFreq(uint32_t USARTxSource); 06355 uint32_t LL_RCC_GetLPUARTClockFreq(uint32_t LPUARTxSource); 06356 uint32_t LL_RCC_GetI2CClockFreq(uint32_t I2CxSource); 06357 uint32_t LL_RCC_GetLPTIMClockFreq(uint32_t LPTIMxSource); 06358 uint32_t LL_RCC_GetSAIClockFreq(uint32_t SAIxSource); 06359 uint32_t LL_RCC_GetADCClockFreq(uint32_t ADCxSource); 06360 uint32_t LL_RCC_GetSDMMCClockFreq(uint32_t SDMMCxSource); 06361 uint32_t LL_RCC_GetRNGClockFreq(uint32_t RNGxSource); 06362 uint32_t LL_RCC_GetCECClockFreq(uint32_t CECxSource); 06363 uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource); 06364 uint32_t LL_RCC_GetDFSDMClockFreq(uint32_t DFSDMxSource); 06365 #if defined(DFSDM2_BASE) 06366 uint32_t LL_RCC_GetDFSDM2ClockFreq(uint32_t DFSDMxSource); 06367 #endif /* DFSDM2_BASE */ 06368 #if defined(DSI) 06369 uint32_t LL_RCC_GetDSIClockFreq(uint32_t DSIxSource); 06370 #endif /* DSI */ 06371 uint32_t LL_RCC_GetSPDIFClockFreq(uint32_t SPDIFxSource); 06372 uint32_t LL_RCC_GetSPIClockFreq(uint32_t SPIxSource); 06373 uint32_t LL_RCC_GetSWPClockFreq(uint32_t SWPxSource); 06374 uint32_t LL_RCC_GetFDCANClockFreq(uint32_t FDCANxSource); 06375 uint32_t LL_RCC_GetFMCClockFreq(uint32_t FMCxSource); 06376 #if defined(QUADSPI) 06377 uint32_t LL_RCC_GetQSPIClockFreq(uint32_t QSPIxSource); 06378 #endif /* QUADSPI */ 06379 #if defined(OCTOSPI1) || defined(OCTOSPI2) 06380 uint32_t LL_RCC_GetOSPIClockFreq(uint32_t OSPIxSource); 06381 #endif /* defined(OCTOSPI1) || defined(OCTOSPI2) */ 06382 uint32_t LL_RCC_GetCLKPClockFreq(uint32_t CLKPxSource); 06383 06384 06385 /** 06386 * @} 06387 */ 06388 #endif /* USE_FULL_LL_DRIVER */ 06389 06390 /** 06391 * @} 06392 */ 06393 06394 06395 /** 06396 * @} 06397 */ 06398 #endif /* defined(RCC) */ 06399 06400 /** 06401 * @} 06402 */ 06403 06404 #ifdef __cplusplus 06405 } 06406 #endif 06407 06408 #endif /* STM32H7xx_LL_RCC_H */ 06409