You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

5437 lines
186 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32h7xx_ll_rcc.h
  4. * @author MCD Application Team
  5. * @version $VERSION$
  6. * @date $DATE$
  7. * @brief Header file of RCC LL module.
  8. ******************************************************************************
  9. * @attention
  10. *
  11. * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics.
  12. * All rights reserved.</center></h2>
  13. *
  14. * This software component is licensed by ST under BSD 3-Clause license,
  15. * the "License"; You may not use this file except in compliance with the
  16. * License. You may obtain a copy of the License at:
  17. * opensource.org/licenses/BSD-3-Clause
  18. *
  19. ******************************************************************************
  20. */
  21. /* Define to prevent recursive inclusion -------------------------------------*/
  22. #ifndef STM32H7xx_LL_RCC_H
  23. #define STM32H7xx_LL_RCC_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* Includes ------------------------------------------------------------------*/
  28. #include "stm32h7xx.h"
  29. #include <math.h>
  30. /** @addtogroup STM32H7xx_LL_Driver
  31. * @{
  32. */
  33. #if defined(RCC)
  34. /** @defgroup RCC_LL RCC
  35. * @{
  36. */
  37. /* Private types -------------------------------------------------------------*/
  38. /* Private variables ---------------------------------------------------------*/
  39. /** @defgroup RCC_LL_Private_Variables RCC Private Variables
  40. * @{
  41. */
  42. extern const uint8_t LL_RCC_PrescTable[16];
  43. /**
  44. * @}
  45. */
  46. /* Private constants ---------------------------------------------------------*/
  47. /* Private macros ------------------------------------------------------------*/
  48. #if !defined(UNUSED)
  49. #define UNUSED(x) ((void)(x))
  50. #endif
  51. /* 32 24 16 8 0
  52. --------------------------------------------------------
  53. | Mask | ClkSource | Bit | Register |
  54. | | Config | Position | Offset |
  55. --------------------------------------------------------*/
  56. /* Clock source register offset Vs D1CCIPR regsiter */
  57. #define D1CCIP 0x0UL
  58. #define D2CCIP1 0x4UL
  59. #define D2CCIP2 0x8UL
  60. #define D3CCIP 0xCUL
  61. #define REG_SHIFT 0U
  62. #define POS_SHIFT 8U
  63. #define CONFIG_SHIFT 16U
  64. #define MASK_SHIFT 24U
  65. #define LL_CLKSOURCE_SHIFT(__CLKSOURCE__) (((__CLKSOURCE__) >> POS_SHIFT ) & 0x1FUL)
  66. #define LL_CLKSOURCE_MASK(__CLKSOURCE__) ((((__CLKSOURCE__) >> MASK_SHIFT ) & 0xFFUL) << LL_CLKSOURCE_SHIFT(__CLKSOURCE__))
  67. #define LL_CLKSOURCE_CONFIG(__CLKSOURCE__) ((((__CLKSOURCE__) >> CONFIG_SHIFT) & 0xFFUL) << LL_CLKSOURCE_SHIFT(__CLKSOURCE__))
  68. #define LL_CLKSOURCE_REG(__CLKSOURCE__) (((__CLKSOURCE__) >> REG_SHIFT ) & 0xFFUL)
  69. #define LL_CLKSOURCE(__REG__, __MSK__, __POS__, __CLK__) ((uint32_t)((((__MSK__) >> (__POS__)) << MASK_SHIFT) | \
  70. (( __POS__ ) << POS_SHIFT) | \
  71. (( __REG__ ) << REG_SHIFT) | \
  72. (((__CLK__) >> (__POS__)) << CONFIG_SHIFT)))
  73. #if defined(USE_FULL_LL_DRIVER)
  74. /** @defgroup RCC_LL_Private_Macros RCC Private Macros
  75. * @{
  76. */
  77. /**
  78. * @}
  79. */
  80. #endif /*USE_FULL_LL_DRIVER*/
  81. /* Exported types ------------------------------------------------------------*/
  82. #if defined(USE_FULL_LL_DRIVER)
  83. /** @defgroup RCC_LL_Exported_Types RCC Exported Types
  84. * @{
  85. */
  86. /** @defgroup LL_ES_CLOCK_FREQ Clocks Frequency Structure
  87. * @{
  88. */
  89. /**
  90. * @brief RCC Clocks Frequency Structure
  91. */
  92. typedef struct
  93. {
  94. uint32_t SYSCLK_Frequency;
  95. uint32_t CPUCLK_Frequency;
  96. uint32_t HCLK_Frequency;
  97. uint32_t PCLK1_Frequency;
  98. uint32_t PCLK2_Frequency;
  99. uint32_t PCLK3_Frequency;
  100. uint32_t PCLK4_Frequency;
  101. } LL_RCC_ClocksTypeDef;
  102. /**
  103. * @}
  104. */
  105. /**
  106. * @brief PLL Clocks Frequency Structure
  107. */
  108. typedef struct
  109. {
  110. uint32_t PLL_P_Frequency;
  111. uint32_t PLL_Q_Frequency;
  112. uint32_t PLL_R_Frequency;
  113. } LL_PLL_ClocksTypeDef;
  114. /**
  115. * @}
  116. */
  117. #endif /* USE_FULL_LL_DRIVER */
  118. /* Exported constants --------------------------------------------------------*/
  119. /** @defgroup RCC_LL_Exported_Constants RCC Exported Constants
  120. * @{
  121. */
  122. /** @defgroup RCC_LL_EC_OSC_VALUES Oscillator Values adaptation
  123. * @brief Defines used to adapt values of different oscillators
  124. * @note These values could be modified in the user environment according to
  125. * HW set-up.
  126. * @{
  127. */
  128. #if !defined (HSE_VALUE)
  129. #define HSE_VALUE 25000000U /*!< Value of the HSE oscillator in Hz */
  130. #endif /* HSE_VALUE */
  131. #if !defined (HSI_VALUE)
  132. #define HSI_VALUE 64000000U /*!< Value of the HSI oscillator in Hz */
  133. #endif /* HSI_VALUE */
  134. #if !defined (CSI_VALUE)
  135. #define CSI_VALUE 4000000U /*!< Value of the CSI oscillator in Hz */
  136. #endif /* CSI_VALUE */
  137. #if !defined (LSE_VALUE)
  138. #define LSE_VALUE 32768U /*!< Value of the LSE oscillator in Hz */
  139. #endif /* LSE_VALUE */
  140. #if !defined (LSI_VALUE)
  141. #define LSI_VALUE 32000U /*!< Value of the LSI oscillator in Hz */
  142. #endif /* LSI_VALUE */
  143. #if !defined (EXTERNAL_CLOCK_VALUE)
  144. #define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the I2S_CKIN external oscillator in Hz */
  145. #endif /* EXTERNAL_CLOCK_VALUE */
  146. #if !defined (HSI48_VALUE)
  147. #define HSI48_VALUE 48000000U /*!< Value of the HSI48 oscillator in Hz */
  148. #endif /* HSI48_VALUE */
  149. /**
  150. * @}
  151. */
  152. /** @defgroup RCC_LL_EC_HSIDIV HSI oscillator divider
  153. * @{
  154. */
  155. #define LL_RCC_HSI_DIV1 RCC_CR_HSIDIV_1
  156. #define LL_RCC_HSI_DIV2 RCC_CR_HSIDIV_2
  157. #define LL_RCC_HSI_DIV4 RCC_CR_HSIDIV_4
  158. #define LL_RCC_HSI_DIV8 RCC_CR_HSIDIV_8
  159. /**
  160. * @}
  161. */
  162. /** @defgroup RCC_LL_EC_LSEDRIVE LSE oscillator drive capability
  163. * @{
  164. */
  165. #define LL_RCC_LSEDRIVE_LOW (uint32_t)(0x00000000U)
  166. #define LL_RCC_LSEDRIVE_MEDIUMLOW (uint32_t)(RCC_BDCR_LSEDRV_0)
  167. #define LL_RCC_LSEDRIVE_MEDIUMHIGH (uint32_t)(RCC_BDCR_LSEDRV_1)
  168. #define LL_RCC_LSEDRIVE_HIGH (uint32_t)(RCC_BDCR_LSEDRV)
  169. /**
  170. * @}
  171. */
  172. /** @defgroup RCC_LL_EC_SYS_CLKSOURCE System clock switch
  173. * @{
  174. */
  175. #define LL_RCC_SYS_CLKSOURCE_HSI RCC_CFGR_SW_HSI
  176. #define LL_RCC_SYS_CLKSOURCE_CSI RCC_CFGR_SW_CSI
  177. #define LL_RCC_SYS_CLKSOURCE_HSE RCC_CFGR_SW_HSE
  178. #define LL_RCC_SYS_CLKSOURCE_PLL1 RCC_CFGR_SW_PLL1
  179. /**
  180. * @}
  181. */
  182. /** @defgroup RCC_LL_EC_SYS_CLKSOURCE_STATUS System clock switch status
  183. * @{
  184. */
  185. #define LL_RCC_SYS_CLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */
  186. #define LL_RCC_SYS_CLKSOURCE_STATUS_CSI RCC_CFGR_SWS_CSI /*!< CSI used as system clock */
  187. #define LL_RCC_SYS_CLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */
  188. #define LL_RCC_SYS_CLKSOURCE_STATUS_PLL1 RCC_CFGR_SWS_PLL1 /*!< PLL1 used as system clock */
  189. /**
  190. * @}
  191. */
  192. /** @defgroup RCC_LL_EC_SYSWAKEUP_CLKSOURCE System wakeup clock source
  193. * @{
  194. */
  195. #define LL_RCC_SYSWAKEUP_CLKSOURCE_HSI (uint32_t)(0x00000000U)
  196. #define LL_RCC_SYSWAKEUP_CLKSOURCE_CSI (uint32_t)(RCC_CFGR_STOPWUCK)
  197. /**
  198. * @}
  199. */
  200. /** @defgroup RCC_LL_EC_KERWAKEUP_CLKSOURCE Kernel wakeup clock source
  201. * @{
  202. */
  203. #define LL_RCC_KERWAKEUP_CLKSOURCE_HSI (uint32_t)(0x00000000U)
  204. #define LL_RCC_KERWAKEUP_CLKSOURCE_CSI (uint32_t)(RCC_CFGR_STOPKERWUCK)
  205. /**
  206. * @}
  207. */
  208. /** @defgroup RCC_LL_EC_SYSCLK_DIV System prescaler
  209. * @{
  210. */
  211. #define LL_RCC_SYSCLK_DIV_1 RCC_D1CFGR_D1CPRE_DIV1
  212. #define LL_RCC_SYSCLK_DIV_2 RCC_D1CFGR_D1CPRE_DIV2
  213. #define LL_RCC_SYSCLK_DIV_4 RCC_D1CFGR_D1CPRE_DIV4
  214. #define LL_RCC_SYSCLK_DIV_8 RCC_D1CFGR_D1CPRE_DIV8
  215. #define LL_RCC_SYSCLK_DIV_16 RCC_D1CFGR_D1CPRE_DIV16
  216. #define LL_RCC_SYSCLK_DIV_64 RCC_D1CFGR_D1CPRE_DIV64
  217. #define LL_RCC_SYSCLK_DIV_128 RCC_D1CFGR_D1CPRE_DIV128
  218. #define LL_RCC_SYSCLK_DIV_256 RCC_D1CFGR_D1CPRE_DIV256
  219. #define LL_RCC_SYSCLK_DIV_512 RCC_D1CFGR_D1CPRE_DIV512
  220. /**
  221. * @}
  222. */
  223. /** @defgroup RCC_LL_EC_AHB_DIV AHB prescaler
  224. * @{
  225. */
  226. #define LL_RCC_AHB_DIV_1 RCC_D1CFGR_HPRE_DIV1
  227. #define LL_RCC_AHB_DIV_2 RCC_D1CFGR_HPRE_DIV2
  228. #define LL_RCC_AHB_DIV_4 RCC_D1CFGR_HPRE_DIV4
  229. #define LL_RCC_AHB_DIV_8 RCC_D1CFGR_HPRE_DIV8
  230. #define LL_RCC_AHB_DIV_16 RCC_D1CFGR_HPRE_DIV16
  231. #define LL_RCC_AHB_DIV_64 RCC_D1CFGR_HPRE_DIV64
  232. #define LL_RCC_AHB_DIV_128 RCC_D1CFGR_HPRE_DIV128
  233. #define LL_RCC_AHB_DIV_256 RCC_D1CFGR_HPRE_DIV256
  234. #define LL_RCC_AHB_DIV_512 RCC_D1CFGR_HPRE_DIV512
  235. /**
  236. * @}
  237. */
  238. /** @defgroup RCC_LL_EC_APB1_DIV APB low-speed prescaler (APB1)
  239. * @{
  240. */
  241. #define LL_RCC_APB1_DIV_1 RCC_D2CFGR_D2PPRE1_DIV1
  242. #define LL_RCC_APB1_DIV_2 RCC_D2CFGR_D2PPRE1_DIV2
  243. #define LL_RCC_APB1_DIV_4 RCC_D2CFGR_D2PPRE1_DIV4
  244. #define LL_RCC_APB1_DIV_8 RCC_D2CFGR_D2PPRE1_DIV8
  245. #define LL_RCC_APB1_DIV_16 RCC_D2CFGR_D2PPRE1_DIV16
  246. /**
  247. * @}
  248. */
  249. /** @defgroup RCC_LL_EC_APB2_DIV APB low-speed prescaler (APB2)
  250. * @{
  251. */
  252. #define LL_RCC_APB2_DIV_1 RCC_D2CFGR_D2PPRE2_DIV1
  253. #define LL_RCC_APB2_DIV_2 RCC_D2CFGR_D2PPRE2_DIV2
  254. #define LL_RCC_APB2_DIV_4 RCC_D2CFGR_D2PPRE2_DIV4
  255. #define LL_RCC_APB2_DIV_8 RCC_D2CFGR_D2PPRE2_DIV8
  256. #define LL_RCC_APB2_DIV_16 RCC_D2CFGR_D2PPRE2_DIV16
  257. /**
  258. * @}
  259. */
  260. /** @defgroup RCC_LL_EC_APB3_DIV APB low-speed prescaler (APB3)
  261. * @{
  262. */
  263. #define LL_RCC_APB3_DIV_1 RCC_D1CFGR_D1PPRE_DIV1
  264. #define LL_RCC_APB3_DIV_2 RCC_D1CFGR_D1PPRE_DIV2
  265. #define LL_RCC_APB3_DIV_4 RCC_D1CFGR_D1PPRE_DIV4
  266. #define LL_RCC_APB3_DIV_8 RCC_D1CFGR_D1PPRE_DIV8
  267. #define LL_RCC_APB3_DIV_16 RCC_D1CFGR_D1PPRE_DIV16
  268. /**
  269. * @}
  270. */
  271. /** @defgroup RCC_LL_EC_APB4_DIV APB low-speed prescaler (APB4)
  272. * @{
  273. */
  274. #define LL_RCC_APB4_DIV_1 RCC_D3CFGR_D3PPRE_DIV1
  275. #define LL_RCC_APB4_DIV_2 RCC_D3CFGR_D3PPRE_DIV2
  276. #define LL_RCC_APB4_DIV_4 RCC_D3CFGR_D3PPRE_DIV4
  277. #define LL_RCC_APB4_DIV_8 RCC_D3CFGR_D3PPRE_DIV8
  278. #define LL_RCC_APB4_DIV_16 RCC_D3CFGR_D3PPRE_DIV16
  279. /**
  280. * @}
  281. */
  282. /** @defgroup RCC_LL_EC_MCOxSOURCE MCO source selection
  283. * @{
  284. */
  285. #define LL_RCC_MCO1SOURCE_HSI (uint32_t)((RCC_CFGR_MCO1>>16U) | 0x00000000U)
  286. #define LL_RCC_MCO1SOURCE_LSE (uint32_t)((RCC_CFGR_MCO1>>16U) | RCC_CFGR_MCO1_0)
  287. #define LL_RCC_MCO1SOURCE_HSE (uint32_t)((RCC_CFGR_MCO1>>16U) | RCC_CFGR_MCO1_1)
  288. #define LL_RCC_MCO1SOURCE_PLL1QCLK (uint32_t)((RCC_CFGR_MCO1>>16U) | RCC_CFGR_MCO1_1|RCC_CFGR_MCO1_0)
  289. #define LL_RCC_MCO1SOURCE_HSI48 (uint32_t)((RCC_CFGR_MCO1>>16U) | RCC_CFGR_MCO1_2)
  290. #define LL_RCC_MCO2SOURCE_SYSCLK (uint32_t)((RCC_CFGR_MCO2>>16U) | 0x00000000U)
  291. #define LL_RCC_MCO2SOURCE_PLL2PCLK (uint32_t)((RCC_CFGR_MCO2>>16U) | RCC_CFGR_MCO2_0)
  292. #define LL_RCC_MCO2SOURCE_HSE (uint32_t)((RCC_CFGR_MCO2>>16U) | RCC_CFGR_MCO2_1)
  293. #define LL_RCC_MCO2SOURCE_PLL1PCLK (uint32_t)((RCC_CFGR_MCO2>>16U) | RCC_CFGR_MCO2_1|RCC_CFGR_MCO2_0)
  294. #define LL_RCC_MCO2SOURCE_CSI (uint32_t)((RCC_CFGR_MCO2>>16U) | RCC_CFGR_MCO2_2)
  295. #define LL_RCC_MCO2SOURCE_LSI (uint32_t)((RCC_CFGR_MCO2>>16U) | RCC_CFGR_MCO2_2|RCC_CFGR_MCO2_0)
  296. /**
  297. * @}
  298. */
  299. /** @defgroup RCC_LL_EC_MCOx_DIV MCO prescaler
  300. * @{
  301. */
  302. #define LL_RCC_MCO1_DIV_1 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0)
  303. #define LL_RCC_MCO1_DIV_2 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_1)
  304. #define LL_RCC_MCO1_DIV_3 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_1)
  305. #define LL_RCC_MCO1_DIV_4 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_2)
  306. #define LL_RCC_MCO1_DIV_5 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_2)
  307. #define LL_RCC_MCO1_DIV_6 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2)
  308. #define LL_RCC_MCO1_DIV_7 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2)
  309. #define LL_RCC_MCO1_DIV_8 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_3)
  310. #define LL_RCC_MCO1_DIV_9 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_3)
  311. #define LL_RCC_MCO1_DIV_10 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_3)
  312. #define LL_RCC_MCO1_DIV_11 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_3)
  313. #define LL_RCC_MCO1_DIV_12 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_2 | RCC_CFGR_MCO1PRE_3)
  314. #define LL_RCC_MCO1_DIV_13 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_2 | RCC_CFGR_MCO1PRE_3)
  315. #define LL_RCC_MCO1_DIV_14 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2 | RCC_CFGR_MCO1PRE_3)
  316. #define LL_RCC_MCO1_DIV_15 (uint32_t)((RCC_CFGR_MCO1PRE>>16U) | RCC_CFGR_MCO1PRE)
  317. #define LL_RCC_MCO2_DIV_1 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0)
  318. #define LL_RCC_MCO2_DIV_2 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_1)
  319. #define LL_RCC_MCO2_DIV_3 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_1)
  320. #define LL_RCC_MCO2_DIV_4 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_2)
  321. #define LL_RCC_MCO2_DIV_5 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_2)
  322. #define LL_RCC_MCO2_DIV_6 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_2)
  323. #define LL_RCC_MCO2_DIV_7 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_2)
  324. #define LL_RCC_MCO2_DIV_8 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_3)
  325. #define LL_RCC_MCO2_DIV_9 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_3)
  326. #define LL_RCC_MCO2_DIV_10 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_3)
  327. #define LL_RCC_MCO2_DIV_11 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_3)
  328. #define LL_RCC_MCO2_DIV_12 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_3)
  329. #define LL_RCC_MCO2_DIV_13 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_0 | RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_3)
  330. #define LL_RCC_MCO2_DIV_14 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_3)
  331. #define LL_RCC_MCO2_DIV_15 (uint32_t)((RCC_CFGR_MCO2PRE>>16U) | RCC_CFGR_MCO2PRE)
  332. /**
  333. * @}
  334. */
  335. /** @defgroup RCC_LL_EC_RTC_HSEDIV HSE prescaler for RTC clock
  336. * @{
  337. */
  338. #define LL_RCC_RTC_NOCLOCK (uint32_t)(0x00000000U)
  339. #define LL_RCC_RTC_HSE_DIV_2 (uint32_t)(RCC_CFGR_RTCPRE_1)
  340. #define LL_RCC_RTC_HSE_DIV_3 (uint32_t)(RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0)
  341. #define LL_RCC_RTC_HSE_DIV_4 (uint32_t)(RCC_CFGR_RTCPRE_2)
  342. #define LL_RCC_RTC_HSE_DIV_5 (uint32_t)(RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0)
  343. #define LL_RCC_RTC_HSE_DIV_6 (uint32_t)(RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1)
  344. #define LL_RCC_RTC_HSE_DIV_7 (uint32_t)(RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0)
  345. #define LL_RCC_RTC_HSE_DIV_8 (uint32_t)(RCC_CFGR_RTCPRE_3)
  346. #define LL_RCC_RTC_HSE_DIV_9 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0)
  347. #define LL_RCC_RTC_HSE_DIV_10 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1)
  348. #define LL_RCC_RTC_HSE_DIV_11 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0)
  349. #define LL_RCC_RTC_HSE_DIV_12 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2)
  350. #define LL_RCC_RTC_HSE_DIV_13 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0)
  351. #define LL_RCC_RTC_HSE_DIV_14 (uint32_t)(RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1)
  352. #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)
  353. #define LL_RCC_RTC_HSE_DIV_16 (uint32_t)(RCC_CFGR_RTCPRE_4)
  354. #define LL_RCC_RTC_HSE_DIV_17 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_0)
  355. #define LL_RCC_RTC_HSE_DIV_18 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1)
  356. #define LL_RCC_RTC_HSE_DIV_19 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0)
  357. #define LL_RCC_RTC_HSE_DIV_20 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2)
  358. #define LL_RCC_RTC_HSE_DIV_21 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0)
  359. #define LL_RCC_RTC_HSE_DIV_22 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1)
  360. #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)
  361. #define LL_RCC_RTC_HSE_DIV_24 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3)
  362. #define LL_RCC_RTC_HSE_DIV_25 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0)
  363. #define LL_RCC_RTC_HSE_DIV_26 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1)
  364. #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)
  365. #define LL_RCC_RTC_HSE_DIV_28 (uint32_t)(RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2)
  366. #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)
  367. #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)
  368. #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)
  369. #define LL_RCC_RTC_HSE_DIV_32 (uint32_t)(RCC_CFGR_RTCPRE_5)
  370. #define LL_RCC_RTC_HSE_DIV_33 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_0)
  371. #define LL_RCC_RTC_HSE_DIV_34 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_1)
  372. #define LL_RCC_RTC_HSE_DIV_35 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0)
  373. #define LL_RCC_RTC_HSE_DIV_36 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_2)
  374. #define LL_RCC_RTC_HSE_DIV_37 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0)
  375. #define LL_RCC_RTC_HSE_DIV_38 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1)
  376. #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)
  377. #define LL_RCC_RTC_HSE_DIV_40 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3)
  378. #define LL_RCC_RTC_HSE_DIV_41 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0)
  379. #define LL_RCC_RTC_HSE_DIV_42 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1)
  380. #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)
  381. #define LL_RCC_RTC_HSE_DIV_44 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2)
  382. #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)
  383. #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)
  384. #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)
  385. #define LL_RCC_RTC_HSE_DIV_48 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4)
  386. #define LL_RCC_RTC_HSE_DIV_49 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_0)
  387. #define LL_RCC_RTC_HSE_DIV_50 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1)
  388. #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)
  389. #define LL_RCC_RTC_HSE_DIV_52 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2)
  390. #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)
  391. #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)
  392. #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)
  393. #define LL_RCC_RTC_HSE_DIV_56 (uint32_t)(RCC_CFGR_RTCPRE_5|RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3)
  394. #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)
  395. #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)
  396. #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)
  397. #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)
  398. #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)
  399. #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)
  400. #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)
  401. /**
  402. * @}
  403. */
  404. /** @defgroup RCC_LL_EC_USARTx_CLKSOURCE Peripheral USART clock source selection
  405. * @{
  406. */
  407. #define LL_RCC_USART16_CLKSOURCE_PCLK2 LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, 0x00000000U)
  408. #define LL_RCC_USART16_CLKSOURCE_PLL2Q LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, RCC_D2CCIP2R_USART16SEL_0)
  409. #define LL_RCC_USART16_CLKSOURCE_PLL3Q LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, RCC_D2CCIP2R_USART16SEL_1)
  410. #define LL_RCC_USART16_CLKSOURCE_HSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, RCC_D2CCIP2R_USART16SEL_0 | RCC_D2CCIP2R_USART16SEL_1)
  411. #define LL_RCC_USART16_CLKSOURCE_CSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, RCC_D2CCIP2R_USART16SEL_2)
  412. #define LL_RCC_USART16_CLKSOURCE_LSE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, RCC_D2CCIP2R_USART16SEL_0 | RCC_D2CCIP2R_USART16SEL_2)
  413. #define LL_RCC_USART234578_CLKSOURCE_PCLK1 LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, 0x00000000U)
  414. #define LL_RCC_USART234578_CLKSOURCE_PLL2Q LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, RCC_D2CCIP2R_USART28SEL_0)
  415. #define LL_RCC_USART234578_CLKSOURCE_PLL3Q LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, RCC_D2CCIP2R_USART28SEL_1)
  416. #define LL_RCC_USART234578_CLKSOURCE_HSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, RCC_D2CCIP2R_USART28SEL_0 | RCC_D2CCIP2R_USART28SEL_1)
  417. #define LL_RCC_USART234578_CLKSOURCE_CSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, RCC_D2CCIP2R_USART28SEL_2)
  418. #define LL_RCC_USART234578_CLKSOURCE_LSE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, RCC_D2CCIP2R_USART28SEL_0 | RCC_D2CCIP2R_USART28SEL_2)
  419. /**
  420. * @}
  421. */
  422. /** @defgroup RCC_LL_EC_LPUARTx_CLKSOURCE Peripheral LPUART clock source selection
  423. * @{
  424. */
  425. #define LL_RCC_LPUART1_CLKSOURCE_PCLK4 (0x00000000U)
  426. #define LL_RCC_LPUART1_CLKSOURCE_PLL2Q (RCC_D3CCIPR_LPUART1SEL_0)
  427. #define LL_RCC_LPUART1_CLKSOURCE_PLL3Q (RCC_D3CCIPR_LPUART1SEL_1)
  428. #define LL_RCC_LPUART1_CLKSOURCE_HSI (RCC_D3CCIPR_LPUART1SEL_0 | RCC_D3CCIPR_LPUART1SEL_1)
  429. #define LL_RCC_LPUART1_CLKSOURCE_CSI (RCC_D3CCIPR_LPUART1SEL_2)
  430. #define LL_RCC_LPUART1_CLKSOURCE_LSE (RCC_D3CCIPR_LPUART1SEL_0 | RCC_D3CCIPR_LPUART1SEL_2)
  431. /**
  432. * @}
  433. */
  434. /** @defgroup RCC_LL_EC_I2Cx_CLKSOURCE Peripheral I2C clock source selection
  435. * @{
  436. */
  437. #define LL_RCC_I2C123_CLKSOURCE_PCLK1 LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C123SEL, RCC_D2CCIP2R_I2C123SEL_Pos, 0x00000000U)
  438. #define LL_RCC_I2C123_CLKSOURCE_PLL3R LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C123SEL, RCC_D2CCIP2R_I2C123SEL_Pos, RCC_D2CCIP2R_I2C123SEL_0)
  439. #define LL_RCC_I2C123_CLKSOURCE_HSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C123SEL, RCC_D2CCIP2R_I2C123SEL_Pos, RCC_D2CCIP2R_I2C123SEL_1)
  440. #define LL_RCC_I2C123_CLKSOURCE_CSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C123SEL, RCC_D2CCIP2R_I2C123SEL_Pos, RCC_D2CCIP2R_I2C123SEL_0 | RCC_D2CCIP2R_I2C123SEL_1)
  441. #define LL_RCC_I2C4_CLKSOURCE_PCLK4 LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_I2C4SEL, RCC_D3CCIPR_I2C4SEL_Pos, 0x00000000U)
  442. #define LL_RCC_I2C4_CLKSOURCE_PLL3R LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_I2C4SEL, RCC_D3CCIPR_I2C4SEL_Pos, RCC_D3CCIPR_I2C4SEL_0)
  443. #define LL_RCC_I2C4_CLKSOURCE_HSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_I2C4SEL, RCC_D3CCIPR_I2C4SEL_Pos, RCC_D3CCIPR_I2C4SEL_1)
  444. #define LL_RCC_I2C4_CLKSOURCE_CSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_I2C4SEL, RCC_D3CCIPR_I2C4SEL_Pos, RCC_D3CCIPR_I2C4SEL_0 | RCC_D3CCIPR_I2C4SEL_1)
  445. /**
  446. * @}
  447. */
  448. /** @defgroup RCC_LL_EC_LPTIMx_CLKSOURCE Peripheral LPTIM clock source selection
  449. * @{
  450. */
  451. #define LL_RCC_LPTIM1_CLKSOURCE_PCLK1 LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, 0x00000000U)
  452. #define LL_RCC_LPTIM1_CLKSOURCE_PLL2P LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, RCC_D2CCIP2R_LPTIM1SEL_0)
  453. #define LL_RCC_LPTIM1_CLKSOURCE_PLL3R LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, RCC_D2CCIP2R_LPTIM1SEL_1)
  454. #define LL_RCC_LPTIM1_CLKSOURCE_LSE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, RCC_D2CCIP2R_LPTIM1SEL_0 | RCC_D2CCIP2R_LPTIM1SEL_1)
  455. #define LL_RCC_LPTIM1_CLKSOURCE_LSI LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, RCC_D2CCIP2R_LPTIM1SEL_2)
  456. #define LL_RCC_LPTIM1_CLKSOURCE_CLKP LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, RCC_D2CCIP2R_LPTIM1SEL_0 | RCC_D2CCIP2R_LPTIM1SEL_2)
  457. #define LL_RCC_LPTIM2_CLKSOURCE_PCLK4 LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, 0x00000000U)
  458. #define LL_RCC_LPTIM2_CLKSOURCE_PLL2P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, RCC_D3CCIPR_LPTIM2SEL_0)
  459. #define LL_RCC_LPTIM2_CLKSOURCE_PLL3R LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, RCC_D3CCIPR_LPTIM2SEL_1)
  460. #define LL_RCC_LPTIM2_CLKSOURCE_LSE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, RCC_D3CCIPR_LPTIM2SEL_0 | RCC_D3CCIPR_LPTIM2SEL_1)
  461. #define LL_RCC_LPTIM2_CLKSOURCE_LSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, RCC_D3CCIPR_LPTIM2SEL_2)
  462. #define LL_RCC_LPTIM2_CLKSOURCE_CLKP LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, RCC_D3CCIPR_LPTIM2SEL_0 | RCC_D3CCIPR_LPTIM2SEL_2)
  463. #define LL_RCC_LPTIM345_CLKSOURCE_PCLK4 LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, 0x00000000U)
  464. #define LL_RCC_LPTIM345_CLKSOURCE_PLL2P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, RCC_D3CCIPR_LPTIM345SEL_0)
  465. #define LL_RCC_LPTIM345_CLKSOURCE_PLL3R LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, RCC_D3CCIPR_LPTIM345SEL_1)
  466. #define LL_RCC_LPTIM345_CLKSOURCE_LSE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, RCC_D3CCIPR_LPTIM345SEL_0 | RCC_D3CCIPR_LPTIM345SEL_1)
  467. #define LL_RCC_LPTIM345_CLKSOURCE_LSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, RCC_D3CCIPR_LPTIM345SEL_2)
  468. #define LL_RCC_LPTIM345_CLKSOURCE_CLKP LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, RCC_D3CCIPR_LPTIM345SEL_0 | RCC_D3CCIPR_LPTIM345SEL_2)
  469. /**
  470. * @}
  471. */
  472. /** @defgroup RCC_LL_EC_SAIx_CLKSOURCE Peripheral SAI clock source selection
  473. * @{
  474. */
  475. #define LL_RCC_SAI1_CLKSOURCE_PLL1Q LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, 0x00000000U)
  476. #define LL_RCC_SAI1_CLKSOURCE_PLL2P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, RCC_D2CCIP1R_SAI1SEL_0)
  477. #define LL_RCC_SAI1_CLKSOURCE_PLL3P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, RCC_D2CCIP1R_SAI1SEL_1)
  478. #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)
  479. #define LL_RCC_SAI1_CLKSOURCE_CLKP LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, RCC_D2CCIP1R_SAI1SEL_2)
  480. #define LL_RCC_SAI23_CLKSOURCE_PLL1Q LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, 0x00000000U)
  481. #define LL_RCC_SAI23_CLKSOURCE_PLL2P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, RCC_D2CCIP1R_SAI23SEL_0)
  482. #define LL_RCC_SAI23_CLKSOURCE_PLL3P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, RCC_D2CCIP1R_SAI23SEL_1)
  483. #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)
  484. #define LL_RCC_SAI23_CLKSOURCE_CLKP LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, RCC_D2CCIP1R_SAI23SEL_2)
  485. #define LL_RCC_SAI4A_CLKSOURCE_PLL1Q LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, 0x00000000U)
  486. #define LL_RCC_SAI4A_CLKSOURCE_PLL2P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, RCC_D3CCIPR_SAI4ASEL_0)
  487. #define LL_RCC_SAI4A_CLKSOURCE_PLL3P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, RCC_D3CCIPR_SAI4ASEL_1)
  488. #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)
  489. #define LL_RCC_SAI4A_CLKSOURCE_CLKP LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, RCC_D3CCIPR_SAI4ASEL_2)
  490. #define LL_RCC_SAI4B_CLKSOURCE_PLL1Q LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, 0x00000000U)
  491. #define LL_RCC_SAI4B_CLKSOURCE_PLL2P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, RCC_D3CCIPR_SAI4BSEL_0)
  492. #define LL_RCC_SAI4B_CLKSOURCE_PLL3P LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, RCC_D3CCIPR_SAI4BSEL_1)
  493. #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)
  494. #define LL_RCC_SAI4B_CLKSOURCE_CLKP LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, RCC_D3CCIPR_SAI4BSEL_2)
  495. /**
  496. * @}
  497. */
  498. /** @defgroup RCC_LL_EC_SDMMC_CLKSOURCE Peripheral SDMMC clock source selection
  499. * @{
  500. */
  501. #define LL_RCC_SDMMC_CLKSOURCE_PLL1Q (0x00000000U)
  502. #define LL_RCC_SDMMC_CLKSOURCE_PLL2R (RCC_D1CCIPR_SDMMCSEL)
  503. /**
  504. * @}
  505. */
  506. /** @defgroup RCC_LL_EC_RNG_CLKSOURCE Peripheral RNG clock source selection
  507. * @{
  508. */
  509. #define LL_RCC_RNG_CLKSOURCE_HSI48 (0x00000000U)
  510. #define LL_RCC_RNG_CLKSOURCE_PLL1Q (RCC_D2CCIP2R_RNGSEL_0)
  511. #define LL_RCC_RNG_CLKSOURCE_LSE (RCC_D2CCIP2R_RNGSEL_1)
  512. #define LL_RCC_RNG_CLKSOURCE_LSI (RCC_D2CCIP2R_RNGSEL_1 | RCC_D2CCIP2R_RNGSEL_0)
  513. /**
  514. * @}
  515. */
  516. /** @defgroup RCC_LL_EC_USB_CLKSOURCE Peripheral USB clock source selection
  517. * @{
  518. */
  519. #define LL_RCC_USB_CLKSOURCE_DISABLE (0x00000000U)
  520. #define LL_RCC_USB_CLKSOURCE_PLL1Q (RCC_D2CCIP2R_USBSEL_0)
  521. #define LL_RCC_USB_CLKSOURCE_PLL3Q (RCC_D2CCIP2R_USBSEL_1)
  522. #define LL_RCC_USB_CLKSOURCE_HSI48 (RCC_D2CCIP2R_USBSEL_1 | RCC_D2CCIP2R_USBSEL_0)
  523. /**
  524. * @}
  525. */
  526. /** @defgroup RCC_LL_EC_CEC_CLKSOURCE Peripheral CEC clock source selection
  527. * @{
  528. */
  529. #define LL_RCC_CEC_CLKSOURCE_LSE (0x00000000U)
  530. #define LL_RCC_CEC_CLKSOURCE_LSI (RCC_D2CCIP2R_CECSEL_0)
  531. #define LL_RCC_CEC_CLKSOURCE_CSI_DIV122 (RCC_D2CCIP2R_CECSEL_1)
  532. /**
  533. * @}
  534. */
  535. #if defined(DSI)
  536. /** @defgroup RCC_LL_EC_DSI_CLKSOURCE Peripheral DSI clock source selection
  537. * @{
  538. */
  539. #define LL_RCC_DSI_CLKSOURCE_PHY (0x00000000U)
  540. #define LL_RCC_DSI_CLKSOURCE_PLL2Q (RCC_D1CCIPR_DSISEL)
  541. /**
  542. * @}
  543. */
  544. #endif /* DSI */
  545. /** @defgroup RCC_LL_EC_DFSDM_CLKSOURCE Peripheral DFSDM clock source selection
  546. * @{
  547. */
  548. #define LL_RCC_DFSDM1_CLKSOURCE_PCLK2 (0x00000000U)
  549. #define LL_RCC_DFSDM1_CLKSOURCE_SYSCLK (RCC_D2CCIP1R_DFSDM1SEL)
  550. /**
  551. * @}
  552. */
  553. /** @defgroup RCC_LL_EC_FMC_CLKSOURCE Peripheral FMC clock source selection
  554. * @{
  555. */
  556. #define LL_RCC_FMC_CLKSOURCE_HCLK (0x00000000U)
  557. #define LL_RCC_FMC_CLKSOURCE_PLL1Q (RCC_D1CCIPR_FMCSEL_0)
  558. #define LL_RCC_FMC_CLKSOURCE_PLL2R (RCC_D1CCIPR_FMCSEL_1)
  559. #define LL_RCC_FMC_CLKSOURCE_CLKP (RCC_D1CCIPR_FMCSEL_0 | RCC_D1CCIPR_FMCSEL_1)
  560. /**
  561. * @}
  562. */
  563. /** @defgroup RCC_LL_EC_QSPI_CLKSOURCE Peripheral QSPI clock source selection
  564. * @{
  565. */
  566. #define LL_RCC_QSPI_CLKSOURCE_HCLK (0x00000000U)
  567. #define LL_RCC_QSPI_CLKSOURCE_PLL1Q (RCC_D1CCIPR_QSPISEL_0)
  568. #define LL_RCC_QSPI_CLKSOURCE_PLL2R (RCC_D1CCIPR_QSPISEL_1)
  569. #define LL_RCC_QSPI_CLKSOURCE_CLKP (RCC_D1CCIPR_QSPISEL_0 | RCC_D1CCIPR_QSPISEL_1)
  570. /**
  571. * @}
  572. */
  573. /** @defgroup RCC_LL_EC_CLKP_CLKSOURCE Peripheral CLKP clock source selection
  574. * @{
  575. */
  576. #define LL_RCC_CLKP_CLKSOURCE_HSI (0x00000000U)
  577. #define LL_RCC_CLKP_CLKSOURCE_CSI (RCC_D1CCIPR_CKPERSEL_0)
  578. #define LL_RCC_CLKP_CLKSOURCE_HSE (RCC_D1CCIPR_CKPERSEL_1)
  579. /**
  580. * @}
  581. */
  582. /** @defgroup RCC_LL_EC_SPIx_CLKSOURCE Peripheral SPI clock source selection
  583. * @{
  584. */
  585. #define LL_RCC_SPI123_CLKSOURCE_PLL1Q LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, 0x00000000U)
  586. #define LL_RCC_SPI123_CLKSOURCE_PLL2P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, RCC_D2CCIP1R_SPI123SEL_0)
  587. #define LL_RCC_SPI123_CLKSOURCE_PLL3P LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, RCC_D2CCIP1R_SPI123SEL_1)
  588. #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)
  589. #define LL_RCC_SPI123_CLKSOURCE_CLKP LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, RCC_D2CCIP1R_SPI123SEL_2)
  590. #define LL_RCC_SPI45_CLKSOURCE_PCLK2 LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, 0x00000000U)
  591. #define LL_RCC_SPI45_CLKSOURCE_PLL2Q LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, RCC_D2CCIP1R_SPI45SEL_0)
  592. #define LL_RCC_SPI45_CLKSOURCE_PLL3Q LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, RCC_D2CCIP1R_SPI45SEL_1)
  593. #define LL_RCC_SPI45_CLKSOURCE_HSI LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, RCC_D2CCIP1R_SPI45SEL_0 | RCC_D2CCIP1R_SPI45SEL_1)
  594. #define LL_RCC_SPI45_CLKSOURCE_CSI LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, RCC_D2CCIP1R_SPI45SEL_2)
  595. #define LL_RCC_SPI45_CLKSOURCE_HSE LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, RCC_D2CCIP1R_SPI45SEL_0 | RCC_D2CCIP1R_SPI45SEL_2)
  596. #define LL_RCC_SPI6_CLKSOURCE_PCLK4 LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, 0x00000000U)
  597. #define LL_RCC_SPI6_CLKSOURCE_PLL2Q LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, RCC_D3CCIPR_SPI6SEL_0)
  598. #define LL_RCC_SPI6_CLKSOURCE_PLL3Q LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, RCC_D3CCIPR_SPI6SEL_1)
  599. #define LL_RCC_SPI6_CLKSOURCE_HSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, RCC_D3CCIPR_SPI6SEL_0 | RCC_D3CCIPR_SPI6SEL_1)
  600. #define LL_RCC_SPI6_CLKSOURCE_CSI LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, RCC_D3CCIPR_SPI6SEL_2)
  601. #define LL_RCC_SPI6_CLKSOURCE_HSE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, RCC_D3CCIPR_SPI6SEL_0 | RCC_D3CCIPR_SPI6SEL_2)
  602. /**
  603. * @}
  604. */
  605. /** @defgroup RCC_LL_EC_SPDIF_CLKSOURCE Peripheral SPDIF clock source selection
  606. * @{
  607. */
  608. #define LL_RCC_SPDIF_CLKSOURCE_PLL1Q (0x00000000U)
  609. #define LL_RCC_SPDIF_CLKSOURCE_PLL2R (RCC_D2CCIP1R_SPDIFSEL_0)
  610. #define LL_RCC_SPDIF_CLKSOURCE_PLL3R (RCC_D2CCIP1R_SPDIFSEL_1)
  611. #define LL_RCC_SPDIF_CLKSOURCE_HSI (RCC_D2CCIP1R_SPDIFSEL_0 | RCC_D2CCIP1R_SPDIFSEL_1)
  612. /**
  613. * @}
  614. */
  615. /** @defgroup RCC_LL_EC_FDCAN_CLKSOURCE Peripheral FDCAN clock source selection
  616. * @{
  617. */
  618. #define LL_RCC_FDCAN_CLKSOURCE_HSE (0x00000000U)
  619. #define LL_RCC_FDCAN_CLKSOURCE_PLL1Q (RCC_D2CCIP1R_FDCANSEL_0)
  620. #define LL_RCC_FDCAN_CLKSOURCE_PLL2Q (RCC_D2CCIP1R_FDCANSEL_1)
  621. /**
  622. * @}
  623. */
  624. /** @defgroup RCC_LL_EC_SWP_CLKSOURCE Peripheral SWP clock source selection
  625. * @{
  626. */
  627. #define LL_RCC_SWP_CLKSOURCE_PCLK1 (0x00000000U)
  628. #define LL_RCC_SWP_CLKSOURCE_HSI (RCC_D2CCIP1R_SWPSEL)
  629. /**
  630. * @}
  631. */
  632. /** @defgroup RCC_LL_EC_ADC_CLKSOURCE Peripheral ADC clock source selection
  633. * @{
  634. */
  635. #define LL_RCC_ADC_CLKSOURCE_PLL2P (0x00000000U)
  636. #define LL_RCC_ADC_CLKSOURCE_PLL3R (RCC_D3CCIPR_ADCSEL_0)
  637. #define LL_RCC_ADC_CLKSOURCE_CLKP (RCC_D3CCIPR_ADCSEL_1)
  638. /**
  639. * @}
  640. */
  641. /** @defgroup RCC_LL_EC_USARTx Peripheral USART get clock source
  642. * @{
  643. */
  644. #define LL_RCC_USART16_CLKSOURCE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART16SEL, RCC_D2CCIP2R_USART16SEL_Pos, 0x00000000U)
  645. #define LL_RCC_USART234578_CLKSOURCE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_USART28SEL, RCC_D2CCIP2R_USART28SEL_Pos, 0x00000000U)
  646. /**
  647. * @}
  648. */
  649. /** @defgroup RCC_LL_EC_LPUARTx Peripheral LPUART get clock source
  650. * @{
  651. */
  652. #define LL_RCC_LPUART1_CLKSOURCE RCC_D3CCIPR_LPUART1SEL
  653. /**
  654. * @}
  655. */
  656. /** @defgroup RCC_LL_EC_I2Cx Peripheral I2C get clock source
  657. * @{
  658. */
  659. #define LL_RCC_I2C123_CLKSOURCE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_I2C123SEL, RCC_D2CCIP2R_I2C123SEL_Pos, 0x00000000U)
  660. #define LL_RCC_I2C4_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_I2C4SEL, RCC_D3CCIPR_I2C4SEL_Pos, 0x00000000U)
  661. /**
  662. * @}
  663. */
  664. /** @defgroup RCC_LL_EC_LPTIMx Peripheral LPTIM get clock source
  665. * @{
  666. */
  667. #define LL_RCC_LPTIM1_CLKSOURCE LL_CLKSOURCE(D2CCIP2, RCC_D2CCIP2R_LPTIM1SEL, RCC_D2CCIP2R_LPTIM1SEL_Pos, 0x00000000U)
  668. #define LL_RCC_LPTIM2_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM2SEL, RCC_D3CCIPR_LPTIM2SEL_Pos, 0x00000000U)
  669. #define LL_RCC_LPTIM345_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_LPTIM345SEL, RCC_D3CCIPR_LPTIM345SEL_Pos, 0x00000000U)
  670. /**
  671. * @}
  672. */
  673. /** @defgroup RCC_LL_EC_SAIx Peripheral SAI get clock source
  674. * @{
  675. */
  676. #define LL_RCC_SAI1_CLKSOURCE LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI1SEL, RCC_D2CCIP1R_SAI1SEL_Pos, 0x00000000U)
  677. #define LL_RCC_SAI23_CLKSOURCE LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SAI23SEL, RCC_D2CCIP1R_SAI23SEL_Pos, 0x00000000U)
  678. #define LL_RCC_SAI4A_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4ASEL, RCC_D3CCIPR_SAI4ASEL_Pos, 0x00000000U)
  679. #define LL_RCC_SAI4B_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SAI4BSEL, RCC_D3CCIPR_SAI4BSEL_Pos, 0x00000000U)
  680. /**
  681. * @}
  682. */
  683. /** @defgroup RCC_LL_EC_SDMMC Peripheral SDMMC get clock source
  684. * @{
  685. */
  686. #define LL_RCC_SDMMC_CLKSOURCE RCC_D1CCIPR_SDMMCSEL
  687. /**
  688. * @}
  689. */
  690. /** @defgroup RCC_LL_EC_RNG Peripheral RNG get clock source
  691. * @{
  692. */
  693. #define LL_RCC_RNG_CLKSOURCE RCC_D2CCIP2R_RNGSEL
  694. /**
  695. * @}
  696. */
  697. /** @defgroup RCC_LL_EC_USB Peripheral USB get clock source
  698. * @{
  699. */
  700. #define LL_RCC_USB_CLKSOURCE RCC_D2CCIP2R_USBSEL
  701. /**
  702. * @}
  703. */
  704. /** @defgroup RCC_LL_EC_CEC Peripheral CEC get clock source
  705. * @{
  706. */
  707. #define LL_RCC_CEC_CLKSOURCE RCC_D2CCIP2R_CECSEL
  708. /**
  709. * @}
  710. */
  711. #if defined(DSI)
  712. /** @defgroup RCC_LL_EC_DSI Peripheral DSI get clock source
  713. * @{
  714. */
  715. #define LL_RCC_DSI_CLKSOURCE RCC_D1CCIPR_DSISEL
  716. /**
  717. * @}
  718. */
  719. #endif /* DSI */
  720. /** @defgroup RCC_LL_EC_DFSDM Peripheral DFSDM get clock source
  721. * @{
  722. */
  723. #define LL_RCC_DFSDM1_CLKSOURCE RCC_D2CCIP1R_DFSDM1SEL
  724. /**
  725. * @}
  726. */
  727. /** @defgroup RCC_LL_EC_FMC Peripheral FMC get clock source
  728. * @{
  729. */
  730. #define LL_RCC_FMC_CLKSOURCE RCC_D1CCIPR_FMCSEL
  731. /**
  732. * @}
  733. */
  734. /** @defgroup RCC_LL_EC_QSPI Peripheral QSPI get clock source
  735. * @{
  736. */
  737. #define LL_RCC_QSPI_CLKSOURCE RCC_D1CCIPR_QSPISEL
  738. /**
  739. * @}
  740. */
  741. /** @defgroup RCC_LL_EC_CLKP Peripheral CLKP get clock source
  742. * @{
  743. */
  744. #define LL_RCC_CLKP_CLKSOURCE RCC_D1CCIPR_CKPERSEL
  745. /**
  746. * @}
  747. */
  748. /** @defgroup RCC_LL_EC_SPIx Peripheral SPI get clock source
  749. * @{
  750. */
  751. #define LL_RCC_SPI123_CLKSOURCE LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI123SEL, RCC_D2CCIP1R_SPI123SEL_Pos, 0x00000000U)
  752. #define LL_RCC_SPI45_CLKSOURCE LL_CLKSOURCE(D2CCIP1, RCC_D2CCIP1R_SPI45SEL, RCC_D2CCIP1R_SPI45SEL_Pos, 0x00000000U)
  753. #define LL_RCC_SPI6_CLKSOURCE LL_CLKSOURCE(D3CCIP, RCC_D3CCIPR_SPI6SEL, RCC_D3CCIPR_SPI6SEL_Pos, 0x00000000U)
  754. /**
  755. * @}
  756. */
  757. /** @defgroup RCC_LL_EC_SPDIF Peripheral SPDIF get clock source
  758. * @{
  759. */
  760. #define LL_RCC_SPDIF_CLKSOURCE RCC_D2CCIP1R_SPDIFSEL
  761. /**
  762. * @}
  763. */
  764. /** @defgroup RCC_LL_EC_FDCAN Peripheral FDCAN get clock source
  765. * @{
  766. */
  767. #define LL_RCC_FDCAN_CLKSOURCE RCC_D2CCIP1R_FDCANSEL
  768. /**
  769. * @}
  770. */
  771. /** @defgroup RCC_LL_EC_SWP Peripheral SWP get clock source
  772. * @{
  773. */
  774. #define LL_RCC_SWP_CLKSOURCE RCC_D2CCIP1R_SWPSEL
  775. /**
  776. * @}
  777. */
  778. /** @defgroup RCC_LL_EC_ADC Peripheral ADC get clock source
  779. * @{
  780. */
  781. #define LL_RCC_ADC_CLKSOURCE RCC_D3CCIPR_ADCSEL
  782. /**
  783. * @}
  784. */
  785. /** @defgroup RCC_LL_EC_RTC_CLKSOURCE RTC clock source selection
  786. * @{
  787. */
  788. #define LL_RCC_RTC_CLKSOURCE_NONE (uint32_t)(0x00000000U)
  789. #define LL_RCC_RTC_CLKSOURCE_LSE (uint32_t)(RCC_BDCR_RTCSEL_0)
  790. #define LL_RCC_RTC_CLKSOURCE_LSI (uint32_t)(RCC_BDCR_RTCSEL_1)
  791. #define LL_RCC_RTC_CLKSOURCE_HSE (uint32_t)(RCC_BDCR_RTCSEL_0 | RCC_BDCR_RTCSEL_1)
  792. /**
  793. * @}
  794. */
  795. /** @defgroup RCC_LL_EC_TIM_CLKPRESCALER Timers clocks prescalers selection
  796. * @{
  797. */
  798. #define LL_RCC_TIM_PRESCALER_TWICE (uint32_t)(0x00000000U)
  799. #define LL_RCC_TIM_PRESCALER_FOUR_TIMES (uint32_t)(RCC_CFGR_TIMPRE)
  800. /**
  801. * @}
  802. */
  803. /** @defgroup RCC_LL_EC_HRTIM_CLKSOURCE High Resolution Timers clock selection
  804. * @{
  805. */
  806. #define LL_RCC_HRTIM_CLKSOURCE_TIM (uint32_t)(0x00000000U) /* HRTIM Clock source is same as other timers */
  807. #define LL_RCC_HRTIM_CLKSOURCE_CPU (uint32_t)(RCC_CFGR_HRTIMSEL) /* HRTIM Clock source is the CPU clock */
  808. /**
  809. * @}
  810. */
  811. /** @defgroup RCC_LL_EC_PLLSOURCE All PLLs entry clock source
  812. * @{
  813. */
  814. #define LL_RCC_PLLSOURCE_HSI RCC_PLLCKSELR_PLLSRC_HSI
  815. #define LL_RCC_PLLSOURCE_CSI RCC_PLLCKSELR_PLLSRC_CSI
  816. #define LL_RCC_PLLSOURCE_HSE RCC_PLLCKSELR_PLLSRC_HSE
  817. #define LL_RCC_PLLSOURCE_NONE RCC_PLLCKSELR_PLLSRC_NONE
  818. /**
  819. * @}
  820. */
  821. /** @defgroup RCC_LL_EC_PLLINPUTRANGE All PLLs input range
  822. * @{
  823. */
  824. #define LL_RCC_PLLINPUTRANGE_1_2 (uint32_t)(0x00000000U)
  825. #define LL_RCC_PLLINPUTRANGE_2_4 (uint32_t)(0x00000001)
  826. #define LL_RCC_PLLINPUTRANGE_4_8 (uint32_t)(0x00000002)
  827. #define LL_RCC_PLLINPUTRANGE_8_16 (uint32_t)(0x00000003)
  828. /**
  829. * @}
  830. */
  831. /** @defgroup RCC_LL_EC_PLLVCORANGE All PLLs VCO range
  832. * @{
  833. */
  834. #define LL_RCC_PLLVCORANGE_WIDE (uint32_t)(0x00000000U) /* VCO output range: 192 to 836 MHz */
  835. #define LL_RCC_PLLVCORANGE_MEDIUM (uint32_t)(0x00000001) /* VCO output range: 150 to 420 MHz */
  836. /**
  837. * @}
  838. */
  839. /**
  840. * @}
  841. */
  842. /* Exported macro ------------------------------------------------------------*/
  843. /** @defgroup RCC_LL_Exported_Macros RCC Exported Macros
  844. * @{
  845. */
  846. /** @defgroup RCC_LL_EM_WRITE_READ Common Write and read registers Macros
  847. * @{
  848. */
  849. /**
  850. * @brief Write a value in RCC register
  851. * @param __REG__ Register to be written
  852. * @param __VALUE__ Value to be written in the register
  853. * @retval None
  854. */
  855. #define LL_RCC_WriteReg(__REG__, __VALUE__) WRITE_REG(RCC->__REG__, (__VALUE__))
  856. /**
  857. * @brief Read a value in RCC register
  858. * @param __REG__ Register to be read
  859. * @retval Register value
  860. */
  861. #define LL_RCC_ReadReg(__REG__) READ_REG(RCC->__REG__)
  862. /**
  863. * @}
  864. */
  865. /** @defgroup RCC_LL_EM_CALC_FREQ Calculate frequencies
  866. * @{
  867. */
  868. /**
  869. * @brief Helper macro to calculate the SYSCLK frequency
  870. * @param __SYSINPUTCLKFREQ__ Frequency of the input of sys_ck (based on HSE/CSI/HSI/PLL1P)
  871. * @param __SYSPRESCALER__ This parameter can be one of the following values:
  872. * @arg @ref LL_RCC_SYSCLK_DIV_1
  873. * @arg @ref LL_RCC_SYSCLK_DIV_2
  874. * @arg @ref LL_RCC_SYSCLK_DIV_4
  875. * @arg @ref LL_RCC_SYSCLK_DIV_8
  876. * @arg @ref LL_RCC_SYSCLK_DIV_16
  877. * @arg @ref LL_RCC_SYSCLK_DIV_64
  878. * @arg @ref LL_RCC_SYSCLK_DIV_128
  879. * @arg @ref LL_RCC_SYSCLK_DIV_256
  880. * @arg @ref LL_RCC_SYSCLK_DIV_512
  881. * @retval SYSCLK clock frequency (in Hz)
  882. */
  883. #define LL_RCC_CALC_SYSCLK_FREQ(__SYSINPUTCLKFREQ__, __SYSPRESCALER__) ((__SYSINPUTCLKFREQ__) >> LL_RCC_PrescTable[((__SYSPRESCALER__) & RCC_D1CFGR_D1CPRE) >> RCC_D1CFGR_D1CPRE_Pos])
  884. /**
  885. * @brief Helper macro to calculate the HCLK frequency
  886. * @param __SYSCLKFREQ__ SYSCLK frequency.
  887. * @param __HPRESCALER__ This parameter can be one of the following values:
  888. * @arg @ref LL_RCC_AHB_DIV_1
  889. * @arg @ref LL_RCC_AHB_DIV_2
  890. * @arg @ref LL_RCC_AHB_DIV_4
  891. * @arg @ref LL_RCC_AHB_DIV_8
  892. * @arg @ref LL_RCC_AHB_DIV_16
  893. * @arg @ref LL_RCC_AHB_DIV_64
  894. * @arg @ref LL_RCC_AHB_DIV_128
  895. * @arg @ref LL_RCC_AHB_DIV_256
  896. * @arg @ref LL_RCC_AHB_DIV_512
  897. * @retval HCLK clock frequency (in Hz)
  898. */
  899. #define LL_RCC_CALC_HCLK_FREQ(__SYSCLKFREQ__, __HPRESCALER__) ((__SYSCLKFREQ__) >> LL_RCC_PrescTable[((__HPRESCALER__) & RCC_D1CFGR_HPRE) >> RCC_D1CFGR_HPRE_Pos])
  900. /**
  901. * @brief Helper macro to calculate the PCLK1 frequency (ABP1)
  902. * @param __HCLKFREQ__ HCLK frequency
  903. * @param __APB1PRESCALER__ This parameter can be one of the following values:
  904. * @arg @ref LL_RCC_APB1_DIV_1
  905. * @arg @ref LL_RCC_APB1_DIV_2
  906. * @arg @ref LL_RCC_APB1_DIV_4
  907. * @arg @ref LL_RCC_APB1_DIV_8
  908. * @arg @ref LL_RCC_APB1_DIV_16
  909. * @retval PCLK1 clock frequency (in Hz)
  910. */
  911. #define LL_RCC_CALC_PCLK1_FREQ(__HCLKFREQ__, __APB1PRESCALER__) ((__HCLKFREQ__) >> LL_RCC_PrescTable[((__APB1PRESCALER__) & RCC_D2CFGR_D2PPRE1) >> RCC_D2CFGR_D2PPRE1_Pos])
  912. /**
  913. * @brief Helper macro to calculate the PCLK2 frequency (ABP2)
  914. * @param __HCLKFREQ__ HCLK frequency
  915. * @param __APB2PRESCALER__ This parameter can be one of the following values:
  916. * @arg @ref LL_RCC_APB2_DIV_1
  917. * @arg @ref LL_RCC_APB2_DIV_2
  918. * @arg @ref LL_RCC_APB2_DIV_4
  919. * @arg @ref LL_RCC_APB2_DIV_8
  920. * @arg @ref LL_RCC_APB2_DIV_16
  921. * @retval PCLK2 clock frequency (in Hz)
  922. */
  923. #define LL_RCC_CALC_PCLK2_FREQ(__HCLKFREQ__, __APB2PRESCALER__) ((__HCLKFREQ__) >> LL_RCC_PrescTable[((__APB2PRESCALER__) & RCC_D2CFGR_D2PPRE2) >> RCC_D2CFGR_D2PPRE2_Pos])
  924. /**
  925. * @brief Helper macro to calculate the PCLK3 frequency (ABP3)
  926. * @param __HCLKFREQ__ HCLK frequency
  927. * @param __APB3PRESCALER__ This parameter can be one of the following values:
  928. * @arg @ref LL_RCC_APB3_DIV_1
  929. * @arg @ref LL_RCC_APB3_DIV_2
  930. * @arg @ref LL_RCC_APB3_DIV_4
  931. * @arg @ref LL_RCC_APB3_DIV_8
  932. * @arg @ref LL_RCC_APB3_DIV_16
  933. * @retval PCLK1 clock frequency (in Hz)
  934. */
  935. #define LL_RCC_CALC_PCLK3_FREQ(__HCLKFREQ__, __APB3PRESCALER__) ((__HCLKFREQ__) >> LL_RCC_PrescTable[((__APB3PRESCALER__) & RCC_D1CFGR_D1PPRE) >> RCC_D1CFGR_D1PPRE_Pos])
  936. /**
  937. * @brief Helper macro to calculate the PCLK4 frequency (ABP4)
  938. * @param __HCLKFREQ__ HCLK frequency
  939. * @param __APB4PRESCALER__ This parameter can be one of the following values:
  940. * @arg @ref LL_RCC_APB4_DIV_1
  941. * @arg @ref LL_RCC_APB4_DIV_2
  942. * @arg @ref LL_RCC_APB4_DIV_4
  943. * @arg @ref LL_RCC_APB4_DIV_8
  944. * @arg @ref LL_RCC_APB4_DIV_16
  945. * @retval PCLK1 clock frequency (in Hz)
  946. */
  947. #define LL_RCC_CALC_PCLK4_FREQ(__HCLKFREQ__, __APB4PRESCALER__) ((__HCLKFREQ__) >> LL_RCC_PrescTable[((__APB4PRESCALER__) & RCC_D3CFGR_D3PPRE) >> RCC_D3CFGR_D3PPRE_Pos])
  948. /**
  949. * @}
  950. */
  951. #if defined(USE_FULL_LL_DRIVER)
  952. /** @defgroup RCC_LL_EC_PERIPH_FREQUENCY Peripheral clock frequency
  953. * @{
  954. */
  955. #define LL_RCC_PERIPH_FREQUENCY_NO 0x00000000U /*!< No clock enabled for the peripheral */
  956. #define LL_RCC_PERIPH_FREQUENCY_NA 0xFFFFFFFFU /*!< Frequency cannot be provided as external clock */
  957. /**
  958. * @}
  959. */
  960. #endif /* USE_FULL_LL_DRIVER */
  961. /**
  962. * @}
  963. */
  964. /* Exported functions --------------------------------------------------------*/
  965. /** @defgroup RCC_LL_Exported_Functions RCC Exported Functions
  966. * @{
  967. */
  968. /** @defgroup RCC_LL_EF_HSE HSE
  969. * @{
  970. */
  971. /**
  972. * @brief Enable the Clock Security System.
  973. * @note Once HSE Clock Security System is enabled it cannot be changed anymore unless
  974. * a reset occurs or system enter in standby mode.
  975. * @rmtoll CR CSSHSEON LL_RCC_HSE_EnableCSS
  976. * @retval None
  977. */
  978. __STATIC_INLINE void LL_RCC_HSE_EnableCSS(void)
  979. {
  980. SET_BIT(RCC->CR, RCC_CR_CSSHSEON);
  981. }
  982. /**
  983. * @brief Enable HSE external oscillator (HSE Bypass)
  984. * @rmtoll CR HSEBYP LL_RCC_HSE_EnableBypass
  985. * @retval None
  986. */
  987. __STATIC_INLINE void LL_RCC_HSE_EnableBypass(void)
  988. {
  989. SET_BIT(RCC->CR, RCC_CR_HSEBYP);
  990. }
  991. /**
  992. * @brief Disable HSE external oscillator (HSE Bypass)
  993. * @rmtoll CR HSEBYP LL_RCC_HSE_DisableBypass
  994. * @retval None
  995. */
  996. __STATIC_INLINE void LL_RCC_HSE_DisableBypass(void)
  997. {
  998. CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);
  999. }
  1000. /**
  1001. * @brief Enable HSE crystal oscillator (HSE ON)
  1002. * @rmtoll CR HSEON LL_RCC_HSE_Enable
  1003. * @retval None
  1004. */
  1005. __STATIC_INLINE void LL_RCC_HSE_Enable(void)
  1006. {
  1007. SET_BIT(RCC->CR, RCC_CR_HSEON);
  1008. }
  1009. /**
  1010. * @brief Disable HSE crystal oscillator (HSE ON)
  1011. * @rmtoll CR HSEON LL_RCC_HSE_Disable
  1012. * @retval None
  1013. */
  1014. __STATIC_INLINE void LL_RCC_HSE_Disable(void)
  1015. {
  1016. CLEAR_BIT(RCC->CR, RCC_CR_HSEON);
  1017. }
  1018. /**
  1019. * @brief Check if HSE oscillator Ready
  1020. * @rmtoll CR HSERDY LL_RCC_HSE_IsReady
  1021. * @retval State of bit (1 or 0).
  1022. */
  1023. __STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void)
  1024. {
  1025. return ((READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY))?1UL:0UL);
  1026. }
  1027. /**
  1028. * @}
  1029. */
  1030. /** @defgroup RCC_LL_EF_HSI HSI
  1031. * @{
  1032. */
  1033. /**
  1034. * @brief Enable HSI oscillator
  1035. * @rmtoll CR HSION LL_RCC_HSI_Enable
  1036. * @retval None
  1037. */
  1038. __STATIC_INLINE void LL_RCC_HSI_Enable(void)
  1039. {
  1040. SET_BIT(RCC->CR, RCC_CR_HSION);
  1041. }
  1042. /**
  1043. * @brief Disable HSI oscillator
  1044. * @rmtoll CR HSION LL_RCC_HSI_Disable
  1045. * @retval None
  1046. */
  1047. __STATIC_INLINE void LL_RCC_HSI_Disable(void)
  1048. {
  1049. CLEAR_BIT(RCC->CR, RCC_CR_HSION);
  1050. }
  1051. /**
  1052. * @brief Check if HSI clock is ready
  1053. * @rmtoll CR HSIRDY LL_RCC_HSI_IsReady
  1054. * @retval State of bit (1 or 0).
  1055. */
  1056. __STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void)
  1057. {
  1058. return ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY))?1UL:0UL);
  1059. }
  1060. /**
  1061. * @brief Check if HSI new divider applied and ready
  1062. * @rmtoll CR HSIDIVF LL_RCC_HSI_IsDividerReady
  1063. * @retval State of bit (1 or 0).
  1064. */
  1065. __STATIC_INLINE uint32_t LL_RCC_HSI_IsDividerReady(void)
  1066. {
  1067. return ((READ_BIT(RCC->CR, RCC_CR_HSIDIVF) == (RCC_CR_HSIDIVF))?1UL:0UL);
  1068. }
  1069. /**
  1070. * @brief Set HSI divider
  1071. * @rmtoll CR HSIDIV LL_RCC_HSI_SetDivider
  1072. * @param Divider This parameter can be one of the following values:
  1073. * @arg @ref LL_RCC_HSI_DIV1
  1074. * @arg @ref LL_RCC_HSI_DIV2
  1075. * @arg @ref LL_RCC_HSI_DIV4
  1076. * @arg @ref LL_RCC_HSI_DIV8
  1077. * @retval None.
  1078. */
  1079. __STATIC_INLINE void LL_RCC_HSI_SetDivider(uint32_t Divider)
  1080. {
  1081. MODIFY_REG(RCC->CR, RCC_CR_HSIDIV, Divider);
  1082. }
  1083. /**
  1084. * @brief Get HSI divider
  1085. * @rmtoll CR HSIDIV LL_RCC_HSI_GetDivider
  1086. * @retval can be one of the following values:
  1087. * @arg @ref LL_RCC_HSI_DIV1
  1088. * @arg @ref LL_RCC_HSI_DIV2
  1089. * @arg @ref LL_RCC_HSI_DIV4
  1090. * @arg @ref LL_RCC_HSI_DIV8
  1091. */
  1092. __STATIC_INLINE uint32_t LL_RCC_HSI_GetDivider(void)
  1093. {
  1094. return (READ_BIT(RCC->CR, RCC_CR_HSIDIV));
  1095. }
  1096. /**
  1097. * @brief Enable HSI oscillator in Stop mode
  1098. * @rmtoll CR HSIKERON LL_RCC_HSI_EnableStopMode
  1099. * @retval None
  1100. */
  1101. __STATIC_INLINE void LL_RCC_HSI_EnableStopMode(void)
  1102. {
  1103. SET_BIT(RCC->CR, RCC_CR_HSIKERON);
  1104. }
  1105. /**
  1106. * @brief Disable HSI oscillator in Stop mode
  1107. * @rmtoll CR HSION LL_RCC_HSI_DisableStopMode
  1108. * @retval None
  1109. */
  1110. __STATIC_INLINE void LL_RCC_HSI_DisableStopMode(void)
  1111. {
  1112. CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON);
  1113. }
  1114. /**
  1115. * @brief Get HSI Calibration value
  1116. * @note When HSITRIM is written, HSICAL is updated with the sum of
  1117. * HSITRIM and the factory trim value
  1118. * @rmtoll HSICFGR HSICAL LL_RCC_HSI_GetCalibration
  1119. * @retval A value between 0 and 4095 (0xFFF)
  1120. */
  1121. __STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibration(void)
  1122. {
  1123. return (uint32_t)(READ_BIT(RCC->HSICFGR, RCC_HSICFGR_HSICAL) >> RCC_HSICFGR_HSICAL_Pos);
  1124. }
  1125. /**
  1126. * @brief Set HSI Calibration trimming
  1127. * @note user-programmable trimming value that is added to the HSICAL
  1128. * @note Default value is 64 (32 for Cut1.x), which, when added to the HSICAL value,
  1129. * should trim the HSI to 64 MHz +/- 1 %
  1130. * @rmtoll HSICFGR HSITRIM LL_RCC_HSI_SetCalibTrimming
  1131. * @param Value can be a value between 0 and 127 (63 for Cut1.x)
  1132. * @retval None
  1133. */
  1134. __STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value)
  1135. {
  1136. if ((DBGMCU->IDCODE & 0xF0000000U) == 0x10000000U)
  1137. {
  1138. /* STM32H7 Rev.Y */
  1139. MODIFY_REG(RCC->HSICFGR, 0x3F000U, Value << 12U);
  1140. }
  1141. else
  1142. {
  1143. /* STM32H7 Rev.V */
  1144. MODIFY_REG(RCC->HSICFGR, RCC_HSICFGR_HSITRIM, Value << RCC_HSICFGR_HSITRIM_Pos);
  1145. }
  1146. }
  1147. /**
  1148. * @brief Get HSI Calibration trimming
  1149. * @rmtoll HSICFGR HSITRIM LL_RCC_HSI_GetCalibTrimming
  1150. * @retval A value between 0 and 127 (63 for Cut1.x)
  1151. */
  1152. __STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibTrimming(void)
  1153. {
  1154. if ((DBGMCU->IDCODE & 0xF0000000U) == 0x10000000U)
  1155. {
  1156. /* STM32H7 Rev.Y */
  1157. return (uint32_t)(READ_BIT(RCC->HSICFGR, 0x3F000U) >> 12U);
  1158. }
  1159. else
  1160. {
  1161. /* STM32H7 Rev.V */
  1162. return (uint32_t)(READ_BIT(RCC->HSICFGR, RCC_HSICFGR_HSITRIM) >> RCC_HSICFGR_HSITRIM_Pos);
  1163. }
  1164. }
  1165. /**
  1166. * @}
  1167. */
  1168. /** @defgroup RCC_LL_EF_CSI CSI
  1169. * @{
  1170. */
  1171. /**
  1172. * @brief Enable CSI oscillator
  1173. * @rmtoll CR CSION LL_RCC_CSI_Enable
  1174. * @retval None
  1175. */
  1176. __STATIC_INLINE void LL_RCC_CSI_Enable(void)
  1177. {
  1178. SET_BIT(RCC->CR, RCC_CR_CSION);
  1179. }
  1180. /**
  1181. * @brief Disable CSI oscillator
  1182. * @rmtoll CR CSION LL_RCC_CSI_Disable
  1183. * @retval None
  1184. */
  1185. __STATIC_INLINE void LL_RCC_CSI_Disable(void)
  1186. {
  1187. CLEAR_BIT(RCC->CR, RCC_CR_CSION);
  1188. }
  1189. /**
  1190. * @brief Check if CSI clock is ready
  1191. * @rmtoll CR CSIRDY LL_RCC_CSI_IsReady
  1192. * @retval State of bit (1 or 0).
  1193. */
  1194. __STATIC_INLINE uint32_t LL_RCC_CSI_IsReady(void)
  1195. {
  1196. return ((READ_BIT(RCC->CR, RCC_CR_CSIRDY) == (RCC_CR_CSIRDY))?1UL:0UL);
  1197. }
  1198. /**
  1199. * @brief Enable CSI oscillator in Stop mode
  1200. * @rmtoll CR CSIKERON LL_RCC_CSI_EnableStopMode
  1201. * @retval None
  1202. */
  1203. __STATIC_INLINE void LL_RCC_CSI_EnableStopMode(void)
  1204. {
  1205. SET_BIT(RCC->CR, RCC_CR_CSIKERON);
  1206. }
  1207. /**
  1208. * @brief Disable CSI oscillator in Stop mode
  1209. * @rmtoll CR CSIKERON LL_RCC_CSI_DisableStopMode
  1210. * @retval None
  1211. */
  1212. __STATIC_INLINE void LL_RCC_CSI_DisableStopMode(void)
  1213. {
  1214. CLEAR_BIT(RCC->CR, RCC_CR_CSIKERON);
  1215. }
  1216. /**
  1217. * @brief Get CSI Calibration value
  1218. * @note When CSITRIM is written, CSICAL is updated with the sum of
  1219. * CSITRIM and the factory trim value
  1220. * @rmtoll CSICFGR CSICAL LL_RCC_CSI_GetCalibration
  1221. * @retval A value between 0 and 255 (0xFF)
  1222. */
  1223. __STATIC_INLINE uint32_t LL_RCC_CSI_GetCalibration(void)
  1224. {
  1225. if ((DBGMCU->IDCODE & 0xF0000000U) == 0x10000000U)
  1226. {
  1227. /* STM32H7 Rev.Y */
  1228. return (uint32_t)(READ_BIT(RCC->HSICFGR, 0x3FC0000U) >> 18U);
  1229. }
  1230. else
  1231. {
  1232. /* STM32H7 Rev.V */
  1233. return (uint32_t)(READ_BIT(RCC->CSICFGR, RCC_CSICFGR_CSICAL) >> RCC_CSICFGR_CSICAL_Pos);
  1234. }
  1235. }
  1236. /**
  1237. * @brief Set CSI Calibration trimming
  1238. * @note user-programmable trimming value that is added to the CSICAL
  1239. * @note Default value is 16, which, when added to the CSICAL value,
  1240. * should trim the CSI to 4 MHz +/- 1 %
  1241. * @rmtoll CSICFGR CSITRIM LL_RCC_CSI_SetCalibTrimming
  1242. * @param Value can be a value between 0 and 31
  1243. * @retval None
  1244. */
  1245. __STATIC_INLINE void LL_RCC_CSI_SetCalibTrimming(uint32_t Value)
  1246. {
  1247. if ((DBGMCU->IDCODE & 0xF0000000U) == 0x10000000U)
  1248. {
  1249. /* STM32H7 Rev.Y */
  1250. MODIFY_REG(RCC->HSICFGR, 0x7C000000U, Value << 26U);
  1251. }
  1252. else
  1253. {
  1254. /* STM32H7 Rev.V */
  1255. MODIFY_REG(RCC->CSICFGR, RCC_CSICFGR_CSITRIM, Value << RCC_CSICFGR_CSITRIM_Pos);
  1256. }
  1257. }
  1258. /**
  1259. * @brief Get CSI Calibration trimming
  1260. * @rmtoll CSICFGR CSITRIM LL_RCC_CSI_GetCalibTrimming
  1261. * @retval A value between 0 and 31
  1262. */
  1263. __STATIC_INLINE uint32_t LL_RCC_CSI_GetCalibTrimming(void)
  1264. {
  1265. if ((DBGMCU->IDCODE & 0xF0000000U) == 0x10000000U)
  1266. {
  1267. /* STM32H7 Rev.Y */
  1268. return (uint32_t)(READ_BIT(RCC->HSICFGR, 0x7C000000U) >> 26U);
  1269. }
  1270. else
  1271. {
  1272. /* STM32H7 Rev.V */
  1273. return (uint32_t)(READ_BIT(RCC->CSICFGR, RCC_CSICFGR_CSITRIM) >> RCC_CSICFGR_CSITRIM_Pos);
  1274. }
  1275. }
  1276. /**
  1277. * @}
  1278. */
  1279. /** @defgroup RCC_LL_EF_HSI48 HSI48
  1280. * @{
  1281. */
  1282. /**
  1283. * @brief Enable HSI48 oscillator
  1284. * @rmtoll CR HSI48ON LL_RCC_HSI48_Enable
  1285. * @retval None
  1286. */
  1287. __STATIC_INLINE void LL_RCC_HSI48_Enable(void)
  1288. {
  1289. SET_BIT(RCC->CR, RCC_CR_HSI48ON);
  1290. }
  1291. /**
  1292. * @brief Disable HSI48 oscillator
  1293. * @rmtoll CR HSI48ON LL_RCC_HSI48_Disable
  1294. * @retval None
  1295. */
  1296. __STATIC_INLINE void LL_RCC_HSI48_Disable(void)
  1297. {
  1298. CLEAR_BIT(RCC->CR, RCC_CR_HSI48ON);
  1299. }
  1300. /**
  1301. * @brief Check if HSI48 clock is ready
  1302. * @rmtoll CR HSI48RDY LL_RCC_HSI48_IsReady
  1303. * @retval State of bit (1 or 0).
  1304. */
  1305. __STATIC_INLINE uint32_t LL_RCC_HSI48_IsReady(void)
  1306. {
  1307. return ((READ_BIT(RCC->CR, RCC_CR_HSI48RDY) == (RCC_CR_HSI48RDY))?1UL:0UL);
  1308. }
  1309. /**
  1310. * @brief Get HSI48 Calibration value
  1311. * @note When HSI48TRIM is written, HSI48CAL is updated with the sum of
  1312. * HSI48TRIM and the factory trim value
  1313. * @rmtoll CRRCR HSI48CAL LL_RCC_HSI48_GetCalibration
  1314. * @retval A value between 0 and 1023 (0x3FF)
  1315. */
  1316. __STATIC_INLINE uint32_t LL_RCC_HSI48_GetCalibration(void)
  1317. {
  1318. return (uint32_t)(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48CAL) >> RCC_CRRCR_HSI48CAL_Pos);
  1319. }
  1320. /**
  1321. * @}
  1322. */
  1323. /** @defgroup RCC_LL_EF_D1CLK D1CKREADY
  1324. * @{
  1325. */
  1326. /**
  1327. * @brief Check if D1 clock is ready
  1328. * @rmtoll CR D1CKRDY LL_RCC_D1CK_IsReady
  1329. * @retval State of bit (1 or 0).
  1330. */
  1331. __STATIC_INLINE uint32_t LL_RCC_D1CK_IsReady(void)
  1332. {
  1333. return ((READ_BIT(RCC->CR, RCC_CR_D1CKRDY) == (RCC_CR_D1CKRDY))?1UL:0UL);
  1334. }
  1335. /**
  1336. * @}
  1337. */
  1338. /** @defgroup RCC_LL_EF_D2CLK D2CKREADY
  1339. * @{
  1340. */
  1341. /**
  1342. * @brief Check if D2 clock is ready
  1343. * @rmtoll CR D2CKRDY LL_RCC_D2CK_IsReady
  1344. * @retval State of bit (1 or 0).
  1345. */
  1346. __STATIC_INLINE uint32_t LL_RCC_D2CK_IsReady(void)
  1347. {
  1348. return ((READ_BIT(RCC->CR, RCC_CR_D2CKRDY) == (RCC_CR_D2CKRDY))?1UL:0UL);
  1349. }
  1350. /**
  1351. * @}
  1352. */
  1353. /** @defgroup RCC_LL_EF_SYSTEM_WIDE_RESET RESET
  1354. * @{
  1355. */
  1356. /**
  1357. * @brief Enable system wide reset for Window Watch Dog 1
  1358. * @rmtoll GCR WW1RSC LL_RCC_WWDG1_EnableSystemReset
  1359. * @retval None.
  1360. */
  1361. __STATIC_INLINE void LL_RCC_WWDG1_EnableSystemReset(void)
  1362. {
  1363. SET_BIT(RCC->GCR, RCC_GCR_WW1RSC);
  1364. }
  1365. /**
  1366. * @brief Check if Window Watch Dog 1 reset is system wide
  1367. * @rmtoll GCR WW1RSC LL_RCC_WWDG1_IsSystemReset
  1368. * @retval State of bit (1 or 0).
  1369. */
  1370. __STATIC_INLINE uint32_t LL_RCC_WWDG1_IsSystemReset(void)
  1371. {
  1372. return ((READ_BIT(RCC->GCR, RCC_GCR_WW1RSC) == RCC_GCR_WW1RSC)?1UL:0UL);
  1373. }
  1374. #if defined(DUAL_CORE)
  1375. /**
  1376. * @brief Enable system wide reset for Window Watch Dog 2
  1377. * @rmtoll GCR WW1RSC LL_RCC_WWDG2_EnableSystemReset
  1378. * @retval None.
  1379. */
  1380. __STATIC_INLINE void LL_RCC_WWDG2_EnableSystemReset(void)
  1381. {
  1382. SET_BIT(RCC->GCR, RCC_GCR_WW2RSC);
  1383. }
  1384. /**
  1385. * @brief Check if Window Watch Dog 2 reset is system wide
  1386. * @rmtoll GCR WW2RSC LL_RCC_WWDG2_IsSystemReset
  1387. * @retval State of bit (1 or 0).
  1388. */
  1389. __STATIC_INLINE uint32_t LL_RCC_WWDG2_IsSystemReset(void)
  1390. {
  1391. return ((READ_BIT(RCC->GCR, RCC_GCR_WW2RSC) == RCC_GCR_WW2RSC)?1UL:0UL);
  1392. }
  1393. #endif /*DUAL_CORE*/
  1394. /**
  1395. * @}
  1396. */
  1397. #if defined(DUAL_CORE)
  1398. /** @defgroup RCC_LL_EF_BOOT_CPU CPU
  1399. * @{
  1400. */
  1401. /**
  1402. * @brief Force CM4 boot (if hold by option byte BCM4 = 0)
  1403. * @rmtoll GCR BOOT_C2 LL_RCC_ForceCM4Boot
  1404. * @retval None.
  1405. */
  1406. __STATIC_INLINE void LL_RCC_ForceCM4Boot(void)
  1407. {
  1408. SET_BIT(RCC->GCR, RCC_GCR_BOOT_C2);
  1409. }
  1410. /**
  1411. * @brief Check if CM4 boot is forced
  1412. * @rmtoll GCR BOOT_C2 LL_RCC_IsCM4BootForced
  1413. * @retval State of bit (1 or 0).
  1414. */
  1415. __STATIC_INLINE uint32_t LL_RCC_IsCM4BootForced(void)
  1416. {
  1417. return ((READ_BIT(RCC->GCR, RCC_GCR_BOOT_C2) == RCC_GCR_BOOT_C2)?1UL:0UL);
  1418. }
  1419. /**
  1420. * @brief Force CM7 boot (if hold by option byte BCM7 = 0)
  1421. * @rmtoll GCR BOOT_C1 LL_RCC_ForceCM7Boot
  1422. * @retval None.
  1423. */
  1424. __STATIC_INLINE void LL_RCC_ForceCM7Boot(void)
  1425. {
  1426. SET_BIT(RCC->GCR, RCC_GCR_BOOT_C1);
  1427. }
  1428. /**
  1429. * @brief Check if CM7 boot is forced
  1430. * @rmtoll GCR BOOT_C1 LL_RCC_IsCM7BootForced
  1431. * @retval State of bit (1 or 0).
  1432. */
  1433. __STATIC_INLINE uint32_t LL_RCC_IsCM7BootForced(void)
  1434. {
  1435. return ((READ_BIT(RCC->GCR, RCC_GCR_BOOT_C1) == RCC_GCR_BOOT_C1)?1UL:0UL);
  1436. }
  1437. /**
  1438. * @}
  1439. */
  1440. #endif /*DUAL_CORE*/
  1441. /** @defgroup RCC_LL_EF_LSE LSE
  1442. * @{
  1443. */
  1444. /**
  1445. * @brief Enable the Clock Security System on LSE.
  1446. * @note Once LSE Clock Security System is enabled it cannot be changed anymore unless
  1447. * a clock failure is detected.
  1448. * @rmtoll BDCR LSECSSON LL_RCC_LSE_EnableCSS
  1449. * @retval None
  1450. */
  1451. __STATIC_INLINE void LL_RCC_LSE_EnableCSS(void)
  1452. {
  1453. SET_BIT(RCC->BDCR, RCC_BDCR_LSECSSON);
  1454. }
  1455. /**
  1456. * @brief Check if LSE failure is detected by Clock Security System
  1457. * @rmtoll BDCR LSECSSD LL_RCC_LSE_IsFailureDetected
  1458. * @retval State of bit (1 or 0).
  1459. */
  1460. __STATIC_INLINE uint32_t LL_RCC_LSE_IsFailureDetected(void)
  1461. {
  1462. return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSECSSD) == (RCC_BDCR_LSECSSD))?1UL:0UL);
  1463. }
  1464. /**
  1465. * @brief Enable Low Speed External (LSE) crystal.
  1466. * @rmtoll BDCR LSEON LL_RCC_LSE_Enable
  1467. * @retval None
  1468. */
  1469. __STATIC_INLINE void LL_RCC_LSE_Enable(void)
  1470. {
  1471. SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);
  1472. }
  1473. /**
  1474. * @brief Disable Low Speed External (LSE) crystal.
  1475. * @rmtoll BDCR LSEON LL_RCC_LSE_Disable
  1476. * @retval None
  1477. */
  1478. __STATIC_INLINE void LL_RCC_LSE_Disable(void)
  1479. {
  1480. CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON);
  1481. }
  1482. /**
  1483. * @brief Enable external clock source (LSE bypass).
  1484. * @rmtoll BDCR LSEBYP LL_RCC_LSE_EnableBypass
  1485. * @retval None
  1486. */
  1487. __STATIC_INLINE void LL_RCC_LSE_EnableBypass(void)
  1488. {
  1489. SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);
  1490. }
  1491. /**
  1492. * @brief Disable external clock source (LSE bypass).
  1493. * @rmtoll BDCR LSEBYP LL_RCC_LSE_DisableBypass
  1494. * @retval None
  1495. */
  1496. __STATIC_INLINE void LL_RCC_LSE_DisableBypass(void)
  1497. {
  1498. CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);
  1499. }
  1500. /**
  1501. * @brief Set LSE oscillator drive capability
  1502. * @note The oscillator is in Xtal mode when it is not in bypass mode.
  1503. * @rmtoll BDCR LSEDRV LL_RCC_LSE_SetDriveCapability
  1504. * @param LSEDrive This parameter can be one of the following values:
  1505. * @arg @ref LL_RCC_LSEDRIVE_LOW
  1506. * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW
  1507. * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH
  1508. * @arg @ref LL_RCC_LSEDRIVE_HIGH
  1509. * @retval None
  1510. */
  1511. __STATIC_INLINE void LL_RCC_LSE_SetDriveCapability(uint32_t LSEDrive)
  1512. {
  1513. MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, LSEDrive);
  1514. }
  1515. /**
  1516. * @brief Get LSE oscillator drive capability
  1517. * @rmtoll BDCR LSEDRV LL_RCC_LSE_GetDriveCapability
  1518. * @retval Returned value can be one of the following values:
  1519. * @arg @ref LL_RCC_LSEDRIVE_LOW
  1520. * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW
  1521. * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH
  1522. * @arg @ref LL_RCC_LSEDRIVE_HIGH
  1523. */
  1524. __STATIC_INLINE uint32_t LL_RCC_LSE_GetDriveCapability(void)
  1525. {
  1526. return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_LSEDRV));
  1527. }
  1528. /**
  1529. * @brief Check if LSE oscillator Ready
  1530. * @rmtoll BDCR LSERDY LL_RCC_LSE_IsReady
  1531. * @retval State of bit (1 or 0).
  1532. */
  1533. __STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void)
  1534. {
  1535. return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY))?1UL:0UL);
  1536. }
  1537. /**
  1538. * @}
  1539. */
  1540. /** @defgroup RCC_LL_EF_LSI LSI
  1541. * @{
  1542. */
  1543. /**
  1544. * @brief Enable LSI Oscillator
  1545. * @rmtoll CSR LSION LL_RCC_LSI_Enable
  1546. * @retval None
  1547. */
  1548. __STATIC_INLINE void LL_RCC_LSI_Enable(void)
  1549. {
  1550. SET_BIT(RCC->CSR, RCC_CSR_LSION);
  1551. }
  1552. /**
  1553. * @brief Disable LSI Oscillator
  1554. * @rmtoll CSR LSION LL_RCC_LSI_Disable
  1555. * @retval None
  1556. */
  1557. __STATIC_INLINE void LL_RCC_LSI_Disable(void)
  1558. {
  1559. CLEAR_BIT(RCC->CSR, RCC_CSR_LSION);
  1560. }
  1561. /**
  1562. * @brief Check if LSI is Ready
  1563. * @rmtoll CSR LSIRDY LL_RCC_LSI_IsReady
  1564. * @retval State of bit (1 or 0).
  1565. */
  1566. __STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void)
  1567. {
  1568. return ((READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY))?1UL:0UL);
  1569. }
  1570. /**
  1571. * @}
  1572. */
  1573. /** @defgroup RCC_LL_EF_System System
  1574. * @{
  1575. */
  1576. /**
  1577. * @brief Configure the system clock source
  1578. * @rmtoll CFGR SW LL_RCC_SetSysClkSource
  1579. * @param Source This parameter can be one of the following values:
  1580. * @arg @ref LL_RCC_SYS_CLKSOURCE_HSI
  1581. * @arg @ref LL_RCC_SYS_CLKSOURCE_CSI
  1582. * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE
  1583. * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL1
  1584. * @retval None
  1585. */
  1586. __STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source)
  1587. {
  1588. MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source);
  1589. }
  1590. /**
  1591. * @brief Get the system clock source
  1592. * @rmtoll CFGR SWS LL_RCC_GetSysClkSource
  1593. * @retval Returned value can be one of the following values:
  1594. * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI
  1595. * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_CSI
  1596. * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE
  1597. * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL1
  1598. */
  1599. __STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void)
  1600. {
  1601. return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS));
  1602. }
  1603. /**
  1604. * @brief Configure the system wakeup clock source
  1605. * @rmtoll CFGR STOPWUCK LL_RCC_SetSysWakeUpClkSource
  1606. * @param Source This parameter can be one of the following values:
  1607. * @arg @ref LL_RCC_SYSWAKEUP_CLKSOURCE_HSI
  1608. * @arg @ref LL_RCC_SYSWAKEUP_CLKSOURCE_CSI
  1609. * @retval None
  1610. */
  1611. __STATIC_INLINE void LL_RCC_SetSysWakeUpClkSource(uint32_t Source)
  1612. {
  1613. MODIFY_REG(RCC->CFGR, RCC_CFGR_STOPWUCK, Source);
  1614. }
  1615. /**
  1616. * @brief Get the system wakeup clock source
  1617. * @rmtoll CFGR STOPWUCK LL_RCC_GetSysWakeUpClkSource
  1618. * @retval Returned value can be one of the following values:
  1619. * @arg @ref LL_RCC_SYSWAKEUP_CLKSOURCE_HSI
  1620. * @arg @ref LL_RCC_SYSWAKEUP_CLKSOURCE_CSI
  1621. */
  1622. __STATIC_INLINE uint32_t LL_RCC_GetSysWakeUpClkSource(void)
  1623. {
  1624. return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_STOPWUCK));
  1625. }
  1626. /**
  1627. * @brief Configure the kernel wakeup clock source
  1628. * @rmtoll CFGR STOPKERWUCK LL_RCC_SetKerWakeUpClkSource
  1629. * @param Source This parameter can be one of the following values:
  1630. * @arg @ref LL_RCC_KERWAKEUP_CLKSOURCE_HSI
  1631. * @arg @ref LL_RCC_KERWAKEUP_CLKSOURCE_CSI
  1632. * @retval None
  1633. */
  1634. __STATIC_INLINE void LL_RCC_SetKerWakeUpClkSource(uint32_t Source)
  1635. {
  1636. MODIFY_REG(RCC->CFGR, RCC_CFGR_STOPKERWUCK, Source);
  1637. }
  1638. /**
  1639. * @brief Get the kernel wakeup clock source
  1640. * @rmtoll CFGR STOPKERWUCK LL_RCC_GetKerWakeUpClkSource
  1641. * @retval Returned value can be one of the following values:
  1642. * @arg @ref LL_RCC_KERWAKEUP_CLKSOURCE_HSI
  1643. * @arg @ref LL_RCC_KERWAKEUP_CLKSOURCE_CSI
  1644. */
  1645. __STATIC_INLINE uint32_t LL_RCC_GetKerWakeUpClkSource(void)
  1646. {
  1647. return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_STOPKERWUCK));
  1648. }
  1649. /**
  1650. * @brief Set System prescaler
  1651. * @rmtoll D1CFGR D1CPRE LL_RCC_SetSysPrescaler
  1652. * @param Prescaler This parameter can be one of the following values:
  1653. * @arg @ref LL_RCC_SYSCLK_DIV_1
  1654. * @arg @ref LL_RCC_SYSCLK_DIV_2
  1655. * @arg @ref LL_RCC_SYSCLK_DIV_4
  1656. * @arg @ref LL_RCC_SYSCLK_DIV_8
  1657. * @arg @ref LL_RCC_SYSCLK_DIV_16
  1658. * @arg @ref LL_RCC_SYSCLK_DIV_64
  1659. * @arg @ref LL_RCC_SYSCLK_DIV_128
  1660. * @arg @ref LL_RCC_SYSCLK_DIV_256
  1661. * @arg @ref LL_RCC_SYSCLK_DIV_512
  1662. * @retval None
  1663. */
  1664. __STATIC_INLINE void LL_RCC_SetSysPrescaler(uint32_t Prescaler)
  1665. {
  1666. MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1CPRE, Prescaler);
  1667. }
  1668. /**
  1669. * @brief Set AHB prescaler
  1670. * @rmtoll D1CFGR HPRE LL_RCC_SetAHBPrescaler
  1671. * @param Prescaler This parameter can be one of the following values:
  1672. * @arg @ref LL_RCC_AHB_DIV_1
  1673. * @arg @ref LL_RCC_AHB_DIV_2
  1674. * @arg @ref LL_RCC_AHB_DIV_4
  1675. * @arg @ref LL_RCC_AHB_DIV_8
  1676. * @arg @ref LL_RCC_AHB_DIV_16
  1677. * @arg @ref LL_RCC_AHB_DIV_64
  1678. * @arg @ref LL_RCC_AHB_DIV_128
  1679. * @arg @ref LL_RCC_AHB_DIV_256
  1680. * @arg @ref LL_RCC_AHB_DIV_512
  1681. * @retval None
  1682. */
  1683. __STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler)
  1684. {
  1685. MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_HPRE, Prescaler);
  1686. }
  1687. /**
  1688. * @brief Set APB1 prescaler
  1689. * @rmtoll D2CFGR D2PPRE1 LL_RCC_SetAPB1Prescaler
  1690. * @param Prescaler This parameter can be one of the following values:
  1691. * @arg @ref LL_RCC_APB1_DIV_1
  1692. * @arg @ref LL_RCC_APB1_DIV_2
  1693. * @arg @ref LL_RCC_APB1_DIV_4
  1694. * @arg @ref LL_RCC_APB1_DIV_8
  1695. * @arg @ref LL_RCC_APB1_DIV_16
  1696. * @retval None
  1697. */
  1698. __STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler)
  1699. {
  1700. MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE1, Prescaler);
  1701. }
  1702. /**
  1703. * @brief Set APB2 prescaler
  1704. * @rmtoll D2CFGR D2PPRE2 LL_RCC_SetAPB2Prescaler
  1705. * @param Prescaler This parameter can be one of the following values:
  1706. * @arg @ref LL_RCC_APB2_DIV_1
  1707. * @arg @ref LL_RCC_APB2_DIV_2
  1708. * @arg @ref LL_RCC_APB2_DIV_4
  1709. * @arg @ref LL_RCC_APB2_DIV_8
  1710. * @arg @ref LL_RCC_APB2_DIV_16
  1711. * @retval None
  1712. */
  1713. __STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler)
  1714. {
  1715. MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE2, Prescaler);
  1716. }
  1717. /**
  1718. * @brief Set APB3 prescaler
  1719. * @rmtoll D1CFGR D1PPRE LL_RCC_SetAPB3Prescaler
  1720. * @param Prescaler This parameter can be one of the following values:
  1721. * @arg @ref LL_RCC_APB3_DIV_1
  1722. * @arg @ref LL_RCC_APB3_DIV_2
  1723. * @arg @ref LL_RCC_APB3_DIV_4
  1724. * @arg @ref LL_RCC_APB3_DIV_8
  1725. * @arg @ref LL_RCC_APB3_DIV_16
  1726. * @retval None
  1727. */
  1728. __STATIC_INLINE void LL_RCC_SetAPB3Prescaler(uint32_t Prescaler)
  1729. {
  1730. MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1PPRE, Prescaler);
  1731. }
  1732. /**
  1733. * @brief Set APB4 prescaler
  1734. * @rmtoll D3CFGR D3PPRE LL_RCC_SetAPB4Prescaler
  1735. * @param Prescaler This parameter can be one of the following values:
  1736. * @arg @ref LL_RCC_APB4_DIV_1
  1737. * @arg @ref LL_RCC_APB4_DIV_2
  1738. * @arg @ref LL_RCC_APB4_DIV_4
  1739. * @arg @ref LL_RCC_APB4_DIV_8
  1740. * @arg @ref LL_RCC_APB4_DIV_16
  1741. * @retval None
  1742. */
  1743. __STATIC_INLINE void LL_RCC_SetAPB4Prescaler(uint32_t Prescaler)
  1744. {
  1745. MODIFY_REG(RCC->D3CFGR, RCC_D3CFGR_D3PPRE, Prescaler);
  1746. }
  1747. /**
  1748. * @brief Get System prescaler
  1749. * @rmtoll D1CFGR D1CPRE LL_RCC_GetSysPrescaler
  1750. * @retval Returned value can be one of the following values:
  1751. * @arg @ref LL_RCC_SYSCLK_DIV_1
  1752. * @arg @ref LL_RCC_SYSCLK_DIV_2
  1753. * @arg @ref LL_RCC_SYSCLK_DIV_4
  1754. * @arg @ref LL_RCC_SYSCLK_DIV_8
  1755. * @arg @ref LL_RCC_SYSCLK_DIV_16
  1756. * @arg @ref LL_RCC_SYSCLK_DIV_64
  1757. * @arg @ref LL_RCC_SYSCLK_DIV_128
  1758. * @arg @ref LL_RCC_SYSCLK_DIV_256
  1759. * @arg @ref LL_RCC_SYSCLK_DIV_512
  1760. */
  1761. __STATIC_INLINE uint32_t LL_RCC_GetSysPrescaler(void)
  1762. {
  1763. return (uint32_t)(READ_BIT(RCC->D1CFGR, RCC_D1CFGR_D1CPRE));
  1764. }
  1765. /**
  1766. * @brief Get AHB prescaler
  1767. * @rmtoll D1CFGR HPRE LL_RCC_GetAHBPrescaler
  1768. * @retval Returned value can be one of the following values:
  1769. * @arg @ref LL_RCC_AHB_DIV_1
  1770. * @arg @ref LL_RCC_AHB_DIV_2
  1771. * @arg @ref LL_RCC_AHB_DIV_4
  1772. * @arg @ref LL_RCC_AHB_DIV_8
  1773. * @arg @ref LL_RCC_AHB_DIV_16
  1774. * @arg @ref LL_RCC_AHB_DIV_64
  1775. * @arg @ref LL_RCC_AHB_DIV_128
  1776. * @arg @ref LL_RCC_AHB_DIV_256
  1777. * @arg @ref LL_RCC_AHB_DIV_512
  1778. */
  1779. __STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void)
  1780. {
  1781. return (uint32_t)(READ_BIT(RCC->D1CFGR, RCC_D1CFGR_HPRE));
  1782. }
  1783. /**
  1784. * @brief Get APB1 prescaler
  1785. * @rmtoll D2CFGR D2PPRE1 LL_RCC_GetAPB1Prescaler
  1786. * @retval Returned value can be one of the following values:
  1787. * @arg @ref LL_RCC_APB1_DIV_1
  1788. * @arg @ref LL_RCC_APB1_DIV_2
  1789. * @arg @ref LL_RCC_APB1_DIV_4
  1790. * @arg @ref LL_RCC_APB1_DIV_8
  1791. * @arg @ref LL_RCC_APB1_DIV_16
  1792. */
  1793. __STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void)
  1794. {
  1795. return (uint32_t)(READ_BIT(RCC->D2CFGR, RCC_D2CFGR_D2PPRE1));
  1796. }
  1797. /**
  1798. * @brief Get APB2 prescaler
  1799. * @rmtoll D2CFGR D2PPRE2 LL_RCC_GetAPB2Prescaler
  1800. * @retval Returned value can be one of the following values:
  1801. * @arg @ref LL_RCC_APB2_DIV_1
  1802. * @arg @ref LL_RCC_APB2_DIV_2
  1803. * @arg @ref LL_RCC_APB2_DIV_4
  1804. * @arg @ref LL_RCC_APB2_DIV_8
  1805. * @arg @ref LL_RCC_APB2_DIV_16
  1806. */
  1807. __STATIC_INLINE uint32_t LL_RCC_GetAPB2Prescaler(void)
  1808. {
  1809. return (uint32_t)(READ_BIT(RCC->D2CFGR, RCC_D2CFGR_D2PPRE2));
  1810. }
  1811. /**
  1812. * @brief Get APB3 prescaler
  1813. * @rmtoll D1CFGR D1PPRE LL_RCC_GetAPB3Prescaler
  1814. * @retval Returned value can be one of the following values:
  1815. * @arg @ref LL_RCC_APB3_DIV_1
  1816. * @arg @ref LL_RCC_APB3_DIV_2
  1817. * @arg @ref LL_RCC_APB3_DIV_4
  1818. * @arg @ref LL_RCC_APB3_DIV_8
  1819. * @arg @ref LL_RCC_APB3_DIV_16
  1820. */
  1821. __STATIC_INLINE uint32_t LL_RCC_GetAPB3Prescaler(void)
  1822. {
  1823. return (uint32_t)(READ_BIT(RCC->D1CFGR, RCC_D1CFGR_D1PPRE));
  1824. }
  1825. /**
  1826. * @brief Get APB4 prescaler
  1827. * @rmtoll D3CFGR D3PPRE LL_RCC_GetAPB4Prescaler
  1828. * @retval Returned value can be one of the following values:
  1829. * @arg @ref LL_RCC_APB4_DIV_1
  1830. * @arg @ref LL_RCC_APB4_DIV_2
  1831. * @arg @ref LL_RCC_APB4_DIV_4
  1832. * @arg @ref LL_RCC_APB4_DIV_8
  1833. * @arg @ref LL_RCC_APB4_DIV_16
  1834. */
  1835. __STATIC_INLINE uint32_t LL_RCC_GetAPB4Prescaler(void)
  1836. {
  1837. return (uint32_t)(READ_BIT(RCC->D3CFGR, RCC_D3CFGR_D3PPRE));
  1838. }
  1839. /**
  1840. * @}
  1841. */
  1842. /** @defgroup RCC_LL_EF_MCO MCO
  1843. * @{
  1844. */
  1845. /**
  1846. * @brief Configure MCOx
  1847. * @rmtoll CFGR MCO1 LL_RCC_ConfigMCO\n
  1848. * CFGR MCO1PRE LL_RCC_ConfigMCO\n
  1849. * CFGR MCO2 LL_RCC_ConfigMCO\n
  1850. * CFGR MCO2PRE LL_RCC_ConfigMCO
  1851. * @param MCOxSource This parameter can be one of the following values:
  1852. * @arg @ref LL_RCC_MCO1SOURCE_HSI
  1853. * @arg @ref LL_RCC_MCO1SOURCE_LSE
  1854. * @arg @ref LL_RCC_MCO1SOURCE_HSE
  1855. * @arg @ref LL_RCC_MCO1SOURCE_PLL1QCLK
  1856. * @arg @ref LL_RCC_MCO1SOURCE_HSI48
  1857. * @arg @ref LL_RCC_MCO2SOURCE_SYSCLK
  1858. * @arg @ref LL_RCC_MCO2SOURCE_PLL2PCLK
  1859. * @arg @ref LL_RCC_MCO2SOURCE_HSE
  1860. * @arg @ref LL_RCC_MCO2SOURCE_PLL1PCLK
  1861. * @arg @ref LL_RCC_MCO2SOURCE_CSI
  1862. * @arg @ref LL_RCC_MCO2SOURCE_LSI
  1863. * @param MCOxPrescaler This parameter can be one of the following values:
  1864. * @arg @ref LL_RCC_MCO1_DIV_1
  1865. * @arg @ref LL_RCC_MCO1_DIV_2
  1866. * @arg @ref LL_RCC_MCO1_DIV_3
  1867. * @arg @ref LL_RCC_MCO1_DIV_4
  1868. * @arg @ref LL_RCC_MCO1_DIV_5
  1869. * @arg @ref LL_RCC_MCO1_DIV_6
  1870. * @arg @ref LL_RCC_MCO1_DIV_7
  1871. * @arg @ref LL_RCC_MCO1_DIV_8
  1872. * @arg @ref LL_RCC_MCO1_DIV_9
  1873. * @arg @ref LL_RCC_MCO1_DIV_10
  1874. * @arg @ref LL_RCC_MCO1_DIV_11
  1875. * @arg @ref LL_RCC_MCO1_DIV_12
  1876. * @arg @ref LL_RCC_MCO1_DIV_13
  1877. * @arg @ref LL_RCC_MCO1_DIV_14
  1878. * @arg @ref LL_RCC_MCO1_DIV_15
  1879. * @arg @ref LL_RCC_MCO2_DIV_1
  1880. * @arg @ref LL_RCC_MCO2_DIV_2
  1881. * @arg @ref LL_RCC_MCO2_DIV_3
  1882. * @arg @ref LL_RCC_MCO2_DIV_4
  1883. * @arg @ref LL_RCC_MCO2_DIV_5
  1884. * @arg @ref LL_RCC_MCO2_DIV_6
  1885. * @arg @ref LL_RCC_MCO2_DIV_7
  1886. * @arg @ref LL_RCC_MCO2_DIV_8
  1887. * @arg @ref LL_RCC_MCO2_DIV_9
  1888. * @arg @ref LL_RCC_MCO2_DIV_10
  1889. * @arg @ref LL_RCC_MCO2_DIV_11
  1890. * @arg @ref LL_RCC_MCO2_DIV_12
  1891. * @arg @ref LL_RCC_MCO2_DIV_13
  1892. * @arg @ref LL_RCC_MCO2_DIV_14
  1893. * @arg @ref LL_RCC_MCO2_DIV_15
  1894. * @retval None
  1895. */
  1896. __STATIC_INLINE void LL_RCC_ConfigMCO(uint32_t MCOxSource, uint32_t MCOxPrescaler)
  1897. {
  1898. MODIFY_REG(RCC->CFGR, (MCOxSource << 16U) | (MCOxPrescaler << 16U), (MCOxSource & 0xFFFF0000U) | (MCOxPrescaler & 0xFFFF0000U));
  1899. }
  1900. /**
  1901. * @}
  1902. */
  1903. /** @defgroup RCC_LL_EF_Peripheral_Clock_Source Peripheral Clock Source
  1904. * @{
  1905. */
  1906. /**
  1907. * @brief Configure periph clock source
  1908. * @rmtoll D2CCIP1R * LL_RCC_SetClockSource\n
  1909. * D2CCIP2R * LL_RCC_SetClockSource\n
  1910. * D3CCIPR * LL_RCC_SetClockSource
  1911. * @param ClkSource This parameter can be one of the following values:
  1912. * @arg @ref LL_RCC_USART16_CLKSOURCE_PCLK2
  1913. * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL2Q
  1914. * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL3Q
  1915. * @arg @ref LL_RCC_USART16_CLKSOURCE_HSI
  1916. * @arg @ref LL_RCC_USART16_CLKSOURCE_CSI
  1917. * @arg @ref LL_RCC_USART16_CLKSOURCE_LSE
  1918. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PCLK1
  1919. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL2Q
  1920. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL3Q
  1921. * @arg @ref LL_RCC_USART234578_CLKSOURCE_HSI
  1922. * @arg @ref LL_RCC_USART234578_CLKSOURCE_CSI
  1923. * @arg @ref LL_RCC_USART234578_CLKSOURCE_LSE
  1924. * @arg @ref LL_RCC_I2C123_CLKSOURCE_PCLK1
  1925. * @arg @ref LL_RCC_I2C123_CLKSOURCE_PLL3R
  1926. * @arg @ref LL_RCC_I2C123_CLKSOURCE_HSI
  1927. * @arg @ref LL_RCC_I2C123_CLKSOURCE_CSI
  1928. * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK4
  1929. * @arg @ref LL_RCC_I2C4_CLKSOURCE_PLL3R
  1930. * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI
  1931. * @arg @ref LL_RCC_I2C4_CLKSOURCE_CSI
  1932. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1
  1933. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL2P
  1934. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL3R
  1935. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE
  1936. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI
  1937. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_CLKP
  1938. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK4
  1939. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL2P
  1940. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL3R
  1941. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE
  1942. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI
  1943. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_CLKP
  1944. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PCLK4
  1945. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL2P
  1946. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL3R
  1947. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSE
  1948. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSI
  1949. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_CLKP
  1950. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL1Q
  1951. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL2P
  1952. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL3P
  1953. * @arg @ref LL_RCC_SAI1_CLKSOURCE_I2S_CKIN
  1954. * @arg @ref LL_RCC_SAI1_CLKSOURCE_CLKP
  1955. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL1Q
  1956. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL2P
  1957. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL3P
  1958. * @arg @ref LL_RCC_SAI23_CLKSOURCE_I2S_CKIN
  1959. * @arg @ref LL_RCC_SAI23_CLKSOURCE_CLKP
  1960. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL1Q
  1961. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL2P
  1962. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL3P
  1963. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_I2S_CKIN
  1964. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_CLKP
  1965. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL1Q
  1966. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL2P
  1967. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL3P
  1968. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_I2S_CKIN
  1969. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_CLKP
  1970. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL1Q
  1971. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL2P
  1972. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL3P
  1973. * @arg @ref LL_RCC_SPI123_CLKSOURCE_I2S_CKIN
  1974. * @arg @ref LL_RCC_SPI123_CLKSOURCE_CLKP
  1975. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PCLK2
  1976. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL2Q
  1977. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL3Q
  1978. * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSI
  1979. * @arg @ref LL_RCC_SPI45_CLKSOURCE_CSI
  1980. * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSE
  1981. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PCLK4
  1982. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL2Q
  1983. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL3Q
  1984. * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSI
  1985. * @arg @ref LL_RCC_SPI6_CLKSOURCE_CSI
  1986. * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSE
  1987. * @retval None
  1988. */
  1989. __STATIC_INLINE void LL_RCC_SetClockSource(uint32_t ClkSource)
  1990. {
  1991. register uint32_t * pReg = (uint32_t *)((uint32_t)&RCC->D1CCIPR + LL_CLKSOURCE_REG(ClkSource));
  1992. MODIFY_REG(*pReg, LL_CLKSOURCE_MASK(ClkSource), LL_CLKSOURCE_CONFIG(ClkSource));
  1993. }
  1994. /**
  1995. * @brief Configure USARTx clock source
  1996. * @rmtoll D2CCIP2R USART16SEL LL_RCC_SetUSARTClockSource\n
  1997. * D2CCIP2R USART28SEL LL_RCC_SetUSARTClockSource
  1998. * @param ClkSource This parameter can be one of the following values:
  1999. * @arg @ref LL_RCC_USART16_CLKSOURCE_PCLK2
  2000. * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL2Q
  2001. * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL3Q
  2002. * @arg @ref LL_RCC_USART16_CLKSOURCE_HSI
  2003. * @arg @ref LL_RCC_USART16_CLKSOURCE_CSI
  2004. * @arg @ref LL_RCC_USART16_CLKSOURCE_LSE
  2005. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PCLK1
  2006. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL2Q
  2007. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL3Q
  2008. * @arg @ref LL_RCC_USART234578_CLKSOURCE_HSI
  2009. * @arg @ref LL_RCC_USART234578_CLKSOURCE_CSI
  2010. * @arg @ref LL_RCC_USART234578_CLKSOURCE_LSE
  2011. * @retval None
  2012. */
  2013. __STATIC_INLINE void LL_RCC_SetUSARTClockSource(uint32_t ClkSource)
  2014. {
  2015. LL_RCC_SetClockSource(ClkSource);
  2016. }
  2017. /**
  2018. * @brief Configure LPUARTx clock source
  2019. * @rmtoll D3CCIPR LPUART1SEL LL_RCC_SetLPUARTClockSource
  2020. * @param ClkSource This parameter can be one of the following values:
  2021. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PCLK4
  2022. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PLL2Q
  2023. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PLL3Q
  2024. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_HSI
  2025. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_CSI
  2026. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_LSE
  2027. * @retval None
  2028. */
  2029. __STATIC_INLINE void LL_RCC_SetLPUARTClockSource(uint32_t ClkSource)
  2030. {
  2031. MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_LPUART1SEL, ClkSource);
  2032. }
  2033. /**
  2034. * @brief Configure I2Cx clock source
  2035. * @rmtoll D2CCIP2R I2C123SEL LL_RCC_SetI2CClockSource\n
  2036. * D3CCIPR I2C4SEL LL_RCC_SetI2CClockSource
  2037. * @param ClkSource This parameter can be one of the following values:
  2038. * @arg @ref LL_RCC_I2C123_CLKSOURCE_PCLK1
  2039. * @arg @ref LL_RCC_I2C123_CLKSOURCE_PLL3R
  2040. * @arg @ref LL_RCC_I2C123_CLKSOURCE_HSI
  2041. * @arg @ref LL_RCC_I2C123_CLKSOURCE_CSI
  2042. * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK4
  2043. * @arg @ref LL_RCC_I2C4_CLKSOURCE_PLL3R
  2044. * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI
  2045. * @arg @ref LL_RCC_I2C4_CLKSOURCE_CSI
  2046. * @retval None
  2047. */
  2048. __STATIC_INLINE void LL_RCC_SetI2CClockSource(uint32_t ClkSource)
  2049. {
  2050. LL_RCC_SetClockSource(ClkSource);
  2051. }
  2052. /**
  2053. * @brief Configure LPTIMx clock source
  2054. * @rmtoll D2CCIP2R LPTIM1SEL LL_RCC_SetLPTIMClockSource
  2055. * D3CCIPR LPTIM2SEL LL_RCC_SetLPTIMClockSource\n
  2056. * D3CCIPR LPTIM345SEL LL_RCC_SetLPTIMClockSource
  2057. * @param ClkSource This parameter can be one of the following values:
  2058. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1
  2059. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL2P
  2060. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL3R
  2061. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE
  2062. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI
  2063. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_CLKP
  2064. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK4
  2065. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL2P
  2066. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL3R
  2067. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE
  2068. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI
  2069. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_CLKP
  2070. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PCLK4
  2071. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL2P
  2072. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL3R
  2073. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSE
  2074. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSI
  2075. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_CLKP
  2076. * @retval None
  2077. */
  2078. __STATIC_INLINE void LL_RCC_SetLPTIMClockSource(uint32_t ClkSource)
  2079. {
  2080. LL_RCC_SetClockSource(ClkSource);
  2081. }
  2082. /**
  2083. * @brief Configure SAIx clock source
  2084. * @rmtoll D2CCIP1R SAI1SEL LL_RCC_SetSAIClockSource\n
  2085. * D2CCIP1R SAI23SEL LL_RCC_SetSAIClockSource
  2086. * D3CCIPR SAI4ASEL LL_RCC_SetSAI4xClockSource\n
  2087. * D3CCIPR SAI4BSEL LL_RCC_SetSAI4xClockSource
  2088. * @param ClkSource This parameter can be one of the following values:
  2089. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL1Q
  2090. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL2P
  2091. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL3P
  2092. * @arg @ref LL_RCC_SAI1_CLKSOURCE_I2S_CKIN
  2093. * @arg @ref LL_RCC_SAI1_CLKSOURCE_CLKP
  2094. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL1Q
  2095. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL2P
  2096. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL3P
  2097. * @arg @ref LL_RCC_SAI23_CLKSOURCE_I2S_CKIN
  2098. * @arg @ref LL_RCC_SAI23_CLKSOURCE_CLKP
  2099. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL1Q
  2100. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL2P
  2101. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL3P
  2102. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_I2S_CKIN
  2103. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_CLKP
  2104. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL1Q
  2105. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL2P
  2106. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL3P
  2107. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_I2S_CKIN
  2108. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_CLKP
  2109. * @retval None
  2110. */
  2111. __STATIC_INLINE void LL_RCC_SetSAIClockSource(uint32_t ClkSource)
  2112. {
  2113. LL_RCC_SetClockSource(ClkSource);
  2114. }
  2115. /**
  2116. * @brief Configure SDMMCx clock source
  2117. * @rmtoll D1CCIPR SDMMCSEL LL_RCC_SetSDMMCClockSource
  2118. * @param ClkSource This parameter can be one of the following values:
  2119. * @arg @ref LL_RCC_SDMMC_CLKSOURCE_PLL1Q
  2120. * @arg @ref LL_RCC_SDMMC_CLKSOURCE_PLL2R
  2121. * @retval None
  2122. */
  2123. __STATIC_INLINE void LL_RCC_SetSDMMCClockSource(uint32_t ClkSource)
  2124. {
  2125. MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_SDMMCSEL, ClkSource);
  2126. }
  2127. /**
  2128. * @brief Configure RNGx clock source
  2129. * @rmtoll D2CCIP2R RNGSEL LL_RCC_SetRNGClockSource
  2130. * @param ClkSource This parameter can be one of the following values:
  2131. * @arg @ref LL_RCC_RNG_CLKSOURCE_HSI48
  2132. * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL1Q
  2133. * @arg @ref LL_RCC_RNG_CLKSOURCE_LSE
  2134. * @arg @ref LL_RCC_RNG_CLKSOURCE_LSI
  2135. * @retval None
  2136. */
  2137. __STATIC_INLINE void LL_RCC_SetRNGClockSource(uint32_t ClkSource)
  2138. {
  2139. MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_RNGSEL, ClkSource);
  2140. }
  2141. /**
  2142. * @brief Configure USBx clock source
  2143. * @rmtoll D2CCIP2R USBSEL LL_RCC_SetUSBClockSource
  2144. * @param ClkSource This parameter can be one of the following values:
  2145. * @arg @ref LL_RCC_USB_CLKSOURCE_DISABLE
  2146. * @arg @ref LL_RCC_USB_CLKSOURCE_PLL1Q
  2147. * @arg @ref LL_RCC_USB_CLKSOURCE_PLL3Q
  2148. * @arg @ref LL_RCC_USB_CLKSOURCE_HSI48
  2149. * @retval None
  2150. */
  2151. __STATIC_INLINE void LL_RCC_SetUSBClockSource(uint32_t ClkSource)
  2152. {
  2153. MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_USBSEL, ClkSource);
  2154. }
  2155. /**
  2156. * @brief Configure CECx clock source
  2157. * @rmtoll D2CCIP2R CECSEL LL_RCC_SetCECClockSource
  2158. * @param ClkSource This parameter can be one of the following values:
  2159. * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE
  2160. * @arg @ref LL_RCC_CEC_CLKSOURCE_LSI
  2161. * @arg @ref LL_RCC_CEC_CLKSOURCE_CSI_DIV122
  2162. * @retval None
  2163. */
  2164. __STATIC_INLINE void LL_RCC_SetCECClockSource(uint32_t ClkSource)
  2165. {
  2166. MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_CECSEL, ClkSource);
  2167. }
  2168. #if defined(DSI)
  2169. /**
  2170. * @brief Configure DSIx clock source
  2171. * @rmtoll D1CCIPR DSISEL LL_RCC_SetDSIClockSource
  2172. * @param ClkSource This parameter can be one of the following values:
  2173. * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY
  2174. * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL2Q
  2175. * @retval None
  2176. */
  2177. __STATIC_INLINE void LL_RCC_SetDSIClockSource(uint32_t ClkSource)
  2178. {
  2179. MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_DSISEL, ClkSource);
  2180. }
  2181. #endif /* DSI */
  2182. /**
  2183. * @brief Configure DFSDMx Kernel clock source
  2184. * @rmtoll D2CCIP1R DFSDM1SEL LL_RCC_SetDFSDMClockSource
  2185. * @param ClkSource This parameter can be one of the following values:
  2186. * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2
  2187. * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK
  2188. * @retval None
  2189. */
  2190. __STATIC_INLINE void LL_RCC_SetDFSDMClockSource(uint32_t ClkSource)
  2191. {
  2192. MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_DFSDM1SEL, ClkSource);
  2193. }
  2194. /**
  2195. * @brief Configure FMCx Kernel clock source
  2196. * @rmtoll D1CCIPR FMCSEL LL_RCC_SetFMCClockSource
  2197. * @param ClkSource This parameter can be one of the following values:
  2198. * @arg @ref LL_RCC_FMC_CLKSOURCE_HCLK
  2199. * @arg @ref LL_RCC_FMC_CLKSOURCE_PLL1Q
  2200. * @arg @ref LL_RCC_FMC_CLKSOURCE_PLL2R
  2201. * @arg @ref LL_RCC_FMC_CLKSOURCE_CLKP
  2202. * @retval None
  2203. */
  2204. __STATIC_INLINE void LL_RCC_SetFMCClockSource(uint32_t ClkSource)
  2205. {
  2206. MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_FMCSEL, ClkSource);
  2207. }
  2208. /**
  2209. * @brief Configure QSPIx Kernel clock source
  2210. * @rmtoll D1CCIPR QSPISEL LL_RCC_SetQSPIClockSource
  2211. * @param ClkSource This parameter can be one of the following values:
  2212. * @arg @ref LL_RCC_QSPI_CLKSOURCE_HCLK
  2213. * @arg @ref LL_RCC_QSPI_CLKSOURCE_PLL1Q
  2214. * @arg @ref LL_RCC_QSPI_CLKSOURCE_PLL2R
  2215. * @arg @ref LL_RCC_QSPI_CLKSOURCE_CLKP
  2216. * @retval None
  2217. */
  2218. __STATIC_INLINE void LL_RCC_SetQSPIClockSource(uint32_t ClkSource)
  2219. {
  2220. MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_QSPISEL, ClkSource);
  2221. }
  2222. /**
  2223. * @brief Configure CLKP Kernel clock source
  2224. * @rmtoll D1CCIPR CKPERSEL LL_RCC_SetCLKPClockSource
  2225. * @param ClkSource This parameter can be one of the following values:
  2226. * @arg @ref LL_RCC_CLKP_CLKSOURCE_HSI
  2227. * @arg @ref LL_RCC_CLKP_CLKSOURCE_CSI
  2228. * @arg @ref LL_RCC_CLKP_CLKSOURCE_HSE
  2229. * @retval None
  2230. */
  2231. __STATIC_INLINE void LL_RCC_SetCLKPClockSource(uint32_t ClkSource)
  2232. {
  2233. MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_CKPERSEL, ClkSource);
  2234. }
  2235. /**
  2236. * @brief Configure SPIx Kernel clock source
  2237. * @rmtoll D2CCIP1R SPI123SEL LL_RCC_SetSPIClockSource\n
  2238. * D2CCIP1R SPI45SEL LL_RCC_SetSPIClockSource\n
  2239. * D3CCIPR SPI6SEL LL_RCC_SetSPIClockSource
  2240. * @param ClkSource This parameter can be one of the following values:
  2241. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL1Q
  2242. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL2P
  2243. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL3P
  2244. * @arg @ref LL_RCC_SPI123_CLKSOURCE_I2S_CKIN
  2245. * @arg @ref LL_RCC_SPI123_CLKSOURCE_CLKP
  2246. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PCLK2
  2247. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL2Q
  2248. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL3Q
  2249. * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSI
  2250. * @arg @ref LL_RCC_SPI45_CLKSOURCE_CSI
  2251. * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSE
  2252. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PCLK4
  2253. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL2Q
  2254. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL3Q
  2255. * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSI
  2256. * @arg @ref LL_RCC_SPI6_CLKSOURCE_CSI
  2257. * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSE
  2258. * @retval None
  2259. */
  2260. __STATIC_INLINE void LL_RCC_SetSPIClockSource(uint32_t ClkSource)
  2261. {
  2262. LL_RCC_SetClockSource(ClkSource);
  2263. }
  2264. /**
  2265. * @brief Configure SPDIFx Kernel clock source
  2266. * @rmtoll D2CCIP1R SPDIFSEL LL_RCC_SetSPDIFClockSource
  2267. * @param ClkSource This parameter can be one of the following values:
  2268. * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL1Q
  2269. * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL2R
  2270. * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL3R
  2271. * @arg @ref LL_RCC_SPDIF_CLKSOURCE_HSI
  2272. * @retval None
  2273. */
  2274. __STATIC_INLINE void LL_RCC_SetSPDIFClockSource(uint32_t ClkSource)
  2275. {
  2276. MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SPDIFSEL, ClkSource);
  2277. }
  2278. /**
  2279. * @brief Configure FDCANx Kernel clock source
  2280. * @rmtoll D2CCIP1R FDCANSEL LL_RCC_SetFDCANClockSource
  2281. * @param ClkSource This parameter can be one of the following values:
  2282. * @arg @ref LL_RCC_FDCAN_CLKSOURCE_HSE
  2283. * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PLL1Q
  2284. * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PLL2Q
  2285. * @retval None
  2286. */
  2287. __STATIC_INLINE void LL_RCC_SetFDCANClockSource(uint32_t ClkSource)
  2288. {
  2289. MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_FDCANSEL, ClkSource);
  2290. }
  2291. /**
  2292. * @brief Configure SWPx Kernel clock source
  2293. * @rmtoll D2CCIP1R SWPSEL LL_RCC_SetSWPClockSource
  2294. * @param ClkSource This parameter can be one of the following values:
  2295. * @arg @ref LL_RCC_SWP_CLKSOURCE_PCLK1
  2296. * @arg @ref LL_RCC_SWP_CLKSOURCE_HSI
  2297. * @retval None
  2298. */
  2299. __STATIC_INLINE void LL_RCC_SetSWPClockSource(uint32_t ClkSource)
  2300. {
  2301. MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SWPSEL, ClkSource);
  2302. }
  2303. /**
  2304. * @brief Configure ADCx Kernel clock source
  2305. * @rmtoll D3CCIPR ADCSEL LL_RCC_SetADCClockSource
  2306. * @param ClkSource This parameter can be one of the following values:
  2307. * @arg @ref LL_RCC_ADC_CLKSOURCE_PLL2P
  2308. * @arg @ref LL_RCC_ADC_CLKSOURCE_PLL3R
  2309. * @arg @ref LL_RCC_ADC_CLKSOURCE_CLKP
  2310. * @retval None
  2311. */
  2312. __STATIC_INLINE void LL_RCC_SetADCClockSource(uint32_t ClkSource)
  2313. {
  2314. MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_ADCSEL, ClkSource);
  2315. }
  2316. /**
  2317. * @brief Get periph clock source
  2318. * @rmtoll D1CCIPR * LL_RCC_GetClockSource\n
  2319. * D2CCIP1R * LL_RCC_GetClockSource\n
  2320. * D2CCIP2R * LL_RCC_GetClockSource\n
  2321. * D3CCIPR * LL_RCC_GetClockSource
  2322. * @param Periph This parameter can be one of the following values:
  2323. * @arg @ref LL_RCC_USART16_CLKSOURCE
  2324. * @arg @ref LL_RCC_USART234578_CLKSOURCE
  2325. * @arg @ref LL_RCC_I2C123_CLKSOURCE
  2326. * @arg @ref LL_RCC_I2C4_CLKSOURCE
  2327. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE
  2328. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE
  2329. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE
  2330. * @arg @ref LL_RCC_SAI1_CLKSOURCE
  2331. * @arg @ref LL_RCC_SAI23_CLKSOURCE
  2332. * @arg @ref LL_RCC_SAI4A_CLKSOURCE
  2333. * @arg @ref LL_RCC_SAI4B_CLKSOURCE
  2334. * @arg @ref LL_RCC_SPI123_CLKSOURCE
  2335. * @arg @ref LL_RCC_SPI45_CLKSOURCE
  2336. * @arg @ref LL_RCC_SPI6_CLKSOURCE
  2337. * @retval Returned value can be one of the following values:
  2338. * @arg @ref LL_RCC_USART16_CLKSOURCE_PCLK2
  2339. * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL2Q
  2340. * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL3Q
  2341. * @arg @ref LL_RCC_USART16_CLKSOURCE_HSI
  2342. * @arg @ref LL_RCC_USART16_CLKSOURCE_CSI
  2343. * @arg @ref LL_RCC_USART16_CLKSOURCE_LSE
  2344. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PCLK1
  2345. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL2Q
  2346. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL3Q
  2347. * @arg @ref LL_RCC_USART234578_CLKSOURCE_HSI
  2348. * @arg @ref LL_RCC_USART234578_CLKSOURCE_CSI
  2349. * @arg @ref LL_RCC_USART234578_CLKSOURCE_LSE
  2350. * @arg @ref LL_RCC_I2C123_CLKSOURCE_PCLK1
  2351. * @arg @ref LL_RCC_I2C123_CLKSOURCE_PLL3R
  2352. * @arg @ref LL_RCC_I2C123_CLKSOURCE_HSI
  2353. * @arg @ref LL_RCC_I2C123_CLKSOURCE_CSI
  2354. * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK4
  2355. * @arg @ref LL_RCC_I2C4_CLKSOURCE_PLL3R
  2356. * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI
  2357. * @arg @ref LL_RCC_I2C4_CLKSOURCE_CSI
  2358. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1
  2359. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL2P
  2360. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL3R
  2361. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE
  2362. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI
  2363. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_CLKP
  2364. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK4
  2365. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL2P
  2366. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL3R
  2367. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE
  2368. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI
  2369. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_CLKP
  2370. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PCLK4
  2371. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL2P
  2372. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL3R
  2373. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSE
  2374. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSI
  2375. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_CLKP
  2376. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL1Q
  2377. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL2P
  2378. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL3P
  2379. * @arg @ref LL_RCC_SAI1_CLKSOURCE_I2S_CKIN
  2380. * @arg @ref LL_RCC_SAI1_CLKSOURCE_CLKP
  2381. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL1Q
  2382. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL2P
  2383. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL3P
  2384. * @arg @ref LL_RCC_SAI23_CLKSOURCE_I2S_CKIN
  2385. * @arg @ref LL_RCC_SAI23_CLKSOURCE_CLKP
  2386. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL1Q
  2387. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL2P
  2388. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL3P
  2389. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_I2S_CKIN
  2390. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_CLKP
  2391. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL1Q
  2392. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL2P
  2393. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL3P
  2394. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_I2S_CKIN
  2395. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_CLKP
  2396. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL1Q
  2397. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL2P
  2398. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL3P
  2399. * @arg @ref LL_RCC_SPI123_CLKSOURCE_I2S_CKIN
  2400. * @arg @ref LL_RCC_SPI123_CLKSOURCE_CLKP
  2401. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PCLK2
  2402. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL2Q
  2403. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL3Q
  2404. * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSI
  2405. * @arg @ref LL_RCC_SPI45_CLKSOURCE_CSI
  2406. * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSE
  2407. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PCLK4
  2408. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL2Q
  2409. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL3Q
  2410. * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSI
  2411. * @arg @ref LL_RCC_SPI6_CLKSOURCE_CSI
  2412. * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSE
  2413. * @retval None
  2414. */
  2415. __STATIC_INLINE uint32_t LL_RCC_GetClockSource(uint32_t Periph)
  2416. {
  2417. register const uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&RCC->D1CCIPR) + LL_CLKSOURCE_REG(Periph)));
  2418. return (uint32_t) (Periph | (((READ_BIT(*pReg, LL_CLKSOURCE_MASK(Periph))) >> LL_CLKSOURCE_SHIFT(Periph)) << CONFIG_SHIFT) );
  2419. }
  2420. /**
  2421. * @brief Get USARTx clock source
  2422. * @rmtoll D2CCIP2R USART16SEL LL_RCC_GetUSARTClockSource\n
  2423. * D2CCIP2R USART28SEL LL_RCC_GetUSARTClockSource
  2424. * @param Periph This parameter can be one of the following values:
  2425. * @arg @ref LL_RCC_USART16_CLKSOURCE
  2426. * @arg @ref LL_RCC_USART234578_CLKSOURCE
  2427. * @retval Returned value can be one of the following values:
  2428. * @arg @ref LL_RCC_USART16_CLKSOURCE_PCLK2
  2429. * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL2Q
  2430. * @arg @ref LL_RCC_USART16_CLKSOURCE_PLL3Q
  2431. * @arg @ref LL_RCC_USART16_CLKSOURCE_HSI
  2432. * @arg @ref LL_RCC_USART16_CLKSOURCE_CSI
  2433. * @arg @ref LL_RCC_USART16_CLKSOURCE_LSE
  2434. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PCLK1
  2435. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL2Q
  2436. * @arg @ref LL_RCC_USART234578_CLKSOURCE_PLL3Q
  2437. * @arg @ref LL_RCC_USART234578_CLKSOURCE_HSI
  2438. * @arg @ref LL_RCC_USART234578_CLKSOURCE_CSI
  2439. * @arg @ref LL_RCC_USART234578_CLKSOURCE_LSE
  2440. */
  2441. __STATIC_INLINE uint32_t LL_RCC_GetUSARTClockSource(uint32_t Periph)
  2442. {
  2443. return LL_RCC_GetClockSource(Periph);
  2444. }
  2445. /**
  2446. * @brief Get LPUART clock source
  2447. * @rmtoll D3CCIPR LPUART1SEL LL_RCC_GetLPUARTClockSource
  2448. * @param Periph This parameter can be one of the following values:
  2449. * @arg @ref LL_RCC_LPUART1_CLKSOURCE
  2450. * @retval Returned value can be one of the following values:
  2451. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PCLK4
  2452. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PLL2Q
  2453. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PLL3Q
  2454. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_HSI
  2455. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_CSI
  2456. * @arg @ref LL_RCC_LPUART1_CLKSOURCE_LSE
  2457. */
  2458. __STATIC_INLINE uint32_t LL_RCC_GetLPUARTClockSource(uint32_t Periph)
  2459. {
  2460. UNUSED(Periph);
  2461. return (uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_LPUART1SEL));
  2462. }
  2463. /**
  2464. * @brief Get I2Cx clock source
  2465. * @rmtoll D2CCIP2R I2C123SEL LL_RCC_GetI2CClockSource\n
  2466. * D3CCIPR I2C4SEL LL_RCC_GetI2CClockSource
  2467. * @param Periph This parameter can be one of the following values:
  2468. * @arg @ref LL_RCC_I2C123_CLKSOURCE
  2469. * @arg @ref LL_RCC_I2C4_CLKSOURCE
  2470. * @retval Returned value can be one of the following values:
  2471. * @arg @ref LL_RCC_I2C123_CLKSOURCE_PCLK1
  2472. * @arg @ref LL_RCC_I2C123_CLKSOURCE_PLL3R
  2473. * @arg @ref LL_RCC_I2C123_CLKSOURCE_HSI
  2474. * @arg @ref LL_RCC_I2C123_CLKSOURCE_CSI
  2475. * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK4
  2476. * @arg @ref LL_RCC_I2C4_CLKSOURCE_PLL3R
  2477. * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI
  2478. * @arg @ref LL_RCC_I2C4_CLKSOURCE_CSI
  2479. */
  2480. __STATIC_INLINE uint32_t LL_RCC_GetI2CClockSource(uint32_t Periph)
  2481. {
  2482. return LL_RCC_GetClockSource(Periph);
  2483. }
  2484. /**
  2485. * @brief Get LPTIM clock source
  2486. * @rmtoll D2CCIP2R LPTIM1SEL LL_RCC_GetLPTIMClockSource\n
  2487. * D3CCIPR LPTIM2SEL LL_RCC_GetLPTIMClockSource\n
  2488. * D3CCIPR LPTIM345SEL LL_RCC_GetLPTIMClockSource
  2489. * @param Periph This parameter can be one of the following values:
  2490. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE
  2491. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE
  2492. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE
  2493. * @retval Returned value can be one of the following values:
  2494. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1
  2495. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL2P
  2496. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PLL3R
  2497. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE
  2498. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI
  2499. * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_CLKP
  2500. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK4
  2501. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL2P
  2502. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PLL3R
  2503. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE
  2504. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI
  2505. * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_CLKP
  2506. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PCLK4
  2507. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL2P
  2508. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_PLL3R
  2509. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSE
  2510. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_LSI
  2511. * @arg @ref LL_RCC_LPTIM345_CLKSOURCE_CLKP
  2512. * @retval None
  2513. */
  2514. __STATIC_INLINE uint32_t LL_RCC_GetLPTIMClockSource(uint32_t Periph)
  2515. {
  2516. return LL_RCC_GetClockSource(Periph);
  2517. }
  2518. /**
  2519. * @brief Get SAIx clock source
  2520. * @rmtoll D2CCIP1R SAI1SEL LL_RCC_GetSAIClockSource\n
  2521. * D2CCIP1R SAI23SEL LL_RCC_GetSAIClockSource
  2522. * D3CCIPR SAI4ASEL LL_RCC_GetSAIClockSource\n
  2523. * D3CCIPR SAI4BSEL LL_RCC_GetSAIClockSource
  2524. * @param Periph This parameter can be one of the following values:
  2525. * @arg @ref LL_RCC_SAI1_CLKSOURCE
  2526. * @arg @ref LL_RCC_SAI23_CLKSOURCE
  2527. * @arg @ref LL_RCC_SAI4A_CLKSOURCE
  2528. * @arg @ref LL_RCC_SAI4B_CLKSOURCE
  2529. * @retval Returned value can be one of the following values:
  2530. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL1Q
  2531. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL2P
  2532. * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL3P
  2533. * @arg @ref LL_RCC_SAI1_CLKSOURCE_I2S_CKIN
  2534. * @arg @ref LL_RCC_SAI1_CLKSOURCE_CLKP
  2535. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL1Q
  2536. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL2P
  2537. * @arg @ref LL_RCC_SAI23_CLKSOURCE_PLL3P
  2538. * @arg @ref LL_RCC_SAI23_CLKSOURCE_I2S_CKIN
  2539. * @arg @ref LL_RCC_SAI23_CLKSOURCE_CLKP
  2540. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL1Q
  2541. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL2P
  2542. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_PLL3P
  2543. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_I2S_CKIN
  2544. * @arg @ref LL_RCC_SAI4A_CLKSOURCE_CLKP
  2545. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL1Q
  2546. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL2P
  2547. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_PLL3P
  2548. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_I2S_CKIN
  2549. * @arg @ref LL_RCC_SAI4B_CLKSOURCE_CLKP
  2550. */
  2551. __STATIC_INLINE uint32_t LL_RCC_GetSAIClockSource(uint32_t Periph)
  2552. {
  2553. return LL_RCC_GetClockSource(Periph);
  2554. }
  2555. /**
  2556. * @brief Get SDMMC clock source
  2557. * @rmtoll D1CCIPR SDMMCSEL LL_RCC_GetSDMMCClockSource
  2558. * @param Periph This parameter can be one of the following values:
  2559. * @arg @ref LL_RCC_SDMMC_CLKSOURCE
  2560. * @retval Returned value can be one of the following values:
  2561. * @arg @ref LL_RCC_SDMMC_CLKSOURCE_PLL1Q
  2562. * @arg @ref LL_RCC_SDMMC_CLKSOURCE_PLL2R
  2563. */
  2564. __STATIC_INLINE uint32_t LL_RCC_GetSDMMCClockSource(uint32_t Periph)
  2565. {
  2566. UNUSED(Periph);
  2567. return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_SDMMCSEL));
  2568. }
  2569. /**
  2570. * @brief Get RNG clock source
  2571. * @rmtoll D2CCIP2R RNGSEL LL_RCC_GetRNGClockSource
  2572. * @param Periph This parameter can be one of the following values:
  2573. * @arg @ref LL_RCC_RNG_CLKSOURCE
  2574. * @retval Returned value can be one of the following values:
  2575. * @arg @ref LL_RCC_RNG_CLKSOURCE_HSI48
  2576. * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL1Q
  2577. * @arg @ref LL_RCC_RNG_CLKSOURCE_LSE
  2578. * @arg @ref LL_RCC_RNG_CLKSOURCE_LSI
  2579. */
  2580. __STATIC_INLINE uint32_t LL_RCC_GetRNGClockSource(uint32_t Periph)
  2581. {
  2582. UNUSED(Periph);
  2583. return (uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_RNGSEL));
  2584. }
  2585. /**
  2586. * @brief Get USB clock source
  2587. * @rmtoll D2CCIP2R USBSEL LL_RCC_GetUSBClockSource
  2588. * @param Periph This parameter can be one of the following values:
  2589. * @arg @ref LL_RCC_USB_CLKSOURCE
  2590. * @retval Returned value can be one of the following values:
  2591. * @arg @ref LL_RCC_USB_CLKSOURCE_DISABLE
  2592. * @arg @ref LL_RCC_USB_CLKSOURCE_PLL1Q
  2593. * @arg @ref LL_RCC_USB_CLKSOURCE_PLL3Q
  2594. * @arg @ref LL_RCC_USB_CLKSOURCE_HSI48
  2595. */
  2596. __STATIC_INLINE uint32_t LL_RCC_GetUSBClockSource(uint32_t Periph)
  2597. {
  2598. UNUSED(Periph);
  2599. return (uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_USBSEL));
  2600. }
  2601. /**
  2602. * @brief Get CEC clock source
  2603. * @rmtoll D2CCIP2R CECSEL LL_RCC_GetCECClockSource
  2604. * @param Periph This parameter can be one of the following values:
  2605. * @arg @ref LL_RCC_CEC_CLKSOURCE
  2606. * @retval Returned value can be one of the following values:
  2607. * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE
  2608. * @arg @ref LL_RCC_CEC_CLKSOURCE_LSI
  2609. * @arg @ref LL_RCC_CEC_CLKSOURCE_CSI_DIV122
  2610. */
  2611. __STATIC_INLINE uint32_t LL_RCC_GetCECClockSource(uint32_t Periph)
  2612. {
  2613. UNUSED(Periph);
  2614. return (uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_CECSEL));
  2615. }
  2616. #if defined(DSI)
  2617. /**
  2618. * @brief Get DSI clock source
  2619. * @rmtoll D1CCIPR DSISEL LL_RCC_GetDSIClockSource
  2620. * @param Periph This parameter can be one of the following values:
  2621. * @arg @ref LL_RCC_DSI_CLKSOURCE
  2622. * @retval Returned value can be one of the following values:
  2623. * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY
  2624. * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL2Q
  2625. */
  2626. __STATIC_INLINE uint32_t LL_RCC_GetDSIClockSource(uint32_t Periph)
  2627. {
  2628. UNUSED(Periph);
  2629. return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_DSISEL));
  2630. }
  2631. #endif /* DSI */
  2632. /**
  2633. * @brief Get DFSDM Kernel clock source
  2634. * @rmtoll D2CCIP1R DFSDM1SEL LL_RCC_GetDFSDMClockSource
  2635. * @param Periph This parameter can be one of the following values:
  2636. * @arg @ref LL_RCC_DFSDM1_CLKSOURCE
  2637. * @retval Returned value can be one of the following values:
  2638. * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2
  2639. * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK
  2640. */
  2641. __STATIC_INLINE uint32_t LL_RCC_GetDFSDMClockSource(uint32_t Periph)
  2642. {
  2643. UNUSED(Periph);
  2644. return (uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_DFSDM1SEL));
  2645. }
  2646. /**
  2647. * @brief Get FMC Kernel clock source
  2648. * @rmtoll D1CCIPR FMCSEL LL_RCC_GetFMCClockSource
  2649. * @param Periph This parameter can be one of the following values:
  2650. * @arg @ref LL_RCC_FMC_CLKSOURCE
  2651. * @retval Returned value can be one of the following values:
  2652. * @arg @ref LL_RCC_FMC_CLKSOURCE_HCLK
  2653. * @arg @ref LL_RCC_FMC_CLKSOURCE_PLL1Q
  2654. * @arg @ref LL_RCC_FMC_CLKSOURCE_PLL2R
  2655. * @arg @ref LL_RCC_FMC_CLKSOURCE_CLKP
  2656. */
  2657. __STATIC_INLINE uint32_t LL_RCC_GetFMCClockSource(uint32_t Periph)
  2658. {
  2659. UNUSED(Periph);
  2660. return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_FMCSEL));
  2661. }
  2662. /**
  2663. * @brief Get QSPI Kernel clock source
  2664. * @rmtoll D1CCIPR QSPISEL LL_RCC_GetQSPIClockSource
  2665. * @param Periph This parameter can be one of the following values:
  2666. * @arg @ref LL_RCC_QSPI_CLKSOURCE
  2667. * @retval Returned value can be one of the following values:
  2668. * @arg @ref LL_RCC_QSPI_CLKSOURCE_HCLK
  2669. * @arg @ref LL_RCC_QSPI_CLKSOURCE_PLL1Q
  2670. * @arg @ref LL_RCC_QSPI_CLKSOURCE_PLL2R
  2671. * @arg @ref LL_RCC_QSPI_CLKSOURCE_CLKP
  2672. */
  2673. __STATIC_INLINE uint32_t LL_RCC_GetQSPIClockSource(uint32_t Periph)
  2674. {
  2675. UNUSED(Periph);
  2676. return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_QSPISEL));
  2677. }
  2678. /**
  2679. * @brief Get CLKP Kernel clock source
  2680. * @rmtoll D1CCIPR CKPERSEL LL_RCC_GetCLKPClockSource
  2681. * @param Periph This parameter can be one of the following values:
  2682. * @arg @ref LL_RCC_CLKP_CLKSOURCE
  2683. * @retval Returned value can be one of the following values:
  2684. * @arg @ref LL_RCC_CLKP_CLKSOURCE_HSI
  2685. * @arg @ref LL_RCC_CLKP_CLKSOURCE_CSI
  2686. * @arg @ref LL_RCC_CLKP_CLKSOURCE_HSE
  2687. */
  2688. __STATIC_INLINE uint32_t LL_RCC_GetCLKPClockSource(uint32_t Periph)
  2689. {
  2690. UNUSED(Periph);
  2691. return (uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_CKPERSEL));
  2692. }
  2693. /**
  2694. * @brief Get SPIx Kernel clock source
  2695. * @rmtoll D2CCIP1R SPI123SEL LL_RCC_GetSPIClockSource\n
  2696. * D2CCIP1R SPI45SEL LL_RCC_GetSPIClockSource\n
  2697. * D3CCIPR SPI6SEL LL_RCC_GetSPIClockSource
  2698. * @param Periph This parameter can be one of the following values:
  2699. * @arg @ref LL_RCC_SPI123_CLKSOURCE
  2700. * @arg @ref LL_RCC_SPI45_CLKSOURCE
  2701. * @arg @ref LL_RCC_SPI6_CLKSOURCE
  2702. * @retval Returned value can be one of the following values:
  2703. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL1Q
  2704. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL2P
  2705. * @arg @ref LL_RCC_SPI123_CLKSOURCE_PLL3P
  2706. * @arg @ref LL_RCC_SPI123_CLKSOURCE_I2S_CKIN
  2707. * @arg @ref LL_RCC_SPI123_CLKSOURCE_CLKP
  2708. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PCLK2
  2709. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL2Q
  2710. * @arg @ref LL_RCC_SPI45_CLKSOURCE_PLL3Q
  2711. * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSI
  2712. * @arg @ref LL_RCC_SPI45_CLKSOURCE_CSI
  2713. * @arg @ref LL_RCC_SPI45_CLKSOURCE_HSE
  2714. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PCLK4
  2715. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL2Q
  2716. * @arg @ref LL_RCC_SPI6_CLKSOURCE_PLL3Q
  2717. * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSI
  2718. * @arg @ref LL_RCC_SPI6_CLKSOURCE_CSI
  2719. * @arg @ref LL_RCC_SPI6_CLKSOURCE_HSE
  2720. */
  2721. __STATIC_INLINE uint32_t LL_RCC_GetSPIClockSource(uint32_t Periph)
  2722. {
  2723. return LL_RCC_GetClockSource(Periph);
  2724. }
  2725. /**
  2726. * @brief Get SPDIF Kernel clock source
  2727. * @rmtoll D2CCIP1R SPDIFSEL LL_RCC_GetSPDIFClockSource
  2728. * @param Periph This parameter can be one of the following values:
  2729. * @arg @ref LL_RCC_SPDIF_CLKSOURCE
  2730. * @retval Returned value can be one of the following values:
  2731. * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL1Q
  2732. * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL2R
  2733. * @arg @ref LL_RCC_SPDIF_CLKSOURCE_PLL3R
  2734. * @arg @ref LL_RCC_SPDIF_CLKSOURCE_HSI
  2735. */
  2736. __STATIC_INLINE uint32_t LL_RCC_GetSPDIFClockSource(uint32_t Periph)
  2737. {
  2738. UNUSED(Periph);
  2739. return (uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SPDIFSEL));
  2740. }
  2741. /**
  2742. * @brief Get FDCAN Kernel clock source
  2743. * @rmtoll D2CCIP1R FDCANSEL LL_RCC_GetFDCANClockSource
  2744. * @param Periph This parameter can be one of the following values:
  2745. * @arg @ref LL_RCC_FDCAN_CLKSOURCE
  2746. * @retval Returned value can be one of the following values:
  2747. * @arg @ref LL_RCC_FDCAN_CLKSOURCE_HSE
  2748. * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PLL1Q
  2749. * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PLL2Q
  2750. */
  2751. __STATIC_INLINE uint32_t LL_RCC_GetFDCANClockSource(uint32_t Periph)
  2752. {
  2753. UNUSED(Periph);
  2754. return (uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_FDCANSEL));
  2755. }
  2756. /**
  2757. * @brief Get SWP Kernel clock source
  2758. * @rmtoll D2CCIP1R SWPSEL LL_RCC_GetSWPClockSource
  2759. * @param Periph This parameter can be one of the following values:
  2760. * @arg @ref LL_RCC_SWP_CLKSOURCE
  2761. * @retval Returned value can be one of the following values:
  2762. * @arg @ref LL_RCC_SWP_CLKSOURCE_PCLK1
  2763. * @arg @ref LL_RCC_SWP_CLKSOURCE_HSI
  2764. */
  2765. __STATIC_INLINE uint32_t LL_RCC_GetSWPClockSource(uint32_t Periph)
  2766. {
  2767. UNUSED(Periph);
  2768. return (uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SWPSEL));
  2769. }
  2770. /**
  2771. * @brief Get ADC Kernel clock source
  2772. * @rmtoll D3CCIPR ADCSEL LL_RCC_GetADCClockSolurce
  2773. * @param Periph This parameter can be one of the following values:
  2774. * @arg @ref LL_RCC_ADC_CLKSOURCE
  2775. * @retval Returned value can be one of the following values:
  2776. * @arg @ref LL_RCC_ADC_CLKSOURCE_PLL2P
  2777. * @arg @ref LL_RCC_ADC_CLKSOURCE_PLL3R
  2778. * @arg @ref LL_RCC_ADC_CLKSOURCE_CLKP
  2779. */
  2780. __STATIC_INLINE uint32_t LL_RCC_GetADCClockSource(uint32_t Periph)
  2781. {
  2782. UNUSED(Periph);
  2783. return (uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_ADCSEL));
  2784. }
  2785. /**
  2786. * @}
  2787. */
  2788. /** @defgroup RCC_LL_EF_RTC RTC
  2789. * @{
  2790. */
  2791. /**
  2792. * @brief Set RTC Clock Source
  2793. * @note Once the RTC clock source has been selected, it cannot be changed anymore unless
  2794. * the Backup domain is reset, or unless a failure is detected on LSE (LSECSSD is
  2795. * set). The BDRST bit can be used to reset them.
  2796. * @rmtoll BDCR RTCSEL LL_RCC_SetRTCClockSource
  2797. * @param Source This parameter can be one of the following values:
  2798. * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE
  2799. * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE
  2800. * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI
  2801. * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE
  2802. * @retval None
  2803. */
  2804. __STATIC_INLINE void LL_RCC_SetRTCClockSource(uint32_t Source)
  2805. {
  2806. MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, Source);
  2807. }
  2808. /**
  2809. * @brief Get RTC Clock Source
  2810. * @rmtoll BDCR RTCSEL LL_RCC_GetRTCClockSource
  2811. * @retval Returned value can be one of the following values:
  2812. * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE
  2813. * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE
  2814. * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI
  2815. * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE
  2816. */
  2817. __STATIC_INLINE uint32_t LL_RCC_GetRTCClockSource(void)
  2818. {
  2819. return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL));
  2820. }
  2821. /**
  2822. * @brief Enable RTC
  2823. * @rmtoll BDCR RTCEN LL_RCC_EnableRTC
  2824. * @retval None
  2825. */
  2826. __STATIC_INLINE void LL_RCC_EnableRTC(void)
  2827. {
  2828. SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN);
  2829. }
  2830. /**
  2831. * @brief Disable RTC
  2832. * @rmtoll BDCR RTCEN LL_RCC_DisableRTC
  2833. * @retval None
  2834. */
  2835. __STATIC_INLINE void LL_RCC_DisableRTC(void)
  2836. {
  2837. CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN);
  2838. }
  2839. /**
  2840. * @brief Check if RTC has been enabled or not
  2841. * @rmtoll BDCR RTCEN LL_RCC_IsEnabledRTC
  2842. * @retval State of bit (1 or 0).
  2843. */
  2844. __STATIC_INLINE uint32_t LL_RCC_IsEnabledRTC(void)
  2845. {
  2846. return ((READ_BIT(RCC->BDCR, RCC_BDCR_RTCEN) == (RCC_BDCR_RTCEN))?1UL:0UL);
  2847. }
  2848. /**
  2849. * @brief Force the Backup domain reset
  2850. * @rmtoll BDCR BDRST LL_RCC_ForceBackupDomainReset
  2851. * @retval None
  2852. */
  2853. __STATIC_INLINE void LL_RCC_ForceBackupDomainReset(void)
  2854. {
  2855. SET_BIT(RCC->BDCR, RCC_BDCR_BDRST);
  2856. }
  2857. /**
  2858. * @brief Release the Backup domain reset
  2859. * @rmtoll BDCR BDRST LL_RCC_ReleaseBackupDomainReset
  2860. * @retval None
  2861. */
  2862. __STATIC_INLINE void LL_RCC_ReleaseBackupDomainReset(void)
  2863. {
  2864. CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST);
  2865. }
  2866. /**
  2867. * @brief Set HSE Prescalers for RTC Clock
  2868. * @rmtoll CFGR RTCPRE LL_RCC_SetRTC_HSEPrescaler
  2869. * @param Prescaler This parameter can be one of the following values:
  2870. * @arg @ref LL_RCC_RTC_NOCLOCK
  2871. * @arg @ref LL_RCC_RTC_HSE_DIV_2
  2872. * @arg @ref LL_RCC_RTC_HSE_DIV_3
  2873. * @arg @ref LL_RCC_RTC_HSE_DIV_4
  2874. * @arg @ref LL_RCC_RTC_HSE_DIV_5
  2875. * @arg @ref LL_RCC_RTC_HSE_DIV_6
  2876. * @arg @ref LL_RCC_RTC_HSE_DIV_7
  2877. * @arg @ref LL_RCC_RTC_HSE_DIV_8
  2878. * @arg @ref LL_RCC_RTC_HSE_DIV_9
  2879. * @arg @ref LL_RCC_RTC_HSE_DIV_10
  2880. * @arg @ref LL_RCC_RTC_HSE_DIV_11
  2881. * @arg @ref LL_RCC_RTC_HSE_DIV_12
  2882. * @arg @ref LL_RCC_RTC_HSE_DIV_13
  2883. * @arg @ref LL_RCC_RTC_HSE_DIV_14
  2884. * @arg @ref LL_RCC_RTC_HSE_DIV_15
  2885. * @arg @ref LL_RCC_RTC_HSE_DIV_16
  2886. * @arg @ref LL_RCC_RTC_HSE_DIV_17
  2887. * @arg @ref LL_RCC_RTC_HSE_DIV_18
  2888. * @arg @ref LL_RCC_RTC_HSE_DIV_19
  2889. * @arg @ref LL_RCC_RTC_HSE_DIV_20
  2890. * @arg @ref LL_RCC_RTC_HSE_DIV_21
  2891. * @arg @ref LL_RCC_RTC_HSE_DIV_22
  2892. * @arg @ref LL_RCC_RTC_HSE_DIV_23
  2893. * @arg @ref LL_RCC_RTC_HSE_DIV_24
  2894. * @arg @ref LL_RCC_RTC_HSE_DIV_25
  2895. * @arg @ref LL_RCC_RTC_HSE_DIV_26
  2896. * @arg @ref LL_RCC_RTC_HSE_DIV_27
  2897. * @arg @ref LL_RCC_RTC_HSE_DIV_28
  2898. * @arg @ref LL_RCC_RTC_HSE_DIV_29
  2899. * @arg @ref LL_RCC_RTC_HSE_DIV_30
  2900. * @arg @ref LL_RCC_RTC_HSE_DIV_31
  2901. * @arg @ref LL_RCC_RTC_HSE_DIV_32
  2902. * @arg @ref LL_RCC_RTC_HSE_DIV_33
  2903. * @arg @ref LL_RCC_RTC_HSE_DIV_34
  2904. * @arg @ref LL_RCC_RTC_HSE_DIV_35
  2905. * @arg @ref LL_RCC_RTC_HSE_DIV_36
  2906. * @arg @ref LL_RCC_RTC_HSE_DIV_37
  2907. * @arg @ref LL_RCC_RTC_HSE_DIV_38
  2908. * @arg @ref LL_RCC_RTC_HSE_DIV_39
  2909. * @arg @ref LL_RCC_RTC_HSE_DIV_40
  2910. * @arg @ref LL_RCC_RTC_HSE_DIV_41
  2911. * @arg @ref LL_RCC_RTC_HSE_DIV_42
  2912. * @arg @ref LL_RCC_RTC_HSE_DIV_43
  2913. * @arg @ref LL_RCC_RTC_HSE_DIV_44
  2914. * @arg @ref LL_RCC_RTC_HSE_DIV_45
  2915. * @arg @ref LL_RCC_RTC_HSE_DIV_46
  2916. * @arg @ref LL_RCC_RTC_HSE_DIV_47
  2917. * @arg @ref LL_RCC_RTC_HSE_DIV_48
  2918. * @arg @ref LL_RCC_RTC_HSE_DIV_49
  2919. * @arg @ref LL_RCC_RTC_HSE_DIV_50
  2920. * @arg @ref LL_RCC_RTC_HSE_DIV_51
  2921. * @arg @ref LL_RCC_RTC_HSE_DIV_52
  2922. * @arg @ref LL_RCC_RTC_HSE_DIV_53
  2923. * @arg @ref LL_RCC_RTC_HSE_DIV_54
  2924. * @arg @ref LL_RCC_RTC_HSE_DIV_55
  2925. * @arg @ref LL_RCC_RTC_HSE_DIV_56
  2926. * @arg @ref LL_RCC_RTC_HSE_DIV_57
  2927. * @arg @ref LL_RCC_RTC_HSE_DIV_58
  2928. * @arg @ref LL_RCC_RTC_HSE_DIV_59
  2929. * @arg @ref LL_RCC_RTC_HSE_DIV_60
  2930. * @arg @ref LL_RCC_RTC_HSE_DIV_61
  2931. * @arg @ref LL_RCC_RTC_HSE_DIV_62
  2932. * @arg @ref LL_RCC_RTC_HSE_DIV_63
  2933. * @retval None
  2934. */
  2935. __STATIC_INLINE void LL_RCC_SetRTC_HSEPrescaler(uint32_t Prescaler)
  2936. {
  2937. MODIFY_REG(RCC->CFGR, RCC_CFGR_RTCPRE, Prescaler);
  2938. }
  2939. /**
  2940. * @brief Get HSE Prescalers for RTC Clock
  2941. * @rmtoll CFGR RTCPRE LL_RCC_GetRTC_HSEPrescaler
  2942. * @retval Returned value can be one of the following values:
  2943. * @arg @ref LL_RCC_RTC_NOCLOCK
  2944. * @arg @ref LL_RCC_RTC_HSE_DIV_2
  2945. * @arg @ref LL_RCC_RTC_HSE_DIV_3
  2946. * @arg @ref LL_RCC_RTC_HSE_DIV_4
  2947. * @arg @ref LL_RCC_RTC_HSE_DIV_5
  2948. * @arg @ref LL_RCC_RTC_HSE_DIV_6
  2949. * @arg @ref LL_RCC_RTC_HSE_DIV_7
  2950. * @arg @ref LL_RCC_RTC_HSE_DIV_8
  2951. * @arg @ref LL_RCC_RTC_HSE_DIV_9
  2952. * @arg @ref LL_RCC_RTC_HSE_DIV_10
  2953. * @arg @ref LL_RCC_RTC_HSE_DIV_11
  2954. * @arg @ref LL_RCC_RTC_HSE_DIV_12
  2955. * @arg @ref LL_RCC_RTC_HSE_DIV_13
  2956. * @arg @ref LL_RCC_RTC_HSE_DIV_14
  2957. * @arg @ref LL_RCC_RTC_HSE_DIV_15
  2958. * @arg @ref LL_RCC_RTC_HSE_DIV_16
  2959. * @arg @ref LL_RCC_RTC_HSE_DIV_17
  2960. * @arg @ref LL_RCC_RTC_HSE_DIV_18
  2961. * @arg @ref LL_RCC_RTC_HSE_DIV_19
  2962. * @arg @ref LL_RCC_RTC_HSE_DIV_20
  2963. * @arg @ref LL_RCC_RTC_HSE_DIV_21
  2964. * @arg @ref LL_RCC_RTC_HSE_DIV_22
  2965. * @arg @ref LL_RCC_RTC_HSE_DIV_23
  2966. * @arg @ref LL_RCC_RTC_HSE_DIV_24
  2967. * @arg @ref LL_RCC_RTC_HSE_DIV_25
  2968. * @arg @ref LL_RCC_RTC_HSE_DIV_26
  2969. * @arg @ref LL_RCC_RTC_HSE_DIV_27
  2970. * @arg @ref LL_RCC_RTC_HSE_DIV_28
  2971. * @arg @ref LL_RCC_RTC_HSE_DIV_29
  2972. * @arg @ref LL_RCC_RTC_HSE_DIV_30
  2973. * @arg @ref LL_RCC_RTC_HSE_DIV_31
  2974. * @arg @ref LL_RCC_RTC_HSE_DIV_32
  2975. * @arg @ref LL_RCC_RTC_HSE_DIV_33
  2976. * @arg @ref LL_RCC_RTC_HSE_DIV_34
  2977. * @arg @ref LL_RCC_RTC_HSE_DIV_35
  2978. * @arg @ref LL_RCC_RTC_HSE_DIV_36
  2979. * @arg @ref LL_RCC_RTC_HSE_DIV_37
  2980. * @arg @ref LL_RCC_RTC_HSE_DIV_38
  2981. * @arg @ref LL_RCC_RTC_HSE_DIV_39
  2982. * @arg @ref LL_RCC_RTC_HSE_DIV_40
  2983. * @arg @ref LL_RCC_RTC_HSE_DIV_41
  2984. * @arg @ref LL_RCC_RTC_HSE_DIV_42
  2985. * @arg @ref LL_RCC_RTC_HSE_DIV_43
  2986. * @arg @ref LL_RCC_RTC_HSE_DIV_44
  2987. * @arg @ref LL_RCC_RTC_HSE_DIV_45
  2988. * @arg @ref LL_RCC_RTC_HSE_DIV_46
  2989. * @arg @ref LL_RCC_RTC_HSE_DIV_47
  2990. * @arg @ref LL_RCC_RTC_HSE_DIV_48
  2991. * @arg @ref LL_RCC_RTC_HSE_DIV_49
  2992. * @arg @ref LL_RCC_RTC_HSE_DIV_50
  2993. * @arg @ref LL_RCC_RTC_HSE_DIV_51
  2994. * @arg @ref LL_RCC_RTC_HSE_DIV_52
  2995. * @arg @ref LL_RCC_RTC_HSE_DIV_53
  2996. * @arg @ref LL_RCC_RTC_HSE_DIV_54
  2997. * @arg @ref LL_RCC_RTC_HSE_DIV_55
  2998. * @arg @ref LL_RCC_RTC_HSE_DIV_56
  2999. * @arg @ref LL_RCC_RTC_HSE_DIV_57
  3000. * @arg @ref LL_RCC_RTC_HSE_DIV_58
  3001. * @arg @ref LL_RCC_RTC_HSE_DIV_59
  3002. * @arg @ref LL_RCC_RTC_HSE_DIV_60
  3003. * @arg @ref LL_RCC_RTC_HSE_DIV_61
  3004. * @arg @ref LL_RCC_RTC_HSE_DIV_62
  3005. * @arg @ref LL_RCC_RTC_HSE_DIV_63
  3006. */
  3007. __STATIC_INLINE uint32_t LL_RCC_GetRTC_HSEPrescaler(void)
  3008. {
  3009. return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_RTCPRE));
  3010. }
  3011. /**
  3012. * @}
  3013. */
  3014. /** @defgroup RCC_LL_EF_TIM_CLOCK_PRESCALER TIM
  3015. * @{
  3016. */
  3017. /**
  3018. * @brief Set Timers Clock Prescalers
  3019. * @rmtoll CFGR TIMPRE LL_RCC_SetTIMPrescaler
  3020. * @param Prescaler This parameter can be one of the following values:
  3021. * @arg @ref LL_RCC_TIM_PRESCALER_TWICE
  3022. * @arg @ref LL_RCC_TIM_PRESCALER_FOUR_TIMES
  3023. * @retval None
  3024. */
  3025. __STATIC_INLINE void LL_RCC_SetTIMPrescaler(uint32_t Prescaler)
  3026. {
  3027. MODIFY_REG(RCC->CFGR, RCC_CFGR_TIMPRE, Prescaler);
  3028. }
  3029. /**
  3030. * @brief Get Timers Clock Prescalers
  3031. * @rmtoll CFGR TIMPRE LL_RCC_GetTIMPrescaler
  3032. * @retval Returned value can be one of the following values:
  3033. * @arg @ref LL_RCC_TIM_PRESCALER_TWICE
  3034. * @arg @ref LL_RCC_TIM_PRESCALER_FOUR_TIMES
  3035. */
  3036. __STATIC_INLINE uint32_t LL_RCC_GetTIMPrescaler(void)
  3037. {
  3038. return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_TIMPRE));
  3039. }
  3040. /**
  3041. * @}
  3042. */
  3043. /** @defgroup RCC_LL_EF_HRTIM_SET_CLOCK_SOURCE HRTIM
  3044. * @{
  3045. */
  3046. /**
  3047. * @brief Set High Resolution Timers Clock Source
  3048. * @rmtoll CFGR HRTIMSEL LL_RCC_SetHRTIMClockSource
  3049. * @param Prescaler This parameter can be one of the following values:
  3050. * @arg @ref LL_RCC_HRTIM_CLKSOURCE_TIM
  3051. * @arg @ref LL_RCC_HRTIM_CLKSOURCE_CPU
  3052. * @retval None
  3053. */
  3054. __STATIC_INLINE void LL_RCC_SetHRTIMClockSource(uint32_t Prescaler)
  3055. {
  3056. MODIFY_REG(RCC->CFGR, RCC_CFGR_HRTIMSEL, Prescaler);
  3057. }
  3058. /**
  3059. * @brief Get High Resolution Timers Clock Source
  3060. * @rmtoll CFGR HRTIMSEL LL_RCC_GetHRTIMClockSource
  3061. * @retval Returned value can be one of the following values:
  3062. * @arg @ref LL_RCC_HRTIM_CLKSOURCE_TIM
  3063. * @arg @ref LL_RCC_HRTIM_CLKSOURCE_CPU
  3064. */
  3065. __STATIC_INLINE uint32_t LL_RCC_GetHRTIMClockSource(void)
  3066. {
  3067. return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HRTIMSEL));
  3068. }
  3069. /**
  3070. * @}
  3071. */
  3072. /** @defgroup RCC_LL_EF_PLL PLL
  3073. * @{
  3074. */
  3075. /**
  3076. * @brief Set the oscillator used as PLL clock source.
  3077. * @note PLLSRC can be written only when All PLLs are disabled.
  3078. * @rmtoll PLLCKSELR PLLSRC LL_RCC_PLL_SetSource
  3079. * @param PLLSource parameter can be one of the following values:
  3080. * @arg @ref LL_RCC_PLLSOURCE_HSI
  3081. * @arg @ref LL_RCC_PLLSOURCE_CSI
  3082. * @arg @ref LL_RCC_PLLSOURCE_HSE
  3083. * @arg @ref LL_RCC_PLLSOURCE_NONE
  3084. * @retval None
  3085. */
  3086. __STATIC_INLINE void LL_RCC_PLL_SetSource(uint32_t PLLSource)
  3087. {
  3088. MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_PLLSRC, PLLSource);
  3089. }
  3090. /**
  3091. * @brief Get the oscillator used as PLL clock source.
  3092. * @rmtoll PLLCKSELR PLLSRC LL_RCC_PLL_GetSource
  3093. * @retval Returned value can be one of the following values:
  3094. * @arg @ref LL_RCC_PLLSOURCE_HSI
  3095. * @arg @ref LL_RCC_PLLSOURCE_CSI
  3096. * @arg @ref LL_RCC_PLLSOURCE_HSE
  3097. * @arg @ref LL_RCC_PLLSOURCE_NONE
  3098. */
  3099. __STATIC_INLINE uint32_t LL_RCC_PLL_GetSource(void)
  3100. {
  3101. return (uint32_t)(READ_BIT(RCC->PLLCKSELR, RCC_PLLCKSELR_PLLSRC));
  3102. }
  3103. /**
  3104. * @brief Enable PLL1
  3105. * @rmtoll CR PLL1ON LL_RCC_PLL1_Enable
  3106. * @retval None
  3107. */
  3108. __STATIC_INLINE void LL_RCC_PLL1_Enable(void)
  3109. {
  3110. SET_BIT(RCC->CR, RCC_CR_PLL1ON);
  3111. }
  3112. /**
  3113. * @brief Disable PLL1
  3114. * @note Cannot be disabled if the PLL1 clock is used as the system clock
  3115. * @rmtoll CR PLL1ON LL_RCC_PLL1_Disable
  3116. * @retval None
  3117. */
  3118. __STATIC_INLINE void LL_RCC_PLL1_Disable(void)
  3119. {
  3120. CLEAR_BIT(RCC->CR, RCC_CR_PLL1ON);
  3121. }
  3122. /**
  3123. * @brief Check if PLL1 Ready
  3124. * @rmtoll CR PLL1RDY LL_RCC_PLL1_IsReady
  3125. * @retval State of bit (1 or 0).
  3126. */
  3127. __STATIC_INLINE uint32_t LL_RCC_PLL1_IsReady(void)
  3128. {
  3129. return ((READ_BIT(RCC->CR, RCC_CR_PLL1RDY) == (RCC_CR_PLL1RDY))?1UL:0UL);
  3130. }
  3131. /**
  3132. * @brief Enable PLL1P
  3133. * @note This API shall be called only when PLL1 is disabled.
  3134. * @rmtoll PLLCFGR DIVP1EN LL_RCC_PLL1P_Enable
  3135. * @retval None
  3136. */
  3137. __STATIC_INLINE void LL_RCC_PLL1P_Enable(void)
  3138. {
  3139. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP1EN);
  3140. }
  3141. /**
  3142. * @brief Enable PLL1Q
  3143. * @note This API shall be called only when PLL1 is disabled.
  3144. * @rmtoll PLLCFGR DIVQ1EN LL_RCC_PLL1Q_Enable
  3145. * @retval None
  3146. */
  3147. __STATIC_INLINE void LL_RCC_PLL1Q_Enable(void)
  3148. {
  3149. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ1EN);
  3150. }
  3151. /**
  3152. * @brief Enable PLL1R
  3153. * @note This API shall be called only when PLL1 is disabled.
  3154. * @rmtoll PLLCFGR DIVR1EN LL_RCC_PLL1R_Enable
  3155. * @retval None
  3156. */
  3157. __STATIC_INLINE void LL_RCC_PLL1R_Enable(void)
  3158. {
  3159. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR1EN);
  3160. }
  3161. /**
  3162. * @brief Enable PLL1 FRACN
  3163. * @rmtoll PLLCFGR PLL1FRACEN LL_RCC_PLL1FRACN_Enable
  3164. * @retval None
  3165. */
  3166. __STATIC_INLINE void LL_RCC_PLL1FRACN_Enable(void)
  3167. {
  3168. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL1FRACEN);
  3169. }
  3170. /**
  3171. * @brief Check if PLL1 P is enabled
  3172. * @rmtoll PLLCFGR DIVP1EN LL_RCC_PLL1P_IsEnabled
  3173. * @retval State of bit (1 or 0).
  3174. */
  3175. __STATIC_INLINE uint32_t LL_RCC_PLL1P_IsEnabled(void)
  3176. {
  3177. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP1EN) == RCC_PLLCFGR_DIVP1EN)?1UL:0UL);
  3178. }
  3179. /**
  3180. * @brief Check if PLL1 Q is enabled
  3181. * @rmtoll PLLCFGR DIVQ1EN LL_RCC_PLL1Q_IsEnabled
  3182. * @retval State of bit (1 or 0).
  3183. */
  3184. __STATIC_INLINE uint32_t LL_RCC_PLL1Q_IsEnabled(void)
  3185. {
  3186. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ1EN) == RCC_PLLCFGR_DIVQ1EN)?1UL:0UL);
  3187. }
  3188. /**
  3189. * @brief Check if PLL1 R is enabled
  3190. * @rmtoll PLLCFGR DIVR1EN LL_RCC_PLL1R_IsEnabled
  3191. * @retval State of bit (1 or 0).
  3192. */
  3193. __STATIC_INLINE uint32_t LL_RCC_PLL1R_IsEnabled(void)
  3194. {
  3195. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR1EN) == RCC_PLLCFGR_DIVR1EN)?1UL:0UL);
  3196. }
  3197. /**
  3198. * @brief Check if PLL1 FRACN is enabled
  3199. * @rmtoll PLLCFGR PLL1FRACEN LL_RCC_PLL1FRACN_IsEnabled
  3200. * @retval State of bit (1 or 0).
  3201. */
  3202. __STATIC_INLINE uint32_t LL_RCC_PLL1FRACN_IsEnabled(void)
  3203. {
  3204. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL1FRACEN) == RCC_PLLCFGR_PLL1FRACEN)?1UL:0UL);
  3205. }
  3206. /**
  3207. * @brief Disable PLL1P
  3208. * @note This API shall be called only when PLL1 is disabled.
  3209. * @rmtoll PLLCFGR DIVP1EN LL_RCC_PLL1P_Disable
  3210. * @retval None
  3211. */
  3212. __STATIC_INLINE void LL_RCC_PLL1P_Disable(void)
  3213. {
  3214. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP1EN);
  3215. }
  3216. /**
  3217. * @brief Disable PLL1Q
  3218. * @note This API shall be called only when PLL1 is disabled.
  3219. * @rmtoll PLLCFGR DIVQ1EN LL_RCC_PLL1Q_Disable
  3220. * @retval None
  3221. */
  3222. __STATIC_INLINE void LL_RCC_PLL1Q_Disable(void)
  3223. {
  3224. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ1EN);
  3225. }
  3226. /**
  3227. * @brief Disable PLL1R
  3228. * @note This API shall be called only when PLL1 is disabled.
  3229. * @rmtoll PLLCFGR DIVR1EN LL_RCC_PLL1R_Disable
  3230. * @retval None
  3231. */
  3232. __STATIC_INLINE void LL_RCC_PLL1R_Disable(void)
  3233. {
  3234. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR1EN);
  3235. }
  3236. /**
  3237. * @brief Disable PLL1 FRACN
  3238. * @rmtoll PLLCFGR PLL1FRACEN LL_RCC_PLL1FRACN_Enable
  3239. * @retval None
  3240. */
  3241. __STATIC_INLINE void LL_RCC_PLL1FRACN_Disable(void)
  3242. {
  3243. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL1FRACEN);
  3244. }
  3245. /**
  3246. * @brief Set PLL1 VCO OutputRange
  3247. * @note This API shall be called only when PLL1 is disabled.
  3248. * @rmtoll PLLCFGR PLL1VCOSEL LL_RCC_PLL1_SetVCOOuputRange
  3249. * @param VCORange This parameter can be one of the following values:
  3250. * @arg @ref LL_RCC_PLLVCORANGE_WIDE
  3251. * @arg @ref LL_RCC_PLLVCORANGE_MEDIUM
  3252. * @retval None
  3253. */
  3254. __STATIC_INLINE void LL_RCC_PLL1_SetVCOOutputRange(uint32_t VCORange)
  3255. {
  3256. MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL1VCOSEL, VCORange << RCC_PLLCFGR_PLL1VCOSEL_Pos);
  3257. }
  3258. /**
  3259. * @brief Set PLL1 VCO Input Range
  3260. * @note This API shall be called only when PLL1 is disabled.
  3261. * @rmtoll PLLCFGR PLL1RGE LL_RCC_PLL1_SetVCOInputRange
  3262. * @param InputRange This parameter can be one of the following values:
  3263. * @arg @ref LL_RCC_PLLINPUTRANGE_1_2
  3264. * @arg @ref LL_RCC_PLLINPUTRANGE_2_4
  3265. * @arg @ref LL_RCC_PLLINPUTRANGE_4_8
  3266. * @arg @ref LL_RCC_PLLINPUTRANGE_8_16
  3267. * @retval None
  3268. */
  3269. __STATIC_INLINE void LL_RCC_PLL1_SetVCOInputRange(uint32_t InputRange)
  3270. {
  3271. MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL1RGE, InputRange << RCC_PLLCFGR_PLL1RGE_Pos);
  3272. }
  3273. /**
  3274. * @brief Get PLL1 N Coefficient
  3275. * @rmtoll PLL1DIVR N1 LL_RCC_PLL1_GetN
  3276. * @retval A value between 4 and 512
  3277. */
  3278. __STATIC_INLINE uint32_t LL_RCC_PLL1_GetN(void)
  3279. {
  3280. return (uint32_t)((READ_BIT(RCC->PLL1DIVR, RCC_PLL1DIVR_N1) >> RCC_PLL1DIVR_N1_Pos) + 1UL);
  3281. }
  3282. /**
  3283. * @brief Get PLL1 M Coefficient
  3284. * @rmtoll PLLCKSELR DIVM1 LL_RCC_PLL1_GetM
  3285. * @retval A value between 0 and 63
  3286. */
  3287. __STATIC_INLINE uint32_t LL_RCC_PLL1_GetM(void)
  3288. {
  3289. return (uint32_t)(READ_BIT(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM1) >> RCC_PLLCKSELR_DIVM1_Pos);
  3290. }
  3291. /**
  3292. * @brief Get PLL1 P Coefficient
  3293. * @rmtoll PLL1DIVR P1 LL_RCC_PLL1_GetP
  3294. * @retval A value between 2 and 128
  3295. */
  3296. __STATIC_INLINE uint32_t LL_RCC_PLL1_GetP(void)
  3297. {
  3298. return (uint32_t)((READ_BIT(RCC->PLL1DIVR, RCC_PLL1DIVR_P1) >> RCC_PLL1DIVR_P1_Pos) + 1UL);
  3299. }
  3300. /**
  3301. * @brief Get PLL1 Q Coefficient
  3302. * @rmtoll PLL1DIVR Q1 LL_RCC_PLL1_GetQ
  3303. * @retval A value between 1 and 128
  3304. */
  3305. __STATIC_INLINE uint32_t LL_RCC_PLL1_GetQ(void)
  3306. {
  3307. return (uint32_t)((READ_BIT(RCC->PLL1DIVR, RCC_PLL1DIVR_Q1) >> RCC_PLL1DIVR_Q1_Pos) + 1UL);
  3308. }
  3309. /**
  3310. * @brief Get PLL1 R Coefficient
  3311. * @rmtoll PLL1DIVR R1 LL_RCC_PLL1_GetR
  3312. * @retval A value between 1 and 128
  3313. */
  3314. __STATIC_INLINE uint32_t LL_RCC_PLL1_GetR(void)
  3315. {
  3316. return (uint32_t)((READ_BIT(RCC->PLL1DIVR, RCC_PLL1DIVR_R1) >> RCC_PLL1DIVR_R1_Pos) + 1UL);
  3317. }
  3318. /**
  3319. * @brief Get PLL1 FRACN Coefficient
  3320. * @rmtoll PLL1FRACR FRACN1 LL_RCC_PLL1_GetFRACN
  3321. * @retval A value between 0 and 8191 (0x1FFF)
  3322. */
  3323. __STATIC_INLINE uint32_t LL_RCC_PLL1_GetFRACN(void)
  3324. {
  3325. return (uint32_t)(READ_BIT(RCC->PLL1FRACR, RCC_PLL1FRACR_FRACN1) >> RCC_PLL1FRACR_FRACN1_Pos);
  3326. }
  3327. /**
  3328. * @brief Set PLL1 N Coefficient
  3329. * @note This API shall be called only when PLL1 is disabled.
  3330. * @rmtoll PLL1DIVR N1 LL_RCC_PLL1_SetN
  3331. * @param N parameter can be a value between 4 and 512
  3332. */
  3333. __STATIC_INLINE void LL_RCC_PLL1_SetN(uint32_t N)
  3334. {
  3335. MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_N1, (N-1UL) << RCC_PLL1DIVR_N1_Pos);
  3336. }
  3337. /**
  3338. * @brief Set PLL1 M Coefficient
  3339. * @note This API shall be called only when PLL1 is disabled.
  3340. * @rmtoll PLLCKSELR DIVM1 LL_RCC_PLL1_SetM
  3341. * @param M parameter can be a value between 0 and 63
  3342. */
  3343. __STATIC_INLINE void LL_RCC_PLL1_SetM(uint32_t M)
  3344. {
  3345. MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM1, M << RCC_PLLCKSELR_DIVM1_Pos);
  3346. }
  3347. /**
  3348. * @brief Set PLL1 P Coefficient
  3349. * @note This API shall be called only when PLL1 is disabled.
  3350. * @rmtoll PLL1DIVR P1 LL_RCC_PLL1_SetP
  3351. * @param P parameter can be a value between 2 and 128 (ODD division factor not supportted)
  3352. */
  3353. __STATIC_INLINE void LL_RCC_PLL1_SetP(uint32_t P)
  3354. {
  3355. MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_P1, (P-1UL) << RCC_PLL1DIVR_P1_Pos);
  3356. }
  3357. /**
  3358. * @brief Set PLL1 Q Coefficient
  3359. * @note This API shall be called only when PLL1 is disabled.
  3360. * @rmtoll PLL1DIVR Q1 LL_RCC_PLL1_SetQ
  3361. * @param Q parameter can be a value between 1 and 128
  3362. */
  3363. __STATIC_INLINE void LL_RCC_PLL1_SetQ(uint32_t Q)
  3364. {
  3365. MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_Q1, (Q-1UL) << RCC_PLL1DIVR_Q1_Pos);
  3366. }
  3367. /**
  3368. * @brief Set PLL1 R Coefficient
  3369. * @note This API shall be called only when PLL1 is disabled.
  3370. * @rmtoll PLL1DIVR R1 LL_RCC_PLL1_SetR
  3371. * @param R parameter can be a value between 1 and 128
  3372. */
  3373. __STATIC_INLINE void LL_RCC_PLL1_SetR(uint32_t R)
  3374. {
  3375. MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_R1, (R-1UL) << RCC_PLL1DIVR_R1_Pos);
  3376. }
  3377. /**
  3378. * @brief Set PLL1 FRACN Coefficient
  3379. * @rmtoll PLL1FRACR FRACN1 LL_RCC_PLL1_SetFRACN
  3380. * @param FRACN parameter can be a value between 0 and 8191 (0x1FFF)
  3381. */
  3382. __STATIC_INLINE void LL_RCC_PLL1_SetFRACN(uint32_t FRACN)
  3383. {
  3384. MODIFY_REG(RCC->PLL1FRACR, RCC_PLL1FRACR_FRACN1, FRACN << RCC_PLL1FRACR_FRACN1_Pos);
  3385. }
  3386. /**
  3387. * @brief Enable PLL2
  3388. * @rmtoll CR PLL2ON LL_RCC_PLL2_Enable
  3389. * @retval None
  3390. */
  3391. __STATIC_INLINE void LL_RCC_PLL2_Enable(void)
  3392. {
  3393. SET_BIT(RCC->CR, RCC_CR_PLL2ON);
  3394. }
  3395. /**
  3396. * @brief Disable PLL2
  3397. * @note Cannot be disabled if the PLL2 clock is used as the system clock
  3398. * @rmtoll CR PLL2ON LL_RCC_PLL2_Disable
  3399. * @retval None
  3400. */
  3401. __STATIC_INLINE void LL_RCC_PLL2_Disable(void)
  3402. {
  3403. CLEAR_BIT(RCC->CR, RCC_CR_PLL2ON);
  3404. }
  3405. /**
  3406. * @brief Check if PLL2 Ready
  3407. * @rmtoll CR PLL2RDY LL_RCC_PLL2_IsReady
  3408. * @retval State of bit (1 or 0).
  3409. */
  3410. __STATIC_INLINE uint32_t LL_RCC_PLL2_IsReady(void)
  3411. {
  3412. return ((READ_BIT(RCC->CR, RCC_CR_PLL2RDY) == (RCC_CR_PLL2RDY))?1UL:0UL);
  3413. }
  3414. /**
  3415. * @brief Enable PLL2P
  3416. * @note This API shall be called only when PLL2 is disabled.
  3417. * @rmtoll PLLCFGR DIVP2EN LL_RCC_PLL2P_Enable
  3418. * @retval None
  3419. */
  3420. __STATIC_INLINE void LL_RCC_PLL2P_Enable(void)
  3421. {
  3422. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP2EN);
  3423. }
  3424. /**
  3425. * @brief Enable PLL2Q
  3426. * @note This API shall be called only when PLL2 is disabled.
  3427. * @rmtoll PLLCFGR DIVQ2EN LL_RCC_PLL2Q_Enable
  3428. * @retval None
  3429. */
  3430. __STATIC_INLINE void LL_RCC_PLL2Q_Enable(void)
  3431. {
  3432. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ2EN);
  3433. }
  3434. /**
  3435. * @brief Enable PLL2R
  3436. * @note This API shall be called only when PLL2 is disabled.
  3437. * @rmtoll PLLCFGR DIVR2EN LL_RCC_PLL2R_Enable
  3438. * @retval None
  3439. */
  3440. __STATIC_INLINE void LL_RCC_PLL2R_Enable(void)
  3441. {
  3442. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR2EN);
  3443. }
  3444. /**
  3445. * @brief Enable PLL2 FRACN
  3446. * @rmtoll PLLCFGR PLL2FRACEN LL_RCC_PLL2FRACN_Enable
  3447. * @retval None
  3448. */
  3449. __STATIC_INLINE void LL_RCC_PLL2FRACN_Enable(void)
  3450. {
  3451. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL2FRACEN);
  3452. }
  3453. /**
  3454. * @brief Check if PLL2 P is enabled
  3455. * @rmtoll PLLCFGR DIVP2EN LL_RCC_PLL2P_IsEnabled
  3456. * @retval State of bit (1 or 0).
  3457. */
  3458. __STATIC_INLINE uint32_t LL_RCC_PLL2P_IsEnabled(void)
  3459. {
  3460. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP2EN) == RCC_PLLCFGR_DIVP2EN)?1UL:0UL);
  3461. }
  3462. /**
  3463. * @brief Check if PLL2 Q is enabled
  3464. * @rmtoll PLLCFGR DIVQ2EN LL_RCC_PLL2Q_IsEnabled
  3465. * @retval State of bit (1 or 0).
  3466. */
  3467. __STATIC_INLINE uint32_t LL_RCC_PLL2Q_IsEnabled(void)
  3468. {
  3469. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ2EN) == RCC_PLLCFGR_DIVQ2EN)?1UL:0UL);
  3470. }
  3471. /**
  3472. * @brief Check if PLL2 R is enabled
  3473. * @rmtoll PLLCFGR DIVR2EN LL_RCC_PLL2R_IsEnabled
  3474. * @retval State of bit (1 or 0).
  3475. */
  3476. __STATIC_INLINE uint32_t LL_RCC_PLL2R_IsEnabled(void)
  3477. {
  3478. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR2EN) == RCC_PLLCFGR_DIVR2EN)?1UL:0UL);
  3479. }
  3480. /**
  3481. * @brief Check if PLL2 FRACN is enabled
  3482. * @rmtoll PLLCFGR PLL2FRACEN LL_RCC_PLL2FRACN_IsEnabled
  3483. * @retval State of bit (1 or 0).
  3484. */
  3485. __STATIC_INLINE uint32_t LL_RCC_PLL2FRACN_IsEnabled(void)
  3486. {
  3487. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL2FRACEN) == RCC_PLLCFGR_PLL2FRACEN)?1UL:0UL);
  3488. }
  3489. /**
  3490. * @brief Disable PLL2P
  3491. * @note This API shall be called only when PLL2 is disabled.
  3492. * @rmtoll PLLCFGR DIVP2EN LL_RCC_PLL2P_Disable
  3493. * @retval None
  3494. */
  3495. __STATIC_INLINE void LL_RCC_PLL2P_Disable(void)
  3496. {
  3497. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP2EN);
  3498. }
  3499. /**
  3500. * @brief Disable PLL2Q
  3501. * @note This API shall be called only when PLL2 is disabled.
  3502. * @rmtoll PLLCFGR DIVQ2EN LL_RCC_PLL2Q_Disable
  3503. * @retval None
  3504. */
  3505. __STATIC_INLINE void LL_RCC_PLL2Q_Disable(void)
  3506. {
  3507. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ2EN);
  3508. }
  3509. /**
  3510. * @brief Disable PLL2R
  3511. * @note This API shall be called only when PLL2 is disabled.
  3512. * @rmtoll PLLCFGR DIVR2EN LL_RCC_PLL2R_Disable
  3513. * @retval None
  3514. */
  3515. __STATIC_INLINE void LL_RCC_PLL2R_Disable(void)
  3516. {
  3517. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR2EN);
  3518. }
  3519. /**
  3520. * @brief Disable PLL2 FRACN
  3521. * @rmtoll PLLCFGR PLL2FRACEN LL_RCC_PLL2FRACN_Enable
  3522. * @retval None
  3523. */
  3524. __STATIC_INLINE void LL_RCC_PLL2FRACN_Disable(void)
  3525. {
  3526. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL2FRACEN);
  3527. }
  3528. /**
  3529. * @brief Set PLL2 VCO OutputRange
  3530. * @note This API shall be called only when PLL2 is disabled.
  3531. * @rmtoll PLLCFGR PLL2VCOSEL LL_RCC_PLL2_SetVCOOuputRange
  3532. * @param VCORange This parameter can be one of the following values:
  3533. * @arg @ref LL_RCC_PLLVCORANGE_WIDE
  3534. * @arg @ref LL_RCC_PLLVCORANGE_MEDIUM
  3535. * @retval None
  3536. */
  3537. __STATIC_INLINE void LL_RCC_PLL2_SetVCOOutputRange(uint32_t VCORange)
  3538. {
  3539. MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL2VCOSEL, VCORange << RCC_PLLCFGR_PLL2VCOSEL_Pos);
  3540. }
  3541. /**
  3542. * @brief Set PLL2 VCO Input Range
  3543. * @note This API shall be called only when PLL2 is disabled.
  3544. * @rmtoll PLLCFGR PLL2RGE LL_RCC_PLL2_SetVCOInputRange
  3545. * @param InputRange This parameter can be one of the following values:
  3546. * @arg @ref LL_RCC_PLLINPUTRANGE_1_2
  3547. * @arg @ref LL_RCC_PLLINPUTRANGE_2_4
  3548. * @arg @ref LL_RCC_PLLINPUTRANGE_4_8
  3549. * @arg @ref LL_RCC_PLLINPUTRANGE_8_16
  3550. * @retval None
  3551. */
  3552. __STATIC_INLINE void LL_RCC_PLL2_SetVCOInputRange(uint32_t InputRange)
  3553. {
  3554. MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL2RGE, InputRange << RCC_PLLCFGR_PLL2RGE_Pos);
  3555. }
  3556. /**
  3557. * @brief Get PLL2 N Coefficient
  3558. * @rmtoll PLL2DIVR N2 LL_RCC_PLL2_GetN
  3559. * @retval A value between 4 and 512
  3560. */
  3561. __STATIC_INLINE uint32_t LL_RCC_PLL2_GetN(void)
  3562. {
  3563. return (uint32_t)((READ_BIT(RCC->PLL2DIVR, RCC_PLL2DIVR_N2) >> RCC_PLL2DIVR_N2_Pos) + 1UL);
  3564. }
  3565. /**
  3566. * @brief Get PLL2 M Coefficient
  3567. * @rmtoll PLLCKSELR DIVM2 LL_RCC_PLL2_GetM
  3568. * @retval A value between 0 and 63
  3569. */
  3570. __STATIC_INLINE uint32_t LL_RCC_PLL2_GetM(void)
  3571. {
  3572. return (uint32_t)(READ_BIT(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM2) >> RCC_PLLCKSELR_DIVM2_Pos);
  3573. }
  3574. /**
  3575. * @brief Get PLL2 P Coefficient
  3576. * @rmtoll PLL2DIVR P2 LL_RCC_PLL2_GetP
  3577. * @retval A value between 1 and 128
  3578. */
  3579. __STATIC_INLINE uint32_t LL_RCC_PLL2_GetP(void)
  3580. {
  3581. return (uint32_t)((READ_BIT(RCC->PLL2DIVR, RCC_PLL2DIVR_P2) >> RCC_PLL2DIVR_P2_Pos) + 1UL);
  3582. }
  3583. /**
  3584. * @brief Get PLL2 Q Coefficient
  3585. * @rmtoll PLL2DIVR Q2 LL_RCC_PLL2_GetQ
  3586. * @retval A value between 1 and 128
  3587. */
  3588. __STATIC_INLINE uint32_t LL_RCC_PLL2_GetQ(void)
  3589. {
  3590. return (uint32_t)((READ_BIT(RCC->PLL2DIVR, RCC_PLL2DIVR_Q2) >> RCC_PLL2DIVR_Q2_Pos) + 1UL);
  3591. }
  3592. /**
  3593. * @brief Get PLL2 R Coefficient
  3594. * @rmtoll PLL2DIVR R2 LL_RCC_PLL2_GetR
  3595. * @retval A value between 1 and 128
  3596. */
  3597. __STATIC_INLINE uint32_t LL_RCC_PLL2_GetR(void)
  3598. {
  3599. return (uint32_t)((READ_BIT(RCC->PLL2DIVR, RCC_PLL2DIVR_R2) >> RCC_PLL2DIVR_R2_Pos) + 1UL);
  3600. }
  3601. /**
  3602. * @brief Get PLL2 FRACN Coefficient
  3603. * @rmtoll PLL2FRACR FRACN2 LL_RCC_PLL2_GetFRACN
  3604. * @retval A value between 0 and 8191 (0x1FFF)
  3605. */
  3606. __STATIC_INLINE uint32_t LL_RCC_PLL2_GetFRACN(void)
  3607. {
  3608. return (uint32_t)(READ_BIT(RCC->PLL2FRACR, RCC_PLL2FRACR_FRACN2) >> RCC_PLL2FRACR_FRACN2_Pos);
  3609. }
  3610. /**
  3611. * @brief Set PLL2 N Coefficient
  3612. * @note This API shall be called only when PLL2 is disabled.
  3613. * @rmtoll PLL2DIVR N2 LL_RCC_PLL2_SetN
  3614. * @param N parameter can be a value between 4 and 512
  3615. */
  3616. __STATIC_INLINE void LL_RCC_PLL2_SetN(uint32_t N)
  3617. {
  3618. MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_N2, (N-1UL) << RCC_PLL2DIVR_N2_Pos);
  3619. }
  3620. /**
  3621. * @brief Set PLL2 M Coefficient
  3622. * @note This API shall be called only when PLL2 is disabled.
  3623. * @rmtoll PLLCKSELR DIVM2 LL_RCC_PLL2_SetM
  3624. * @param M parameter can be a value between 0 and 63
  3625. */
  3626. __STATIC_INLINE void LL_RCC_PLL2_SetM(uint32_t M)
  3627. {
  3628. MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM2, M << RCC_PLLCKSELR_DIVM2_Pos);
  3629. }
  3630. /**
  3631. * @brief Set PLL2 P Coefficient
  3632. * @note This API shall be called only when PLL2 is disabled.
  3633. * @rmtoll PLL2DIVR P2 LL_RCC_PLL2_SetP
  3634. * @param P parameter can be a value between 1 and 128
  3635. */
  3636. __STATIC_INLINE void LL_RCC_PLL2_SetP(uint32_t P)
  3637. {
  3638. MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_P2, (P-1UL) << RCC_PLL2DIVR_P2_Pos);
  3639. }
  3640. /**
  3641. * @brief Set PLL2 Q Coefficient
  3642. * @note This API shall be called only when PLL2 is disabled.
  3643. * @rmtoll PLL2DIVR Q2 LL_RCC_PLL2_SetQ
  3644. * @param Q parameter can be a value between 1 and 128
  3645. */
  3646. __STATIC_INLINE void LL_RCC_PLL2_SetQ(uint32_t Q)
  3647. {
  3648. MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_Q2, (Q-1UL) << RCC_PLL2DIVR_Q2_Pos);
  3649. }
  3650. /**
  3651. * @brief Set PLL2 R Coefficient
  3652. * @note This API shall be called only when PLL2 is disabled.
  3653. * @rmtoll PLL2DIVR R2 LL_RCC_PLL2_SetR
  3654. * @param R parameter can be a value between 1 and 128
  3655. */
  3656. __STATIC_INLINE void LL_RCC_PLL2_SetR(uint32_t R)
  3657. {
  3658. MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_R2, (R-1UL) << RCC_PLL2DIVR_R2_Pos);
  3659. }
  3660. /**
  3661. * @brief Set PLL2 FRACN Coefficient
  3662. * @rmtoll PLL2FRACR FRACN2 LL_RCC_PLL2_SetFRACN
  3663. * @param FRACN parameter can be a value between 0 and 8191 (0x1FFF)
  3664. */
  3665. __STATIC_INLINE void LL_RCC_PLL2_SetFRACN(uint32_t FRACN)
  3666. {
  3667. MODIFY_REG(RCC->PLL2FRACR, RCC_PLL2FRACR_FRACN2, FRACN << RCC_PLL2FRACR_FRACN2_Pos);
  3668. }
  3669. /**
  3670. * @brief Enable PLL3
  3671. * @rmtoll CR PLL3ON LL_RCC_PLL3_Enable
  3672. * @retval None
  3673. */
  3674. __STATIC_INLINE void LL_RCC_PLL3_Enable(void)
  3675. {
  3676. SET_BIT(RCC->CR, RCC_CR_PLL3ON);
  3677. }
  3678. /**
  3679. * @brief Disable PLL3
  3680. * @note Cannot be disabled if the PLL3 clock is used as the system clock
  3681. * @rmtoll CR PLL3ON LL_RCC_PLL3_Disable
  3682. * @retval None
  3683. */
  3684. __STATIC_INLINE void LL_RCC_PLL3_Disable(void)
  3685. {
  3686. CLEAR_BIT(RCC->CR, RCC_CR_PLL3ON);
  3687. }
  3688. /**
  3689. * @brief Check if PLL3 Ready
  3690. * @rmtoll CR PLL3RDY LL_RCC_PLL3_IsReady
  3691. * @retval State of bit (1 or 0).
  3692. */
  3693. __STATIC_INLINE uint32_t LL_RCC_PLL3_IsReady(void)
  3694. {
  3695. return ((READ_BIT(RCC->CR, RCC_CR_PLL3RDY) == (RCC_CR_PLL3RDY))?1UL:0UL);
  3696. }
  3697. /**
  3698. * @brief Enable PLL3P
  3699. * @note This API shall be called only when PLL3 is disabled.
  3700. * @rmtoll PLLCFGR DIVP3EN LL_RCC_PLL3P_Enable
  3701. * @retval None
  3702. */
  3703. __STATIC_INLINE void LL_RCC_PLL3P_Enable(void)
  3704. {
  3705. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP3EN);
  3706. }
  3707. /**
  3708. * @brief Enable PLL3Q
  3709. * @note This API shall be called only when PLL3 is disabled.
  3710. * @rmtoll PLLCFGR DIVQ3EN LL_RCC_PLL3Q_Enable
  3711. * @retval None
  3712. */
  3713. __STATIC_INLINE void LL_RCC_PLL3Q_Enable(void)
  3714. {
  3715. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ3EN);
  3716. }
  3717. /**
  3718. * @brief Enable PLL3R
  3719. * @note This API shall be called only when PLL3 is disabled.
  3720. * @rmtoll PLLCFGR DIVR3EN LL_RCC_PLL3R_Enable
  3721. * @retval None
  3722. */
  3723. __STATIC_INLINE void LL_RCC_PLL3R_Enable(void)
  3724. {
  3725. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR3EN);
  3726. }
  3727. /**
  3728. * @brief Enable PLL3 FRACN
  3729. * @rmtoll PLLCFGR PLL3FRACEN LL_RCC_PLL3FRACN_Enable
  3730. * @retval None
  3731. */
  3732. __STATIC_INLINE void LL_RCC_PLL3FRACN_Enable(void)
  3733. {
  3734. SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL3FRACEN);
  3735. }
  3736. /**
  3737. * @brief Check if PLL3 P is enabled
  3738. * @rmtoll PLLCFGR DIVP3EN LL_RCC_PLL3P_IsEnabled
  3739. * @retval State of bit (1 or 0).
  3740. */
  3741. __STATIC_INLINE uint32_t LL_RCC_PLL3P_IsEnabled(void)
  3742. {
  3743. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP3EN) == RCC_PLLCFGR_DIVP3EN)?1UL:0UL);
  3744. }
  3745. /**
  3746. * @brief Check if PLL3 Q is enabled
  3747. * @rmtoll PLLCFGR DIVQ3EN LL_RCC_PLL3Q_IsEnabled
  3748. * @retval State of bit (1 or 0).
  3749. */
  3750. __STATIC_INLINE uint32_t LL_RCC_PLL3Q_IsEnabled(void)
  3751. {
  3752. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ3EN) == RCC_PLLCFGR_DIVQ3EN)?1UL:0UL);
  3753. }
  3754. /**
  3755. * @brief Check if PLL3 R is enabled
  3756. * @rmtoll PLLCFGR DIVR3EN LL_RCC_PLL3R_IsEnabled
  3757. * @retval State of bit (1 or 0).
  3758. */
  3759. __STATIC_INLINE uint32_t LL_RCC_PLL3R_IsEnabled(void)
  3760. {
  3761. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR3EN) == RCC_PLLCFGR_DIVR3EN)?1UL:0UL);
  3762. }
  3763. /**
  3764. * @brief Check if PLL3 FRACN is enabled
  3765. * @rmtoll PLLCFGR PLL3FRACEN LL_RCC_PLL3FRACN_IsEnabled
  3766. * @retval State of bit (1 or 0).
  3767. */
  3768. __STATIC_INLINE uint32_t LL_RCC_PLL3FRACN_IsEnabled(void)
  3769. {
  3770. return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL3FRACEN) == RCC_PLLCFGR_PLL3FRACEN)?1UL:0UL);
  3771. }
  3772. /**
  3773. * @brief Disable PLL3P
  3774. * @note This API shall be called only when PLL3 is disabled.
  3775. * @rmtoll PLLCFGR DIVP2EN LL_RCC_PLL3P_Disable
  3776. * @retval None
  3777. */
  3778. __STATIC_INLINE void LL_RCC_PLL3P_Disable(void)
  3779. {
  3780. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP3EN);
  3781. }
  3782. /**
  3783. * @brief Disable PLL3Q
  3784. * @note This API shall be called only when PLL3 is disabled.
  3785. * @rmtoll PLLCFGR DIVQ3EN LL_RCC_PLL3Q_Disable
  3786. * @retval None
  3787. */
  3788. __STATIC_INLINE void LL_RCC_PLL3Q_Disable(void)
  3789. {
  3790. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ3EN);
  3791. }
  3792. /**
  3793. * @brief Disable PLL3R
  3794. * @note This API shall be called only when PLL3 is disabled.
  3795. * @rmtoll PLLCFGR DIVR3EN LL_RCC_PLL3R_Disable
  3796. * @retval None
  3797. */
  3798. __STATIC_INLINE void LL_RCC_PLL3R_Disable(void)
  3799. {
  3800. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVR3EN);
  3801. }
  3802. /**
  3803. * @brief Disable PLL3 FRACN
  3804. * @rmtoll PLLCFGR PLL3FRACEN LL_RCC_PLL3FRACN_Enable
  3805. * @retval None
  3806. */
  3807. __STATIC_INLINE void LL_RCC_PLL3FRACN_Disable(void)
  3808. {
  3809. CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL3FRACEN);
  3810. }
  3811. /**
  3812. * @brief Set PLL3 VCO OutputRange
  3813. * @note This API shall be called only when PLL3 is disabled.
  3814. * @rmtoll PLLCFGR PLL3VCOSEL LL_RCC_PLL3_SetVCOOuputRange
  3815. * @param VCORange This parameter can be one of the following values:
  3816. * @arg @ref LL_RCC_PLLVCORANGE_WIDE
  3817. * @arg @ref LL_RCC_PLLVCORANGE_MEDIUM
  3818. * @retval None
  3819. */
  3820. __STATIC_INLINE void LL_RCC_PLL3_SetVCOOutputRange(uint32_t VCORange)
  3821. {
  3822. MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL3VCOSEL, VCORange << RCC_PLLCFGR_PLL3VCOSEL_Pos);
  3823. }
  3824. /**
  3825. * @brief Set PLL3 VCO Input Range
  3826. * @note This API shall be called only when PLL3 is disabled.
  3827. * @rmtoll PLLCFGR PLL3RGE LL_RCC_PLL3_SetVCOInputRange
  3828. * @param InputRange This parameter can be one of the following values:
  3829. * @arg @ref LL_RCC_PLLINPUTRANGE_1_2
  3830. * @arg @ref LL_RCC_PLLINPUTRANGE_2_4
  3831. * @arg @ref LL_RCC_PLLINPUTRANGE_4_8
  3832. * @arg @ref LL_RCC_PLLINPUTRANGE_8_16
  3833. * @retval None
  3834. */
  3835. __STATIC_INLINE void LL_RCC_PLL3_SetVCOInputRange(uint32_t InputRange)
  3836. {
  3837. MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL3RGE, InputRange << RCC_PLLCFGR_PLL3RGE_Pos);
  3838. }
  3839. /**
  3840. * @brief Get PLL3 N Coefficient
  3841. * @rmtoll PLL3DIVR N3 LL_RCC_PLL3_GetN
  3842. * @retval A value between 4 and 512
  3843. */
  3844. __STATIC_INLINE uint32_t LL_RCC_PLL3_GetN(void)
  3845. {
  3846. return (uint32_t)((READ_BIT(RCC->PLL3DIVR, RCC_PLL3DIVR_N3) >> RCC_PLL3DIVR_N3_Pos) + 1UL);
  3847. }
  3848. /**
  3849. * @brief Get PLL3 M Coefficient
  3850. * @rmtoll PLLCKSELR DIVM3 LL_RCC_PLL3_GetM
  3851. * @retval A value between 0 and 63
  3852. */
  3853. __STATIC_INLINE uint32_t LL_RCC_PLL3_GetM(void)
  3854. {
  3855. return (uint32_t)(READ_BIT(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM3) >> RCC_PLLCKSELR_DIVM3_Pos);
  3856. }
  3857. /**
  3858. * @brief Get PLL3 P Coefficient
  3859. * @rmtoll PLL3DIVR P3 LL_RCC_PLL3_GetP
  3860. * @retval A value between 1 and 128
  3861. */
  3862. __STATIC_INLINE uint32_t LL_RCC_PLL3_GetP(void)
  3863. {
  3864. return (uint32_t)((READ_BIT(RCC->PLL3DIVR, RCC_PLL3DIVR_P3) >> RCC_PLL3DIVR_P3_Pos) + 1UL);
  3865. }
  3866. /**
  3867. * @brief Get PLL3 Q Coefficient
  3868. * @rmtoll PLL3DIVR Q3 LL_RCC_PLL3_GetQ
  3869. * @retval A value between 1 and 128
  3870. */
  3871. __STATIC_INLINE uint32_t LL_RCC_PLL3_GetQ(void)
  3872. {
  3873. return (uint32_t)((READ_BIT(RCC->PLL3DIVR, RCC_PLL3DIVR_Q3) >> RCC_PLL3DIVR_Q3_Pos) + 1UL);
  3874. }
  3875. /**
  3876. * @brief Get PLL3 R Coefficient
  3877. * @rmtoll PLL3DIVR R3 LL_RCC_PLL3_GetR
  3878. * @retval A value between 1 and 128
  3879. */
  3880. __STATIC_INLINE uint32_t LL_RCC_PLL3_GetR(void)
  3881. {
  3882. return (uint32_t)((READ_BIT(RCC->PLL3DIVR, RCC_PLL3DIVR_R3) >> RCC_PLL3DIVR_R3_Pos) + 1UL);
  3883. }
  3884. /**
  3885. * @brief Get PLL3 FRACN Coefficient
  3886. * @rmtoll PLL3FRACR FRACN3 LL_RCC_PLL3_GetFRACN
  3887. * @retval A value between 0 and 8191 (0x1FFF)
  3888. */
  3889. __STATIC_INLINE uint32_t LL_RCC_PLL3_GetFRACN(void)
  3890. {
  3891. return (uint32_t)(READ_BIT(RCC->PLL3FRACR, RCC_PLL3FRACR_FRACN3) >> RCC_PLL3FRACR_FRACN3_Pos);
  3892. }
  3893. /**
  3894. * @brief Set PLL3 N Coefficient
  3895. * @note This API shall be called only when PLL3 is disabled.
  3896. * @rmtoll PLL3DIVR N3 LL_RCC_PLL3_SetN
  3897. * @param N parameter can be a value between 4 and 512
  3898. */
  3899. __STATIC_INLINE void LL_RCC_PLL3_SetN(uint32_t N)
  3900. {
  3901. MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_N3, (N-1UL) << RCC_PLL3DIVR_N3_Pos);
  3902. }
  3903. /**
  3904. * @brief Set PLL3 M Coefficient
  3905. * @note This API shall be called only when PLL3 is disabled.
  3906. * @rmtoll PLLCKSELR DIVM3 LL_RCC_PLL3_SetM
  3907. * @param M parameter can be a value between 0 and 63
  3908. */
  3909. __STATIC_INLINE void LL_RCC_PLL3_SetM(uint32_t M)
  3910. {
  3911. MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM3, M << RCC_PLLCKSELR_DIVM3_Pos);
  3912. }
  3913. /**
  3914. * @brief Set PLL3 P Coefficient
  3915. * @note This API shall be called only when PLL3 is disabled.
  3916. * @rmtoll PLL3DIVR P3 LL_RCC_PLL3_SetP
  3917. * @param P parameter can be a value between 1 and 128
  3918. */
  3919. __STATIC_INLINE void LL_RCC_PLL3_SetP(uint32_t P)
  3920. {
  3921. MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_P3, (P-1UL) << RCC_PLL3DIVR_P3_Pos);
  3922. }
  3923. /**
  3924. * @brief Set PLL3 Q Coefficient
  3925. * @note This API shall be called only when PLL3 is disabled.
  3926. * @rmtoll PLL3DIVR Q3 LL_RCC_PLL3_SetQ
  3927. * @param Q parameter can be a value between 1 and 128
  3928. */
  3929. __STATIC_INLINE void LL_RCC_PLL3_SetQ(uint32_t Q)
  3930. {
  3931. MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_Q3, (Q-1UL) << RCC_PLL3DIVR_Q3_Pos);
  3932. }
  3933. /**
  3934. * @brief Set PLL3 R Coefficient
  3935. * @note This API shall be called only when PLL3 is disabled.
  3936. * @rmtoll PLL3DIVR R3 LL_RCC_PLL3_SetR
  3937. * @param R parameter can be a value between 1 and 128
  3938. */
  3939. __STATIC_INLINE void LL_RCC_PLL3_SetR(uint32_t R)
  3940. {
  3941. MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_R3, (R-1UL) << RCC_PLL3DIVR_R3_Pos);
  3942. }
  3943. /**
  3944. * @brief Set PLL3 FRACN Coefficient
  3945. * @rmtoll PLL3FRACR FRACN3 LL_RCC_PLL3_SetFRACN
  3946. * @param FRACN parameter can be a value between 0 and 8191 (0x1FFF)
  3947. */
  3948. __STATIC_INLINE void LL_RCC_PLL3_SetFRACN(uint32_t FRACN)
  3949. {
  3950. MODIFY_REG(RCC->PLL3FRACR, RCC_PLL3FRACR_FRACN3, FRACN << RCC_PLL3FRACR_FRACN3_Pos);
  3951. }
  3952. /**
  3953. * @}
  3954. */
  3955. /** @defgroup RCC_LL_EF_FLAG_Management FLAG Management
  3956. * @{
  3957. */
  3958. /**
  3959. * @brief Clear LSI ready interrupt flag
  3960. * @rmtoll CICR LSIRDYC LL_RCC_ClearFlag_LSIRDY
  3961. * @retval None
  3962. */
  3963. __STATIC_INLINE void LL_RCC_ClearFlag_LSIRDY(void)
  3964. {
  3965. SET_BIT(RCC->CICR, RCC_CICR_LSIRDYC);
  3966. }
  3967. /**
  3968. * @brief Clear LSE ready interrupt flag
  3969. * @rmtoll CICR LSERDYC LL_RCC_ClearFlag_LSERDY
  3970. * @retval None
  3971. */
  3972. __STATIC_INLINE void LL_RCC_ClearFlag_LSERDY(void)
  3973. {
  3974. SET_BIT(RCC->CICR, RCC_CICR_LSERDYC);
  3975. }
  3976. /**
  3977. * @brief Clear HSI ready interrupt flag
  3978. * @rmtoll CICR HSIRDYC LL_RCC_ClearFlag_HSIRDY
  3979. * @retval None
  3980. */
  3981. __STATIC_INLINE void LL_RCC_ClearFlag_HSIRDY(void)
  3982. {
  3983. SET_BIT(RCC->CICR, RCC_CICR_HSIRDYC);
  3984. }
  3985. /**
  3986. * @brief Clear HSE ready interrupt flag
  3987. * @rmtoll CICR HSERDYC LL_RCC_ClearFlag_HSERDY
  3988. * @retval None
  3989. */
  3990. __STATIC_INLINE void LL_RCC_ClearFlag_HSERDY(void)
  3991. {
  3992. SET_BIT(RCC->CICR, RCC_CICR_HSERDYC);
  3993. }
  3994. /**
  3995. * @brief Clear CSI ready interrupt flag
  3996. * @rmtoll CICR CSIRDYC LL_RCC_ClearFlag_CSIRDY
  3997. * @retval None
  3998. */
  3999. __STATIC_INLINE void LL_RCC_ClearFlag_CSIRDY(void)
  4000. {
  4001. SET_BIT(RCC->CICR, RCC_CICR_CSIRDYC);
  4002. }
  4003. /**
  4004. * @brief Clear HSI48 ready interrupt flag
  4005. * @rmtoll CICR HSI48RDYC LL_RCC_ClearFlag_HSI48RDY
  4006. * @retval None
  4007. */
  4008. __STATIC_INLINE void LL_RCC_ClearFlag_HSI48RDY(void)
  4009. {
  4010. SET_BIT(RCC->CICR, RCC_CICR_HSI48RDYC);
  4011. }
  4012. /**
  4013. * @brief Clear PLL1 ready interrupt flag
  4014. * @rmtoll CICR PLL1RDYC LL_RCC_ClearFlag_PLL1RDY
  4015. * @retval None
  4016. */
  4017. __STATIC_INLINE void LL_RCC_ClearFlag_PLL1RDY(void)
  4018. {
  4019. SET_BIT(RCC->CICR, RCC_CICR_PLLRDYC);
  4020. }
  4021. /**
  4022. * @brief Clear PLL2 ready interrupt flag
  4023. * @rmtoll CICR PLL2RDYC LL_RCC_ClearFlag_PLL2RDY
  4024. * @retval None
  4025. */
  4026. __STATIC_INLINE void LL_RCC_ClearFlag_PLL2RDY(void)
  4027. {
  4028. SET_BIT(RCC->CICR, RCC_CICR_PLL2RDYC);
  4029. }
  4030. /**
  4031. * @brief Clear PLL3 ready interrupt flag
  4032. * @rmtoll CICR PLL3RDYC LL_RCC_ClearFlag_PLL3RDY
  4033. * @retval None
  4034. */
  4035. __STATIC_INLINE void LL_RCC_ClearFlag_PLL3RDY(void)
  4036. {
  4037. SET_BIT(RCC->CICR, RCC_CICR_PLL3RDYC);
  4038. }
  4039. /**
  4040. * @brief Clear LSE Clock security system interrupt flag
  4041. * @rmtoll CICR LSECSSC LL_RCC_ClearFlag_LSECSS
  4042. * @retval None
  4043. */
  4044. __STATIC_INLINE void LL_RCC_ClearFlag_LSECSS(void)
  4045. {
  4046. SET_BIT(RCC->CICR, RCC_CICR_LSECSSC);
  4047. }
  4048. /**
  4049. * @brief Clear HSE Clock security system interrupt flag
  4050. * @rmtoll CICR HSECSSC LL_RCC_ClearFlag_HSECSS
  4051. * @retval None
  4052. */
  4053. __STATIC_INLINE void LL_RCC_ClearFlag_HSECSS(void)
  4054. {
  4055. SET_BIT(RCC->CICR, RCC_CICR_HSECSSC);
  4056. }
  4057. /**
  4058. * @brief Check if LSI ready interrupt occurred or not
  4059. * @rmtoll CIFR LSIRDYF LL_RCC_IsActiveFlag_LSIRDY
  4060. * @retval State of bit (1 or 0).
  4061. */
  4062. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSIRDY(void)
  4063. {
  4064. return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSIRDYF) == (RCC_CIFR_LSIRDYF))?1UL:0UL);
  4065. }
  4066. /**
  4067. * @brief Check if LSE ready interrupt occurred or not
  4068. * @rmtoll CIFR LSERDYF LL_RCC_IsActiveFlag_LSERDY
  4069. * @retval State of bit (1 or 0).
  4070. */
  4071. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSERDY(void)
  4072. {
  4073. return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSERDYF) == (RCC_CIFR_LSERDYF))?1UL:0UL);
  4074. }
  4075. /**
  4076. * @brief Check if HSI ready interrupt occurred or not
  4077. * @rmtoll CIFR HSIRDYF LL_RCC_IsActiveFlag_HSIRDY
  4078. * @retval State of bit (1 or 0).
  4079. */
  4080. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSIRDY(void)
  4081. {
  4082. return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSIRDYF) == (RCC_CIFR_HSIRDYF))?1UL:0UL);
  4083. }
  4084. /**
  4085. * @brief Check if HSE ready interrupt occurred or not
  4086. * @rmtoll CIFR HSERDYF LL_RCC_IsActiveFlag_HSERDY
  4087. * @retval State of bit (1 or 0).
  4088. */
  4089. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSERDY(void)
  4090. {
  4091. return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSERDYF) == (RCC_CIFR_HSERDYF))?1UL:0UL);
  4092. }
  4093. /**
  4094. * @brief Check if CSI ready interrupt occurred or not
  4095. * @rmtoll CIFR CSIRDYF LL_RCC_IsActiveFlag_CSIRDY
  4096. * @retval State of bit (1 or 0).
  4097. */
  4098. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_CSIRDY(void)
  4099. {
  4100. return ((READ_BIT(RCC->CIFR, RCC_CIFR_CSIRDYF) == (RCC_CIFR_CSIRDYF))?1UL:0UL);
  4101. }
  4102. /**
  4103. * @brief Check if HSI48 ready interrupt occurred or not
  4104. * @rmtoll CIFR HSI48RDYF LL_RCC_IsActiveFlag_HSI48RDY
  4105. * @retval State of bit (1 or 0).
  4106. */
  4107. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSI48RDY(void)
  4108. {
  4109. return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSI48RDYF) == (RCC_CIFR_HSI48RDYF))?1UL:0UL);
  4110. }
  4111. /**
  4112. * @brief Check if PLL1 ready interrupt occurred or not
  4113. * @rmtoll CIFR PLLRDYF LL_RCC_IsActiveFlag_PLL1RDY
  4114. * @retval State of bit (1 or 0).
  4115. */
  4116. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLL1RDY(void)
  4117. {
  4118. return ((READ_BIT(RCC->CIFR, RCC_CIFR_PLLRDYF) == (RCC_CIFR_PLLRDYF))?1UL:0UL);
  4119. }
  4120. /**
  4121. * @brief Check if PLL2 ready interrupt occurred or not
  4122. * @rmtoll CIFR PLL2RDYF LL_RCC_IsActiveFlag_PLL2RDY
  4123. * @retval State of bit (1 or 0).
  4124. */
  4125. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLL2RDY(void)
  4126. {
  4127. return ((READ_BIT(RCC->CIFR, RCC_CIFR_PLL2RDYF) == (RCC_CIFR_PLL2RDYF))?1UL:0UL);
  4128. }
  4129. /**
  4130. * @brief Check if PLL3 ready interrupt occurred or not
  4131. * @rmtoll CIFR PLL3RDYF LL_RCC_IsActiveFlag_PLL3RDY
  4132. * @retval State of bit (1 or 0).
  4133. */
  4134. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLL3RDY(void)
  4135. {
  4136. return ((READ_BIT(RCC->CIFR, RCC_CIFR_PLL3RDYF) == (RCC_CIFR_PLL3RDYF))?1UL:0UL);
  4137. }
  4138. /**
  4139. * @brief Check if LSE Clock security system interrupt occurred or not
  4140. * @rmtoll CIFR LSECSSF LL_RCC_IsActiveFlag_LSECSS
  4141. * @retval State of bit (1 or 0).
  4142. */
  4143. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSECSS(void)
  4144. {
  4145. return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSECSSF) == (RCC_CIFR_LSECSSF))?1UL:0UL);
  4146. }
  4147. /**
  4148. * @brief Check if HSE Clock security system interrupt occurred or not
  4149. * @rmtoll CIFR HSECSSF LL_RCC_IsActiveFlag_HSECSS
  4150. * @retval State of bit (1 or 0).
  4151. */
  4152. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSECSS(void)
  4153. {
  4154. return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSECSSF) == (RCC_CIFR_HSECSSF))?1UL:0UL);
  4155. }
  4156. /**
  4157. * @brief Check if RCC flag Low Power D1 reset is set or not.
  4158. * @rmtoll RSR LPWRRSTF LL_RCC_IsActiveFlag_LPWRRST (*)\n
  4159. * RSR LPWR1RSTF LL_RCC_IsActiveFlag_LPWRRST (**)
  4160. *
  4161. * (*) Only available for single core devices
  4162. * (**) Only available for Dual core devices
  4163. * @retval State of bit (1 or 0).
  4164. */
  4165. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LPWRRST(void)
  4166. {
  4167. #if defined(DUAL_CORE)
  4168. return ((READ_BIT(RCC->RSR, RCC_RSR_LPWR1RSTF) == (RCC_RSR_LPWR1RSTF))?1UL:0UL);
  4169. #else
  4170. return ((READ_BIT(RCC->RSR, RCC_RSR_LPWRRSTF) == (RCC_RSR_LPWRRSTF))?1UL:0UL);
  4171. #endif /*DUAL_CORE*/
  4172. }
  4173. #if defined(DUAL_CORE)
  4174. /**
  4175. * @brief Check if RCC flag Low Power D2 reset is set or not.
  4176. * @rmtoll RSR LPWR2RSTF LL_RCC_IsActiveFlag_LPWR2RST
  4177. * @retval State of bit (1 or 0).
  4178. */
  4179. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LPWR2RST(void)
  4180. {
  4181. return ((READ_BIT(RCC->RSR, RCC_RSR_LPWR2RSTF) == (RCC_RSR_LPWR2RSTF))?1UL:0UL);
  4182. }
  4183. #endif /*DUAL_CORE*/
  4184. /**
  4185. * @brief Check if RCC flag Window Watchdog 1 reset is set or not.
  4186. * @rmtoll RSR WWDG1RSTF LL_RCC_IsActiveFlag_WWDG1RST
  4187. * @retval State of bit (1 or 0).
  4188. */
  4189. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_WWDG1RST(void)
  4190. {
  4191. return ((READ_BIT(RCC->RSR, RCC_RSR_WWDG1RSTF) == (RCC_RSR_WWDG1RSTF))?1UL:0UL);
  4192. }
  4193. #if defined(DUAL_CORE)
  4194. /**
  4195. * @brief Check if RCC flag Window Watchdog 2 reset is set or not.
  4196. * @rmtoll RSR WWDG2RSTF LL_RCC_IsActiveFlag_WWDG2RST
  4197. * @retval State of bit (1 or 0).
  4198. */
  4199. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_WWDG2RST(void)
  4200. {
  4201. return ((READ_BIT(RCC->RSR, RCC_RSR_WWDG2RSTF) == (RCC_RSR_WWDG2RSTF))?1UL:0UL);
  4202. }
  4203. #endif /*DUAL_CORE*/
  4204. /**
  4205. * @brief Check if RCC flag Independent Watchdog 1 reset is set or not.
  4206. * @rmtoll RSR IWDG1RSTF LL_RCC_IsActiveFlag_IWDG1RST
  4207. * @retval State of bit (1 or 0).
  4208. */
  4209. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_IWDG1RST(void)
  4210. {
  4211. return ((READ_BIT(RCC->RSR, RCC_RSR_IWDG1RSTF) == (RCC_RSR_IWDG1RSTF))?1UL:0UL);
  4212. }
  4213. #if defined(DUAL_CORE)
  4214. /**
  4215. * @brief Check if RCC flag Independent Watchdog 2 reset is set or not.
  4216. * @rmtoll RSR IWDG2RSTF LL_RCC_IsActiveFlag_IWDG2RST
  4217. * @retval State of bit (1 or 0).
  4218. */
  4219. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_IWDG2RST(void)
  4220. {
  4221. return ((READ_BIT(RCC->RSR, RCC_RSR_IWDG2RSTF) == (RCC_RSR_IWDG2RSTF))?1UL:0UL);
  4222. }
  4223. #endif /*DUAL_CORE*/
  4224. /**
  4225. * @brief Check if RCC flag Software reset is set or not.
  4226. * @rmtoll RSR SFTRSTF LL_RCC_IsActiveFlag_SFTRST (*)\n
  4227. * RSR SFT1RSTF LL_RCC_IsActiveFlag_SFTRST (**)
  4228. *
  4229. * (*) Only available for single core devices
  4230. * (**) Only available for Dual core devices
  4231. * @retval State of bit (1 or 0).
  4232. */
  4233. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SFTRST(void)
  4234. {
  4235. #if defined(DUAL_CORE)
  4236. return ((READ_BIT(RCC->RSR, RCC_RSR_SFT1RSTF) == (RCC_RSR_SFT1RSTF))?1UL:0UL);
  4237. #else
  4238. return ((READ_BIT(RCC->RSR, RCC_RSR_SFTRSTF) == (RCC_RSR_SFTRSTF))?1UL:0UL);
  4239. #endif /*DUAL_CORE*/
  4240. }
  4241. #if defined(DUAL_CORE)
  4242. /**
  4243. * @brief Check if RCC flag Software reset is set or not.
  4244. * @rmtoll RSR SFT2RSTF LL_RCC_IsActiveFlag_SFT2RST
  4245. * @retval State of bit (1 or 0).
  4246. */
  4247. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SFT2RST(void)
  4248. {
  4249. return ((READ_BIT(RCC->RSR, RCC_RSR_SFT2RSTF) == (RCC_RSR_SFT2RSTF))?1UL:0UL);
  4250. }
  4251. #endif /*DUAL_CORE*/
  4252. /**
  4253. * @brief Check if RCC flag POR/PDR reset is set or not.
  4254. * @rmtoll RSR PORRSTF LL_RCC_IsActiveFlag_PORRST
  4255. * @retval State of bit (1 or 0).
  4256. */
  4257. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PORRST(void)
  4258. {
  4259. return ((READ_BIT(RCC->RSR, RCC_RSR_PORRSTF) == (RCC_RSR_PORRSTF))?1UL:0UL);
  4260. }
  4261. /**
  4262. * @brief Check if RCC flag Pin reset is set or not.
  4263. * @rmtoll RSR PINRSTF LL_RCC_IsActiveFlag_PINRST
  4264. * @retval State of bit (1 or 0).
  4265. */
  4266. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PINRST(void)
  4267. {
  4268. return ((READ_BIT(RCC->RSR, RCC_RSR_PINRSTF) == (RCC_RSR_PINRSTF))?1UL:0UL);
  4269. }
  4270. /**
  4271. * @brief Check if RCC flag BOR reset is set or not.
  4272. * @rmtoll RSR BORRSTF LL_RCC_IsActiveFlag_BORRST
  4273. * @retval State of bit (1 or 0).
  4274. */
  4275. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_BORRST(void)
  4276. {
  4277. return ((READ_BIT(RCC->RSR, RCC_RSR_BORRSTF) == (RCC_RSR_BORRSTF))?1UL:0UL);
  4278. }
  4279. /**
  4280. * @brief Check if RCC flag D1 reset is set or not.
  4281. * @rmtoll RSR D1RSTF LL_RCC_IsActiveFlag_D1RST
  4282. * @retval State of bit (1 or 0).
  4283. */
  4284. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_D1RST(void)
  4285. {
  4286. return ((READ_BIT(RCC->RSR, RCC_RSR_D1RSTF) == (RCC_RSR_D1RSTF))?1UL:0UL);
  4287. }
  4288. /**
  4289. * @brief Check if RCC flag D2 reset is set or not.
  4290. * @rmtoll RSR D2RSTF LL_RCC_IsActiveFlag_D2RST
  4291. * @retval State of bit (1 or 0).
  4292. */
  4293. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_D2RST(void)
  4294. {
  4295. return ((READ_BIT(RCC->RSR, RCC_RSR_D2RSTF) == (RCC_RSR_D2RSTF))?1UL:0UL);
  4296. }
  4297. /**
  4298. * @brief Check if RCC flag CPU reset is set or not.
  4299. * @rmtoll RSR CPURSTF LL_RCC_IsActiveFlag_CPURST (*)\n
  4300. * RSR C1RSTF LL_RCC_IsActiveFlag_CPURST (**)
  4301. *
  4302. * (*) Only available for single core devices
  4303. * (**) Only available for Dual core devices
  4304. * @retval State of bit (1 or 0).
  4305. */
  4306. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_CPURST(void)
  4307. {
  4308. #if defined(DUAL_CORE)
  4309. return ((READ_BIT(RCC->RSR, RCC_RSR_C1RSTF) == (RCC_RSR_C1RSTF))?1UL:0UL);
  4310. #else
  4311. return ((READ_BIT(RCC->RSR, RCC_RSR_CPURSTF) == (RCC_RSR_CPURSTF))?1UL:0UL);
  4312. #endif/*DUAL_CORE*/
  4313. }
  4314. #if defined(DUAL_CORE)
  4315. /**
  4316. * @brief Check if RCC flag CPU2 reset is set or not.
  4317. * @rmtoll RSR C2RSTF LL_RCC_IsActiveFlag_CPU2RST
  4318. * @retval State of bit (1 or 0).
  4319. */
  4320. __STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_CPU2RST(void)
  4321. {
  4322. return ((READ_BIT(RCC->RSR, RCC_RSR_C2RSTF) == (RCC_RSR_C2RSTF))?1UL:0UL);
  4323. }
  4324. #endif /*DUAL_CORE*/
  4325. /**
  4326. * @brief Set RMVF bit to clear all reset flags.
  4327. * @rmtoll RSR RMVF LL_RCC_ClearResetFlags
  4328. * @retval None
  4329. */
  4330. __STATIC_INLINE void LL_RCC_ClearResetFlags(void)
  4331. {
  4332. SET_BIT(RCC->RSR, RCC_RSR_RMVF);
  4333. }
  4334. #if defined(DUAL_CORE)
  4335. /**
  4336. * @brief Check if RCC_C1 flag Low Power D1 reset is set or not.
  4337. * @rmtoll RSR LPWR1RSTF LL_C1_RCC_IsActiveFlag_LPWRRST
  4338. * @retval State of bit (1 or 0).
  4339. */
  4340. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_LPWRRST(void)
  4341. {
  4342. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_LPWR1RSTF) == (RCC_RSR_LPWR1RSTF))?1UL:0UL);
  4343. }
  4344. /**
  4345. * @brief Check if RCC_C1 flag Low Power D2 reset is set or not.
  4346. * @rmtoll RSR LPWR2RSTF LL_C1_RCC_IsActiveFlag_LPWR2RST
  4347. * @retval State of bit (1 or 0).
  4348. */
  4349. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_LPWR2RST(void)
  4350. {
  4351. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_LPWR2RSTF) == (RCC_RSR_LPWR2RSTF))?1UL:0UL);
  4352. }
  4353. /**
  4354. * @brief Check if RCC_C1 flag Window Watchdog 1 reset is set or not.
  4355. * @rmtoll RSR WWDG1RSTF LL_C1_RCC_IsActiveFlag_WWDG1RST
  4356. * @retval State of bit (1 or 0).
  4357. */
  4358. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_WWDG1RST(void)
  4359. {
  4360. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_WWDG1RSTF) == (RCC_RSR_WWDG1RSTF))?1UL:0UL);
  4361. }
  4362. /**
  4363. * @brief Check if RCC_C1 flag Window Watchdog 2 reset is set or not.
  4364. * @rmtoll RSR WWDG2RSTF LL_C1_RCC_IsActiveFlag_WWDG2RST
  4365. * @retval State of bit (1 or 0).
  4366. */
  4367. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_WWDG2RST(void)
  4368. {
  4369. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_WWDG2RSTF) == (RCC_RSR_WWDG2RSTF))?1UL:0UL);
  4370. }
  4371. /**
  4372. * @brief Check if RCC_C1 flag Independent Watchdog 1 reset is set or not.
  4373. * @rmtoll RSR IWDG1RSTF LL_C1_RCC_IsActiveFlag_IWDG1RST
  4374. * @retval State of bit (1 or 0).
  4375. */
  4376. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_IWDG1RST(void)
  4377. {
  4378. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_IWDG1RSTF) == (RCC_RSR_IWDG1RSTF))?1UL:0UL);
  4379. }
  4380. /**
  4381. * @brief Check if RCC_C1 flag Independent Watchdog 2 reset is set or not.
  4382. * @rmtoll RSR IWDG2RSTF LL_C1_RCC_IsActiveFlag_IWDG2RST
  4383. * @retval State of bit (1 or 0).
  4384. */
  4385. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_IWDG2RST(void)
  4386. {
  4387. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_IWDG2RSTF) == (RCC_RSR_IWDG2RSTF))?1UL:0UL);
  4388. }
  4389. /**
  4390. * @brief Check if RCC_C1 flag Software reset is set or not.
  4391. * @rmtoll RSR SFT1RSTF LL_C1_RCC_IsActiveFlag_SFTRST
  4392. * @retval State of bit (1 or 0).
  4393. */
  4394. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_SFTRST(void)
  4395. {
  4396. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_SFT1RSTF) == (RCC_RSR_SFT1RSTF))?1UL:0UL);
  4397. }
  4398. /**
  4399. * @brief Check if RCC_C1 flag Software reset is set or not.
  4400. * @rmtoll RSR SFT2RSTF LL_C1_RCC_IsActiveFlag_SFT2RST
  4401. * @retval State of bit (1 or 0).
  4402. */
  4403. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_SFT2RST(void)
  4404. {
  4405. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_SFT2RSTF) == (RCC_RSR_SFT2RSTF))?1UL:0UL);
  4406. }
  4407. /**
  4408. * @brief Check if RCC_C1 flag POR/PDR reset is set or not.
  4409. * @rmtoll RSR PORRSTF LL_C1_RCC_IsActiveFlag_PORRST
  4410. * @retval State of bit (1 or 0).
  4411. */
  4412. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_PORRST(void)
  4413. {
  4414. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_PORRSTF) == (RCC_RSR_PORRSTF))?1UL:0UL);
  4415. }
  4416. /**
  4417. * @brief Check if RCC_C1 flag Pin reset is set or not.
  4418. * @rmtoll RSR PINRSTF LL_C1_RCC_IsActiveFlag_PINRST
  4419. * @retval State of bit (1 or 0).
  4420. */
  4421. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_PINRST(void)
  4422. {
  4423. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_PINRSTF) == (RCC_RSR_PINRSTF))?1UL:0UL);
  4424. }
  4425. /**
  4426. * @brief Check if RCC_C1 flag BOR reset is set or not.
  4427. * @rmtoll RSR BORRSTF LL_C1_RCC_IsActiveFlag_BORRST
  4428. * @retval State of bit (1 or 0).
  4429. */
  4430. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_BORRST(void)
  4431. {
  4432. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_BORRSTF) == (RCC_RSR_BORRSTF))?1UL:0UL);
  4433. }
  4434. /**
  4435. * @brief Check if RCC_C1 flag D1 reset is set or not.
  4436. * @rmtoll RSR D1RSTF LL_C1_RCC_IsActiveFlag_D1RST
  4437. * @retval State of bit (1 or 0).
  4438. */
  4439. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_D1RST(void)
  4440. {
  4441. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_D1RSTF) == (RCC_RSR_D1RSTF))?1UL:0UL);
  4442. }
  4443. /**
  4444. * @brief Check if RCC_C1 flag D2 reset is set or not.
  4445. * @rmtoll RSR D2RSTF LL_C1_RCC_IsActiveFlag_D2RST
  4446. * @retval State of bit (1 or 0).
  4447. */
  4448. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_D2RST(void)
  4449. {
  4450. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_D2RSTF) == (RCC_RSR_D2RSTF))?1UL:0UL);
  4451. }
  4452. /**
  4453. * @brief Check if RCC_C1 flag CPU reset is set or not.
  4454. * @rmtoll RSR C1RSTF LL_C1_RCC_IsActiveFlag_CPURST
  4455. * @retval State of bit (1 or 0).
  4456. */
  4457. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_CPURST(void)
  4458. {
  4459. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_C1RSTF) == (RCC_RSR_C1RSTF))?1UL:0UL);
  4460. }
  4461. /**
  4462. * @brief Check if RCC_C1 flag CPU2 reset is set or not.
  4463. * @rmtoll RSR C2RSTF LL_C1_RCC_IsActiveFlag_CPU2RST
  4464. * @retval State of bit (1 or 0).
  4465. */
  4466. __STATIC_INLINE uint32_t LL_C1_RCC_IsActiveFlag_CPU2RST(void)
  4467. {
  4468. return ((READ_BIT(RCC_C1->RSR, RCC_RSR_C2RSTF) == (RCC_RSR_C2RSTF))?1UL:0UL);
  4469. }
  4470. /**
  4471. * @brief Set RMVF bit to clear the reset flags.
  4472. * @rmtoll RSR RMVF LL_C1_RCC_ClearResetFlags
  4473. * @retval None
  4474. */
  4475. __STATIC_INLINE void LL_C1_RCC_ClearResetFlags(void)
  4476. {
  4477. SET_BIT(RCC_C1->RSR, RCC_RSR_RMVF);
  4478. }
  4479. /**
  4480. * @brief Check if RCC_C2 flag Low Power D1 reset is set or not.
  4481. * @rmtoll RSR LPWR1RSTF LL_C2_RCC_IsActiveFlag_LPWRRST
  4482. * @retval State of bit (1 or 0).
  4483. */
  4484. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_LPWRRST(void)
  4485. {
  4486. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_LPWR1RSTF) == (RCC_RSR_LPWR1RSTF))?1UL:0UL);
  4487. }
  4488. /**
  4489. * @brief Check if RCC_C2 flag Low Power D2 reset is set or not.
  4490. * @rmtoll RSR LPWR2RSTF LL_C2_RCC_IsActiveFlag_LPWR2RST
  4491. * @retval State of bit (1 or 0).
  4492. */
  4493. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_LPWR2RST(void)
  4494. {
  4495. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_LPWR2RSTF) == (RCC_RSR_LPWR2RSTF))?1UL:0UL);
  4496. }
  4497. /**
  4498. * @brief Check if RCC_C2 flag Window Watchdog 1 reset is set or not.
  4499. * @rmtoll RSR WWDG1RSTF LL_C2_RCC_IsActiveFlag_WWDG1RST
  4500. * @retval State of bit (1 or 0).
  4501. */
  4502. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_WWDG1RST(void)
  4503. {
  4504. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_WWDG1RSTF) == (RCC_RSR_WWDG1RSTF))?1UL:0UL);
  4505. }
  4506. /**
  4507. * @brief Check if RCC_C2 flag Window Watchdog 2 reset is set or not.
  4508. * @rmtoll RSR WWDG2RSTF LL_C2_RCC_IsActiveFlag_WWDG2RST
  4509. * @retval State of bit (1 or 0).
  4510. */
  4511. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_WWDG2RST(void)
  4512. {
  4513. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_WWDG2RSTF) == (RCC_RSR_WWDG2RSTF))?1UL:0UL);
  4514. }
  4515. /**
  4516. * @brief Check if RCC_C2 flag Independent Watchdog 1 reset is set or not.
  4517. * @rmtoll RSR IWDG1RSTF LL_C2_RCC_IsActiveFlag_IWDG1RST
  4518. * @retval State of bit (1 or 0).
  4519. */
  4520. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_IWDG1RST(void)
  4521. {
  4522. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_IWDG1RSTF) == (RCC_RSR_IWDG1RSTF))?1UL:0UL);
  4523. }
  4524. /**
  4525. * @brief Check if RCC_C2 flag Independent Watchdog 2 reset is set or not.
  4526. * @rmtoll RSR IWDG2RSTF LL_C2_RCC_IsActiveFlag_IWDG2RST
  4527. * @retval State of bit (1 or 0).
  4528. */
  4529. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_IWDG2RST(void)
  4530. {
  4531. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_IWDG2RSTF) == (RCC_RSR_IWDG2RSTF))?1UL:0UL);
  4532. }
  4533. /**
  4534. * @brief Check if RCC_C2 flag Software reset is set or not.
  4535. * @rmtoll RSR SFT1RSTF LL_C2_RCC_IsActiveFlag_SFTRST
  4536. * @retval State of bit (1 or 0).
  4537. */
  4538. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_SFTRST(void)
  4539. {
  4540. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_SFT1RSTF) == (RCC_RSR_SFT1RSTF))?1UL:0UL);
  4541. }
  4542. /**
  4543. * @brief Check if RCC_C2 flag Software reset is set or not.
  4544. * @rmtoll RSR SFT2RSTF LL_C2_RCC_IsActiveFlag_SFT2RST
  4545. * @retval State of bit (1 or 0).
  4546. */
  4547. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_SFT2RST(void)
  4548. {
  4549. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_SFT2RSTF) == (RCC_RSR_SFT2RSTF))?1UL:0UL);
  4550. }
  4551. /**
  4552. * @brief Check if RCC_C2 flag POR/PDR reset is set or not.
  4553. * @rmtoll RSR PORRSTF LL_C2_RCC_IsActiveFlag_PORRST
  4554. * @retval State of bit (1 or 0).
  4555. */
  4556. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_PORRST(void)
  4557. {
  4558. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_PORRSTF) == (RCC_RSR_PORRSTF))?1UL:0UL);
  4559. }
  4560. /**
  4561. * @brief Check if RCC_C2 flag Pin reset is set or not.
  4562. * @rmtoll RSR PINRSTF LL_C2_RCC_IsActiveFlag_PINRST
  4563. * @retval State of bit (1 or 0).
  4564. */
  4565. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_PINRST(void)
  4566. {
  4567. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_PINRSTF) == (RCC_RSR_PINRSTF))?1UL:0UL);
  4568. }
  4569. /**
  4570. * @brief Check if RCC_C2 flag BOR reset is set or not.
  4571. * @rmtoll RSR BORRSTF LL_C2_RCC_IsActiveFlag_BORRST
  4572. * @retval State of bit (1 or 0).
  4573. */
  4574. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_BORRST(void)
  4575. {
  4576. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_BORRSTF) == (RCC_RSR_BORRSTF))?1UL:0UL);
  4577. }
  4578. /**
  4579. * @brief Check if RCC_C2 flag D1 reset is set or not.
  4580. * @rmtoll RSR D1RSTF LL_C2_RCC_IsActiveFlag_D1RST
  4581. * @retval State of bit (1 or 0).
  4582. */
  4583. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_D1RST(void)
  4584. {
  4585. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_D1RSTF) == (RCC_RSR_D1RSTF))?1UL:0UL);
  4586. }
  4587. /**
  4588. * @brief Check if RCC_C2 flag D2 reset is set or not.
  4589. * @rmtoll RSR D2RSTF LL_C2_RCC_IsActiveFlag_D2RST
  4590. * @retval State of bit (1 or 0).
  4591. */
  4592. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_D2RST(void)
  4593. {
  4594. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_D2RSTF) == (RCC_RSR_D2RSTF))?1UL:0UL);
  4595. }
  4596. /**
  4597. * @brief Check if RCC_C2 flag CPU reset is set or not.
  4598. * @rmtoll RSR C1RSTF LL_C2_RCC_IsActiveFlag_CPURST
  4599. * @retval State of bit (1 or 0).
  4600. */
  4601. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_CPURST(void)
  4602. {
  4603. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_C1RSTF) == (RCC_RSR_C1RSTF))?1UL:0UL);
  4604. }
  4605. /**
  4606. * @brief Check if RCC_C2 flag CPU2 reset is set or not.
  4607. * @rmtoll RSR C2RSTF LL_C2_RCC_IsActiveFlag_CPU2RST
  4608. * @retval State of bit (1 or 0).
  4609. */
  4610. __STATIC_INLINE uint32_t LL_C2_RCC_IsActiveFlag_CPU2RST(void)
  4611. {
  4612. return ((READ_BIT(RCC_C2->RSR, RCC_RSR_C2RSTF) == (RCC_RSR_C2RSTF))?1UL:0UL);
  4613. }
  4614. /**
  4615. * @brief Set RMVF bit to clear the reset flags.
  4616. * @rmtoll RSR RMVF LL_C2_RCC_ClearResetFlags
  4617. * @retval None
  4618. */
  4619. __STATIC_INLINE void LL_C2_RCC_ClearResetFlags(void)
  4620. {
  4621. SET_BIT(RCC_C2->RSR, RCC_RSR_RMVF);
  4622. }
  4623. #endif /*DUAL_CORE*/
  4624. /**
  4625. * @}
  4626. */
  4627. /** @defgroup RCC_LL_EF_IT_Management IT Management
  4628. * @{
  4629. */
  4630. /**
  4631. * @brief Enable LSI ready interrupt
  4632. * @rmtoll CIER LSIRDYIE LL_RCC_EnableIT_LSIRDY
  4633. * @retval None
  4634. */
  4635. __STATIC_INLINE void LL_RCC_EnableIT_LSIRDY(void)
  4636. {
  4637. SET_BIT(RCC->CIER, RCC_CIER_LSIRDYIE);
  4638. }
  4639. /**
  4640. * @brief Enable LSE ready interrupt
  4641. * @rmtoll CIER LSERDYIE LL_RCC_EnableIT_LSERDY
  4642. * @retval None
  4643. */
  4644. __STATIC_INLINE void LL_RCC_EnableIT_LSERDY(void)
  4645. {
  4646. SET_BIT(RCC->CIER, RCC_CIER_LSERDYIE);
  4647. }
  4648. /**
  4649. * @brief Enable HSI ready interrupt
  4650. * @rmtoll CIER HSIRDYIE LL_RCC_EnableIT_HSIRDY
  4651. * @retval None
  4652. */
  4653. __STATIC_INLINE void LL_RCC_EnableIT_HSIRDY(void)
  4654. {
  4655. SET_BIT(RCC->CIER, RCC_CIER_HSIRDYIE);
  4656. }
  4657. /**
  4658. * @brief Enable HSE ready interrupt
  4659. * @rmtoll CIER HSERDYIE LL_RCC_EnableIT_HSERDY
  4660. * @retval None
  4661. */
  4662. __STATIC_INLINE void LL_RCC_EnableIT_HSERDY(void)
  4663. {
  4664. SET_BIT(RCC->CIER, RCC_CIER_HSERDYIE);
  4665. }
  4666. /**
  4667. * @brief Enable CSI ready interrupt
  4668. * @rmtoll CIER CSIRDYIE LL_RCC_EnableIT_CSIRDY
  4669. * @retval None
  4670. */
  4671. __STATIC_INLINE void LL_RCC_EnableIT_CSIRDY(void)
  4672. {
  4673. SET_BIT(RCC->CIER, RCC_CIER_CSIRDYIE);
  4674. }
  4675. /**
  4676. * @brief Enable HSI48 ready interrupt
  4677. * @rmtoll CIER HSI48RDYIE LL_RCC_EnableIT_HSI48RDY
  4678. * @retval None
  4679. */
  4680. __STATIC_INLINE void LL_RCC_EnableIT_HSI48RDY(void)
  4681. {
  4682. SET_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE);
  4683. }
  4684. /**
  4685. * @brief Enable PLL1 ready interrupt
  4686. * @rmtoll CIER PLL1RDYIE LL_RCC_EnableIT_PLL1RDY
  4687. * @retval None
  4688. */
  4689. __STATIC_INLINE void LL_RCC_EnableIT_PLL1RDY(void)
  4690. {
  4691. SET_BIT(RCC->CIER, RCC_CIER_PLL1RDYIE);
  4692. }
  4693. /**
  4694. * @brief Enable PLL2 ready interrupt
  4695. * @rmtoll CIER PLL2RDYIE LL_RCC_EnableIT_PLL2RDY
  4696. * @retval None
  4697. */
  4698. __STATIC_INLINE void LL_RCC_EnableIT_PLL2RDY(void)
  4699. {
  4700. SET_BIT(RCC->CIER, RCC_CIER_PLL2RDYIE);
  4701. }
  4702. /**
  4703. * @brief Enable PLL3 ready interrupt
  4704. * @rmtoll CIER PLL3RDYIE LL_RCC_EnableIT_PLL3RDY
  4705. * @retval None
  4706. */
  4707. __STATIC_INLINE void LL_RCC_EnableIT_PLL3RDY(void)
  4708. {
  4709. SET_BIT(RCC->CIER, RCC_CIER_PLL3RDYIE);
  4710. }
  4711. /**
  4712. * @brief Enable LSECSS interrupt
  4713. * @rmtoll CIER LSECSSIE LL_RCC_EnableIT_LSECSS
  4714. * @retval None
  4715. */
  4716. __STATIC_INLINE void LL_RCC_EnableIT_LSECSS(void)
  4717. {
  4718. SET_BIT(RCC->CIER, RCC_CIER_LSECSSIE);
  4719. }
  4720. /**
  4721. * @brief Disable LSI ready interrupt
  4722. * @rmtoll CIER LSIRDYIE LL_RCC_DisableIT_LSIRDY
  4723. * @retval None
  4724. */
  4725. __STATIC_INLINE void LL_RCC_DisableIT_LSIRDY(void)
  4726. {
  4727. CLEAR_BIT(RCC->CIER, RCC_CIER_LSIRDYIE);
  4728. }
  4729. /**
  4730. * @brief Disable LSE ready interrupt
  4731. * @rmtoll CIER LSERDYIE LL_RCC_DisableIT_LSERDY
  4732. * @retval None
  4733. */
  4734. __STATIC_INLINE void LL_RCC_DisableIT_LSERDY(void)
  4735. {
  4736. CLEAR_BIT(RCC->CIER, RCC_CIER_LSERDYIE);
  4737. }
  4738. /**
  4739. * @brief Disable HSI ready interrupt
  4740. * @rmtoll CIER HSIRDYIE LL_RCC_DisableIT_HSIRDY
  4741. * @retval None
  4742. */
  4743. __STATIC_INLINE void LL_RCC_DisableIT_HSIRDY(void)
  4744. {
  4745. CLEAR_BIT(RCC->CIER, RCC_CIER_HSIRDYIE);
  4746. }
  4747. /**
  4748. * @brief Disable HSE ready interrupt
  4749. * @rmtoll CIER HSERDYIE LL_RCC_DisableIT_HSERDY
  4750. * @retval None
  4751. */
  4752. __STATIC_INLINE void LL_RCC_DisableIT_HSERDY(void)
  4753. {
  4754. CLEAR_BIT(RCC->CIER, RCC_CIER_HSERDYIE);
  4755. }
  4756. /**
  4757. * @brief Disable CSI ready interrupt
  4758. * @rmtoll CIER CSIRDYIE LL_RCC_DisableIT_CSIRDY
  4759. * @retval None
  4760. */
  4761. __STATIC_INLINE void LL_RCC_DisableIT_CSIRDY(void)
  4762. {
  4763. CLEAR_BIT(RCC->CIER, RCC_CIER_CSIRDYIE);
  4764. }
  4765. /**
  4766. * @brief Disable HSI48 ready interrupt
  4767. * @rmtoll CIER HSI48RDYIE LL_RCC_DisableIT_HSI48RDY
  4768. * @retval None
  4769. */
  4770. __STATIC_INLINE void LL_RCC_DisableIT_HSI48RDY(void)
  4771. {
  4772. CLEAR_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE);
  4773. }
  4774. /**
  4775. * @brief Disable PLL1 ready interrupt
  4776. * @rmtoll CIER PLL1RDYIE LL_RCC_DisableIT_PLL1RDY
  4777. * @retval None
  4778. */
  4779. __STATIC_INLINE void LL_RCC_DisableIT_PLL1RDY(void)
  4780. {
  4781. CLEAR_BIT(RCC->CIER, RCC_CIER_PLL1RDYIE);
  4782. }
  4783. /**
  4784. * @brief Disable PLL2 ready interrupt
  4785. * @rmtoll CIER PLL2RDYIE LL_RCC_DisableIT_PLL2RDY
  4786. * @retval None
  4787. */
  4788. __STATIC_INLINE void LL_RCC_DisableIT_PLL2RDY(void)
  4789. {
  4790. CLEAR_BIT(RCC->CIER, RCC_CIER_PLL2RDYIE);
  4791. }
  4792. /**
  4793. * @brief Disable PLL3 ready interrupt
  4794. * @rmtoll CIER PLL3RDYIE LL_RCC_DisableIT_PLL3RDY
  4795. * @retval None
  4796. */
  4797. __STATIC_INLINE void LL_RCC_DisableIT_PLL3RDY(void)
  4798. {
  4799. CLEAR_BIT(RCC->CIER, RCC_CIER_PLL3RDYIE);
  4800. }
  4801. /**
  4802. * @brief Disable LSECSS interrupt
  4803. * @rmtoll CIER LSECSSIE LL_RCC_DisableIT_LSECSS
  4804. * @retval None
  4805. */
  4806. __STATIC_INLINE void LL_RCC_DisableIT_LSECSS(void)
  4807. {
  4808. CLEAR_BIT(RCC->CIER, RCC_CIER_LSECSSIE);
  4809. }
  4810. /**
  4811. * @brief Checks if LSI ready interrupt source is enabled or disabled.
  4812. * @rmtoll CIER LSIRDYIE LL_RCC_IsEnableIT_LSIRDY
  4813. * @retval State of bit (1 or 0).
  4814. */
  4815. __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_LSIRDY(void)
  4816. {
  4817. return ((READ_BIT(RCC->CIER, RCC_CIER_LSIRDYIE) == RCC_CIER_LSIRDYIE)?1UL:0UL);
  4818. }
  4819. /**
  4820. * @brief Checks if LSE ready interrupt source is enabled or disabled.
  4821. * @rmtoll CIER LSERDYIE LL_RCC_IsEnableIT_LSERDY
  4822. * @retval State of bit (1 or 0).
  4823. */
  4824. __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_LSERDY(void)
  4825. {
  4826. return ((READ_BIT(RCC->CIER, RCC_CIER_LSERDYIE) == RCC_CIER_LSERDYIE)?1UL:0UL);
  4827. }
  4828. /**
  4829. * @brief Checks if HSI ready interrupt source is enabled or disabled.
  4830. * @rmtoll CIER HSIRDYIE LL_RCC_IsEnableIT_HSIRDY
  4831. * @retval State of bit (1 or 0).
  4832. */
  4833. __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_HSIRDY(void)
  4834. {
  4835. return ((READ_BIT(RCC->CIER, RCC_CIER_HSIRDYIE) == RCC_CIER_HSIRDYIE)?1UL:0UL);
  4836. }
  4837. /**
  4838. * @brief Checks if HSE ready interrupt source is enabled or disabled.
  4839. * @rmtoll CIER HSERDYIE LL_RCC_IsEnableIT_HSERDY
  4840. * @retval State of bit (1 or 0).
  4841. */
  4842. __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_HSERDY(void)
  4843. {
  4844. return ((READ_BIT(RCC->CIER, RCC_CIER_HSERDYIE) == RCC_CIER_HSERDYIE)?1UL:0UL);
  4845. }
  4846. /**
  4847. * @brief Checks if CSI ready interrupt source is enabled or disabled.
  4848. * @rmtoll CIER CSIRDYIE LL_RCC_IsEnableIT_CSIRDY
  4849. * @retval State of bit (1 or 0).
  4850. */
  4851. __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_CSIRDY(void)
  4852. {
  4853. return ((READ_BIT(RCC->CIER, RCC_CIER_CSIRDYIE) == RCC_CIER_CSIRDYIE)?1UL:0UL);
  4854. }
  4855. /**
  4856. * @brief Checks if HSI48 ready interrupt source is enabled or disabled.
  4857. * @rmtoll CIER HSI48RDYIE LL_RCC_IsEnableIT_HSI48RDY
  4858. * @retval State of bit (1 or 0).
  4859. */
  4860. __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_HSI48RDY(void)
  4861. {
  4862. return ((READ_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE) == RCC_CIER_HSI48RDYIE)?1UL:0UL);
  4863. }
  4864. /**
  4865. * @brief Checks if PLL1 ready interrupt source is enabled or disabled.
  4866. * @rmtoll CIER PLL1RDYIE LL_RCC_IsEnableIT_PLL1RDY
  4867. * @retval State of bit (1 or 0).
  4868. */
  4869. __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_PLL1RDY(void)
  4870. {
  4871. return ((READ_BIT(RCC->CIER, RCC_CIER_PLL1RDYIE) == RCC_CIER_PLL1RDYIE)?1UL:0UL);
  4872. }
  4873. /**
  4874. * @brief Checks if PLL2 ready interrupt source is enabled or disabled.
  4875. * @rmtoll CIER PLL2RDYIE LL_RCC_IsEnableIT_PLL2RDY
  4876. * @retval State of bit (1 or 0).
  4877. */
  4878. __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_PLL2RDY(void)
  4879. {
  4880. return ((READ_BIT(RCC->CIER, RCC_CIER_PLL2RDYIE) == RCC_CIER_PLL2RDYIE)?1UL:0UL);
  4881. }
  4882. /**
  4883. * @brief Checks if PLL3 ready interrupt source is enabled or disabled.
  4884. * @rmtoll CIER PLL3RDYIE LL_RCC_IsEnableIT_PLL3RDY
  4885. * @retval State of bit (1 or 0).
  4886. */
  4887. __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_PLL3RDY(void)
  4888. {
  4889. return ((READ_BIT(RCC->CIER, RCC_CIER_PLL3RDYIE) == RCC_CIER_PLL3RDYIE)?1UL:0UL);
  4890. }
  4891. /**
  4892. * @brief Checks if LSECSS interrupt source is enabled or disabled.
  4893. * @rmtoll CIER LSECSSIE LL_RCC_IsEnableIT_LSECSS
  4894. * @retval State of bit (1 or 0).
  4895. */
  4896. __STATIC_INLINE uint32_t LL_RCC_IsEnableIT_LSECSS(void)
  4897. {
  4898. return ((READ_BIT(RCC->CIER, RCC_CIER_LSECSSIE) == RCC_CIER_LSECSSIE)?1UL:0UL);
  4899. }
  4900. /**
  4901. * @}
  4902. */
  4903. #if defined(USE_FULL_LL_DRIVER)
  4904. /** @defgroup RCC_LL_EF_Init De-initialization function
  4905. * @{
  4906. */
  4907. void LL_RCC_DeInit(void);
  4908. /**
  4909. * @}
  4910. */
  4911. /** @defgroup RCC_LL_EF_Get_Freq Get system and peripherals clocks frequency functions
  4912. * @{
  4913. */
  4914. uint32_t LL_RCC_CalcPLLClockFreq(uint32_t PLLInputFreq, uint32_t M, uint32_t N, uint32_t FRACN, uint32_t PQR);
  4915. void LL_RCC_GetPLL1ClockFreq(LL_PLL_ClocksTypeDef *PLL_Clocks);
  4916. void LL_RCC_GetPLL2ClockFreq(LL_PLL_ClocksTypeDef *PLL_Clocks);
  4917. void LL_RCC_GetPLL3ClockFreq(LL_PLL_ClocksTypeDef *PLL_Clocks);
  4918. void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks);
  4919. uint32_t LL_RCC_GetUSARTClockFreq(uint32_t USARTxSource);
  4920. uint32_t LL_RCC_GetLPUARTClockFreq(uint32_t LPUARTxSource);
  4921. uint32_t LL_RCC_GetI2CClockFreq(uint32_t I2CxSource);
  4922. uint32_t LL_RCC_GetLPTIMClockFreq(uint32_t LPTIMxSource);
  4923. uint32_t LL_RCC_GetSAIClockFreq(uint32_t SAIxSource);
  4924. uint32_t LL_RCC_GetADCClockFreq(uint32_t ADCxSource);
  4925. uint32_t LL_RCC_GetSDMMCClockFreq(uint32_t SDMMCxSource);
  4926. uint32_t LL_RCC_GetRNGClockFreq(uint32_t RNGxSource);
  4927. uint32_t LL_RCC_GetCECClockFreq(uint32_t CECxSource);
  4928. uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource);
  4929. uint32_t LL_RCC_GetDFSDMClockFreq(uint32_t DFSDMxSource);
  4930. #if defined(DSI)
  4931. uint32_t LL_RCC_GetDSIClockFreq(uint32_t DSIxSource);
  4932. #endif /* DSI */
  4933. uint32_t LL_RCC_GetSPDIFClockFreq(uint32_t SPDIFxSource);
  4934. uint32_t LL_RCC_GetSPIClockFreq(uint32_t SPIxSource);
  4935. uint32_t LL_RCC_GetSWPClockFreq(uint32_t SWPxSource);
  4936. uint32_t LL_RCC_GetFDCANClockFreq(uint32_t FDCANxSource);
  4937. uint32_t LL_RCC_GetFMCClockFreq(uint32_t FMCxSource);
  4938. uint32_t LL_RCC_GetQSPIClockFreq(uint32_t QSPIxSource);
  4939. uint32_t LL_RCC_GetCLKPClockFreq(uint32_t CLKPxSource);
  4940. /**
  4941. * @}
  4942. */
  4943. #endif /* USE_FULL_LL_DRIVER */
  4944. /**
  4945. * @}
  4946. */
  4947. /**
  4948. * @}
  4949. */
  4950. /**
  4951. * @}
  4952. */
  4953. #endif /* defined(RCC) */
  4954. /**
  4955. * @}
  4956. */
  4957. #ifdef __cplusplus
  4958. }
  4959. #endif
  4960. #endif /* STM32H7xx_LL_RCC_H */
  4961. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/