17#if defined(USE_FULL_LL_DRIVER)
22#include "stm32_assert.h"
24#define assert_param(expr) ((void)0U)
44#define IS_LL_RCC_FMPI2C_CLKSOURCE(__VALUE__) ((__VALUE__) == LL_RCC_FMPI2C1_CLKSOURCE)
48#define IS_LL_RCC_LPTIM_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_LPTIM1_CLKSOURCE))
52#if defined(RCC_DCKCFGR_SAI1SRC)
53#define IS_LL_RCC_SAI_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SAI1_CLKSOURCE) \
54 || ((__VALUE__) == LL_RCC_SAI2_CLKSOURCE))
55#elif defined(RCC_DCKCFGR_SAI1ASRC)
56#define IS_LL_RCC_SAI_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SAI1_A_CLKSOURCE) \
57 || ((__VALUE__) == LL_RCC_SAI1_B_CLKSOURCE))
62#define IS_LL_RCC_SDIO_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SDIO_CLKSOURCE))
66#define IS_LL_RCC_RNG_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_RNG_CLKSOURCE))
69#if defined(USB_OTG_FS) || defined(USB_OTG_HS)
70#define IS_LL_RCC_USB_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_USB_CLKSOURCE))
73#if defined(DFSDM2_Channel0)
74#define IS_LL_RCC_DFSDM_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DFSDM1_CLKSOURCE))
76#define IS_LL_RCC_DFSDM_AUDIO_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DFSDM1_AUDIO_CLKSOURCE) \
77 || ((__VALUE__) == LL_RCC_DFSDM2_AUDIO_CLKSOURCE))
78#elif defined(DFSDM1_Channel0)
79#define IS_LL_RCC_DFSDM_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DFSDM1_CLKSOURCE))
81#define IS_LL_RCC_DFSDM_AUDIO_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DFSDM1_AUDIO_CLKSOURCE))
84#if defined(RCC_DCKCFGR_I2S2SRC)
85#define IS_LL_RCC_I2S_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2S1_CLKSOURCE) \
86 || ((__VALUE__) == LL_RCC_I2S2_CLKSOURCE))
88#define IS_LL_RCC_I2S_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2S1_CLKSOURCE))
92#define IS_LL_RCC_CEC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_CEC_CLKSOURCE))
96#define IS_LL_RCC_DSI_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DSI_CLKSOURCE))
100#define IS_LL_RCC_LTDC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_LTDC_CLKSOURCE))
104#define IS_LL_RCC_SPDIFRX_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SPDIFRX1_CLKSOURCE))
114uint32_t RCC_GetSystemClockFreq(
void);
115uint32_t RCC_GetHCLKClockFreq(uint32_t SYSCLK_Frequency);
116uint32_t RCC_GetPCLK1ClockFreq(uint32_t HCLK_Frequency);
117uint32_t RCC_GetPCLK2ClockFreq(uint32_t HCLK_Frequency);
118uint32_t RCC_PLL_GetFreqDomain_SYS(uint32_t SYSCLK_Source);
119uint32_t RCC_PLL_GetFreqDomain_48M(
void);
120#if defined(RCC_DCKCFGR_I2SSRC) || defined(RCC_DCKCFGR_I2S1SRC)
121uint32_t RCC_PLL_GetFreqDomain_I2S(
void);
124uint32_t RCC_PLL_GetFreqDomain_SPDIFRX(
void);
126#if defined(RCC_PLLCFGR_PLLR)
128uint32_t RCC_PLL_GetFreqDomain_SAI(
void);
132uint32_t RCC_PLL_GetFreqDomain_DSI(
void);
134#if defined(RCC_PLLSAI_SUPPORT)
135uint32_t RCC_PLLSAI_GetFreqDomain_SAI(
void);
136#if defined(RCC_PLLSAICFGR_PLLSAIP)
137uint32_t RCC_PLLSAI_GetFreqDomain_48M(
void);
140uint32_t RCC_PLLSAI_GetFreqDomain_LTDC(
void);
143#if defined(RCC_PLLI2S_SUPPORT)
144uint32_t RCC_PLLI2S_GetFreqDomain_I2S(
void);
145#if defined(RCC_PLLI2SCFGR_PLLI2SQ) && !defined(RCC_DCKCFGR_PLLI2SDIVQ)
146uint32_t RCC_PLLI2S_GetFreqDomain_48M(
void);
149uint32_t RCC_PLLI2S_GetFreqDomain_SAI(
void);
152uint32_t RCC_PLLI2S_GetFreqDomain_SPDIFRX(
void);
184ErrorStatus LL_RCC_DeInit(
void)
186 __IO uint32_t vl_mask;
192 while (LL_RCC_HSI_IsReady() != 1U)
196 LL_RCC_WriteReg(CFGR, 0x00000000U);
199 vl_mask = LL_RCC_ReadReg(CR);
203 (RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_PLLON | RCC_CR_CSSON));
205#if defined(RCC_PLLSAI_SUPPORT)
207 CLEAR_BIT(vl_mask, RCC_CR_PLLSAION);
210#if defined(RCC_PLLI2S_SUPPORT)
212 CLEAR_BIT(vl_mask, RCC_CR_PLLI2SON);
216 LL_RCC_WriteReg(CR, vl_mask);
219 LL_RCC_HSI_SetCalibTrimming(0x10U);
222 while (LL_RCC_PLL_IsReady() != 0U)
226 LL_RCC_WriteReg(PLLCFGR, RCC_PLLCFGR_RST_VALUE);
228#if defined(RCC_PLLI2S_SUPPORT)
230 LL_RCC_WriteReg(PLLI2SCFGR, RCC_PLLI2SCFGR_RST_VALUE);
233#if defined(RCC_PLLSAI_SUPPORT)
235 LL_RCC_WriteReg(PLLSAICFGR, RCC_PLLSAICFGR_RST_VALUE);
239 CLEAR_BIT(RCC->CIR, RCC_CIR_LSIRDYIE | RCC_CIR_LSERDYIE | RCC_CIR_HSIRDYIE | RCC_CIR_HSERDYIE | RCC_CIR_PLLRDYIE);
241#if defined(RCC_CIR_PLLI2SRDYIE)
242 CLEAR_BIT(RCC->CIR, RCC_CIR_PLLI2SRDYIE);
245#if defined(RCC_CIR_PLLSAIRDYIE)
246 CLEAR_BIT(RCC->CIR, RCC_CIR_PLLSAIRDYIE);
250 SET_BIT(RCC->CIR, RCC_CIR_LSIRDYC | RCC_CIR_LSERDYC | RCC_CIR_HSIRDYC | RCC_CIR_HSERDYC | RCC_CIR_PLLRDYC |
253#if defined(RCC_CIR_PLLI2SRDYC)
254 SET_BIT(RCC->CIR, RCC_CIR_PLLI2SRDYC);
257#if defined(RCC_CIR_PLLSAIRDYC)
258 SET_BIT(RCC->CIR, RCC_CIR_PLLSAIRDYC);
262 CLEAR_BIT(RCC->CSR, RCC_CSR_LSION);
265 SET_BIT(RCC->CSR, RCC_CSR_RMVF);
303void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks)
306 RCC_Clocks->SYSCLK_Frequency = RCC_GetSystemClockFreq();
309 RCC_Clocks->HCLK_Frequency = RCC_GetHCLKClockFreq(RCC_Clocks->SYSCLK_Frequency);
312 RCC_Clocks->PCLK1_Frequency = RCC_GetPCLK1ClockFreq(RCC_Clocks->HCLK_Frequency);
315 RCC_Clocks->PCLK2_Frequency = RCC_GetPCLK2ClockFreq(RCC_Clocks->HCLK_Frequency);
326uint32_t LL_RCC_GetFMPI2CClockFreq(uint32_t FMPI2CxSource)
328 uint32_t FMPI2C_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
331 assert_param(IS_LL_RCC_FMPI2C_CLKSOURCE(FMPI2CxSource));
333 if (FMPI2CxSource == LL_RCC_FMPI2C1_CLKSOURCE)
336 switch (LL_RCC_GetFMPI2CClockSource(FMPI2CxSource))
338 case LL_RCC_FMPI2C1_CLKSOURCE_SYSCLK:
339 FMPI2C_frequency = RCC_GetSystemClockFreq();
342 case LL_RCC_FMPI2C1_CLKSOURCE_HSI:
343 if (LL_RCC_HSI_IsReady())
349 case LL_RCC_FMPI2C1_CLKSOURCE_PCLK1:
351 FMPI2C_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq()));
356 return FMPI2C_frequency;
370uint32_t LL_RCC_GetI2SClockFreq(uint32_t I2SxSource)
372 uint32_t i2s_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
377 if (I2SxSource == LL_RCC_I2S1_CLKSOURCE)
380 switch (LL_RCC_GetI2SClockSource(I2SxSource))
382#if defined(RCC_PLLI2S_SUPPORT)
383 case LL_RCC_I2S1_CLKSOURCE_PLLI2S:
384 if (LL_RCC_PLLI2S_IsReady())
386 i2s_frequency = RCC_PLLI2S_GetFreqDomain_I2S();
391#if defined(RCC_DCKCFGR_I2SSRC) || defined(RCC_DCKCFGR_I2S1SRC)
392 case LL_RCC_I2S1_CLKSOURCE_PLL:
393 if (LL_RCC_PLL_IsReady())
395 i2s_frequency = RCC_PLL_GetFreqDomain_I2S();
399 case LL_RCC_I2S1_CLKSOURCE_PLLSRC:
400 switch (LL_RCC_PLL_GetMainSource())
402 case LL_RCC_PLLSOURCE_HSE:
403 if (LL_RCC_HSE_IsReady())
409 case LL_RCC_PLLSOURCE_HSI:
411 if (LL_RCC_HSI_IsReady())
420 case LL_RCC_I2S1_CLKSOURCE_PIN:
426#if defined(RCC_DCKCFGR_I2S2SRC)
430 switch (LL_RCC_GetI2SClockSource(I2SxSource))
432 case LL_RCC_I2S2_CLKSOURCE_PLLI2S:
433 if (LL_RCC_PLLI2S_IsReady())
435 i2s_frequency = RCC_PLLI2S_GetFreqDomain_I2S();
439 case LL_RCC_I2S2_CLKSOURCE_PLL:
440 if (LL_RCC_PLL_IsReady())
442 i2s_frequency = RCC_PLL_GetFreqDomain_I2S();
446 case LL_RCC_I2S2_CLKSOURCE_PLLSRC:
447 switch (LL_RCC_PLL_GetMainSource())
449 case LL_RCC_PLLSOURCE_HSE:
450 if (LL_RCC_HSE_IsReady())
456 case LL_RCC_PLLSOURCE_HSI:
458 if (LL_RCC_HSI_IsReady())
466 case LL_RCC_I2S2_CLKSOURCE_PIN:
474 return i2s_frequency;
485uint32_t LL_RCC_GetLPTIMClockFreq(uint32_t LPTIMxSource)
487 uint32_t lptim_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
492 if (LPTIMxSource == LL_RCC_LPTIM1_CLKSOURCE)
495 switch (LL_RCC_GetLPTIMClockSource(LPTIMxSource))
497 case LL_RCC_LPTIM1_CLKSOURCE_LSI:
498 if (LL_RCC_LSI_IsReady())
504 case LL_RCC_LPTIM1_CLKSOURCE_HSI:
505 if (LL_RCC_HSI_IsReady())
511 case LL_RCC_LPTIM1_CLKSOURCE_LSE:
512 if (LL_RCC_LSE_IsReady())
518 case LL_RCC_LPTIM1_CLKSOURCE_PCLK1:
520 lptim_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq()));
525 return lptim_frequency;
542uint32_t LL_RCC_GetSAIClockFreq(uint32_t SAIxSource)
544 uint32_t sai_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
549#if defined(RCC_DCKCFGR_SAI1SRC)
550 if ((SAIxSource == LL_RCC_SAI1_CLKSOURCE) || (SAIxSource == LL_RCC_SAI2_CLKSOURCE))
553 switch (LL_RCC_GetSAIClockSource(SAIxSource))
555 case LL_RCC_SAI1_CLKSOURCE_PLLSAI:
556 case LL_RCC_SAI2_CLKSOURCE_PLLSAI:
557 if (LL_RCC_PLLSAI_IsReady())
559 sai_frequency = RCC_PLLSAI_GetFreqDomain_SAI();
563 case LL_RCC_SAI1_CLKSOURCE_PLLI2S:
564 case LL_RCC_SAI2_CLKSOURCE_PLLI2S:
565 if (LL_RCC_PLLI2S_IsReady())
567 sai_frequency = RCC_PLLI2S_GetFreqDomain_SAI();
571 case LL_RCC_SAI1_CLKSOURCE_PLL:
572 case LL_RCC_SAI2_CLKSOURCE_PLL:
573 if (LL_RCC_PLL_IsReady())
575 sai_frequency = RCC_PLL_GetFreqDomain_SAI();
579 case LL_RCC_SAI2_CLKSOURCE_PLLSRC:
580 switch (LL_RCC_PLL_GetMainSource())
582 case LL_RCC_PLLSOURCE_HSE:
583 if (LL_RCC_HSE_IsReady())
589 case LL_RCC_PLLSOURCE_HSI:
591 if (LL_RCC_HSI_IsReady())
599 case LL_RCC_SAI1_CLKSOURCE_PIN:
606#if defined(RCC_DCKCFGR_SAI1ASRC)
607 if ((SAIxSource == LL_RCC_SAI1_A_CLKSOURCE) || (SAIxSource == LL_RCC_SAI1_B_CLKSOURCE))
610 switch (LL_RCC_GetSAIClockSource(SAIxSource))
612#if defined(RCC_PLLSAI_SUPPORT)
613 case LL_RCC_SAI1_A_CLKSOURCE_PLLSAI:
614 case LL_RCC_SAI1_B_CLKSOURCE_PLLSAI:
615 if (LL_RCC_PLLSAI_IsReady())
617 sai_frequency = RCC_PLLSAI_GetFreqDomain_SAI();
622 case LL_RCC_SAI1_A_CLKSOURCE_PLLI2S:
623 case LL_RCC_SAI1_B_CLKSOURCE_PLLI2S:
624 if (LL_RCC_PLLI2S_IsReady())
626 sai_frequency = RCC_PLLI2S_GetFreqDomain_SAI();
630#if defined(RCC_SAI1A_PLLSOURCE_SUPPORT)
631 case LL_RCC_SAI1_A_CLKSOURCE_PLL:
632 case LL_RCC_SAI1_B_CLKSOURCE_PLL:
633 if (LL_RCC_PLL_IsReady())
635 sai_frequency = RCC_PLL_GetFreqDomain_SAI();
639 case LL_RCC_SAI1_A_CLKSOURCE_PLLSRC:
640 case LL_RCC_SAI1_B_CLKSOURCE_PLLSRC:
641 switch (LL_RCC_PLL_GetMainSource())
643 case LL_RCC_PLLSOURCE_HSE:
644 if (LL_RCC_HSE_IsReady())
650 case LL_RCC_PLLSOURCE_HSI:
652 if (LL_RCC_HSI_IsReady())
661 case LL_RCC_SAI1_A_CLKSOURCE_PIN:
662 case LL_RCC_SAI1_B_CLKSOURCE_PIN:
670 return sai_frequency;
682uint32_t LL_RCC_GetSDIOClockFreq(uint32_t SDIOxSource)
684 uint32_t SDIO_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
689 if (SDIOxSource == LL_RCC_SDIO_CLKSOURCE)
691#if defined(RCC_DCKCFGR_SDIOSEL) || defined(RCC_DCKCFGR2_SDIOSEL)
693 switch (LL_RCC_GetSDIOClockSource(SDIOxSource))
695 case LL_RCC_SDIO_CLKSOURCE_PLL48CLK:
696 switch (LL_RCC_GetCK48MClockSource(LL_RCC_CK48M_CLKSOURCE))
698 case LL_RCC_CK48M_CLKSOURCE_PLL:
699 if (LL_RCC_PLL_IsReady())
701 SDIO_frequency = RCC_PLL_GetFreqDomain_48M();
705#if defined(RCC_PLLSAI_SUPPORT)
706 case LL_RCC_CK48M_CLKSOURCE_PLLSAI:
708 if (LL_RCC_PLLSAI_IsReady())
710 SDIO_frequency = RCC_PLLSAI_GetFreqDomain_48M();
715#if defined(RCC_PLLI2SCFGR_PLLI2SQ) && !defined(RCC_DCKCFGR_PLLI2SDIVQ)
716 case LL_RCC_CK48M_CLKSOURCE_PLLI2S:
718 if (LL_RCC_PLLI2S_IsReady())
720 SDIO_frequency = RCC_PLLI2S_GetFreqDomain_48M();
727 case LL_RCC_SDIO_CLKSOURCE_SYSCLK:
729 SDIO_frequency = RCC_GetSystemClockFreq();
734 if (LL_RCC_PLL_IsReady())
736 SDIO_frequency = RCC_PLL_GetFreqDomain_48M();
741 return SDIO_frequency;
753uint32_t LL_RCC_GetRNGClockFreq(uint32_t RNGxSource)
755 uint32_t rng_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
760#if defined(RCC_DCKCFGR_CK48MSEL) || defined(RCC_DCKCFGR2_CK48MSEL)
762 switch (LL_RCC_GetRNGClockSource(RNGxSource))
764#if defined(RCC_PLLI2SCFGR_PLLI2SQ) && !defined(RCC_DCKCFGR_PLLI2SDIVQ)
765 case LL_RCC_RNG_CLKSOURCE_PLLI2S:
766 if (LL_RCC_PLLI2S_IsReady())
768 rng_frequency = RCC_PLLI2S_GetFreqDomain_48M();
773#if defined(RCC_PLLSAI_SUPPORT)
774 case LL_RCC_RNG_CLKSOURCE_PLLSAI:
775 if (LL_RCC_PLLSAI_IsReady())
777 rng_frequency = RCC_PLLSAI_GetFreqDomain_48M();
782 case LL_RCC_RNG_CLKSOURCE_PLL:
784 if (LL_RCC_PLL_IsReady())
786 rng_frequency = RCC_PLL_GetFreqDomain_48M();
792 if (LL_RCC_PLL_IsReady())
794 rng_frequency = RCC_PLL_GetFreqDomain_48M();
798 return rng_frequency;
810uint32_t LL_RCC_GetCECClockFreq(uint32_t CECxSource)
812 uint32_t cec_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
818 switch (LL_RCC_GetCECClockSource(CECxSource))
820 case LL_RCC_CEC_CLKSOURCE_LSE:
821 if (LL_RCC_LSE_IsReady())
827 case LL_RCC_CEC_CLKSOURCE_HSI_DIV488:
829 if (LL_RCC_HSI_IsReady())
836 return cec_frequency;
840#if defined(USB_OTG_FS) || defined(USB_OTG_HS)
848uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource)
850 uint32_t usb_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
855#if defined(RCC_DCKCFGR_CK48MSEL) || defined(RCC_DCKCFGR2_CK48MSEL)
857 switch (LL_RCC_GetUSBClockSource(USBxSource))
859#if defined(RCC_PLLI2SCFGR_PLLI2SQ) && !defined(RCC_DCKCFGR_PLLI2SDIVQ)
860 case LL_RCC_USB_CLKSOURCE_PLLI2S:
861 if (LL_RCC_PLLI2S_IsReady())
863 usb_frequency = RCC_PLLI2S_GetFreqDomain_48M();
869#if defined(RCC_PLLSAI_SUPPORT)
870 case LL_RCC_USB_CLKSOURCE_PLLSAI:
871 if (LL_RCC_PLLSAI_IsReady())
873 usb_frequency = RCC_PLLSAI_GetFreqDomain_48M();
878 case LL_RCC_USB_CLKSOURCE_PLL:
880 if (LL_RCC_PLL_IsReady())
882 usb_frequency = RCC_PLL_GetFreqDomain_48M();
888 if (LL_RCC_PLL_IsReady())
890 usb_frequency = RCC_PLL_GetFreqDomain_48M();
894 return usb_frequency;
898#if defined(DFSDM1_Channel0)
908uint32_t LL_RCC_GetDFSDMClockFreq(uint32_t DFSDMxSource)
910 uint32_t dfsdm_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
915 if (DFSDMxSource == LL_RCC_DFSDM1_CLKSOURCE)
918 switch (LL_RCC_GetDFSDMClockSource(DFSDMxSource))
920 case LL_RCC_DFSDM1_CLKSOURCE_SYSCLK:
921 dfsdm_frequency = RCC_GetSystemClockFreq();
924 case LL_RCC_DFSDM1_CLKSOURCE_PCLK2:
926 dfsdm_frequency = RCC_GetPCLK2ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq()));
930#if defined(DFSDM2_Channel0)
934 switch (LL_RCC_GetDFSDMClockSource(DFSDMxSource))
936 case LL_RCC_DFSDM2_CLKSOURCE_SYSCLK:
937 dfsdm_frequency = RCC_GetSystemClockFreq();
940 case LL_RCC_DFSDM2_CLKSOURCE_PCLK2:
942 dfsdm_frequency = RCC_GetPCLK2ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq()));
948 return dfsdm_frequency;
961uint32_t LL_RCC_GetDFSDMAudioClockFreq(uint32_t DFSDMxSource)
963 uint32_t dfsdm_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
966 assert_param(IS_LL_RCC_DFSDM_AUDIO_CLKSOURCE(DFSDMxSource));
968 if (DFSDMxSource == LL_RCC_DFSDM1_AUDIO_CLKSOURCE)
971 switch (LL_RCC_GetDFSDMAudioClockSource(DFSDMxSource))
973 case LL_RCC_DFSDM1_AUDIO_CLKSOURCE_I2S1:
974 dfsdm_frequency = LL_RCC_GetI2SClockFreq(LL_RCC_I2S1_CLKSOURCE);
977 case LL_RCC_DFSDM1_AUDIO_CLKSOURCE_I2S2:
979 dfsdm_frequency = LL_RCC_GetI2SClockFreq(LL_RCC_I2S2_CLKSOURCE);
983#if defined(DFSDM2_Channel0)
987 switch (LL_RCC_GetDFSDMAudioClockSource(DFSDMxSource))
989 case LL_RCC_DFSDM2_AUDIO_CLKSOURCE_I2S1:
990 dfsdm_frequency = LL_RCC_GetI2SClockFreq(LL_RCC_I2S1_CLKSOURCE);
993 case LL_RCC_DFSDM2_AUDIO_CLKSOURCE_I2S2:
995 dfsdm_frequency = LL_RCC_GetI2SClockFreq(LL_RCC_I2S2_CLKSOURCE);
1001 return dfsdm_frequency;
1014uint32_t LL_RCC_GetDSIClockFreq(uint32_t DSIxSource)
1016 uint32_t dsi_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
1022 switch (LL_RCC_GetDSIClockSource(DSIxSource))
1024 case LL_RCC_DSI_CLKSOURCE_PLL:
1025 if (LL_RCC_PLL_IsReady())
1027 dsi_frequency = RCC_PLL_GetFreqDomain_DSI();
1031 case LL_RCC_DSI_CLKSOURCE_PHY:
1033 dsi_frequency = LL_RCC_PERIPH_FREQUENCY_NA;
1037 return dsi_frequency;
1049uint32_t LL_RCC_GetLTDCClockFreq(uint32_t LTDCxSource)
1051 uint32_t ltdc_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
1056 if (LL_RCC_PLLSAI_IsReady())
1058 ltdc_frequency = RCC_PLLSAI_GetFreqDomain_LTDC();
1061 return ltdc_frequency;
1073uint32_t LL_RCC_GetSPDIFRXClockFreq(uint32_t SPDIFRXxSource)
1075 uint32_t spdifrx_frequency = LL_RCC_PERIPH_FREQUENCY_NO;
1078 assert_param(IS_LL_RCC_SPDIFRX_CLKSOURCE(SPDIFRXxSource));
1081 switch (LL_RCC_GetSPDIFRXClockSource(SPDIFRXxSource))
1083 case LL_RCC_SPDIFRX1_CLKSOURCE_PLLI2S:
1084 if (LL_RCC_PLLI2S_IsReady())
1086 spdifrx_frequency = RCC_PLLI2S_GetFreqDomain_SPDIFRX();
1090 case LL_RCC_SPDIFRX1_CLKSOURCE_PLL:
1092 if (LL_RCC_PLL_IsReady())
1094 spdifrx_frequency = RCC_PLL_GetFreqDomain_SPDIFRX();
1099 return spdifrx_frequency;
1119uint32_t RCC_GetSystemClockFreq(
void)
1121 uint32_t frequency = 0U;
1124 switch (LL_RCC_GetSysClkSource())
1126 case LL_RCC_SYS_CLKSOURCE_STATUS_HSI:
1130 case LL_RCC_SYS_CLKSOURCE_STATUS_HSE:
1134 case LL_RCC_SYS_CLKSOURCE_STATUS_PLL:
1135 frequency = RCC_PLL_GetFreqDomain_SYS(LL_RCC_SYS_CLKSOURCE_STATUS_PLL);
1138#if defined(RCC_PLLR_SYSCLK_SUPPORT)
1139 case LL_RCC_SYS_CLKSOURCE_STATUS_PLLR:
1140 frequency = RCC_PLL_GetFreqDomain_SYS(LL_RCC_SYS_CLKSOURCE_STATUS_PLLR);
1157uint32_t RCC_GetHCLKClockFreq(uint32_t SYSCLK_Frequency)
1160 return __LL_RCC_CALC_HCLK_FREQ(SYSCLK_Frequency, LL_RCC_GetAHBPrescaler());
1168uint32_t RCC_GetPCLK1ClockFreq(uint32_t HCLK_Frequency)
1171 return __LL_RCC_CALC_PCLK1_FREQ(HCLK_Frequency, LL_RCC_GetAPB1Prescaler());
1179uint32_t RCC_GetPCLK2ClockFreq(uint32_t HCLK_Frequency)
1182 return __LL_RCC_CALC_PCLK2_FREQ(HCLK_Frequency, LL_RCC_GetAPB2Prescaler());
1190uint32_t RCC_PLL_GetFreqDomain_SYS(uint32_t SYSCLK_Source)
1192 uint32_t pllinputfreq = 0U;
1193 uint32_t pllsource = 0U;
1194 uint32_t plloutputfreq = 0U;
1199 pllsource = LL_RCC_PLL_GetMainSource();
1203 case LL_RCC_PLLSOURCE_HSI:
1207 case LL_RCC_PLLSOURCE_HSE:
1216 if (SYSCLK_Source == LL_RCC_SYS_CLKSOURCE_STATUS_PLL)
1218 plloutputfreq = __LL_RCC_CALC_PLLCLK_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(),
1219 LL_RCC_PLL_GetN(), LL_RCC_PLL_GetP());
1221#if defined(RCC_PLLR_SYSCLK_SUPPORT)
1224 plloutputfreq = __LL_RCC_CALC_PLLRCLK_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(),
1225 LL_RCC_PLL_GetN(), LL_RCC_PLL_GetR());
1229 return plloutputfreq;
1236uint32_t RCC_PLL_GetFreqDomain_48M(
void)
1238 uint32_t pllinputfreq = 0U;
1239 uint32_t pllsource = 0U;
1244 pllsource = LL_RCC_PLL_GetMainSource();
1248 case LL_RCC_PLLSOURCE_HSI:
1252 case LL_RCC_PLLSOURCE_HSE:
1260 return __LL_RCC_CALC_PLLCLK_48M_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(),
1261 LL_RCC_PLL_GetN(), LL_RCC_PLL_GetQ());
1269uint32_t RCC_PLL_GetFreqDomain_DSI(
void)
1271 uint32_t pllinputfreq = 0U;
1272 uint32_t pllsource = 0U;
1277 pllsource = LL_RCC_PLL_GetMainSource();
1281 case LL_RCC_PLLSOURCE_HSE:
1285 case LL_RCC_PLLSOURCE_HSI:
1290 return __LL_RCC_CALC_PLLCLK_DSI_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(),
1291 LL_RCC_PLL_GetN(), LL_RCC_PLL_GetR());
1295#if defined(RCC_DCKCFGR_I2SSRC) || defined(RCC_DCKCFGR_I2S1SRC)
1300uint32_t RCC_PLL_GetFreqDomain_I2S(
void)
1302 uint32_t pllinputfreq = 0U;
1303 uint32_t pllsource = 0U;
1308 pllsource = LL_RCC_PLL_GetMainSource();
1312 case LL_RCC_PLLSOURCE_HSE:
1316 case LL_RCC_PLLSOURCE_HSI:
1321 return __LL_RCC_CALC_PLLCLK_I2S_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(),
1322 LL_RCC_PLL_GetN(), LL_RCC_PLL_GetR());
1331uint32_t RCC_PLL_GetFreqDomain_SPDIFRX(
void)
1333 uint32_t pllinputfreq = 0U;
1334 uint32_t pllsource = 0U;
1339 pllsource = LL_RCC_PLL_GetMainSource();
1343 case LL_RCC_PLLSOURCE_HSE:
1347 case LL_RCC_PLLSOURCE_HSI:
1352 return __LL_RCC_CALC_PLLCLK_SPDIFRX_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(),
1353 LL_RCC_PLL_GetN(), LL_RCC_PLL_GetR());
1357#if defined(RCC_PLLCFGR_PLLR)
1363uint32_t RCC_PLL_GetFreqDomain_SAI(
void)
1365 uint32_t pllinputfreq = 0U;
1366 uint32_t pllsource = 0U;
1367 uint32_t plloutputfreq = 0U;
1374 pllsource = LL_RCC_PLL_GetMainSource();
1378 case LL_RCC_PLLSOURCE_HSE:
1382 case LL_RCC_PLLSOURCE_HSI:
1388#if defined(RCC_DCKCFGR_PLLDIVR)
1389 plloutputfreq = __LL_RCC_CALC_PLLCLK_SAI_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(),
1390 LL_RCC_PLL_GetN(), LL_RCC_PLL_GetR(), LL_RCC_PLL_GetDIVR());
1392 plloutputfreq = __LL_RCC_CALC_PLLCLK_SAI_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(),
1393 LL_RCC_PLL_GetN(), LL_RCC_PLL_GetR());
1396 return plloutputfreq;
1401#if defined(RCC_PLLSAI_SUPPORT)
1406uint32_t RCC_PLLSAI_GetFreqDomain_SAI(
void)
1408 uint32_t pllinputfreq = 0U;
1409 uint32_t pllsource = 0U;
1414 pllsource = LL_RCC_PLL_GetMainSource();
1418 case LL_RCC_PLLSOURCE_HSI:
1422 case LL_RCC_PLLSOURCE_HSE:
1430 return __LL_RCC_CALC_PLLSAI_SAI_FREQ(pllinputfreq, LL_RCC_PLLSAI_GetDivider(),
1431 LL_RCC_PLLSAI_GetN(), LL_RCC_PLLSAI_GetQ(), LL_RCC_PLLSAI_GetDIVQ());
1434#if defined(RCC_PLLSAICFGR_PLLSAIP)
1439uint32_t RCC_PLLSAI_GetFreqDomain_48M(
void)
1441 uint32_t pllinputfreq = 0U;
1442 uint32_t pllsource = 0U;
1447 pllsource = LL_RCC_PLL_GetMainSource();
1451 case LL_RCC_PLLSOURCE_HSI:
1455 case LL_RCC_PLLSOURCE_HSE:
1463 return __LL_RCC_CALC_PLLSAI_48M_FREQ(pllinputfreq, LL_RCC_PLLSAI_GetDivider(),
1464 LL_RCC_PLLSAI_GetN(), LL_RCC_PLLSAI_GetP());
1473uint32_t RCC_PLLSAI_GetFreqDomain_LTDC(
void)
1475 uint32_t pllinputfreq = 0U;
1476 uint32_t pllsource = 0U;
1481 pllsource = LL_RCC_PLL_GetMainSource();
1485 case LL_RCC_PLLSOURCE_HSI:
1489 case LL_RCC_PLLSOURCE_HSE:
1497 return __LL_RCC_CALC_PLLSAI_LTDC_FREQ(pllinputfreq, LL_RCC_PLLSAI_GetDivider(),
1498 LL_RCC_PLLSAI_GetN(), LL_RCC_PLLSAI_GetR(), LL_RCC_PLLSAI_GetDIVR());
1503#if defined(RCC_PLLI2S_SUPPORT)
1509uint32_t RCC_PLLI2S_GetFreqDomain_SAI(
void)
1511 uint32_t plli2sinputfreq = 0;
1512 uint32_t plli2ssource = 0U;
1513 uint32_t plli2soutputfreq = 0U;
1520 plli2ssource = LL_RCC_PLLI2S_GetMainSource();
1522 switch (plli2ssource)
1524 case LL_RCC_PLLSOURCE_HSE:
1528#if defined(RCC_PLLI2SCFGR_PLLI2SSRC)
1529 case LL_RCC_PLLI2SSOURCE_PIN:
1534 case LL_RCC_PLLSOURCE_HSI:
1540#if defined(RCC_DCKCFGR_PLLI2SDIVQ)
1541 plli2soutputfreq = __LL_RCC_CALC_PLLI2S_SAI_FREQ(plli2sinputfreq, LL_RCC_PLLI2S_GetDivider(),
1542 LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetQ(), LL_RCC_PLLI2S_GetDIVQ());
1544 plli2soutputfreq = __LL_RCC_CALC_PLLI2S_SAI_FREQ(plli2sinputfreq, LL_RCC_PLLI2S_GetDivider(),
1545 LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetR(), LL_RCC_PLLI2S_GetDIVR());
1548 return plli2soutputfreq;
1557uint32_t RCC_PLLI2S_GetFreqDomain_SPDIFRX(
void)
1559 uint32_t pllinputfreq = 0U;
1560 uint32_t pllsource = 0U;
1565 pllsource = LL_RCC_PLLI2S_GetMainSource();
1569 case LL_RCC_PLLSOURCE_HSE:
1573 case LL_RCC_PLLSOURCE_HSI:
1579 return __LL_RCC_CALC_PLLI2S_SPDIFRX_FREQ(pllinputfreq, LL_RCC_PLLI2S_GetDivider(),
1580 LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetP());
1588uint32_t RCC_PLLI2S_GetFreqDomain_I2S(
void)
1590 uint32_t plli2sinputfreq = 0U;
1591 uint32_t plli2ssource = 0U;
1592 uint32_t plli2soutputfreq = 0U;
1597 plli2ssource = LL_RCC_PLLI2S_GetMainSource();
1599 switch (plli2ssource)
1601 case LL_RCC_PLLSOURCE_HSE:
1605#if defined(RCC_PLLI2SCFGR_PLLI2SSRC)
1606 case LL_RCC_PLLI2SSOURCE_PIN:
1611 case LL_RCC_PLLSOURCE_HSI:
1617 plli2soutputfreq = __LL_RCC_CALC_PLLI2S_I2S_FREQ(plli2sinputfreq, LL_RCC_PLLI2S_GetDivider(),
1618 LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetR());
1620 return plli2soutputfreq;
1623#if defined(RCC_PLLI2SCFGR_PLLI2SQ) && !defined(RCC_DCKCFGR_PLLI2SDIVQ)
1628uint32_t RCC_PLLI2S_GetFreqDomain_48M(
void)
1630 uint32_t plli2sinputfreq = 0U;
1631 uint32_t plli2ssource = 0U;
1632 uint32_t plli2soutputfreq = 0U;
1637 plli2ssource = LL_RCC_PLLI2S_GetMainSource();
1639 switch (plli2ssource)
1641 case LL_RCC_PLLSOURCE_HSE:
1645#if defined(RCC_PLLI2SCFGR_PLLI2SSRC)
1646 case LL_RCC_PLLI2SSOURCE_PIN:
1651 case LL_RCC_PLLSOURCE_HSI:
1657 plli2soutputfreq = __LL_RCC_CALC_PLLI2S_48M_FREQ(plli2sinputfreq, LL_RCC_PLLI2S_GetDivider(),
1658 LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetQ());
1660 return plli2soutputfreq;
#define assert_param(expr)
#define LSI_VALUE
Internal Low Speed oscillator (LSI) value.
#define LSE_VALUE
External Low Speed oscillator (LSE) value.
#define EXTERNAL_CLOCK_VALUE
External clock source for I2S peripheral This value is used by the I2S HAL module to compute the I2S ...
#define HSI_VALUE
Internal High Speed oscillator (HSI) value. This value is used by the RCC HAL module to compute the s...
#define HSE_VALUE
Adjust the value of External High Speed oscillator (HSE) used in your application....
Header file of RCC LL module.