404 HAL_StatusTypeDef status;
405 uint32_t sysclk_source, pll_config;
408 if(RCC_OscInitStruct == NULL)
416 sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE();
417 pll_config = __HAL_RCC_GET_PLL_OSCSOURCE();
420 if(((RCC_OscInitStruct->
OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI)
428 if((sysclk_source == RCC_CFGR_SWS_MSI) ||
429 ((sysclk_source == RCC_CFGR_SWS_PLL) && (pll_config == RCC_PLLSOURCE_MSI)))
431 if((READ_BIT(RCC->CR, RCC_CR_MSIRDY) != 0U) && (RCC_OscInitStruct->
MSIState == RCC_MSI_OFF))
442 if(RCC_OscInitStruct->
MSIClockRange > __HAL_RCC_GET_MSI_RANGE())
451 __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->
MSIClockRange);
459 __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->
MSIClockRange);
471 SystemCoreClock =
HAL_RCC_GetSysClockFreq() >> (AHBPrescTable[READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos] & 0x1FU);
484 if(RCC_OscInitStruct->
MSIState != RCC_MSI_OFF)
487 __HAL_RCC_MSI_ENABLE();
493 while(READ_BIT(RCC->CR, RCC_CR_MSIRDY) == 0U)
495 if((
HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE)
501 __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->
MSIClockRange);
509 __HAL_RCC_MSI_DISABLE();
515 while(READ_BIT(RCC->CR, RCC_CR_MSIRDY) != 0U)
517 if((
HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE)
526 if(((RCC_OscInitStruct->
OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
532 if((sysclk_source == RCC_CFGR_SWS_HSE) ||
533 ((sysclk_source == RCC_CFGR_SWS_PLL) && (pll_config == RCC_PLLSOURCE_HSE)))
535 if((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->
HSEState == RCC_HSE_OFF))
543 __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->
HSEState);
546 if(RCC_OscInitStruct->
HSEState != RCC_HSE_OFF)
552 while(READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U)
554 if((
HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
566 while(READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U)
568 if((
HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
577 if(((RCC_OscInitStruct->
OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
584 if((sysclk_source == RCC_CFGR_SWS_HSI) ||
585 ((sysclk_source == RCC_CFGR_SWS_PLL) && (pll_config == RCC_PLLSOURCE_HSI)))
588 if((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->
HSIState == RCC_HSI_OFF))
602 if(RCC_OscInitStruct->
HSIState != RCC_HSI_OFF)
605 __HAL_RCC_HSI_ENABLE();
611 while(READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U)
613 if((
HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
625 __HAL_RCC_HSI_DISABLE();
631 while(READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U)
633 if((
HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
642 if(((RCC_OscInitStruct->
OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
648 if(RCC_OscInitStruct->
LSIState != RCC_LSI_OFF)
650 #if defined(RCC_CSR_LSIPREDIV) 651 uint32_t csr_temp = RCC->CSR;
656 if (RCC_OscInitStruct->
LSIDiv != (csr_temp & RCC_CSR_LSIPREDIV))
658 if (((csr_temp & RCC_CSR_LSIRDY) == RCC_CSR_LSIRDY) && \
659 ((csr_temp & RCC_CSR_LSION) != RCC_CSR_LSION))
667 if ((csr_temp & RCC_CSR_LSION) == RCC_CSR_LSION)
669 __HAL_RCC_LSI_DISABLE();
675 while(READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U)
677 if((
HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
690 __HAL_RCC_LSI_ENABLE();
696 while(READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U)
698 if((
HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
707 __HAL_RCC_LSI_DISABLE();
713 while(READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U)
715 if((
HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
723 if(((RCC_OscInitStruct->
OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
725 FlagStatus pwrclkchanged = RESET;
732 if(HAL_IS_BIT_CLR(RCC->APB1ENR1, RCC_APB1ENR1_PWREN))
734 __HAL_RCC_PWR_CLK_ENABLE();
738 if(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
741 SET_BIT(PWR->CR1, PWR_CR1_DBP);
746 while(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
748 if((
HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
756 #if defined(RCC_BDCR_LSESYSDIS) 757 if((RCC_OscInitStruct->
LSEState & RCC_BDCR_LSEON) != 0U)
760 MODIFY_REG(RCC->BDCR, RCC_BDCR_LSESYSDIS, (RCC_OscInitStruct->
LSEState & RCC_BDCR_LSESYSDIS));
762 if((RCC_OscInitStruct->
LSEState & RCC_BDCR_LSEBYP) != 0U)
765 SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);
766 SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);
771 SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);
780 __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->
LSEState);
784 if(RCC_OscInitStruct->
LSEState != RCC_LSE_OFF)
790 while(READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U)
792 if((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
804 while(READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U)
806 if((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
812 #if defined(RCC_BDCR_LSESYSDIS) 814 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSESYSDIS);
819 if(pwrclkchanged == SET)
821 __HAL_RCC_PWR_CLK_DISABLE();
824 #if defined(RCC_HSI48_SUPPORT) 826 if(((RCC_OscInitStruct->
OscillatorType) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48)
832 if(RCC_OscInitStruct->
HSI48State != RCC_HSI48_OFF)
835 __HAL_RCC_HSI48_ENABLE();
841 while(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48RDY) == 0U)
843 if((
HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE)
852 __HAL_RCC_HSI48_DISABLE();
858 while(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48RDY) != 0U)
860 if((
HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE)
872 if(RCC_OscInitStruct->
PLL.PLLState != RCC_PLL_NONE)
875 if(sysclk_source != RCC_CFGR_SWS_PLL)
877 if(RCC_OscInitStruct->
PLL.PLLState == RCC_PLL_ON)
883 #if defined(RCC_PLLP_SUPPORT) 890 __HAL_RCC_PLL_DISABLE();
896 while(READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U)
898 if((
HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
905 __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->
PLL.PLLSource,
906 RCC_OscInitStruct->
PLL.PLLM,
907 RCC_OscInitStruct->
PLL.PLLN,
908 #
if defined(RCC_PLLP_SUPPORT)
909 RCC_OscInitStruct->
PLL.PLLP,
911 RCC_OscInitStruct->
PLL.PLLQ,
912 RCC_OscInitStruct->
PLL.PLLR);
915 __HAL_RCC_PLL_ENABLE();
918 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_SYSCLK);
924 while(READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U)
926 if((
HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
935 __HAL_RCC_PLL_DISABLE();
938 #if defined(RCC_PLLSAI1_SUPPORT) && defined(RCC_CR_PLLSAI2RDY) 939 if(READ_BIT(RCC->CR, (RCC_CR_PLLSAI1RDY | RCC_CR_PLLSAI2RDY)) == 0U)
941 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, RCC_PLLSOURCE_NONE);
943 #elif defined(RCC_PLLSAI1_SUPPORT) 944 if(READ_BIT(RCC->CR, RCC_CR_PLLSAI1RDY) == 0U)
946 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, RCC_PLLSOURCE_NONE);
949 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, RCC_PLLSOURCE_NONE);
952 #if defined(RCC_PLLSAI2_SUPPORT) 953 __HAL_RCC_PLLCLKOUT_DISABLE(RCC_PLL_SYSCLK | RCC_PLL_48M1CLK | RCC_PLL_SAI3CLK);
954 #elif defined(RCC_PLLSAI1_SUPPORT) 955 __HAL_RCC_PLLCLKOUT_DISABLE(RCC_PLL_SYSCLK | RCC_PLL_48M1CLK | RCC_PLL_SAI2CLK);
957 __HAL_RCC_PLLCLKOUT_DISABLE(RCC_PLL_SYSCLK | RCC_PLL_48M1CLK);
964 while(READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U)
966 if((
HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
976 if((RCC_OscInitStruct->
PLL.PLLState) == RCC_PLL_OFF)
982 pll_config = RCC->PLLCFGR;
984 if((READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->
PLL.PLLSource) ||
985 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != ((RCC_OscInitStruct->
PLL.PLLM - 1U) << RCC_PLLCFGR_PLLM_Pos)) ||
986 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->
PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) ||
987 #
if defined(RCC_PLLP_SUPPORT)
988 #
if defined(RCC_PLLP_DIV_2_31_SUPPORT)
989 (READ_BIT(pll_config, RCC_PLLCFGR_PLLPDIV) != (RCC_OscInitStruct->
PLL.PLLP << RCC_PLLCFGR_PLLPDIV_Pos)) ||
991 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((RCC_OscInitStruct->
PLL.PLLP == RCC_PLLP_DIV7) ? 0U : 1U)) ||
994 (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != ((((RCC_OscInitStruct->
PLL.PLLQ) >> 1U) - 1U) << RCC_PLLCFGR_PLLQ_Pos)) ||
995 (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != ((((RCC_OscInitStruct->
PLL.PLLR) >> 1U) - 1U) << RCC_PLLCFGR_PLLR_Pos)))
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
uint32_t MSICalibrationValue
static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t msirange)
Update number of Flash wait states in line with MSI range and current voltage range.
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 ...
ADC handle Structure definition.
uint32_t HAL_RCC_GetSysClockFreq(void)
Return the SYSCLK frequency.
uint32_t HSICalibrationValue
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))