24 #ifdef USE_FULL_ASSERT
27 #define assert_param(expr) ((void)0U)
46 #define UTILS_PLL_OUTPUT_MAX RCC_MAX_FREQUENCY
49 #define UTILS_HSE_FREQUENCY_MIN RCC_HSE_MIN
50 #define UTILS_HSE_FREQUENCY_MAX RCC_HSE_MAX
53 #if defined(FLASH_ACR_LATENCY)
54 #define UTILS_LATENCY1_FREQ 24000000U
55 #define UTILS_LATENCY2_FREQ 48000000U
66 #define IS_LL_UTILS_SYSCLK_DIV(__VALUE__) (((__VALUE__) == LL_RCC_SYSCLK_DIV_1) \
67 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_2) \
68 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_4) \
69 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_8) \
70 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_16) \
71 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_64) \
72 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_128) \
73 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_256) \
74 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_512))
76 #define IS_LL_UTILS_APB1_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB1_DIV_1) \
77 || ((__VALUE__) == LL_RCC_APB1_DIV_2) \
78 || ((__VALUE__) == LL_RCC_APB1_DIV_4) \
79 || ((__VALUE__) == LL_RCC_APB1_DIV_8) \
80 || ((__VALUE__) == LL_RCC_APB1_DIV_16))
82 #define IS_LL_UTILS_APB2_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB2_DIV_1) \
83 || ((__VALUE__) == LL_RCC_APB2_DIV_2) \
84 || ((__VALUE__) == LL_RCC_APB2_DIV_4) \
85 || ((__VALUE__) == LL_RCC_APB2_DIV_8) \
86 || ((__VALUE__) == LL_RCC_APB2_DIV_16))
88 #if defined(RCC_CFGR_PLLMULL6_5)
89 #define IS_LL_UTILS_PLLMUL_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLL_MUL_4) \
90 || ((__VALUE__) == LL_RCC_PLL_MUL_5) \
91 || ((__VALUE__) == LL_RCC_PLL_MUL_6) \
92 || ((__VALUE__) == LL_RCC_PLL_MUL_7) \
93 || ((__VALUE__) == LL_RCC_PLL_MUL_8) \
94 || ((__VALUE__) == LL_RCC_PLL_MUL_9) \
95 || ((__VALUE__) == LL_RCC_PLL_MUL_6_5))
97 #define IS_LL_UTILS_PLLMUL_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLL_MUL_2) \
98 || ((__VALUE__) == LL_RCC_PLL_MUL_3) \
99 || ((__VALUE__) == LL_RCC_PLL_MUL_4) \
100 || ((__VALUE__) == LL_RCC_PLL_MUL_5) \
101 || ((__VALUE__) == LL_RCC_PLL_MUL_6) \
102 || ((__VALUE__) == LL_RCC_PLL_MUL_7) \
103 || ((__VALUE__) == LL_RCC_PLL_MUL_8) \
104 || ((__VALUE__) == LL_RCC_PLL_MUL_9) \
105 || ((__VALUE__) == LL_RCC_PLL_MUL_10) \
106 || ((__VALUE__) == LL_RCC_PLL_MUL_11) \
107 || ((__VALUE__) == LL_RCC_PLL_MUL_12) \
108 || ((__VALUE__) == LL_RCC_PLL_MUL_13) \
109 || ((__VALUE__) == LL_RCC_PLL_MUL_14) \
110 || ((__VALUE__) == LL_RCC_PLL_MUL_15) \
111 || ((__VALUE__) == LL_RCC_PLL_MUL_16))
114 #if defined(RCC_CFGR2_PREDIV1)
115 #define IS_LL_UTILS_PREDIV_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PREDIV_DIV_1) || ((__VALUE__) == LL_RCC_PREDIV_DIV_2) || \
116 ((__VALUE__) == LL_RCC_PREDIV_DIV_3) || ((__VALUE__) == LL_RCC_PREDIV_DIV_4) || \
117 ((__VALUE__) == LL_RCC_PREDIV_DIV_5) || ((__VALUE__) == LL_RCC_PREDIV_DIV_6) || \
118 ((__VALUE__) == LL_RCC_PREDIV_DIV_7) || ((__VALUE__) == LL_RCC_PREDIV_DIV_8) || \
119 ((__VALUE__) == LL_RCC_PREDIV_DIV_9) || ((__VALUE__) == LL_RCC_PREDIV_DIV_10) || \
120 ((__VALUE__) == LL_RCC_PREDIV_DIV_11) || ((__VALUE__) == LL_RCC_PREDIV_DIV_12) || \
121 ((__VALUE__) == LL_RCC_PREDIV_DIV_13) || ((__VALUE__) == LL_RCC_PREDIV_DIV_14) || \
122 ((__VALUE__) == LL_RCC_PREDIV_DIV_15) || ((__VALUE__) == LL_RCC_PREDIV_DIV_16))
124 #define IS_LL_UTILS_PREDIV_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PREDIV_DIV_1) || ((__VALUE__) == LL_RCC_PREDIV_DIV_2))
127 #define IS_LL_UTILS_PLL_FREQUENCY(__VALUE__) ((__VALUE__) <= UTILS_PLL_OUTPUT_MAX)
130 #define IS_LL_UTILS_HSE_BYPASS(__STATE__) (((__STATE__) == LL_UTILS_HSEBYPASS_ON) \
131 || ((__STATE__) == LL_UTILS_HSEBYPASS_OFF))
133 #define IS_LL_UTILS_HSE_FREQUENCY(__FREQUENCY__) (((__FREQUENCY__) >= UTILS_HSE_FREQUENCY_MIN) && ((__FREQUENCY__) <= UTILS_HSE_FREQUENCY_MAX))
254 #if defined(FLASH_ACR_LATENCY)
259 uint32_t latency = LL_FLASH_LATENCY_0;
269 if (Frequency > UTILS_LATENCY2_FREQ)
272 latency = LL_FLASH_LATENCY_2;
276 if (Frequency > UTILS_LATENCY1_FREQ)
279 latency = LL_FLASH_LATENCY_1;
284 latency = LL_FLASH_LATENCY_0;
290 LL_FLASH_SetLatency(latency);
298 getlatency = LL_FLASH_GetLatency();
300 }
while ((getlatency != latency) && (timeout > 0));
302 if(getlatency != latency)
338 uint32_t pllfreq = 0U;
343 #if defined(RCC_PLLSRC_PREDIV1_SUPPORT)
348 UTILS_PLLInitStruct->
Prediv = LL_RCC_PREDIV_DIV_2;
354 if (LL_RCC_HSI_IsReady() != 1U)
357 while (LL_RCC_HSI_IsReady() != 1U)
364 LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSI_DIV_2, UTILS_PLLInitStruct->
PLLMul);
403 uint32_t pllfreq = 0U;
418 if (LL_RCC_HSE_IsReady() != 1U)
423 LL_RCC_HSE_EnableBypass();
427 LL_RCC_HSE_DisableBypass();
432 while (LL_RCC_HSE_IsReady() != 1U)
473 uint32_t pllfreq = 0U;
479 #if defined (RCC_CFGR2_PREDIV1)
480 pllfreq = __LL_RCC_CALC_PLLCLK_FREQ(PLL_InputFrequency / (UTILS_PLLInitStruct->
Prediv + 1U), UTILS_PLLInitStruct->
PLLMul);
500 if (LL_RCC_PLL_IsReady() != 0U)
505 #if defined(RCC_PLL2_SUPPORT)
507 if (LL_RCC_PLL2_IsReady() != 0U)
514 #if defined(RCC_PLLI2S_SUPPORT)
516 if (LL_RCC_PLLI2S_IsReady() != 0U)
538 #if defined(FLASH_ACR_LATENCY)
539 uint32_t sysclk_frequency_current = 0U;
546 #if defined(FLASH_ACR_LATENCY)
552 #if defined (FLASH_ACR_LATENCY)
553 if (sysclk_frequency_current < SYSCLK_Frequency)
556 status = LL_SetFlashLatency(SYSCLK_Frequency);
563 #if defined(RCC_PLL2_SUPPORT)
564 if (LL_RCC_PLL_GetMainSource() != LL_RCC_PLLSOURCE_HSI_DIV_2)
567 LL_RCC_PLL2_Enable();
568 while (LL_RCC_PLL2_IsReady() != 1U)
576 while (LL_RCC_PLL_IsReady() != 1U)
583 LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL);
584 while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL)
595 #if defined (FLASH_ACR_LATENCY)
596 if (sysclk_frequency_current > SYSCLK_Frequency)
599 status = LL_SetFlashLatency(SYSCLK_Frequency);