64 #ifdef HAL_RCC_MODULE_ENABLED 71 #define HSE_TIMEOUT_VALUE HSE_STARTUP_TIMEOUT 72 #define HSI_TIMEOUT_VALUE 2U 73 #define MSI_TIMEOUT_VALUE 2U 74 #if defined(RCC_CSR_LSIPREDIV) 75 #define LSI_TIMEOUT_VALUE 17U 77 #define LSI_TIMEOUT_VALUE 2U 79 #define HSI48_TIMEOUT_VALUE 2U 80 #define PLL_TIMEOUT_VALUE 2U 81 #define CLOCKSWITCH_TIMEOUT_VALUE 5000U 90 #define __MCO1_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() 91 #define MCO1_GPIO_PORT GPIOA 92 #define MCO1_PIN GPIO_PIN_8 94 #define RCC_PLL_OSCSOURCE_CONFIG(__HAL_RCC_PLLSOURCE__) \ 95 (MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, (__HAL_RCC_PLLSOURCE__))) 107 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 270 SET_BIT(RCC->CR, RCC_CR_MSION);
277 while(READ_BIT(RCC->CR, RCC_CR_MSIRDY) == 0U)
279 if((
HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE)
286 MODIFY_REG(RCC->CR, RCC_CR_MSIRANGE, RCC_MSIRANGE_6);
289 CLEAR_REG(RCC->CFGR);
292 SystemCoreClock = MSI_VALUE;
305 while(READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != RCC_CFGR_SWS_MSI)
307 if((
HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
314 #if defined(RCC_PLLSAI2_SUPPORT) 316 CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_HSION | RCC_CR_HSIKERON| RCC_CR_HSIASFS | RCC_CR_PLLON | RCC_CR_PLLSAI1ON | RCC_CR_PLLSAI2ON);
318 #elif defined(RCC_PLLSAI1_SUPPORT) 320 CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_HSION | RCC_CR_HSIKERON| RCC_CR_HSIASFS | RCC_CR_PLLON | RCC_CR_PLLSAI1ON);
324 CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_HSION | RCC_CR_HSIKERON| RCC_CR_HSIASFS | RCC_CR_PLLON);
332 #if defined(RCC_PLLSAI2_SUPPORT) 334 while(READ_BIT(RCC->CR, RCC_CR_PLLRDY | RCC_CR_PLLSAI1RDY | RCC_CR_PLLSAI2RDY) != 0U)
336 #elif defined(RCC_PLLSAI1_SUPPORT) 338 while(READ_BIT(RCC->CR, RCC_CR_PLLRDY | RCC_CR_PLLSAI1RDY) != 0U)
342 while(READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U)
346 if((
HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
353 CLEAR_REG(RCC->PLLCFGR);
354 SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN_4 );
356 #if defined(RCC_PLLSAI1_SUPPORT) 359 CLEAR_REG(RCC->PLLSAI1CFGR);
360 SET_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N_4 );
364 #if defined(RCC_PLLSAI2_SUPPORT) 367 CLEAR_REG(RCC->PLLSAI2CFGR);
368 SET_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2N_4 );
376 CLEAR_REG(RCC->CIER);
379 WRITE_REG(RCC->CICR, 0xFFFFFFFFU);
382 SET_BIT(RCC->CSR, RCC_CSR_RMVF);
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)))
1058 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 1059 uint32_t hpre = RCC_SYSCLK_DIV1;
1061 HAL_StatusTypeDef status;
1064 if(RCC_ClkInitStruct == NULL)
1078 if(FLatency > __HAL_FLASH_GET_LATENCY())
1081 __HAL_FLASH_SET_LATENCY(FLatency);
1085 if(__HAL_FLASH_GET_LATENCY() != FLatency)
1092 if(((RCC_ClkInitStruct->
ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
1097 if(RCC_ClkInitStruct->
SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
1100 if(READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U)
1104 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 1109 if(READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1)
1112 MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_SYSCLK_DIV2);
1113 hpre = RCC_SYSCLK_DIV2;
1115 else if((((RCC_ClkInitStruct->
ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) && (RCC_ClkInitStruct->
AHBCLKDivider == RCC_SYSCLK_DIV1))
1118 MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_SYSCLK_DIV2);
1119 hpre = RCC_SYSCLK_DIV2;
1131 if(RCC_ClkInitStruct->
SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
1134 if(READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U)
1140 else if(RCC_ClkInitStruct->
SYSCLKSource == RCC_SYSCLKSOURCE_MSI)
1143 if(READ_BIT(RCC->CR, RCC_CR_MSIRDY) == 0U)
1152 if(READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U)
1157 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 1162 MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_SYSCLK_DIV2);
1163 hpre = RCC_SYSCLK_DIV2;
1174 while(__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->
SYSCLKSource << RCC_CFGR_SWS_Pos))
1176 if((
HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
1184 if(((RCC_ClkInitStruct->
ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
1189 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 1193 if(hpre == RCC_SYSCLK_DIV2)
1195 MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_SYSCLK_DIV1);
1201 if(FLatency < __HAL_FLASH_GET_LATENCY())
1204 __HAL_FLASH_SET_LATENCY(FLatency);
1208 if(__HAL_FLASH_GET_LATENCY() != FLatency)
1215 if(((RCC_ClkInitStruct->
ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
1222 if(((RCC_ClkInitStruct->
ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
1229 SystemCoreClock =
HAL_RCC_GetSysClockFreq() >> (AHBPrescTable[READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos] & 0x1FU);
1289 GPIO_InitTypeDef GPIO_InitStruct;
1300 __MCO1_CLK_ENABLE();
1303 GPIO_InitStruct.Pin = MCO1_PIN;
1304 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
1305 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
1306 GPIO_InitStruct.Pull = GPIO_NOPULL;
1307 GPIO_InitStruct.Alternate = GPIO_AF0_MCO;
1311 MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCOSEL | RCC_CFGR_MCOPRE), (RCC_MCOSource | RCC_MCODiv ));
1348 uint32_t msirange = 0U, sysclockfreq = 0U;
1349 uint32_t pllvco, pllsource, pllr, pllm;
1350 uint32_t sysclk_source, pll_oscsource;
1352 sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE();
1353 pll_oscsource = __HAL_RCC_GET_PLL_OSCSOURCE();
1355 if((sysclk_source == RCC_CFGR_SWS_MSI) ||
1356 ((sysclk_source == RCC_CFGR_SWS_PLL) && (pll_oscsource == RCC_PLLSOURCE_MSI)))
1361 if(READ_BIT(RCC->CR, RCC_CR_MSIRGSEL) == 0U)
1363 msirange = READ_BIT(RCC->CSR, RCC_CSR_MSISRANGE) >> RCC_CSR_MSISRANGE_Pos;
1367 msirange = READ_BIT(RCC->CR, RCC_CR_MSIRANGE) >> RCC_CR_MSIRANGE_Pos;
1370 msirange = MSIRangeTable[msirange];
1372 if(sysclk_source == RCC_CFGR_SWS_MSI)
1375 sysclockfreq = msirange;
1378 else if(sysclk_source == RCC_CFGR_SWS_HSI)
1381 sysclockfreq = HSI_VALUE;
1383 else if(sysclk_source == RCC_CFGR_SWS_HSE)
1386 sysclockfreq = HSE_VALUE;
1393 if(sysclk_source == RCC_CFGR_SWS_PLL)
1400 pllsource = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC);
1404 case RCC_PLLSOURCE_HSI:
1408 case RCC_PLLSOURCE_HSE:
1412 case RCC_PLLSOURCE_MSI:
1417 pllm = (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ;
1418 pllvco = (pllvco * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)) / pllm;
1419 pllr = ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U ) * 2U;
1420 sysclockfreq = pllvco / pllr;
1423 return sysclockfreq;
1436 return SystemCoreClock;
1448 return (
HAL_RCC_GetHCLKFreq() >> (APBPrescTable[READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos] & 0x1FU));
1460 return (
HAL_RCC_GetHCLKFreq()>> (APBPrescTable[READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos] & 0x1FU));
1476 #if defined(RCC_HSI48_SUPPORT) 1477 RCC_OscInitStruct->
OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_MSI | \
1478 RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_HSI48;
1480 RCC_OscInitStruct->
OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_MSI | \
1481 RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
1485 if(READ_BIT(RCC->CR, RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
1487 RCC_OscInitStruct->
HSEState = RCC_HSE_BYPASS;
1489 else if(READ_BIT(RCC->CR, RCC_CR_HSEON) == RCC_CR_HSEON)
1491 RCC_OscInitStruct->
HSEState = RCC_HSE_ON;
1495 RCC_OscInitStruct->
HSEState = RCC_HSE_OFF;
1499 if(READ_BIT(RCC->CR, RCC_CR_MSION) == RCC_CR_MSION)
1501 RCC_OscInitStruct->
MSIState = RCC_MSI_ON;
1505 RCC_OscInitStruct->
MSIState = RCC_MSI_OFF;
1508 RCC_OscInitStruct->
MSICalibrationValue = READ_BIT(RCC->ICSCR, RCC_ICSCR_MSITRIM) >> RCC_ICSCR_MSITRIM_Pos;
1509 RCC_OscInitStruct->
MSIClockRange = READ_BIT(RCC->CR, RCC_CR_MSIRANGE);
1512 if(READ_BIT(RCC->CR, RCC_CR_HSION) == RCC_CR_HSION)
1514 RCC_OscInitStruct->
HSIState = RCC_HSI_ON;
1518 RCC_OscInitStruct->
HSIState = RCC_HSI_OFF;
1521 RCC_OscInitStruct->
HSICalibrationValue = READ_BIT(RCC->ICSCR, RCC_ICSCR_HSITRIM) >> RCC_ICSCR_HSITRIM_Pos;
1524 if(READ_BIT(RCC->BDCR, RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
1526 #if defined(RCC_BDCR_LSESYSDIS) 1527 if((RCC->BDCR & RCC_BDCR_LSESYSDIS) == RCC_BDCR_LSESYSDIS)
1529 RCC_OscInitStruct->
LSEState = RCC_LSE_BYPASS_RTC_ONLY;
1534 RCC_OscInitStruct->
LSEState = RCC_LSE_BYPASS;
1537 else if(READ_BIT(RCC->BDCR, RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
1539 #if defined(RCC_BDCR_LSESYSDIS) 1540 if((RCC->BDCR & RCC_BDCR_LSESYSDIS) == RCC_BDCR_LSESYSDIS)
1542 RCC_OscInitStruct->
LSEState = RCC_LSE_ON_RTC_ONLY;
1547 RCC_OscInitStruct->
LSEState = RCC_LSE_ON;
1552 RCC_OscInitStruct->
LSEState = RCC_LSE_OFF;
1556 if(READ_BIT(RCC->CSR, RCC_CSR_LSION) == RCC_CSR_LSION)
1558 RCC_OscInitStruct->
LSIState = RCC_LSI_ON;
1562 RCC_OscInitStruct->
LSIState = RCC_LSI_OFF;
1564 #if defined(RCC_CSR_LSIPREDIV) 1567 if((RCC->CSR & RCC_CSR_LSIPREDIV) == RCC_CSR_LSIPREDIV)
1569 RCC_OscInitStruct->
LSIDiv = RCC_LSI_DIV128;
1573 RCC_OscInitStruct->
LSIDiv = RCC_LSI_DIV1;
1577 #if defined(RCC_HSI48_SUPPORT) 1579 if(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON) == RCC_CRRCR_HSI48ON)
1581 RCC_OscInitStruct->
HSI48State = RCC_HSI48_ON;
1585 RCC_OscInitStruct->
HSI48State = RCC_HSI48_OFF;
1588 RCC_OscInitStruct->
HSI48State = RCC_HSI48_OFF;
1592 if(READ_BIT(RCC->CR, RCC_CR_PLLON) == RCC_CR_PLLON)
1594 RCC_OscInitStruct->
PLL.PLLState = RCC_PLL_ON;
1598 RCC_OscInitStruct->
PLL.PLLState = RCC_PLL_OFF;
1600 RCC_OscInitStruct->
PLL.PLLSource = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC);
1601 RCC_OscInitStruct->
PLL.PLLM = (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U;
1602 RCC_OscInitStruct->
PLL.PLLN = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos;
1603 RCC_OscInitStruct->
PLL.PLLQ = (((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos) + 1U) << 1U);
1604 RCC_OscInitStruct->
PLL.PLLR = (((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U) << 1U);
1605 #if defined(RCC_PLLP_SUPPORT) 1606 #if defined(RCC_PLLP_DIV_2_31_SUPPORT) 1607 RCC_OscInitStruct->
PLL.PLLP = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPDIV) >> RCC_PLLCFGR_PLLPDIV_Pos;
1609 if(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP) != 0U)
1611 RCC_OscInitStruct->
PLL.PLLP = RCC_PLLP_DIV17;
1615 RCC_OscInitStruct->
PLL.PLLP = RCC_PLLP_DIV7;
1636 RCC_ClkInitStruct->
ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
1639 RCC_ClkInitStruct->
SYSCLKSource = READ_BIT(RCC->CFGR, RCC_CFGR_SW);
1642 RCC_ClkInitStruct->
AHBCLKDivider = READ_BIT(RCC->CFGR, RCC_CFGR_HPRE);
1645 RCC_ClkInitStruct->
APB1CLKDivider = READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1);
1648 RCC_ClkInitStruct->
APB2CLKDivider = (READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2) >> 3U);
1651 *pFLatency = __HAL_FLASH_GET_LATENCY();
1666 SET_BIT(RCC->CR, RCC_CR_CSSON) ;
1677 if(__HAL_RCC_GET_IT(RCC_IT_CSS))
1683 __HAL_RCC_CLEAR_IT(RCC_IT_CSS);
1719 uint32_t latency = FLASH_LATENCY_0;
1721 if(__HAL_RCC_PWR_IS_CLK_ENABLED())
1727 __HAL_RCC_PWR_CLK_ENABLE();
1729 __HAL_RCC_PWR_CLK_DISABLE();
1732 if(vos == PWR_REGULATOR_VOLTAGE_SCALE1)
1734 if(msirange > RCC_MSIRANGE_8)
1737 if(msirange > RCC_MSIRANGE_10)
1740 latency = FLASH_LATENCY_2;
1745 latency = FLASH_LATENCY_1;
1752 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 1753 if(msirange >= RCC_MSIRANGE_8)
1756 latency = FLASH_LATENCY_2;
1760 if(msirange == RCC_MSIRANGE_7)
1763 latency = FLASH_LATENCY_1;
1768 if(msirange > RCC_MSIRANGE_8)
1771 latency = FLASH_LATENCY_3;
1775 if(msirange == RCC_MSIRANGE_8)
1778 latency = FLASH_LATENCY_2;
1780 else if(msirange == RCC_MSIRANGE_7)
1783 latency = FLASH_LATENCY_1;
1790 __HAL_FLASH_SET_LATENCY(latency);
1794 if(__HAL_FLASH_GET_LATENCY() != latency)
1802 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 1809 uint32_t msirange = 0U;
1810 uint32_t pllvco, pllsource, pllr, pllm, sysclockfreq;
1812 if(__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_MSI)
1815 if(READ_BIT(RCC->CR, RCC_CR_MSIRGSEL) == 0U)
1817 msirange = READ_BIT(RCC->CSR, RCC_CSR_MSISRANGE) >> RCC_CSR_MSISRANGE_Pos;
1821 msirange = READ_BIT(RCC->CR, RCC_CR_MSIRANGE) >> RCC_CR_MSIRANGE_Pos;
1824 msirange = MSIRangeTable[msirange];
1830 pllsource = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC);
1834 case RCC_PLLSOURCE_HSI:
1838 case RCC_PLLSOURCE_HSE:
1842 case RCC_PLLSOURCE_MSI:
1847 pllm = (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ;
1848 pllvco = (pllvco * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)) / pllm;
1849 pllr = ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U ) * 2U;
1850 sysclockfreq = pllvco / pllr;
1852 return sysclockfreq;
void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
Configure the RCC_OscInitStruct according to the internal RCC configuration registers.
This file contains all the functions prototypes for the HAL module driver.
void HAL_RCC_NMI_IRQHandler(void)
Handle the RCC Clock Security System interrupt request.
HAL_StatusTypeDef HAL_RCC_DeInit(void)
Reset the RCC clock configuration to the default reset state.
RCC Internal/External Oscillator (HSE, HSI, MSI, LSE and LSI) configuration structure definition...
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
uint32_t HAL_RCC_GetPCLK2Freq(void)
Return the PCLK2 frequency.
void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency)
Configure the RCC_ClkInitStruct according to the internal RCC configuration registers.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
Initialize the RCC Oscillators according to the specified parameters in the RCC_OscInitTypeDef.
void HAL_RCC_CSSCallback(void)
RCC Clock Security System interrupt callback.
uint32_t MSICalibrationValue
HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
Initialize the CPU, AHB and APB busses clocks according to the specified parameters in the RCC_ClkIni...
static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t msirange)
Update number of Flash wait states in line with MSI range and current voltage range.
void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv)
Select the clock source to output on MCO pin(PA8).
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
Initialize the GPIOx peripheral according to the specified parameters in the GPIO_Init.
uint32_t HAL_RCC_GetHCLKFreq(void)
Return the HCLK frequency.
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 ...
RCC System, AHB and APB busses clock configuration structure definition.
static uint32_t RCC_GetSysClockFreqFromPLLSource(void)
Compute SYSCLK frequency based on PLL SYSCLK source.
uint32_t HAL_PWREx_GetVoltageRange(void)
Return Voltage Scaling Range.
ADC handle Structure definition.
uint32_t HAL_RCC_GetSysClockFreq(void)
Return the SYSCLK frequency.
void HAL_RCC_EnableCSS(void)
Enable the Clock Security System.
uint32_t HSICalibrationValue
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
uint32_t HAL_RCC_GetPCLK1Freq(void)
Return the PCLK1 frequency.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))