31 #ifdef HAL_RCC_MODULE_ENABLED
102 uint32_t tickstart = 0U, temp_reg = 0U;
103 #if defined(STM32F105xC) || defined(STM32F107xC)
104 uint32_t pllactive = 0U;
154 RCC->BDCR = temp_reg;
175 if (pwrclkchanged ==
SET)
191 #if defined(STM32F105xC) || defined(STM32F107xC)
196 assert_param(IS_RCC_I2S2CLKSOURCE(PeriphClkInit->I2s2ClockSelection));
199 __HAL_RCC_I2S2_CONFIG(PeriphClkInit->I2s2ClockSelection);
206 assert_param(IS_RCC_I2S3CLKSOURCE(PeriphClkInit->I2s3ClockSelection));
209 __HAL_RCC_I2S3_CONFIG(PeriphClkInit->I2s3ClockSelection);
227 assert_param(IS_RCC_PLLI2S_MUL(PeriphClkInit->PLLI2S.PLLI2SMUL));
228 assert_param(IS_RCC_HSE_PREDIV2(PeriphClkInit->PLLI2S.HSEPrediv2Value));
233 (__HAL_RCC_HSE_GET_PREDIV2() != PeriphClkInit->PLLI2S.HSEPrediv2Value))
239 __HAL_RCC_HSE_PREDIV2_CONFIG(PeriphClkInit->PLLI2S.HSEPrediv2Value);
242 __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SMUL);
245 __HAL_RCC_PLLI2S_ENABLE();
253 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
262 if (
READ_BIT(
RCC->CFGR2, RCC_CFGR2_PLL3MUL) != PeriphClkInit->PLLI2S.PLLI2SMUL)
270 #if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
271 || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
272 || defined(STM32F105xC) || defined(STM32F107xC)
277 assert_param(IS_RCC_USBPLLCLK_DIV(PeriphClkInit->UsbClockSelection));
280 __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection);
296 uint32_t srcclk = 0U;
310 #if defined(STM32F105xC) || defined(STM32F107xC)
313 PeriphClkInit->I2s2ClockSelection = __HAL_RCC_GET_I2S2_SOURCE();
317 PeriphClkInit->I2s3ClockSelection = __HAL_RCC_GET_I2S3_SOURCE();
321 #if defined(STM32F103xE) || defined(STM32F103xG)
324 PeriphClkInit->I2s2ClockSelection = RCC_I2S2CLKSOURCE_SYSCLK;
328 PeriphClkInit->I2s3ClockSelection = RCC_I2S3CLKSOURCE_SYSCLK;
332 #if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
333 || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
334 || defined(STM32F105xC) || defined(STM32F107xC)
337 PeriphClkInit->UsbClockSelection = __HAL_RCC_GET_USB_SOURCE();
389 #if defined(STM32F105xC) || defined(STM32F107xC)
390 const uint8_t aPLLMULFactorTable[14] = {0, 0, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 13};
391 const uint8_t aPredivFactorTable[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
393 uint32_t prediv1 = 0U, pllclk = 0U, pllmul = 0U;
394 uint32_t pll2mul = 0U, pll3mul = 0U, prediv2 = 0U;
396 #if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6) || \
397 defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)
398 const uint8_t aPLLMULFactorTable[16] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16};
399 const uint8_t aPredivFactorTable[2] = {1, 2};
401 uint32_t prediv1 = 0U, pllclk = 0U, pllmul = 0U;
403 uint32_t temp_reg = 0U, frequency = 0U;
410 #if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\
411 || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\
412 || defined(STM32F105xC) || defined(STM32F107xC)
413 case RCC_PERIPHCLK_USB:
416 temp_reg =
RCC->CFGR;
424 #if defined(STM32F105xC) || defined(STM32F107xC) || defined(STM32F100xB)\
425 || defined(STM32F100xE)
426 prediv1 = aPredivFactorTable[(uint32_t)(
RCC->CFGR2 & RCC_CFGR2_PREDIV1) >> RCC_CFGR2_PREDIV1_Pos];
431 #if defined(STM32F105xC) || defined(STM32F107xC)
436 prediv2 = ((
RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> RCC_CFGR2_PREDIV2_Pos) + 1;
437 pll2mul = ((
RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> RCC_CFGR2_PLL2MUL_Pos) + 2;
438 pllclk = (uint32_t)((((
HSE_VALUE / prediv2) * pll2mul) / prediv1) * pllmul);
443 pllclk = (uint32_t)((
HSE_VALUE / prediv1) * pllmul);
456 pllclk = (uint32_t)((
HSE_VALUE / prediv1) * pllmul);
463 pllclk = (uint32_t)((
HSI_VALUE >> 1) * pllmul);
467 #if defined(STM32F105xC) || defined(STM32F107xC)
469 if (__HAL_RCC_GET_USB_SOURCE() == RCC_USBCLKSOURCE_PLL_DIV2)
477 frequency = (2 * pllclk) / 3;
481 if (__HAL_RCC_GET_USB_SOURCE() == RCC_USBCLKSOURCE_PLL)
489 frequency = (pllclk * 2) / 3;
496 #if defined(STM32F103xE) || defined(STM32F103xG) || defined(STM32F105xC) || defined(STM32F107xC)
497 case RCC_PERIPHCLK_I2S2:
499 #if defined(STM32F103xE) || defined(STM32F103xG)
503 if (__HAL_RCC_GET_I2S2_SOURCE() == RCC_I2S2CLKSOURCE_SYSCLK)
514 prediv2 = ((
RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> RCC_CFGR2_PREDIV2_Pos) + 1;
515 pll3mul = ((
RCC->CFGR2 & RCC_CFGR2_PLL3MUL) >> RCC_CFGR2_PLL3MUL_Pos) + 2;
516 frequency = (uint32_t)(2 * ((
HSE_VALUE / prediv2) * pll3mul));
522 case RCC_PERIPHCLK_I2S3:
524 #if defined(STM32F103xE) || defined(STM32F103xG)
528 if (__HAL_RCC_GET_I2S3_SOURCE() == RCC_I2S3CLKSOURCE_SYSCLK)
539 prediv2 = ((
RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> RCC_CFGR2_PREDIV2_Pos) + 1;
540 pll3mul = ((
RCC->CFGR2 & RCC_CFGR2_PLL3MUL) >> RCC_CFGR2_PLL3MUL_Pos) + 2;
541 frequency = (uint32_t)(2 * ((
HSE_VALUE / prediv2) * pll3mul));
551 temp_reg =
RCC->BDCR;
591 #if defined(STM32F105xC) || defined(STM32F107xC)
615 uint32_t tickstart = 0U;
622 assert_param(IS_RCC_HSE_PREDIV2(PLLI2SInit->HSEPrediv2Value));
627 (__HAL_RCC_HSE_GET_PREDIV2() != PLLI2SInit->HSEPrediv2Value))
633 __HAL_RCC_PLLI2S_DISABLE();
641 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
648 __HAL_RCC_HSE_PREDIV2_CONFIG(PLLI2SInit->HSEPrediv2Value);
652 __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->PLLI2SMUL);
655 __HAL_RCC_PLLI2S_ENABLE();
663 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
685 uint32_t tickstart = 0U;
691 __HAL_RCC_PLLI2S_DISABLE();
699 if ((
HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
741 uint32_t tickstart = 0U;
747 ((
READ_BIT(
RCC->CFGR2, RCC_CFGR2_PREDIV1SRC)) == RCC_CFGR2_PREDIV1SRC_PLL2))
755 assert_param(IS_RCC_HSE_PREDIV2(PLL2Init->HSEPrediv2Value));
760 (__HAL_RCC_HSE_GET_PREDIV2() != PLL2Init->HSEPrediv2Value))
766 __HAL_RCC_PLL2_DISABLE();
774 if ((
HAL_GetTick() - tickstart) > PLL2_TIMEOUT_VALUE)
781 __HAL_RCC_HSE_PREDIV2_CONFIG(PLL2Init->HSEPrediv2Value);
784 __HAL_RCC_PLL2_CONFIG(PLL2Init->PLL2MUL);
787 __HAL_RCC_PLL2_ENABLE();
795 if ((
HAL_GetTick() - tickstart) > PLL2_TIMEOUT_VALUE)
812 uint32_t tickstart = 0U;
818 ((
READ_BIT(
RCC->CFGR2, RCC_CFGR2_PREDIV1SRC)) == RCC_CFGR2_PREDIV1SRC_PLL2))
825 __HAL_RCC_PLL2_DISABLE();
833 if ((
HAL_GetTick() - tickstart) > PLL2_TIMEOUT_VALUE)