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;
187 PWR->CR |= PWR_CR_DBP;
192 while ((PWR->CR & PWR_CR_DBP) == RESET)
200 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
201 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
204 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
337 plli2sp = ((((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos) + 1U) << 1U);
338 plli2sq = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
357 plli2sp = ((((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos) + 1U) << 1U);
358 plli2sr = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
377 plli2sq = ((((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos) + 1U) << 1U);
378 plli2sr = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
418 if (pllsaiused == 1U)
449 pllsaip = ((((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos) + 1U) << 1U);
468 pllsaiq = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
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;
597 saiclocksource = RCC->DCKCFGR;
598 saiclocksource &= (RCC_DCKCFGR_SAI1SRC | RCC_DCKCFGR_SAI2SRC);
599 switch (saiclocksource)
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:
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:
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:
678 case RCC_DCKCFGR_SAI2SRC:
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)));
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)));
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)));
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)));
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) ||
955 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLI2S) == (RCC_PERIPHCLK_SAI_PLLI2S))
962 tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
1004 if ((((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == RCC_PERIPHCLK_SAI_PLLSAI) ||
1029 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == (RCC_PERIPHCLK_SAI_PLLSAI))
1035 pllsaip = ((((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos) + 1U) << 1U);
1037 pllsair = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
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);
1072 pllsaiq = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
1074 pllsair = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
1108 PWR->CR |= PWR_CR_DBP;
1113 while ((PWR->CR & PWR_CR_DBP) == RESET)
1121 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
1122 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
1125 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
1130 RCC->BDCR = tmpreg1;
1173 RCC_PERIPHCLK_SAI_PLLI2S | RCC_PERIPHCLK_LTDC | \
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:
1242 case RCC_I2SCLKSOURCE_PLLI2S:
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;
1340#if defined(STM32F413xx) || defined(STM32F423xx)
1345 assert_param(IS_RCC_SAIACLKSOURCE(PeriphClkInit->SaiAClockSelection));
1348 __HAL_RCC_SAI_BLOCKACLKSOURCE_CONFIG(PeriphClkInit->SaiAClockSelection);
1350 if (PeriphClkInit->SaiAClockSelection == RCC_SAIACLKSOURCE_PLLI2SR)
1355 if (PeriphClkInit->SaiAClockSelection == RCC_SAIACLKSOURCE_PLLR)
1358 assert_param(IS_RCC_PLL_DIVR_VALUE(PeriphClkInit->PLLDivR));
1361 __HAL_RCC_PLL_PLLSAICLKDIVR_CONFIG(PeriphClkInit->PLLDivR);
1370 assert_param(IS_RCC_SAIBCLKSOURCE(PeriphClkInit->SaiBClockSelection));
1373 __HAL_RCC_SAI_BLOCKBCLKSOURCE_CONFIG(PeriphClkInit->SaiBClockSelection);
1375 if (PeriphClkInit->SaiBClockSelection == RCC_SAIBCLKSOURCE_PLLI2SR)
1380 if (PeriphClkInit->SaiBClockSelection == RCC_SAIBCLKSOURCE_PLLR)
1383 assert_param(IS_RCC_PLL_DIVR_VALUE(PeriphClkInit->PLLDivR));
1386 __HAL_RCC_PLL_PLLSAICLKDIVR_CONFIG(PeriphClkInit->PLLDivR);
1402 PWR->CR |= PWR_CR_DBP;
1407 while ((PWR->CR & PWR_CR_DBP) == RESET)
1415 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
1416 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
1419 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
1424 RCC->BDCR = tmpreg1;
1513 assert_param(IS_RCC_PLLI2SCLKSOURCE(PeriphClkInit->PLLI2SSelection));
1517 __HAL_RCC_PLL_I2S_CONFIG(PeriphClkInit->PLLI2SSelection);
1537#if defined(STM32F413xx) || defined(STM32F423xx)
1540 && (PeriphClkInit->SaiAClockSelection == RCC_SAIACLKSOURCE_PLLI2SR)) ||
1541 ((((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAIB) == RCC_PERIPHCLK_SAIB) && (PeriphClkInit->SaiBClockSelection == RCC_SAIBCLKSOURCE_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);
1596 assert_param(IS_RCC_DFSDM1CLKSOURCE(PeriphClkInit->Dfsdm1ClockSelection));
1599 __HAL_RCC_DFSDM1_CONFIG(PeriphClkInit->Dfsdm1ClockSelection);
1604 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO)
1607 assert_param(IS_RCC_DFSDM1AUDIOCLKSOURCE(PeriphClkInit->Dfsdm1AudioClockSelection));
1610 __HAL_RCC_DFSDM1AUDIO_CONFIG(PeriphClkInit->Dfsdm1AudioClockSelection);
1614#if defined(STM32F413xx) || defined(STM32F423xx)
1619 assert_param(IS_RCC_DFSDM2CLKSOURCE(PeriphClkInit->Dfsdm2ClockSelection));
1622 __HAL_RCC_DFSDM2_CONFIG(PeriphClkInit->Dfsdm2ClockSelection);
1627 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_DFSDM2_AUDIO) == RCC_PERIPHCLK_DFSDM2_AUDIO)
1630 assert_param(IS_RCC_DFSDM2AUDIOCLKSOURCE(PeriphClkInit->Dfsdm2AudioClockSelection));
1633 __HAL_RCC_DFSDM2AUDIO_CONFIG(PeriphClkInit->Dfsdm2AudioClockSelection);
1641 assert_param(IS_RCC_LPTIM1CLKSOURCE(PeriphClkInit->Lptim1ClockSelection));
1644 __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection);
1664#if defined(STM32F413xx) || defined(STM32F423xx)
1669 RCC_PERIPHCLK_DFSDM1_AUDIO | RCC_PERIPHCLK_DFSDM2 | \
1670 RCC_PERIPHCLK_DFSDM2_AUDIO | RCC_PERIPHCLK_LPTIM1 | \
1671 RCC_PERIPHCLK_SAIA | RCC_PERIPHCLK_SAIB;
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));
1713 PeriphClkInit->Dfsdm1ClockSelection = __HAL_RCC_GET_DFSDM1_SOURCE();
1716 PeriphClkInit->Dfsdm1AudioClockSelection = __HAL_RCC_GET_DFSDM1AUDIO_SOURCE();
1718#if defined(STM32F413xx) || defined(STM32F423xx)
1720 PeriphClkInit->Dfsdm2ClockSelection = __HAL_RCC_GET_DFSDM2_SOURCE();
1723 PeriphClkInit->Dfsdm2AudioClockSelection = __HAL_RCC_GET_DFSDM2AUDIO_SOURCE();
1726 PeriphClkInit->Lptim1ClockSelection = __HAL_RCC_GET_LPTIM1_SOURCE();
1729 PeriphClkInit->SaiAClockSelection = __HAL_RCC_GET_SAI_BLOCKA_SOURCE();
1732 PeriphClkInit->SaiBClockSelection = __HAL_RCC_GET_SAI_BLOCKB_SOURCE();
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;
1782 if ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SSRC) == RCC_PLLI2SCFGR_PLLI2SSRC)
1785 vcoinput = (uint32_t)(
EXTERNAL_CLOCK_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
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)));
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)));
1868 if ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SSRC) == RCC_PLLI2SCFGR_PLLI2SSRC)
1871 vcoinput = (uint32_t)(
EXTERNAL_CLOCK_VALUE / (uint32_t)(RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SM));
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)));
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)));
1947#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
1962 uint32_t tickstart = 0U;
1963 uint32_t tmpreg1 = 0U;
1978 PWR->CR |= PWR_CR_DBP;
1983 while ((PWR->CR & PWR_CR_DBP) == RESET)
1991 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
1992 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
1995 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
2000 RCC->BDCR = tmpreg1;
2044 assert_param(IS_RCC_LPTIM1CLKSOURCE(PeriphClkInit->Lptim1ClockSelection));
2047 __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection);
2054 assert_param(IS_RCC_I2SAPBCLKSOURCE(PeriphClkInit->I2SClockSelection));
2057 __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2SClockSelection);
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)
2092 PeriphClkInit->I2SClockSelection = __HAL_RCC_GET_I2S_SOURCE();
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:
2129 case RCC_I2SAPBCLKSOURCE_PLLR:
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:
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) ||
2245 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLI2S) == (RCC_PERIPHCLK_SAI_PLLI2S))
2252 tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
2294 if ((((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == RCC_PERIPHCLK_SAI_PLLSAI) ||
2317 if (((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == (RCC_PERIPHCLK_SAI_PLLSAI))
2323 tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
2339 tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
2345 __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(PeriphClkInit->PLLSAIDivR);
2373 PWR->CR |= PWR_CR_DBP;
2378 while ((PWR->CR & PWR_CR_DBP) == RESET)
2386 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
2387 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
2390 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
2395 RCC->BDCR = tmpreg1;
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:
2498 case RCC_I2SCLKSOURCE_PLLI2S:
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;
2566#if defined(STM32F411xE)
2583#if defined(STM32F411xE)
2621 PWR->CR |= PWR_CR_DBP;
2626 while ((PWR->CR & PWR_CR_DBP) == RESET)
2634 tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
2635 if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->
RTCClockSelection & RCC_BDCR_RTCSEL)))
2638 tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
2643 RCC->BDCR = tmpreg1;
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:
2743 case RCC_I2SCLKSOURCE_PLLI2S:
2745#if defined(STM32F411xE)
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));
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)
2815 SET_BIT(RCC->BDCR, RCC_BDCR_LSEMOD);
2819 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEMOD);
2839#if defined(RCC_PLLI2S_SUPPORT)
2853#if defined(RCC_PLLI2SCFGR_PLLI2SM)
2856#if defined(RCC_PLLI2SCFGR_PLLI2SP)
2859#if defined(RCC_PLLI2SCFGR_PLLI2SQ)
2878#if defined(STM32F446xx)
2885#elif defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) ||\
2886 defined(STM32F413xx) || defined(STM32F423xx)
2892#elif defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
2893 defined(STM32F469xx) || defined(STM32F479xx)
2898#elif defined(STM32F411xE)
2938 while (READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) != RESET)
2952#if defined(RCC_PLLSAI_SUPPORT)
2966#if defined(RCC_PLLSAICFGR_PLLSAIM)
2969#if defined(RCC_PLLSAICFGR_PLLSAIP)
2972#if defined(RCC_PLLSAICFGR_PLLSAIR)
2991#if defined(STM32F446xx)
2998#elif defined(STM32F469xx) || defined(STM32F479xx)
3004 PLLSAIInit->
PLLSAIQ, PLLSAIInit->PLLSAIR);
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:
3110 case RCC_CFGR_SWS_HSE:
3115 case RCC_CFGR_SWS_PLL:
3119 pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
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;
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;
3161 return sysclockfreq;
3194 SET_BIT(RCC->CR, RCC_CR_HSION);
3197 while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == RESET)
3206 SET_BIT(RCC->CR, RCC_CR_HSITRIM_4);
3212 CLEAR_REG(RCC->CFGR);
3215 while (READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != RESET)
3227 CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_CSSON);
3230 while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != RESET)
3242 CLEAR_BIT(RCC->CR, RCC_CR_PLLON);
3245 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != RESET)
3253#if defined(RCC_PLLI2S_SUPPORT)
3258 CLEAR_BIT(RCC->CR, RCC_CR_PLLI2SON);
3261 while (READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) != RESET)
3270#if defined(RCC_PLLSAI_SUPPORT)
3275 CLEAR_BIT(RCC->CR, RCC_CR_PLLSAION);
3278 while (READ_BIT(RCC->CR, RCC_CR_PLLSAIRDY) != RESET)
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);
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)
3396#if defined(STM32F446xx)
3456#if defined(STM32F446xx)
3566 FlagStatus pwrclkchanged = RESET;
3576 pwrclkchanged = SET;
3582 SET_BIT(PWR->CR, PWR_CR_DBP);
3629 if (pwrclkchanged == SET)
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)));
3717 pll_config = RCC->PLLCFGR;
3718#if defined (RCC_PLLCFGR_PLLR)
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)))
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)))
3758 if ((RCC->CR & RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
3762 else if ((RCC->CR & RCC_CR_HSEON) == RCC_CR_HSEON)
3772 if ((RCC->CR & RCC_CR_HSION) == RCC_CR_HSION)
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)
3788 else if ((RCC->BDCR & RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
3798 if ((RCC->CSR & RCC_CSR_LSION) == RCC_CSR_LSION)
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.
#define PLLI2S_TIMEOUT_VALUE
#define PLLSAI_TIMEOUT_VALUE
#define PLL_TIMEOUT_VALUE
#define RCC_CLK48CLKSOURCE_PLLSAIP
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.
#define __HAL_RCC_I2S_APB2_CONFIG(__SOURCE__)
Macro to configure I2S APB2 clock source selection.
#define __HAL_RCC_SAI2_CONFIG(__SOURCE__)
Macro to configure SAI2 clock source selection.
#define __HAL_RCC_GET_SDIO_SOURCE()
Macro to Get the SDIO clock.
#define __HAL_RCC_GET_I2S_APB1_SOURCE()
Macro to Get I2S APB1 clock source selection.
#define __HAL_RCC_CLK48_CONFIG(__SOURCE__)
Macro to configure the CLK48 clock.
#define __HAL_RCC_TIMCLKPRESCALER(__PRESC__)
Macro to configure the Timers clocks prescalers.
#define __HAL_RCC_PLLSAI_CONFIG(__PLLSAIM__, __PLLSAIN__, __PLLSAIP__, __PLLSAIQ__, __PLLSAIR__)
Macro to configure the PLLSAI clock multiplication and division factors.
#define __HAL_RCC_PLLI2S_ENABLE()
Macros to enable or disable the PLLI2S.
#define __HAL_RCC_GET_I2S_APB2_SOURCE()
Macro to Get I2S APB2 clock source selection.
#define __HAL_RCC_PLLI2S_DISABLE()
#define __HAL_RCC_PLLSAI_GET_FLAG()
Check PLLSAI RDY flag is set or not.
#define __HAL_RCC_SAI1_CONFIG(__SOURCE__)
Macro to configure SAI1 clock source selection.
#define __HAL_RCC_I2S_APB1_CONFIG(__SOURCE__)
Macro to configure I2S APB1 clock source selection.
#define __HAL_RCC_GET_CEC_SOURCE()
Macro to Get the CEC clock.
#define __HAL_RCC_CEC_CONFIG(__SOURCE__)
Macro to configure the CEC clock.
#define __HAL_RCC_GET_FMPI2C1_SOURCE()
Macro to Get the FMPI2C1 clock.
#define __HAL_RCC_PLLSAI_ENABLE()
Macros to Enable or Disable the PLLISAI.
#define __HAL_RCC_PLLSAI_DISABLE()
#define __HAL_RCC_GET_SAI1_SOURCE()
Macro to Get SAI1 clock source selection.
#define __HAL_RCC_GET_CLK48_SOURCE()
Macro to Get the CLK48 clock.
#define __HAL_RCC_SDIO_CONFIG(__SOURCE__)
Macro to configure the SDIO clock.
#define __HAL_RCC_PLLI2S_CONFIG(__PLLI2SM__, __PLLI2SN__, __PLLI2SP__, __PLLI2SQ__, __PLLI2SR__)
Macro to configure the PLLI2S clock multiplication and division factors .
#define __HAL_RCC_GET_SAI2_SOURCE()
Macro to Get SAI2 clock source selection.
#define __HAL_RCC_FMPI2C1_CONFIG(__SOURCE__)
Macro to configure the FMPI2C1 clock.
#define __HAL_RCC_GET_SPDIFRX_SOURCE()
Macro to Get the SPDIFRX clock.
#define __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(__PLLSAIDivQ__)
Macro to configure the SAI clock Divider coming from PLLSAI.
#define __HAL_RCC_SPDIFRX_CONFIG(__SOURCE__)
Macro to configure the SPDIFRX clock.
#define __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(__PLLI2SDivQ__)
Macro to configure the SAI clock Divider coming from PLLI2S.
#define RCC_I2SAPB1CLKSOURCE_PLLR
#define RCC_I2SAPB1CLKSOURCE_EXT
#define RCC_I2SAPB1CLKSOURCE_PLLSRC
#define RCC_I2SAPB1CLKSOURCE_PLLI2S
#define RCC_I2SAPB2CLKSOURCE_EXT
#define RCC_I2SAPB2CLKSOURCE_PLLSRC
#define RCC_I2SAPB2CLKSOURCE_PLLR
#define RCC_I2SAPB2CLKSOURCE_PLLI2S
#define IS_RCC_CECCLKSOURCE(SOURCE)
#define IS_RCC_PLLN_VALUE(VALUE)
#define IS_RCC_SDIOCLKSOURCE(SOURCE)
#define IS_RCC_PLLI2SM_VALUE(VALUE)
#define IS_RCC_PLLSAIN_VALUE(VALUE)
#define IS_RCC_PLLSAIQ_VALUE(VALUE)
#define IS_RCC_PLLSAIM_VALUE(VALUE)
#define IS_RCC_PLLSAIR_VALUE(VALUE)
#define IS_RCC_SAI1CLKSOURCE(SOURCE)
#define IS_RCC_SPDIFRXCLKSOURCE(SOURCE)
#define IS_RCC_FMPI2C1CLKSOURCE(SOURCE)
#define IS_RCC_PLLR_VALUE(VALUE)
#define IS_RCC_PLLSAIP_VALUE(VALUE)
#define IS_RCC_PLLI2SP_VALUE(VALUE)
#define IS_RCC_CLK48CLKSOURCE(SOURCE)
#define IS_RCC_PLLI2SR_VALUE(VALUE)
#define IS_RCC_SAI2CLKSOURCE(SOURCE)
#define IS_RCC_PERIPHCLOCK(SELECTION)
#define IS_RCC_PLLI2SN_VALUE(VALUE)
#define IS_RCC_PLLI2S_DIVQ_VALUE(VALUE)
#define IS_RCC_PLLSAI_DIVR_VALUE(VALUE)
#define IS_RCC_LSE_MODE(MODE)
#define IS_RCC_PLLSAI_DIVQ_VALUE(VALUE)
#define IS_RCC_I2SAPB1CLKSOURCE(SOURCE)
#define IS_RCC_I2SAPB2CLKSOURCE(SOURCE)
#define IS_RCC_PLLI2SQ_VALUE(VALUE)
#define RCC_LSE_HIGHDRIVE_MODE
#define RCC_PERIPHCLK_I2S_APB1
#define RCC_PERIPHCLK_PLLI2S
#define RCC_PERIPHCLK_I2S_APB2
#define RCC_PERIPHCLK_FMPI2C1
#define RCC_PERIPHCLK_TIM
#define RCC_PERIPHCLK_SAI2
#define RCC_PERIPHCLK_SDIO
#define RCC_PERIPHCLK_SAI1
#define RCC_PERIPHCLK_CLK48
#define RCC_PERIPHCLK_SPDIFRX
#define RCC_PERIPHCLK_CEC
#define RCC_PERIPHCLK_RTC
#define RCC_SAI1CLKSOURCE_PLLI2S
#define RCC_SAI1CLKSOURCE_PLLSAI
#define RCC_SAI2CLKSOURCE_PLLSAI
#define RCC_SAI2CLKSOURCE_PLLI2S
#define RCC_SDIOCLKSOURCE_CLK48
#define RCC_SPDIFRXCLKSOURCE_PLLI2SP
#define RCC_TIMPRES_DESACTIVATED
#define RCC_TIMPRES_ACTIVATED
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.
#define __HAL_RCC_PWR_CLK_ENABLE()
#define __HAL_RCC_PWR_CLK_DISABLE()
#define __HAL_RCC_PWR_IS_CLK_DISABLED()
#define CLOCKSWITCH_TIMEOUT_VALUE
#define HSE_TIMEOUT_VALUE
#define LSI_TIMEOUT_VALUE
#define HSI_TIMEOUT_VALUE
#define RCC_DBP_TIMEOUT_VALUE
#define RCC_LSE_TIMEOUT_VALUE
#define RCC_FLAG_PLLI2SRDY
#define __HAL_RCC_GET_FLAG(__FLAG__)
#define __HAL_RCC_GET_PLL_OSCSOURCE()
Macro to get the oscillator used as PLL clock source.
#define __HAL_RCC_GET_SYSCLK_SOURCE()
Macro to get the clock source used as system clock.
#define __HAL_RCC_HSE_CONFIG(__STATE__)
Macro to configure the External High Speed oscillator (HSE).
#define __HAL_RCC_HSI_DISABLE()
#define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICalibrationValue__)
Macro to adjust the Internal High Speed oscillator (HSI) calibration value.
#define __HAL_RCC_HSI_ENABLE()
Macros to enable or disable the Internal High Speed oscillator (HSI).
#define IS_RCC_OSCILLATORTYPE(OSCILLATOR)
#define IS_RCC_PLLM_VALUE(VALUE)
#define IS_RCC_RTCCLKSOURCE(__SOURCE__)
#define IS_RCC_PLLQ_VALUE(VALUE)
#define IS_RCC_PLLP_VALUE(VALUE)
#define IS_RCC_PLLSOURCE(SOURCE)
#define IS_RCC_CALIBRATION_VALUE(VALUE)
#define __HAL_RCC_BACKUPRESET_RELEASE()
#define __HAL_RCC_RTC_CONFIG(__RTCCLKSource__)
#define __HAL_RCC_BACKUPRESET_FORCE()
Macros to force or release the Backup domain reset.
#define __HAL_RCC_LSE_CONFIG(__STATE__)
Macro to configure the External Low Speed oscillator (LSE).
#define __HAL_RCC_LSI_DISABLE()
#define __HAL_RCC_LSI_ENABLE()
Macros to enable or disable the Internal Low Speed oscillator (LSI).
#define RCC_OSCILLATORTYPE_HSE
#define RCC_OSCILLATORTYPE_LSI
#define RCC_OSCILLATORTYPE_LSE
#define RCC_OSCILLATORTYPE_HSI
#define RCC_PLLSOURCE_HSI
#define RCC_PLLSOURCE_HSE
#define __HAL_RCC_PLL_DISABLE()
#define __HAL_RCC_PLL_ENABLE()
Macros to enable or disable the main PLL.
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
#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....
#define HAL_IS_BIT_SET(REG, BIT)
HAL_StatusTypeDef
HAL Status structures definition
#define HAL_IS_BIT_CLR(REG, BIT)
RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition.
uint32_t HSICalibrationValue
PLLI2S Clock structure definition.
PLLSAI Clock structure definition.
RCC extended clocks structure definition.
uint32_t SpdifClockSelection
uint32_t Sai2ClockSelection
uint32_t PeriphClockSelection
uint32_t CecClockSelection
RCC_PLLSAIInitTypeDef PLLSAI
uint32_t I2sApb2ClockSelection
uint32_t Clk48ClockSelection
uint32_t SdioClockSelection
RCC_PLLI2SInitTypeDef PLLI2S
uint32_t RTCClockSelection
uint32_t Fmpi2c1ClockSelection
uint32_t Sai1ClockSelection
uint32_t I2sApb1ClockSelection