23 #ifdef USE_FULL_ASSERT
24 #include "stm32_assert.h"
26 #define assert_param(expr) ((void)0U)
43 #if defined(RCC_MAX_FREQUENCY_SCALE1)
44 #define UTILS_MAX_FREQUENCY_SCALE1 RCC_MAX_FREQUENCY
46 #define UTILS_MAX_FREQUENCY_SCALE2 RCC_MAX_FREQUENCY_SCALE2
47 #if defined(RCC_MAX_FREQUENCY_SCALE3)
48 #define UTILS_MAX_FREQUENCY_SCALE3 RCC_MAX_FREQUENCY_SCALE3
52 #define UTILS_PLLVCO_INPUT_MIN RCC_PLLVCO_INPUT_MIN
53 #define UTILS_PLLVCO_INPUT_MAX RCC_PLLVCO_INPUT_MAX
54 #define UTILS_PLLVCO_OUTPUT_MIN RCC_PLLVCO_OUTPUT_MIN
55 #define UTILS_PLLVCO_OUTPUT_MAX RCC_PLLVCO_OUTPUT_MAX
58 #define UTILS_HSE_FREQUENCY_MIN 4000000U
59 #define UTILS_HSE_FREQUENCY_MAX 26000000U
62 #if defined(FLASH_SCALE1_LATENCY1_FREQ)
63 #define UTILS_SCALE1_LATENCY1_FREQ FLASH_SCALE1_LATENCY1_FREQ
65 #if defined(FLASH_SCALE1_LATENCY2_FREQ)
66 #define UTILS_SCALE1_LATENCY2_FREQ FLASH_SCALE1_LATENCY2_FREQ
68 #if defined(FLASH_SCALE1_LATENCY3_FREQ)
69 #define UTILS_SCALE1_LATENCY3_FREQ FLASH_SCALE1_LATENCY3_FREQ
71 #if defined(FLASH_SCALE1_LATENCY4_FREQ)
72 #define UTILS_SCALE1_LATENCY4_FREQ FLASH_SCALE1_LATENCY4_FREQ
74 #if defined(FLASH_SCALE1_LATENCY5_FREQ)
75 #define UTILS_SCALE1_LATENCY5_FREQ FLASH_SCALE1_LATENCY5_FREQ
77 #define UTILS_SCALE2_LATENCY1_FREQ FLASH_SCALE2_LATENCY1_FREQ
78 #define UTILS_SCALE2_LATENCY2_FREQ FLASH_SCALE2_LATENCY2_FREQ
79 #if defined(FLASH_SCALE2_LATENCY3_FREQ)
80 #define UTILS_SCALE2_LATENCY3_FREQ FLASH_SCALE2_LATENCY3_FREQ
82 #if defined(FLASH_SCALE2_LATENCY4_FREQ)
83 #define UTILS_SCALE2_LATENCY4_FREQ FLASH_SCALE2_LATENCY4_FREQ
85 #if defined(FLASH_SCALE2_LATENCY5_FREQ)
86 #define UTILS_SCALE2_LATENCY5_FREQ FLASH_SCALE2_LATENCY5_FREQ
88 #if defined(FLASH_SCALE3_LATENCY1_FREQ)
89 #define UTILS_SCALE3_LATENCY1_FREQ FLASH_SCALE3_LATENCY1_FREQ
91 #if defined(FLASH_SCALE3_LATENCY2_FREQ)
92 #define UTILS_SCALE3_LATENCY2_FREQ FLASH_SCALE3_LATENCY2_FREQ
94 #if defined(FLASH_SCALE3_LATENCY3_FREQ)
95 #define UTILS_SCALE3_LATENCY3_FREQ FLASH_SCALE3_LATENCY3_FREQ
97 #if defined(FLASH_SCALE3_LATENCY4_FREQ)
98 #define UTILS_SCALE3_LATENCY4_FREQ FLASH_SCALE3_LATENCY4_FREQ
100 #if defined(FLASH_SCALE3_LATENCY5_FREQ)
101 #define UTILS_SCALE3_LATENCY5_FREQ FLASH_SCALE3_LATENCY5_FREQ
111 #define IS_LL_UTILS_SYSCLK_DIV(__VALUE__) (((__VALUE__) == LL_RCC_SYSCLK_DIV_1) \
112 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_2) \
113 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_4) \
114 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_8) \
115 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_16) \
116 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_64) \
117 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_128) \
118 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_256) \
119 || ((__VALUE__) == LL_RCC_SYSCLK_DIV_512))
121 #define IS_LL_UTILS_APB1_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB1_DIV_1) \
122 || ((__VALUE__) == LL_RCC_APB1_DIV_2) \
123 || ((__VALUE__) == LL_RCC_APB1_DIV_4) \
124 || ((__VALUE__) == LL_RCC_APB1_DIV_8) \
125 || ((__VALUE__) == LL_RCC_APB1_DIV_16))
127 #define IS_LL_UTILS_APB2_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB2_DIV_1) \
128 || ((__VALUE__) == LL_RCC_APB2_DIV_2) \
129 || ((__VALUE__) == LL_RCC_APB2_DIV_4) \
130 || ((__VALUE__) == LL_RCC_APB2_DIV_8) \
131 || ((__VALUE__) == LL_RCC_APB2_DIV_16))
133 #define IS_LL_UTILS_PLLM_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLLM_DIV_2) \
134 || ((__VALUE__) == LL_RCC_PLLM_DIV_3) \
135 || ((__VALUE__) == LL_RCC_PLLM_DIV_4) \
136 || ((__VALUE__) == LL_RCC_PLLM_DIV_5) \
137 || ((__VALUE__) == LL_RCC_PLLM_DIV_6) \
138 || ((__VALUE__) == LL_RCC_PLLM_DIV_7) \
139 || ((__VALUE__) == LL_RCC_PLLM_DIV_8) \
140 || ((__VALUE__) == LL_RCC_PLLM_DIV_9) \
141 || ((__VALUE__) == LL_RCC_PLLM_DIV_10) \
142 || ((__VALUE__) == LL_RCC_PLLM_DIV_11) \
143 || ((__VALUE__) == LL_RCC_PLLM_DIV_12) \
144 || ((__VALUE__) == LL_RCC_PLLM_DIV_13) \
145 || ((__VALUE__) == LL_RCC_PLLM_DIV_14) \
146 || ((__VALUE__) == LL_RCC_PLLM_DIV_15) \
147 || ((__VALUE__) == LL_RCC_PLLM_DIV_16) \
148 || ((__VALUE__) == LL_RCC_PLLM_DIV_17) \
149 || ((__VALUE__) == LL_RCC_PLLM_DIV_18) \
150 || ((__VALUE__) == LL_RCC_PLLM_DIV_19) \
151 || ((__VALUE__) == LL_RCC_PLLM_DIV_20) \
152 || ((__VALUE__) == LL_RCC_PLLM_DIV_21) \
153 || ((__VALUE__) == LL_RCC_PLLM_DIV_22) \
154 || ((__VALUE__) == LL_RCC_PLLM_DIV_23) \
155 || ((__VALUE__) == LL_RCC_PLLM_DIV_24) \
156 || ((__VALUE__) == LL_RCC_PLLM_DIV_25) \
157 || ((__VALUE__) == LL_RCC_PLLM_DIV_26) \
158 || ((__VALUE__) == LL_RCC_PLLM_DIV_27) \
159 || ((__VALUE__) == LL_RCC_PLLM_DIV_28) \
160 || ((__VALUE__) == LL_RCC_PLLM_DIV_29) \
161 || ((__VALUE__) == LL_RCC_PLLM_DIV_30) \
162 || ((__VALUE__) == LL_RCC_PLLM_DIV_31) \
163 || ((__VALUE__) == LL_RCC_PLLM_DIV_32) \
164 || ((__VALUE__) == LL_RCC_PLLM_DIV_33) \
165 || ((__VALUE__) == LL_RCC_PLLM_DIV_34) \
166 || ((__VALUE__) == LL_RCC_PLLM_DIV_35) \
167 || ((__VALUE__) == LL_RCC_PLLM_DIV_36) \
168 || ((__VALUE__) == LL_RCC_PLLM_DIV_37) \
169 || ((__VALUE__) == LL_RCC_PLLM_DIV_38) \
170 || ((__VALUE__) == LL_RCC_PLLM_DIV_39) \
171 || ((__VALUE__) == LL_RCC_PLLM_DIV_40) \
172 || ((__VALUE__) == LL_RCC_PLLM_DIV_41) \
173 || ((__VALUE__) == LL_RCC_PLLM_DIV_42) \
174 || ((__VALUE__) == LL_RCC_PLLM_DIV_43) \
175 || ((__VALUE__) == LL_RCC_PLLM_DIV_44) \
176 || ((__VALUE__) == LL_RCC_PLLM_DIV_45) \
177 || ((__VALUE__) == LL_RCC_PLLM_DIV_46) \
178 || ((__VALUE__) == LL_RCC_PLLM_DIV_47) \
179 || ((__VALUE__) == LL_RCC_PLLM_DIV_48) \
180 || ((__VALUE__) == LL_RCC_PLLM_DIV_49) \
181 || ((__VALUE__) == LL_RCC_PLLM_DIV_50) \
182 || ((__VALUE__) == LL_RCC_PLLM_DIV_51) \
183 || ((__VALUE__) == LL_RCC_PLLM_DIV_52) \
184 || ((__VALUE__) == LL_RCC_PLLM_DIV_53) \
185 || ((__VALUE__) == LL_RCC_PLLM_DIV_54) \
186 || ((__VALUE__) == LL_RCC_PLLM_DIV_55) \
187 || ((__VALUE__) == LL_RCC_PLLM_DIV_56) \
188 || ((__VALUE__) == LL_RCC_PLLM_DIV_57) \
189 || ((__VALUE__) == LL_RCC_PLLM_DIV_58) \
190 || ((__VALUE__) == LL_RCC_PLLM_DIV_59) \
191 || ((__VALUE__) == LL_RCC_PLLM_DIV_60) \
192 || ((__VALUE__) == LL_RCC_PLLM_DIV_61) \
193 || ((__VALUE__) == LL_RCC_PLLM_DIV_62) \
194 || ((__VALUE__) == LL_RCC_PLLM_DIV_63))
196 #define IS_LL_UTILS_PLLN_VALUE(__VALUE__) ((RCC_PLLN_MIN_VALUE <= (__VALUE__)) && ((__VALUE__) <= RCC_PLLN_MAX_VALUE))
198 #define IS_LL_UTILS_PLLP_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLLP_DIV_2) \
199 || ((__VALUE__) == LL_RCC_PLLP_DIV_4) \
200 || ((__VALUE__) == LL_RCC_PLLP_DIV_6) \
201 || ((__VALUE__) == LL_RCC_PLLP_DIV_8))
203 #define IS_LL_UTILS_PLLVCO_INPUT(__VALUE__) ((UTILS_PLLVCO_INPUT_MIN <= (__VALUE__)) && ((__VALUE__) <= UTILS_PLLVCO_INPUT_MAX))
205 #define IS_LL_UTILS_PLLVCO_OUTPUT(__VALUE__) ((UTILS_PLLVCO_OUTPUT_MIN <= (__VALUE__)) && ((__VALUE__) <= UTILS_PLLVCO_OUTPUT_MAX))
207 #if !defined(RCC_MAX_FREQUENCY_SCALE1)
208 #define IS_LL_UTILS_PLL_FREQUENCY(__VALUE__) ((LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE2) ? ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE2) : \
209 ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE3))
211 #elif defined(RCC_MAX_FREQUENCY_SCALE3)
212 #define IS_LL_UTILS_PLL_FREQUENCY(__VALUE__) ((LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE1) ? ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE1) : \
213 (LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE2) ? ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE2) : \
214 ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE3))
217 #define IS_LL_UTILS_PLL_FREQUENCY(__VALUE__) ((LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE1) ? ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE1) : \
218 ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE2))
221 #define IS_LL_UTILS_HSE_BYPASS(__STATE__) (((__STATE__) == LL_UTILS_HSEBYPASS_ON) \
222 || ((__STATE__) == LL_UTILS_HSEBYPASS_OFF))
224 #define IS_LL_UTILS_HSE_FREQUENCY(__FREQUENCY__) (((__FREQUENCY__) >= UTILS_HSE_FREQUENCY_MIN) && ((__FREQUENCY__) <= UTILS_HSE_FREQUENCY_MAX))
232 static uint32_t UTILS_GetPLLOutputFrequency(uint32_t PLL_InputFrequency,
234 static ErrorStatus UTILS_EnablePLLAndSwitchSystem(uint32_t SYSCLK_Frequency,
LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct);
235 static ErrorStatus UTILS_PLL_IsBusy(
void);
275 __IO uint32_t tmp = SysTick->CTRL;
280 if(Delay < LL_MAX_DELAY)
287 if((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0U)
326 SystemCoreClock = HCLKFrequency;
342 uint32_t latency = LL_FLASH_LATENCY_0;
343 ErrorStatus status = SUCCESS;
347 if(HCLK_Frequency == 0U)
355 #if defined (UTILS_SCALE1_LATENCY5_FREQ)
356 if((HCLK_Frequency > UTILS_SCALE1_LATENCY5_FREQ)&&(latency == LL_FLASH_LATENCY_0))
358 latency = LL_FLASH_LATENCY_5;
361 #if defined (UTILS_SCALE1_LATENCY4_FREQ)
362 if((HCLK_Frequency > UTILS_SCALE1_LATENCY4_FREQ)&&(latency == LL_FLASH_LATENCY_0))
364 latency = LL_FLASH_LATENCY_4;
367 #if defined (UTILS_SCALE1_LATENCY3_FREQ)
368 if((HCLK_Frequency > UTILS_SCALE1_LATENCY3_FREQ)&&(latency == LL_FLASH_LATENCY_0))
370 latency = LL_FLASH_LATENCY_3;
373 #if defined (UTILS_SCALE1_LATENCY2_FREQ)
374 if((HCLK_Frequency > UTILS_SCALE1_LATENCY2_FREQ)&&(latency == LL_FLASH_LATENCY_0))
376 latency = LL_FLASH_LATENCY_2;
380 if((HCLK_Frequency > UTILS_SCALE1_LATENCY1_FREQ)&&(latency == LL_FLASH_LATENCY_0))
382 latency = LL_FLASH_LATENCY_1;
389 #if defined (UTILS_SCALE2_LATENCY5_FREQ)
390 if((HCLK_Frequency > UTILS_SCALE2_LATENCY5_FREQ)&&(latency == LL_FLASH_LATENCY_0))
392 latency = LL_FLASH_LATENCY_5;
395 #if defined (UTILS_SCALE2_LATENCY4_FREQ)
396 if((HCLK_Frequency > UTILS_SCALE2_LATENCY4_FREQ)&&(latency == LL_FLASH_LATENCY_0))
398 latency = LL_FLASH_LATENCY_4;
401 #if defined (UTILS_SCALE2_LATENCY3_FREQ)
402 if((HCLK_Frequency > UTILS_SCALE2_LATENCY3_FREQ)&&(latency == LL_FLASH_LATENCY_0))
404 latency = LL_FLASH_LATENCY_3;
407 if((HCLK_Frequency > UTILS_SCALE2_LATENCY2_FREQ)&&(latency == LL_FLASH_LATENCY_0))
409 latency = LL_FLASH_LATENCY_2;
413 if((HCLK_Frequency > UTILS_SCALE2_LATENCY1_FREQ)&&(latency == LL_FLASH_LATENCY_0))
415 latency = LL_FLASH_LATENCY_1;
419 #if defined (LL_PWR_REGU_VOLTAGE_SCALE3)
422 #if defined (UTILS_SCALE3_LATENCY3_FREQ)
423 if((HCLK_Frequency > UTILS_SCALE3_LATENCY3_FREQ)&&(latency == LL_FLASH_LATENCY_0))
425 latency = LL_FLASH_LATENCY_3;
428 #if defined (UTILS_SCALE3_LATENCY2_FREQ)
429 if((HCLK_Frequency > UTILS_SCALE3_LATENCY2_FREQ)&&(latency == LL_FLASH_LATENCY_0))
431 latency = LL_FLASH_LATENCY_2;
435 if((HCLK_Frequency > UTILS_SCALE3_LATENCY1_FREQ)&&(latency == LL_FLASH_LATENCY_0))
437 latency = LL_FLASH_LATENCY_1;
453 }
while ((getlatency != latency) && (timeout > 0));
455 if(getlatency != latency)
486 ErrorStatus status = SUCCESS;
487 uint32_t pllfreq = 0U;
490 if(UTILS_PLL_IsBusy() == SUCCESS)
493 pllfreq = UTILS_GetPLLOutputFrequency(HSI_VALUE, UTILS_PLLInitStruct);
507 UTILS_PLLInitStruct->
PLLP);
510 status = UTILS_EnablePLLAndSwitchSystem(pllfreq, UTILS_ClkInitStruct);
543 ErrorStatus status = SUCCESS;
544 uint32_t pllfreq = 0U;
547 assert_param(IS_LL_UTILS_HSE_FREQUENCY(HSEFrequency));
548 assert_param(IS_LL_UTILS_HSE_BYPASS(HSEBypass));
551 if(UTILS_PLL_IsBusy() == SUCCESS)
554 pllfreq = UTILS_GetPLLOutputFrequency(HSEFrequency, UTILS_PLLInitStruct);
560 if(HSEBypass == LL_UTILS_HSEBYPASS_ON)
579 UTILS_PLLInitStruct->
PLLP);
582 status = UTILS_EnablePLLAndSwitchSystem(pllfreq, UTILS_ClkInitStruct);
611 static uint32_t UTILS_GetPLLOutputFrequency(uint32_t PLL_InputFrequency,
LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct)
613 uint32_t pllfreq = 0U;
616 assert_param(IS_LL_UTILS_PLLM_VALUE(UTILS_PLLInitStruct->
PLLM));
617 assert_param(IS_LL_UTILS_PLLN_VALUE(UTILS_PLLInitStruct->
PLLN));
618 assert_param(IS_LL_UTILS_PLLP_VALUE(UTILS_PLLInitStruct->
PLLP));
622 pllfreq = PLL_InputFrequency / (UTILS_PLLInitStruct->
PLLM & (RCC_PLLCFGR_PLLM >> RCC_PLLCFGR_PLLM_Pos));
623 assert_param(IS_LL_UTILS_PLLVCO_INPUT(pllfreq));
626 pllfreq = pllfreq * (UTILS_PLLInitStruct->
PLLN & (RCC_PLLCFGR_PLLN >> RCC_PLLCFGR_PLLN_Pos));
627 assert_param(IS_LL_UTILS_PLLVCO_OUTPUT(pllfreq));
630 pllfreq = pllfreq / (((UTILS_PLLInitStruct->
PLLP >> RCC_PLLCFGR_PLLP_Pos) + 1) * 2);
631 assert_param(IS_LL_UTILS_PLL_FREQUENCY(pllfreq));
642 static ErrorStatus UTILS_PLL_IsBusy(
void)
644 ErrorStatus status = SUCCESS;
653 #if defined(RCC_PLLSAI_SUPPORT)
661 #if defined(RCC_PLLI2S_SUPPORT)
681 static ErrorStatus UTILS_EnablePLLAndSwitchSystem(uint32_t SYSCLK_Frequency,
LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct)
683 ErrorStatus status = SUCCESS;
684 uint32_t hclk_frequency = 0U;
686 assert_param(IS_LL_UTILS_SYSCLK_DIV(UTILS_ClkInitStruct->
AHBCLKDivider));
687 assert_param(IS_LL_UTILS_APB1_DIV(UTILS_ClkInitStruct->
APB1CLKDivider));
688 assert_param(IS_LL_UTILS_APB2_DIV(UTILS_ClkInitStruct->
APB2CLKDivider));
691 hclk_frequency = __LL_RCC_CALC_HCLK_FREQ(SYSCLK_Frequency, UTILS_ClkInitStruct->
AHBCLKDivider);
694 if(SystemCoreClock < hclk_frequency)
701 if(status == SUCCESS)
724 if(SystemCoreClock > hclk_frequency)
731 if(status == SUCCESS)
__STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void)
Get the main internal Regulator output voltage @rmtoll CR VOS LL_PWR_GetRegulVoltageScaling.
__STATIC_INLINE void LL_RCC_HSE_Enable(void)
Enable HSE crystal oscillator (HSE ON) @rmtoll CR HSEON LL_RCC_HSE_Enable.
__STATIC_INLINE void LL_RCC_HSE_DisableBypass(void)
Disable HSE external oscillator (HSE Bypass) @rmtoll CR HSEBYP LL_RCC_HSE_DisableBypass.
__STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void)
Check if HSE oscillator Ready @rmtoll CR HSERDY LL_RCC_HSE_IsReady.
__STATIC_INLINE void LL_RCC_HSE_EnableBypass(void)
Enable HSE external oscillator (HSE Bypass) @rmtoll CR HSEBYP LL_RCC_HSE_EnableBypass.
__STATIC_INLINE void LL_RCC_HSI_Enable(void)
Enable HSI oscillator @rmtoll CR HSION LL_RCC_HSI_Enable.
__STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void)
Check if HSI clock is ready @rmtoll CR HSIRDY LL_RCC_HSI_IsReady.
__STATIC_INLINE uint32_t LL_RCC_PLLI2S_IsReady(void)
Check if PLLI2S Ready @rmtoll CR PLLI2SRDY LL_RCC_PLLI2S_IsReady.
__STATIC_INLINE uint32_t LL_RCC_PLLSAI_IsReady(void)
Check if PLLSAI Ready @rmtoll CR PLLSAIRDY LL_RCC_PLLSAI_IsReady.
__STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void)
Check if PLL Ready @rmtoll CR PLLRDY LL_RCC_PLL_IsReady.
__STATIC_INLINE void LL_RCC_PLL_Enable(void)
Enable PLL @rmtoll CR PLLON LL_RCC_PLL_Enable.
__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SYS(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP_R)
Configure PLL used for SYSCLK Domain.
__STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler)
Set AHB prescaler @rmtoll CFGR HPRE LL_RCC_SetAHBPrescaler.
__STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void)
Get the system clock source @rmtoll CFGR SWS LL_RCC_GetSysClkSource.
__STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler)
Set APB1 prescaler @rmtoll CFGR PPRE1 LL_RCC_SetAPB1Prescaler.
__STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler)
Set APB2 prescaler @rmtoll CFGR PPRE2 LL_RCC_SetAPB2Prescaler.
__STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source)
Configure the system clock source @rmtoll CFGR SW LL_RCC_SetSysClkSource.
__STATIC_INLINE uint32_t LL_FLASH_GetLatency(void)
Get FLASH Latency @rmtoll FLASH_ACR LATENCY LL_FLASH_GetLatency.
__STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency)
Set FLASH Latency @rmtoll FLASH_ACR LATENCY LL_FLASH_SetLatency.
void LL_SetSystemCoreClock(uint32_t HCLKFrequency)
This function sets directly SystemCoreClock CMSIS variable.
ErrorStatus LL_SetFlashLatency(uint32_t HCLK_Frequency)
Update number of Flash wait states in line with new frequency and current voltage range.
ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct)
This function configures system clock at maximum frequency with HSI as clock source of the PLL.
ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass, LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct)
This function configures system clock with HSE as clock source of the PLL.
__STATIC_INLINE void LL_InitTick(uint32_t HCLKFrequency, uint32_t Ticks)
This function configures the Cortex-M SysTick source of the time base.
void LL_Init1msTick(uint32_t HCLKFrequency)
This function configures the Cortex-M SysTick source to have 1ms time base.
void LL_mDelay(uint32_t Delay)
This function provides accurate delay (in milliseconds) based on SysTick counter flag.
UTILS System, AHB and APB buses clock configuration structure definition.
UTILS PLL structure definition.
Header file of PWR LL module.
Header file of RCC LL module.
Header file of SYSTEM LL module.
Header file of UTILS LL module.