34 #ifdef HAL_RCC_MODULE_ENABLED
72 #if defined(STM32F446xx)
89 uint32_t tickstart = 0U;
90 uint32_t tmpreg1 = 0U;
91 uint32_t plli2sp = 0U;
92 uint32_t plli2sq = 0U;
93 uint32_t plli2sr = 0U;
94 uint32_t pllsaip = 0U;
95 uint32_t pllsaiq = 0U;
96 uint32_t plli2sused = 0U;
97 uint32_t pllsaiused = 0U;
103 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_I2S_APB1) == (RCC_PERIPHCLK_I2S_APB1))
119 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_I2S_APB2) == (RCC_PERIPHCLK_I2S_APB2))
184 __HAL_RCC_PWR_CLK_ENABLE();
187 PWR->CR |= PWR_CR_DBP;
192 while ((PWR->CR & PWR_CR_DBP) == RESET)
194 if ((
HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
200 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
201 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
204 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
206 __HAL_RCC_BACKUPRESET_FORCE();
207 __HAL_RCC_BACKUPRESET_RELEASE();
212 if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))
218 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
220 if ((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
311 __HAL_RCC_PLLI2S_DISABLE();
315 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
317 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
325 assert_param(IS_RCC_PLLI2SM_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SM));
326 assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SN));
329 if (((((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_I2S_APB1) == RCC_PERIPHCLK_I2S_APB1)
334 assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SR));
337 plli2sp = ((((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos) + 1U) << 1U);
338 plli2sq = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
352 assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SQ));
354 assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->
PLLI2SDivQ));
357 plli2sp = ((((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos) + 1U) << 1U);
358 plli2sr = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
367 __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->
PLLI2SDivQ);
375 assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SP));
377 plli2sq = ((((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos) + 1U) << 1U);
378 plli2sr = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
390 assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SP));
391 assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SR));
392 assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SQ));
401 __HAL_RCC_PLLI2S_ENABLE();
405 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
407 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
418 if (pllsaiused == 1U)
421 __HAL_RCC_PLLSAI_DISABLE();
425 while (__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
427 if ((
HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
435 assert_param(IS_RCC_PLLSAIM_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIM));
436 assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIN));
444 assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIQ));
446 assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->
PLLSAIDivQ));
449 pllsaip = ((((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos) + 1U) << 1U);
457 __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->
PLLSAIDivQ);
466 assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIP));
468 pllsaiq = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
477 __HAL_RCC_PLLSAI_ENABLE();
481 while (__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
483 if ((
HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
506 RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 | \
507 RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC | \
508 RCC_PERIPHCLK_CEC | RCC_PERIPHCLK_FMPI2C1 | \
509 RCC_PERIPHCLK_CLK48 | RCC_PERIPHCLK_SDIO | \
510 RCC_PERIPHCLK_SPDIFRX;
513 PeriphClkInit->
PLLI2S.
PLLI2SM = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM) >> RCC_PLLI2SCFGR_PLLI2SM_Pos);
514 PeriphClkInit->
PLLI2S.
PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos);
515 PeriphClkInit->
PLLI2S.
PLLI2SP = (uint32_t)((((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos) + 1U) << 1U);
516 PeriphClkInit->
PLLI2S.
PLLI2SQ = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
517 PeriphClkInit->
PLLI2S.
PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
519 PeriphClkInit->
PLLSAI.
PLLSAIM = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIM) >> RCC_PLLSAICFGR_PLLSAIM_Pos);
520 PeriphClkInit->
PLLSAI.
PLLSAIN = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLSAICFGR_PLLSAIN_Pos);
521 PeriphClkInit->
PLLSAI.
PLLSAIP = (uint32_t)((((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos) + 1U) << 1U);
522 PeriphClkInit->
PLLSAI.
PLLSAIQ = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
524 PeriphClkInit->
PLLI2SDivQ = (uint32_t)((RCC->DCKCFGR & RCC_DCKCFGR_PLLI2SDIVQ) >> RCC_DCKCFGR_PLLI2SDIVQ_Pos);
525 PeriphClkInit->
PLLSAIDivQ = (uint32_t)((RCC->DCKCFGR & RCC_DCKCFGR_PLLSAIDIVQ) >> RCC_DCKCFGR_PLLSAIDIVQ_Pos);
540 tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE);
541 PeriphClkInit->
RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL));
559 if ((RCC->DCKCFGR & RCC_DCKCFGR_TIMPRE) == RESET)
582 uint32_t tmpreg1 = 0U;
584 uint32_t frequency = 0U;
586 uint32_t vcoinput = 0U;
588 uint32_t saiclocksource = 0U;
589 uint32_t srcclk = 0U;
591 uint32_t vcooutput = 0U;
594 case RCC_PERIPHCLK_SAI1:
595 case RCC_PERIPHCLK_SAI2:
597 saiclocksource = RCC->DCKCFGR;
598 saiclocksource &= (RCC_DCKCFGR_SAI1SRC | RCC_DCKCFGR_SAI2SRC);
599 switch (saiclocksource)
605 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI)
608 vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIM));
613 vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIM)));
617 tmpreg1 = (RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> 24U;
618 frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6U)) / (tmpreg1);
621 tmpreg1 = (((RCC->DCKCFGR & RCC_DCKCFGR_PLLSAIDIVQ) >> 8U) + 1U);
622 frequency = frequency / (tmpreg1);
625 case RCC_DCKCFGR_SAI1SRC_0:
626 case RCC_DCKCFGR_SAI2SRC_0:
630 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI)
633 vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
638 vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM)));
643 tmpreg1 = (RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> 24U;
644 frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6U)) / (tmpreg1);
647 tmpreg1 = ((RCC->DCKCFGR & RCC_DCKCFGR_PLLI2SDIVQ) + 1U);
648 frequency = frequency / (tmpreg1);
651 case RCC_DCKCFGR_SAI1SRC_1:
652 case RCC_DCKCFGR_SAI2SRC_1:
656 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI)
659 vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
664 vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)));
669 tmpreg1 = (RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 28U;
670 frequency = (vcoinput * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6U)) / (tmpreg1);
673 case RCC_DCKCFGR_SAI1SRC:
675 frequency = EXTERNAL_CLOCK_VALUE;
678 case RCC_DCKCFGR_SAI2SRC:
680 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI)
683 frequency = (uint32_t)(HSI_VALUE);
688 frequency = (uint32_t)(HSE_VALUE);
699 case RCC_PERIPHCLK_I2S_APB1:
702 srcclk = __HAL_RCC_GET_I2S_APB1_SOURCE();
706 case RCC_I2SAPB1CLKSOURCE_EXT:
709 frequency = EXTERNAL_CLOCK_VALUE;
713 case RCC_I2SAPB1CLKSOURCE_PLLI2S:
717 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
720 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
725 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
729 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6U) & (RCC_PLLI2SCFGR_PLLI2SN >> 6U)));
731 frequency = (uint32_t)(vcooutput / (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> 28U) & (RCC_PLLI2SCFGR_PLLI2SR >> 28U)));
735 case RCC_I2SAPB1CLKSOURCE_PLLR:
739 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
742 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
747 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
751 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6U) & (RCC_PLLCFGR_PLLN >> 6U)));
753 frequency = (uint32_t)(vcooutput / (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 28U) & (RCC_PLLCFGR_PLLR >> 28U)));
757 case RCC_I2SAPB1CLKSOURCE_PLLSRC:
759 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
761 frequency = HSE_VALUE;
765 frequency = HSI_VALUE;
778 case RCC_PERIPHCLK_I2S_APB2:
781 srcclk = __HAL_RCC_GET_I2S_APB2_SOURCE();
785 case RCC_I2SAPB2CLKSOURCE_EXT:
788 frequency = EXTERNAL_CLOCK_VALUE;
792 case RCC_I2SAPB2CLKSOURCE_PLLI2S:
796 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
799 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
804 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
808 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6U) & (RCC_PLLI2SCFGR_PLLI2SN >> 6U)));
810 frequency = (uint32_t)(vcooutput / (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> 28U) & (RCC_PLLI2SCFGR_PLLI2SR >> 28U)));
814 case RCC_I2SAPB2CLKSOURCE_PLLR:
818 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
821 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
826 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
830 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6U) & (RCC_PLLCFGR_PLLN >> 6U)));
832 frequency = (uint32_t)(vcooutput / (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 28U) & (RCC_PLLCFGR_PLLR >> 28U)));
836 case RCC_I2SAPB2CLKSOURCE_PLLSRC:
838 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
840 frequency = HSE_VALUE;
844 frequency = HSI_VALUE;
866 #if defined(STM32F469xx) || defined(STM32F479xx)
883 uint32_t tickstart = 0U;
884 uint32_t tmpreg1 = 0U;
885 uint32_t pllsaip = 0U;
886 uint32_t pllsaiq = 0U;
887 uint32_t pllsair = 0U;
919 (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLI2S) == RCC_PERIPHCLK_SAI_PLLI2S) ||
923 assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SN));
926 __HAL_RCC_PLLI2S_DISABLE();
930 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
932 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
945 assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SR));
955 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLI2S) == (RCC_PERIPHCLK_SAI_PLLI2S))
958 assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SQ));
959 assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->
PLLI2SDivQ));
962 tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
969 __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->
PLLI2SDivQ);
976 assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SQ));
977 assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SR));
985 __HAL_RCC_PLLI2S_ENABLE();
989 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
991 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
1004 if ((((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == RCC_PERIPHCLK_SAI_PLLSAI) ||
1010 assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIN));
1013 __HAL_RCC_PLLSAI_DISABLE();
1017 while (__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
1019 if ((
HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
1029 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == (RCC_PERIPHCLK_SAI_PLLSAI))
1031 assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIQ));
1032 assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->
PLLSAIDivQ));
1035 pllsaip = ((((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos) + 1U) << 1U);
1037 pllsair = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
1043 __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->
PLLSAIDivQ);
1049 assert_param(IS_RCC_PLLSAIR_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIR));
1050 assert_param(IS_RCC_PLLSAI_DIVR_VALUE(PeriphClkInit->
PLLSAIDivR));
1053 pllsaip = ((((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos) + 1U) << 1U);
1055 pllsaiq = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
1061 __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(PeriphClkInit->
PLLSAIDivR);
1066 if ((((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == (RCC_PERIPHCLK_CLK48)) &&
1069 assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIP));
1072 pllsaiq = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
1074 pllsair = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
1082 __HAL_RCC_PLLSAI_ENABLE();
1086 while (__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
1088 if ((
HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
1105 __HAL_RCC_PWR_CLK_ENABLE();
1108 PWR->CR |= PWR_CR_DBP;
1113 while ((PWR->CR & PWR_CR_DBP) == RESET)
1115 if ((
HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
1121 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
1122 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
1125 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
1127 __HAL_RCC_BACKUPRESET_FORCE();
1128 __HAL_RCC_BACKUPRESET_RELEASE();
1130 RCC->BDCR = tmpreg1;
1133 if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))
1139 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
1141 if ((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
1173 RCC_PERIPHCLK_SAI_PLLI2S | RCC_PERIPHCLK_LTDC | \
1174 RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC | \
1175 RCC_PERIPHCLK_CLK48 | RCC_PERIPHCLK_SDIO;
1178 PeriphClkInit->
PLLI2S.
PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos);
1179 PeriphClkInit->
PLLI2S.
PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
1180 PeriphClkInit->
PLLI2S.
PLLI2SQ = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
1182 PeriphClkInit->
PLLSAI.
PLLSAIN = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLSAICFGR_PLLSAIN_Pos);
1183 PeriphClkInit->
PLLSAI.
PLLSAIR = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
1184 PeriphClkInit->
PLLSAI.
PLLSAIQ = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
1186 PeriphClkInit->
PLLI2SDivQ = (uint32_t)((RCC->DCKCFGR & RCC_DCKCFGR_PLLI2SDIVQ) >> RCC_DCKCFGR_PLLI2SDIVQ_Pos);
1187 PeriphClkInit->
PLLSAIDivQ = (uint32_t)((RCC->DCKCFGR & RCC_DCKCFGR_PLLSAIDIVQ) >> RCC_DCKCFGR_PLLSAIDIVQ_Pos);
1188 PeriphClkInit->
PLLSAIDivR = (uint32_t)(RCC->DCKCFGR & RCC_DCKCFGR_PLLSAIDIVR);
1190 tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE);
1191 PeriphClkInit->
RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL));
1199 if ((RCC->DCKCFGR & RCC_DCKCFGR_TIMPRE) == RESET)
1220 uint32_t frequency = 0U;
1222 uint32_t vcoinput = 0U;
1223 uint32_t srcclk = 0U;
1225 uint32_t vcooutput = 0U;
1228 case RCC_PERIPHCLK_I2S:
1231 srcclk = __HAL_RCC_GET_I2S_SOURCE();
1235 case RCC_I2SCLKSOURCE_EXT:
1238 frequency = EXTERNAL_CLOCK_VALUE;
1242 case RCC_I2SCLKSOURCE_PLLI2S:
1246 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
1249 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
1254 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
1258 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6U) & (RCC_PLLI2SCFGR_PLLI2SN >> 6U)));
1260 frequency = (uint32_t)(vcooutput / (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> 28U) & (RCC_PLLI2SCFGR_PLLI2SR >> 28U)));
1281 #if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
1298 uint32_t tickstart = 0U;
1299 uint32_t tmpreg1 = 0U;
1300 #if defined(STM32F413xx) || defined(STM32F423xx)
1301 uint32_t plli2sq = 0U;
1303 uint32_t plli2sused = 0U;
1309 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_I2S_APB1) == (RCC_PERIPHCLK_I2S_APB1))
1325 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_I2S_APB2) == (RCC_PERIPHCLK_I2S_APB2))
1340 #if defined(STM32F413xx) || defined(STM32F423xx)
1358 assert_param(IS_RCC_PLL_DIVR_VALUE(PeriphClkInit->
PLLDivR));
1361 __HAL_RCC_PLL_PLLSAICLKDIVR_CONFIG(PeriphClkInit->
PLLDivR);
1383 assert_param(IS_RCC_PLL_DIVR_VALUE(PeriphClkInit->
PLLDivR));
1386 __HAL_RCC_PLL_PLLSAICLKDIVR_CONFIG(PeriphClkInit->
PLLDivR);
1399 __HAL_RCC_PWR_CLK_ENABLE();
1402 PWR->CR |= PWR_CR_DBP;
1407 while ((PWR->CR & PWR_CR_DBP) == RESET)
1409 if ((
HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
1415 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
1416 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
1419 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
1421 __HAL_RCC_BACKUPRESET_FORCE();
1422 __HAL_RCC_BACKUPRESET_RELEASE();
1424 RCC->BDCR = tmpreg1;
1427 if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))
1433 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
1435 if ((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
1499 __HAL_RCC_PLLI2S_DISABLE();
1503 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
1505 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
1514 assert_param(IS_RCC_PLLI2SM_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SM));
1515 assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SN));
1520 if (((((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_I2S_APB1) == RCC_PERIPHCLK_I2S_APB1)
1527 assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SR));
1528 assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SQ));
1537 #if defined(STM32F413xx) || defined(STM32F423xx)
1544 assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SR));
1546 assert_param(IS_RCC_PLLI2S_DIVR_VALUE(PeriphClkInit->
PLLI2SDivR));
1549 plli2sq = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
1558 __HAL_RCC_PLLI2S_PLLSAICLKDIVR_CONFIG(PeriphClkInit->
PLLI2SDivR);
1566 assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SR));
1567 assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SQ));
1577 __HAL_RCC_PLLI2S_ENABLE();
1581 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
1583 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
1604 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO)
1614 #if defined(STM32F413xx) || defined(STM32F423xx)
1627 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_DFSDM2_AUDIO) == RCC_PERIPHCLK_DFSDM2_AUDIO)
1664 #if defined(STM32F413xx) || defined(STM32F423xx)
1666 RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC | \
1667 RCC_PERIPHCLK_FMPI2C1 | RCC_PERIPHCLK_CLK48 | \
1668 RCC_PERIPHCLK_SDIO | RCC_PERIPHCLK_DFSDM1 | \
1669 RCC_PERIPHCLK_DFSDM1_AUDIO | RCC_PERIPHCLK_DFSDM2 | \
1670 RCC_PERIPHCLK_DFSDM2_AUDIO | RCC_PERIPHCLK_LPTIM1 | \
1671 RCC_PERIPHCLK_SAIA | RCC_PERIPHCLK_SAIB;
1674 RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC | \
1675 RCC_PERIPHCLK_FMPI2C1 | RCC_PERIPHCLK_CLK48 | \
1676 RCC_PERIPHCLK_SDIO | RCC_PERIPHCLK_DFSDM1 | \
1677 RCC_PERIPHCLK_DFSDM1_AUDIO;
1683 PeriphClkInit->
PLLI2S.
PLLI2SM = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM) >> RCC_PLLI2SCFGR_PLLI2SM_Pos);
1684 PeriphClkInit->
PLLI2S.
PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos);
1685 PeriphClkInit->
PLLI2S.
PLLI2SQ = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
1686 PeriphClkInit->
PLLI2S.
PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
1687 #if defined(STM32F413xx) || defined(STM32F423xx)
1689 PeriphClkInit->
PLLI2SDivR = (uint32_t)((RCC->DCKCFGR & RCC_DCKCFGR_PLLI2SDIVR) >> RCC_DCKCFGR_PLLI2SDIVR_Pos);
1690 PeriphClkInit->
PLLDivR = (uint32_t)((RCC->DCKCFGR & RCC_DCKCFGR_PLLDIVR) >> RCC_DCKCFGR_PLLDIVR_Pos);
1700 tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE);
1701 PeriphClkInit->
RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL));
1718 #if defined(STM32F413xx) || defined(STM32F423xx)
1736 if ((RCC->DCKCFGR & RCC_DCKCFGR_TIMPRE) == RESET)
1758 uint32_t frequency = 0U;
1760 uint32_t vcoinput = 0U;
1761 uint32_t srcclk = 0U;
1763 uint32_t vcooutput = 0U;
1766 case RCC_PERIPHCLK_I2S_APB1:
1769 srcclk = __HAL_RCC_GET_I2S_APB1_SOURCE();
1773 case RCC_I2SAPB1CLKSOURCE_EXT:
1776 frequency = EXTERNAL_CLOCK_VALUE;
1780 case RCC_I2SAPB1CLKSOURCE_PLLI2S:
1782 if ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SSRC) == RCC_PLLI2SCFGR_PLLI2SSRC)
1785 vcoinput = (uint32_t)(EXTERNAL_CLOCK_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
1791 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
1794 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
1799 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
1803 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6U) & (RCC_PLLI2SCFGR_PLLI2SN >> 6U)));
1805 frequency = (uint32_t)(vcooutput / (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> 28U) & (RCC_PLLI2SCFGR_PLLI2SR >> 28U)));
1809 case RCC_I2SAPB1CLKSOURCE_PLLR:
1813 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
1816 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
1821 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
1825 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6U) & (RCC_PLLCFGR_PLLN >> 6U)));
1827 frequency = (uint32_t)(vcooutput / (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 28U) & (RCC_PLLCFGR_PLLR >> 28U)));
1831 case RCC_I2SAPB1CLKSOURCE_PLLSRC:
1833 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
1835 frequency = HSE_VALUE;
1839 frequency = HSI_VALUE;
1852 case RCC_PERIPHCLK_I2S_APB2:
1855 srcclk = __HAL_RCC_GET_I2S_APB2_SOURCE();
1859 case RCC_I2SAPB2CLKSOURCE_EXT:
1862 frequency = EXTERNAL_CLOCK_VALUE;
1866 case RCC_I2SAPB2CLKSOURCE_PLLI2S:
1868 if ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SSRC) == RCC_PLLI2SCFGR_PLLI2SSRC)
1871 vcoinput = (uint32_t)(EXTERNAL_CLOCK_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
1877 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
1880 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
1885 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
1889 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6U) & (RCC_PLLI2SCFGR_PLLI2SN >> 6U)));
1891 frequency = (uint32_t)(vcooutput / (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> 28U) & (RCC_PLLI2SCFGR_PLLI2SR >> 28U)));
1895 case RCC_I2SAPB2CLKSOURCE_PLLR:
1899 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
1902 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
1907 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
1911 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6U) & (RCC_PLLCFGR_PLLN >> 6U)));
1913 frequency = (uint32_t)(vcooutput / (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 28U) & (RCC_PLLCFGR_PLLR >> 28U)));
1917 case RCC_I2SAPB2CLKSOURCE_PLLSRC:
1919 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
1921 frequency = HSE_VALUE;
1925 frequency = HSI_VALUE;
1947 #if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
1962 uint32_t tickstart = 0U;
1963 uint32_t tmpreg1 = 0U;
1975 __HAL_RCC_PWR_CLK_ENABLE();
1978 PWR->CR |= PWR_CR_DBP;
1983 while ((PWR->CR & PWR_CR_DBP) == RESET)
1985 if ((
HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
1991 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
1992 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
1995 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
1997 __HAL_RCC_BACKUPRESET_FORCE();
1998 __HAL_RCC_BACKUPRESET_RELEASE();
2000 RCC->BDCR = tmpreg1;
2003 if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))
2009 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
2011 if ((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
2075 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_FMPI2C1 | RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC;
2077 tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE);
2078 PeriphClkInit->
RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL));
2080 if ((RCC->DCKCFGR & RCC_DCKCFGR_TIMPRE) == RESET)
2107 uint32_t frequency = 0U;
2109 uint32_t vcoinput = 0U;
2110 uint32_t srcclk = 0U;
2112 uint32_t vcooutput = 0U;
2115 case RCC_PERIPHCLK_I2S:
2118 srcclk = __HAL_RCC_GET_I2S_SOURCE();
2122 case RCC_I2SAPBCLKSOURCE_EXT:
2125 frequency = EXTERNAL_CLOCK_VALUE;
2129 case RCC_I2SAPBCLKSOURCE_PLLR:
2133 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
2136 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
2141 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
2145 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6U) & (RCC_PLLCFGR_PLLN >> 6U)));
2147 frequency = (uint32_t)(vcooutput / (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 28U) & (RCC_PLLCFGR_PLLR >> 28U)));
2151 case RCC_I2SAPBCLKSOURCE_PLLSRC:
2153 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
2155 frequency = HSE_VALUE;
2159 frequency = HSI_VALUE;
2181 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
2198 uint32_t tickstart = 0U;
2199 uint32_t tmpreg1 = 0U;
2209 (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLI2S) == RCC_PERIPHCLK_SAI_PLLI2S) ||
2213 assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SN));
2216 __HAL_RCC_PLLI2S_DISABLE();
2220 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
2222 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
2235 assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SR));
2245 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLI2S) == (RCC_PERIPHCLK_SAI_PLLI2S))
2248 assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SQ));
2249 assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->
PLLI2SDivQ));
2252 tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
2259 __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->
PLLI2SDivQ);
2266 assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SQ));
2267 assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SR));
2275 __HAL_RCC_PLLI2S_ENABLE();
2279 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
2281 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
2294 if ((((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == RCC_PERIPHCLK_SAI_PLLSAI) ||
2298 assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIN));
2301 __HAL_RCC_PLLSAI_DISABLE();
2305 while (__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
2307 if ((
HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
2317 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == (RCC_PERIPHCLK_SAI_PLLSAI))
2319 assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIQ));
2320 assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->
PLLSAIDivQ));
2323 tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
2329 __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->
PLLSAIDivQ);
2335 assert_param(IS_RCC_PLLSAIR_VALUE(PeriphClkInit->
PLLSAI.
PLLSAIR));
2336 assert_param(IS_RCC_PLLSAI_DIVR_VALUE(PeriphClkInit->
PLLSAIDivR));
2339 tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
2345 __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(PeriphClkInit->
PLLSAIDivR);
2348 __HAL_RCC_PLLSAI_ENABLE();
2352 while (__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
2354 if ((
HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
2370 __HAL_RCC_PWR_CLK_ENABLE();
2373 PWR->CR |= PWR_CR_DBP;
2378 while ((PWR->CR & PWR_CR_DBP) == RESET)
2380 if ((
HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
2386 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
2387 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
2390 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
2392 __HAL_RCC_BACKUPRESET_FORCE();
2393 __HAL_RCC_BACKUPRESET_RELEASE();
2395 RCC->BDCR = tmpreg1;
2398 if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))
2404 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
2406 if ((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
2437 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_I2S | RCC_PERIPHCLK_SAI_PLLSAI | RCC_PERIPHCLK_SAI_PLLI2S | RCC_PERIPHCLK_LTDC | RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC;
2440 PeriphClkInit->
PLLI2S.
PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos);
2441 PeriphClkInit->
PLLI2S.
PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
2442 PeriphClkInit->
PLLI2S.
PLLI2SQ = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
2444 PeriphClkInit->
PLLSAI.
PLLSAIN = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLSAICFGR_PLLSAIN_Pos);
2445 PeriphClkInit->
PLLSAI.
PLLSAIR = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
2446 PeriphClkInit->
PLLSAI.
PLLSAIQ = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
2448 PeriphClkInit->
PLLI2SDivQ = (uint32_t)((RCC->DCKCFGR & RCC_DCKCFGR_PLLI2SDIVQ) >> RCC_DCKCFGR_PLLI2SDIVQ_Pos);
2449 PeriphClkInit->
PLLSAIDivQ = (uint32_t)((RCC->DCKCFGR & RCC_DCKCFGR_PLLSAIDIVQ) >> RCC_DCKCFGR_PLLSAIDIVQ_Pos);
2450 PeriphClkInit->
PLLSAIDivR = (uint32_t)(RCC->DCKCFGR & RCC_DCKCFGR_PLLSAIDIVR);
2452 tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE);
2453 PeriphClkInit->
RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL));
2455 if ((RCC->DCKCFGR & RCC_DCKCFGR_TIMPRE) == RESET)
2476 uint32_t frequency = 0U;
2478 uint32_t vcoinput = 0U;
2479 uint32_t srcclk = 0U;
2481 uint32_t vcooutput = 0U;
2484 case RCC_PERIPHCLK_I2S:
2487 srcclk = __HAL_RCC_GET_I2S_SOURCE();
2491 case RCC_I2SCLKSOURCE_EXT:
2494 frequency = EXTERNAL_CLOCK_VALUE;
2498 case RCC_I2SCLKSOURCE_PLLI2S:
2502 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
2505 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
2510 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
2514 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6U) & (RCC_PLLI2SCFGR_PLLI2SN >> 6U)));
2516 frequency = (uint32_t)(vcooutput / (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> 28U) & (RCC_PLLI2SCFGR_PLLI2SR >> 28U)));
2537 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx)|| defined(STM32F417xx) ||\
2538 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE)
2553 uint32_t tickstart = 0U;
2554 uint32_t tmpreg1 = 0U;
2564 assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SR));
2565 assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SN));
2566 #if defined(STM32F411xE)
2567 assert_param(IS_RCC_PLLI2SM_VALUE(PeriphClkInit->
PLLI2S.
PLLI2SM));
2570 __HAL_RCC_PLLI2S_DISABLE();
2574 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
2576 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
2583 #if defined(STM32F411xE)
2597 __HAL_RCC_PLLI2S_ENABLE();
2601 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
2603 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
2618 __HAL_RCC_PWR_CLK_ENABLE();
2621 PWR->CR |= PWR_CR_DBP;
2626 while ((PWR->CR & PWR_CR_DBP) == RESET)
2628 if ((
HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
2634 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
2635 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
2638 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
2640 __HAL_RCC_BACKUPRESET_FORCE();
2641 __HAL_RCC_BACKUPRESET_RELEASE();
2643 RCC->BDCR = tmpreg1;
2646 if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))
2652 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
2654 if ((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
2663 #if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE)
2688 PeriphClkInit->
PLLI2S.
PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos);
2689 PeriphClkInit->
PLLI2S.
PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
2690 #if defined(STM32F411xE)
2691 PeriphClkInit->
PLLI2S.
PLLI2SM = (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM);
2694 tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE);
2695 PeriphClkInit->
RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL));
2697 #if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE)
2699 if ((RCC->DCKCFGR & RCC_DCKCFGR_TIMPRE) == RESET)
2721 uint32_t frequency = 0U;
2723 uint32_t vcoinput = 0U;
2724 uint32_t srcclk = 0U;
2726 uint32_t vcooutput = 0U;
2729 case RCC_PERIPHCLK_I2S:
2732 srcclk = __HAL_RCC_GET_I2S_SOURCE();
2736 case RCC_I2SCLKSOURCE_EXT:
2739 frequency = EXTERNAL_CLOCK_VALUE;
2743 case RCC_I2SCLKSOURCE_PLLI2S:
2745 #if defined(STM32F411xE)
2748 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
2751 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
2756 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
2761 if ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSE)
2764 vcoinput = (uint32_t)(HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
2769 vcoinput = (uint32_t)(HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
2773 vcooutput = (uint32_t)(vcoinput * (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6U) & (RCC_PLLI2SCFGR_PLLI2SN >> 6U)));
2775 frequency = (uint32_t)(vcooutput / (((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> 28U) & (RCC_PLLI2SCFGR_PLLI2SR >> 28U)));
2796 #if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) ||\
2797 defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
2812 assert_param(IS_RCC_LSE_MODE(Mode));
2813 if (Mode == RCC_LSE_HIGHDRIVE_MODE)
2815 SET_BIT(RCC->BDCR, RCC_BDCR_LSEMOD);
2819 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEMOD);
2839 #if defined(RCC_PLLI2S_SUPPORT)
2851 assert_param(IS_RCC_PLLI2SN_VALUE(PLLI2SInit->
PLLI2SN));
2852 assert_param(IS_RCC_PLLI2SR_VALUE(PLLI2SInit->
PLLI2SR));
2853 #if defined(RCC_PLLI2SCFGR_PLLI2SM)
2854 assert_param(IS_RCC_PLLI2SM_VALUE(PLLI2SInit->
PLLI2SM));
2856 #if defined(RCC_PLLI2SCFGR_PLLI2SP)
2857 assert_param(IS_RCC_PLLI2SP_VALUE(PLLI2SInit->
PLLI2SP));
2859 #if defined(RCC_PLLI2SCFGR_PLLI2SQ)
2860 assert_param(IS_RCC_PLLI2SQ_VALUE(PLLI2SInit->
PLLI2SQ));
2864 __HAL_RCC_PLLI2S_DISABLE();
2868 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
2870 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
2878 #if defined(STM32F446xx)
2883 __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->
PLLI2SM, PLLI2SInit->
PLLI2SN, \
2885 #elif defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) ||\
2886 defined(STM32F413xx) || defined(STM32F423xx)
2890 __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->
PLLI2SM, PLLI2SInit->
PLLI2SN, \
2892 #elif defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
2893 defined(STM32F469xx) || defined(STM32F479xx)
2898 #elif defined(STM32F411xE)
2905 __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->
PLLI2SN, PLLI2SInit->
PLLI2SR);
2909 __HAL_RCC_PLLI2S_ENABLE();
2913 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
2915 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
2934 __HAL_RCC_PLLI2S_DISABLE();
2938 while (READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) != RESET)
2940 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
2952 #if defined(RCC_PLLSAI_SUPPORT)
2964 assert_param(IS_RCC_PLLSAIN_VALUE(PLLSAIInit->
PLLSAIN));
2965 assert_param(IS_RCC_PLLSAIQ_VALUE(PLLSAIInit->
PLLSAIQ));
2966 #if defined(RCC_PLLSAICFGR_PLLSAIM)
2967 assert_param(IS_RCC_PLLSAIM_VALUE(PLLSAIInit->
PLLSAIM));
2969 #if defined(RCC_PLLSAICFGR_PLLSAIP)
2970 assert_param(IS_RCC_PLLSAIP_VALUE(PLLSAIInit->
PLLSAIP));
2972 #if defined(RCC_PLLSAICFGR_PLLSAIR)
2973 assert_param(IS_RCC_PLLSAIR_VALUE(PLLSAIInit->
PLLSAIR));
2977 __HAL_RCC_PLLSAI_DISABLE();
2981 while (__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
2983 if ((
HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
2991 #if defined(STM32F446xx)
2996 __HAL_RCC_PLLSAI_CONFIG(PLLSAIInit->
PLLSAIM, PLLSAIInit->
PLLSAIN, \
2998 #elif defined(STM32F469xx) || defined(STM32F479xx)
3003 __HAL_RCC_PLLSAI_CONFIG(PLLSAIInit->
PLLSAIN, PLLSAIInit->
PLLSAIP, \
3013 __HAL_RCC_PLLSAI_ENABLE();
3017 while (__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
3019 if ((
HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
3038 __HAL_RCC_PLLSAI_DISABLE();
3042 while (__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
3044 if ((
HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
3060 #if defined(STM32F446xx)
3097 uint32_t pllvco = 0U;
3100 uint32_t sysclockfreq = 0U;
3103 switch (RCC->CFGR & RCC_CFGR_SWS)
3105 case RCC_CFGR_SWS_HSI:
3107 sysclockfreq = HSI_VALUE;
3110 case RCC_CFGR_SWS_HSE:
3112 sysclockfreq = HSE_VALUE;
3115 case RCC_CFGR_SWS_PLL:
3119 pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
3120 if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI)
3123 pllvco = (uint32_t)((((uint64_t) HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
3128 pllvco = (uint32_t)((((uint64_t) HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
3130 pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U) * 2U);
3132 sysclockfreq = pllvco / pllp;
3135 case RCC_CFGR_SWS_PLLR:
3139 pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
3140 if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI)
3143 pllvco = (uint32_t)((((uint64_t) HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
3148 pllvco = (uint32_t)((((uint64_t) HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
3150 pllr = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos);
3152 sysclockfreq = pllvco / pllr;
3157 sysclockfreq = HSI_VALUE;
3161 return sysclockfreq;
3194 SET_BIT(RCC->CR, RCC_CR_HSION);
3197 while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == RESET)
3199 if ((
HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
3206 SET_BIT(RCC->CR, RCC_CR_HSITRIM_4);
3212 CLEAR_REG(RCC->CFGR);
3215 while (READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != RESET)
3217 if ((
HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
3227 CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_CSSON);
3230 while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != RESET)
3232 if ((
HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
3242 CLEAR_BIT(RCC->CR, RCC_CR_PLLON);
3245 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != RESET)
3247 if ((
HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
3253 #if defined(RCC_PLLI2S_SUPPORT)
3258 CLEAR_BIT(RCC->CR, RCC_CR_PLLI2SON);
3261 while (READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) != RESET)
3263 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
3270 #if defined(RCC_PLLSAI_SUPPORT)
3275 CLEAR_BIT(RCC->CR, RCC_CR_PLLSAION);
3278 while (READ_BIT(RCC->CR, RCC_CR_PLLSAIRDY) != RESET)
3280 if ((
HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
3288 #if defined(STM32F412Cx) || defined(STM32F412Rx) || defined(STM32F412Vx) || defined(STM32F412Zx) || defined(STM32F413xx) || \
3289 defined(STM32F423xx) || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
3290 RCC->PLLCFGR = RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLN_6 | RCC_PLLCFGR_PLLN_7 | RCC_PLLCFGR_PLLQ_2 | RCC_PLLCFGR_PLLR_1;
3291 #elif defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
3292 RCC->PLLCFGR = RCC_PLLCFGR_PLLR_0 | RCC_PLLCFGR_PLLR_1 | RCC_PLLCFGR_PLLR_2 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLN_6 | RCC_PLLCFGR_PLLN_7 | RCC_PLLCFGR_PLLQ_0 | RCC_PLLCFGR_PLLQ_1 | RCC_PLLCFGR_PLLQ_2 | RCC_PLLCFGR_PLLQ_3;
3294 RCC->PLLCFGR = RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLN_6 | RCC_PLLCFGR_PLLN_7 | RCC_PLLCFGR_PLLQ_2;
3298 #if defined(STM32F412Cx) || defined(STM32F412Rx) || defined(STM32F412Vx) || defined(STM32F412Zx) || defined(STM32F413xx) || \
3299 defined(STM32F423xx) || defined(STM32F446xx)
3300 RCC->PLLI2SCFGR = RCC_PLLI2SCFGR_PLLI2SM_4 | RCC_PLLI2SCFGR_PLLI2SN_6 | RCC_PLLI2SCFGR_PLLI2SN_7 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SR_1;
3301 #elif defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
3302 RCC->PLLI2SCFGR = RCC_PLLI2SCFGR_PLLI2SN_6 | RCC_PLLI2SCFGR_PLLI2SN_7 | RCC_PLLI2SCFGR_PLLI2SR_1;
3303 #elif defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
3304 RCC->PLLI2SCFGR = RCC_PLLI2SCFGR_PLLI2SN_6 | RCC_PLLI2SCFGR_PLLI2SN_7 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SR_1;
3305 #elif defined(STM32F411xE)
3306 RCC->PLLI2SCFGR = RCC_PLLI2SCFGR_PLLI2SM_4 | RCC_PLLI2SCFGR_PLLI2SN_6 | RCC_PLLI2SCFGR_PLLI2SN_7 | RCC_PLLI2SCFGR_PLLI2SR_1;
3310 #if defined(STM32F427xx) || defined(STM32F429xx) || defined(STM32F437xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
3311 RCC->PLLSAICFGR = RCC_PLLSAICFGR_PLLSAIN_6 | RCC_PLLSAICFGR_PLLSAIN_7 | RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIR_1;
3312 #elif defined(STM32F446xx)
3313 RCC->PLLSAICFGR = RCC_PLLSAICFGR_PLLSAIM_4 | RCC_PLLSAICFGR_PLLSAIN_6 | RCC_PLLSAICFGR_PLLSAIN_7 | RCC_PLLSAICFGR_PLLSAIQ_2;
3317 CLEAR_BIT(RCC->CIR, RCC_CIR_LSIRDYIE | RCC_CIR_LSERDYIE | RCC_CIR_HSIRDYIE | RCC_CIR_HSERDYIE | RCC_CIR_PLLRDYIE);
3319 #if defined(RCC_CIR_PLLI2SRDYIE)
3320 CLEAR_BIT(RCC->CIR, RCC_CIR_PLLI2SRDYIE);
3323 #if defined(RCC_CIR_PLLSAIRDYIE)
3324 CLEAR_BIT(RCC->CIR, RCC_CIR_PLLSAIRDYIE);
3328 SET_BIT(RCC->CIR, RCC_CIR_LSIRDYC | RCC_CIR_LSERDYC | RCC_CIR_HSIRDYC | RCC_CIR_HSERDYC | RCC_CIR_PLLRDYC |
3331 #if defined(RCC_CIR_PLLI2SRDYC)
3332 SET_BIT(RCC->CIR, RCC_CIR_PLLI2SRDYC);
3335 #if defined(RCC_CIR_PLLSAIRDYC)
3336 SET_BIT(RCC->CIR, RCC_CIR_PLLSAIRDYC);
3340 CLEAR_BIT(RCC->CSR, RCC_CSR_LSION);
3343 SET_BIT(RCC->CSR, RCC_CSR_RMVF);
3346 SystemCoreClock = HSI_VALUE;
3359 #if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) ||\
3360 defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
3380 uint32_t pll_config;
3383 if (RCC_OscInitStruct == NULL)
3389 assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->
OscillatorType));
3391 if (((RCC_OscInitStruct->
OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
3394 assert_param(IS_RCC_HSE(RCC_OscInitStruct->
HSEState));
3396 #if defined(STM32F446xx)
3397 if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE)
3399 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)) || \
3400 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLLR) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
3402 if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE)
3404 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
3407 if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->
HSEState == RCC_HSE_OFF))
3415 __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->
HSEState);
3418 if ((RCC_OscInitStruct->
HSEState) != RCC_HSE_OFF)
3424 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
3426 if ((
HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
3438 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
3440 if ((
HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
3449 if (((RCC_OscInitStruct->
OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
3452 assert_param(IS_RCC_HSI(RCC_OscInitStruct->
HSIState));
3456 #if defined(STM32F446xx)
3457 if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI)
3459 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)) || \
3460 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLLR) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
3462 if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI)
3464 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
3468 if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->
HSIState != RCC_HSI_ON))
3482 if ((RCC_OscInitStruct->
HSIState) != RCC_HSI_OFF)
3485 __HAL_RCC_HSI_ENABLE();
3491 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
3493 if ((
HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
3505 __HAL_RCC_HSI_DISABLE();
3511 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
3513 if ((
HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
3522 if (((RCC_OscInitStruct->
OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
3525 assert_param(IS_RCC_LSI(RCC_OscInitStruct->
LSIState));
3528 if ((RCC_OscInitStruct->
LSIState) != RCC_LSI_OFF)
3531 __HAL_RCC_LSI_ENABLE();
3537 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
3539 if ((
HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
3548 __HAL_RCC_LSI_DISABLE();
3554 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
3556 if ((
HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
3564 if (((RCC_OscInitStruct->
OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
3566 FlagStatus pwrclkchanged = RESET;
3569 assert_param(IS_RCC_LSE(RCC_OscInitStruct->
LSEState));
3573 if (__HAL_RCC_PWR_IS_CLK_DISABLED())
3575 __HAL_RCC_PWR_CLK_ENABLE();
3576 pwrclkchanged = SET;
3579 if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
3582 SET_BIT(PWR->CR, PWR_CR_DBP);
3587 while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
3589 if ((
HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
3597 __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->
LSEState);
3599 if ((RCC_OscInitStruct->
LSEState) != RCC_LSE_OFF)
3605 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
3607 if ((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
3619 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
3621 if ((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
3629 if (pwrclkchanged == SET)
3631 __HAL_RCC_PWR_CLK_DISABLE();
3636 assert_param(IS_RCC_PLL(RCC_OscInitStruct->
PLL.
PLLState));
3637 if ((RCC_OscInitStruct->
PLL.
PLLState) != RCC_PLL_NONE)
3640 if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL)
3642 if ((RCC_OscInitStruct->
PLL.
PLLState) == RCC_PLL_ON)
3645 assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->
PLL.
PLLSource));
3646 assert_param(IS_RCC_PLLM_VALUE(RCC_OscInitStruct->
PLL.
PLLM));
3647 assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->
PLL.
PLLN));
3648 assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->
PLL.
PLLP));
3649 assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->
PLL.
PLLQ));
3650 assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->
PLL.
PLLR));
3653 __HAL_RCC_PLL_DISABLE();
3659 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
3661 if ((
HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
3668 WRITE_REG(RCC->PLLCFGR, (RCC_OscInitStruct->
PLL.
PLLSource | \
3669 RCC_OscInitStruct->
PLL.
PLLM | \
3670 (RCC_OscInitStruct->
PLL.
PLLN << RCC_PLLCFGR_PLLN_Pos) | \
3671 (((RCC_OscInitStruct->
PLL.
PLLP >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos) | \
3672 (RCC_OscInitStruct->
PLL.
PLLQ << RCC_PLLCFGR_PLLQ_Pos) | \
3673 (RCC_OscInitStruct->
PLL.
PLLR << RCC_PLLCFGR_PLLR_Pos)));
3675 __HAL_RCC_PLL_ENABLE();
3681 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
3683 if ((
HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
3692 __HAL_RCC_PLL_DISABLE();
3698 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
3700 if ((
HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
3710 if ((RCC_OscInitStruct->
PLL.
PLLState) == RCC_PLL_OFF)
3717 pll_config = RCC->PLLCFGR;
3718 #if defined (RCC_PLLCFGR_PLLR)
3719 if (((RCC_OscInitStruct->
PLL.
PLLState) == RCC_PLL_OFF) ||
3720 (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->
PLL.
PLLSource) ||
3721 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->
PLL.
PLLM) << RCC_PLLCFGR_PLLM_Pos) ||
3722 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->
PLL.
PLLN) << RCC_PLLCFGR_PLLN_Pos) ||
3723 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->
PLL.
PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) ||
3724 (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->
PLL.
PLLQ << RCC_PLLCFGR_PLLQ_Pos)) ||
3725 (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->
PLL.
PLLR << RCC_PLLCFGR_PLLR_Pos)))
3727 if (((RCC_OscInitStruct->
PLL.
PLLState) == RCC_PLL_OFF) ||
3728 (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->
PLL.
PLLSource) ||
3729 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->
PLL.
PLLM) << RCC_PLLCFGR_PLLM_Pos) ||
3730 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->
PLL.
PLLN) << RCC_PLLCFGR_PLLN_Pos) ||
3731 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->
PLL.
PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) ||
3732 (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->
PLL.
PLLQ << RCC_PLLCFGR_PLLQ_Pos)))
3755 RCC_OscInitStruct->
OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
3758 if ((RCC->CR & RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
3760 RCC_OscInitStruct->
HSEState = RCC_HSE_BYPASS;
3762 else if ((RCC->CR & RCC_CR_HSEON) == RCC_CR_HSEON)
3764 RCC_OscInitStruct->
HSEState = RCC_HSE_ON;
3768 RCC_OscInitStruct->
HSEState = RCC_HSE_OFF;
3772 if ((RCC->CR & RCC_CR_HSION) == RCC_CR_HSION)
3774 RCC_OscInitStruct->
HSIState = RCC_HSI_ON;
3778 RCC_OscInitStruct->
HSIState = RCC_HSI_OFF;
3781 RCC_OscInitStruct->
HSICalibrationValue = (uint32_t)((RCC->CR & RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos);
3784 if ((RCC->BDCR & RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
3786 RCC_OscInitStruct->
LSEState = RCC_LSE_BYPASS;
3788 else if ((RCC->BDCR & RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
3790 RCC_OscInitStruct->
LSEState = RCC_LSE_ON;
3794 RCC_OscInitStruct->
LSEState = RCC_LSE_OFF;
3798 if ((RCC->CSR & RCC_CSR_LSION) == RCC_CSR_LSION)
3800 RCC_OscInitStruct->
LSIState = RCC_LSI_ON;
3804 RCC_OscInitStruct->
LSIState = RCC_LSI_OFF;
3808 if ((RCC->CR & RCC_CR_PLLON) == RCC_CR_PLLON)
3816 RCC_OscInitStruct->
PLL.
PLLSource = (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC);
3817 RCC_OscInitStruct->
PLL.
PLLM = (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM);
3818 RCC_OscInitStruct->
PLL.
PLLN = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
3819 RCC_OscInitStruct->
PLL.
PLLP = (uint32_t)((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) + RCC_PLLCFGR_PLLP_0) << 1U) >> RCC_PLLCFGR_PLLP_Pos);
3820 RCC_OscInitStruct->
PLL.
PLLQ = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos);
3821 RCC_OscInitStruct->
PLL.
PLLR = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos);
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
This function configures the source of the time base. The time source is configured to have 1ms time ...
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
Initializes the RCC extended peripherals clocks according to the specified parameters in the RCC_Peri...
uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk)
Return the peripheral clock frequency for a given peripheral(SAI..)
void HAL_RCCEx_SelectLSEMode(uint8_t Mode)
Select LSE mode.
void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
Get the RCC_PeriphCLKInitTypeDef according to the internal RCC configuration registers.
uint32_t HAL_RCC_GetSysClockFreq(void)
Returns the SYSCLK frequency.
HAL_StatusTypeDef HAL_RCCEx_EnablePLLSAI(RCC_PLLSAIInitTypeDef *PLLSAIInit)
Enable PLLSAI.
HAL_StatusTypeDef HAL_RCCEx_EnablePLLI2S(RCC_PLLI2SInitTypeDef *PLLI2SInit)
Enable PLLI2S.
HAL_StatusTypeDef HAL_RCCEx_DisablePLLSAI(void)
Disable PLLSAI.
HAL_StatusTypeDef HAL_RCCEx_DisablePLLI2S(void)
Disable PLLI2S.
uint32_t SpdifClockSelection
uint32_t Sai2ClockSelection
uint32_t Lptim1ClockSelection
uint32_t PeriphClockSelection
uint32_t CecClockSelection
uint32_t SaiBClockSelection
RCC_PLLSAIInitTypeDef PLLSAI
uint32_t I2SClockSelection
uint32_t SaiAClockSelection
uint32_t Dfsdm2ClockSelection
uint32_t Dfsdm1AudioClockSelection
uint32_t I2sApb2ClockSelection
uint32_t Dfsdm1ClockSelection
uint32_t Clk48ClockSelection
uint32_t SdioClockSelection
RCC_PLLI2SInitTypeDef PLLI2S
uint32_t RTCClockSelection
uint32_t Fmpi2c1ClockSelection
uint32_t Sai1ClockSelection
uint32_t I2sApb1ClockSelection
uint32_t Dfsdm2AudioClockSelection
PLLI2S Clock structure definition.
PLLSAI Clock structure definition.
RCC extended clocks structure definition.
HAL_StatusTypeDef HAL_RCC_DeInit(void)
Resets the RCC clock configuration to the default reset state.
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
Initializes the RCC Oscillators according to the specified parameters in the RCC_OscInitTypeDef.
void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
Configures the RCC_OscInitStruct according to the internal RCC configuration registers.
uint32_t HSICalibrationValue
RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition.
This file contains all the functions prototypes for the HAL module driver.