Return the peripheral clock frequency for peripherals with clock source from PLLSAIs.
1154 uint32_t frequency = 0U;
1155 uint32_t srcclk, pll_oscsource, pllvco, plln;
1156 #if defined(SDMMC1) && defined(RCC_CCIPR2_SDMMCSEL) 1166 srcclk = __HAL_RCC_GET_RTC_SOURCE();
1170 case RCC_RTCCLKSOURCE_LSE:
1172 if(HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY))
1174 frequency = LSE_VALUE;
1177 case RCC_RTCCLKSOURCE_LSI:
1179 if(HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY))
1181 #if defined(RCC_CSR_LSIPREDIV) 1182 if(HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIPREDIV))
1184 frequency = LSI_VALUE/128U;
1189 frequency = LSI_VALUE;
1193 case RCC_RTCCLKSOURCE_HSE_DIV32:
1195 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY))
1197 frequency = HSE_VALUE / 32U;
1208 pll_oscsource = __HAL_RCC_GET_PLL_OSCSOURCE();
1211 switch(pll_oscsource)
1213 case RCC_PLLSOURCE_MSI:
1214 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_MSIRDY))
1217 pllvco = MSIRangeTable[(__HAL_RCC_GET_MSI_RANGE() >> 4U)];
1224 case RCC_PLLSOURCE_HSI:
1225 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1234 case RCC_PLLSOURCE_HSE:
1235 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY))
1254 case RCC_PERIPHCLK_SAI1:
1262 case RCC_PERIPHCLK_SAI2:
1268 #if defined(USB_OTG_FS) || defined(USB) 1270 case RCC_PERIPHCLK_USB:
1274 case RCC_PERIPHCLK_RNG:
1276 #if defined(SDMMC1) && !defined(RCC_CCIPR2_SDMMCSEL) 1278 case RCC_PERIPHCLK_SDMMC1:
1282 srcclk = READ_BIT(RCC->CCIPR, RCC_CCIPR_CLK48SEL);
1286 case RCC_CCIPR_CLK48SEL:
1287 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_MSIRDY))
1290 frequency = MSIRangeTable[(__HAL_RCC_GET_MSI_RANGE() >> 4U)];
1293 case RCC_CCIPR_CLK48SEL_1:
1294 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLLRDY))
1296 if(HAL_IS_BIT_SET(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN))
1299 plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos;
1300 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
1302 frequency = (pllvco / (((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos) + 1U) << 1U));
1306 #if defined(RCC_PLLSAI1_SUPPORT) 1307 case RCC_CCIPR_CLK48SEL_0:
1308 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLLSAI1RDY))
1310 if(HAL_IS_BIT_SET(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1QEN))
1312 plln = READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N) >> RCC_PLLSAI1CFGR_PLLSAI1N_Pos;
1313 #if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) 1316 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1M) >> RCC_PLLSAI1CFGR_PLLSAI1M_Pos) + 1U));
1319 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
1322 frequency = (pllvco / (((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1Q) >> RCC_PLLSAI1CFGR_PLLSAI1Q_Pos) + 1U) << 1U));
1327 #if defined(RCC_HSI48_SUPPORT) 1329 if(HAL_IS_BIT_SET(RCC->CRRCR, RCC_CRRCR_HSI48RDY))
1331 frequency = HSI48_VALUE;
1342 #if defined(SDMMC1) && defined(RCC_CCIPR2_SDMMCSEL) 1344 case RCC_PERIPHCLK_SDMMC1:
1346 if(HAL_IS_BIT_SET(RCC->CCIPR2, RCC_CCIPR2_SDMMCSEL))
1348 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLLRDY))
1350 if(HAL_IS_BIT_SET(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN))
1353 plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos;
1354 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
1356 pllp = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPDIV) >> RCC_PLLCFGR_PLLPDIV_Pos;
1359 if(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP) != 0U)
1368 frequency = (pllvco / pllp);
1374 srcclk = READ_BIT(RCC->CCIPR, RCC_CCIPR_CLK48SEL);
1378 case RCC_CCIPR_CLK48SEL:
1379 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_MSIRDY))
1382 frequency = MSIRangeTable[(__HAL_RCC_GET_MSI_RANGE() >> 4U)];
1385 case RCC_CCIPR_CLK48SEL_1:
1386 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLLRDY))
1388 if(HAL_IS_BIT_SET(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN))
1391 plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos;
1392 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
1394 frequency = (pllvco / (((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos) + 1U) << 1U));
1398 case RCC_CCIPR_CLK48SEL_0:
1399 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLLSAI1RDY))
1401 if(HAL_IS_BIT_SET(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1QEN))
1404 plln = READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N) >> RCC_PLLSAI1CFGR_PLLSAI1N_Pos;
1405 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1M) >> RCC_PLLSAI1CFGR_PLLSAI1M_Pos) + 1U));
1407 frequency = (pllvco / (((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1Q) >> RCC_PLLSAI1CFGR_PLLSAI1Q_Pos) + 1U) << 1U));
1412 if(HAL_IS_BIT_SET(RCC->CRRCR, RCC_CRRCR_HSI48RDY))
1414 frequency = HSI48_VALUE;
1426 case RCC_PERIPHCLK_USART1:
1429 srcclk = __HAL_RCC_GET_USART1_SOURCE();
1433 case RCC_USART1CLKSOURCE_PCLK2:
1436 case RCC_USART1CLKSOURCE_SYSCLK:
1439 case RCC_USART1CLKSOURCE_HSI:
1440 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1442 frequency = HSI_VALUE;
1445 case RCC_USART1CLKSOURCE_LSE:
1446 if(HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY))
1448 frequency = LSE_VALUE;
1459 case RCC_PERIPHCLK_USART2:
1462 srcclk = __HAL_RCC_GET_USART2_SOURCE();
1466 case RCC_USART2CLKSOURCE_PCLK1:
1469 case RCC_USART2CLKSOURCE_SYSCLK:
1472 case RCC_USART2CLKSOURCE_HSI:
1473 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1475 frequency = HSI_VALUE;
1478 case RCC_USART2CLKSOURCE_LSE:
1479 if(HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY))
1481 frequency = LSE_VALUE;
1494 case RCC_PERIPHCLK_USART3:
1497 srcclk = __HAL_RCC_GET_USART3_SOURCE();
1501 case RCC_USART3CLKSOURCE_PCLK1:
1504 case RCC_USART3CLKSOURCE_SYSCLK:
1507 case RCC_USART3CLKSOURCE_HSI:
1508 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1510 frequency = HSI_VALUE;
1513 case RCC_USART3CLKSOURCE_LSE:
1514 if(HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY))
1516 frequency = LSE_VALUE;
1531 case RCC_PERIPHCLK_UART4:
1534 srcclk = __HAL_RCC_GET_UART4_SOURCE();
1538 case RCC_UART4CLKSOURCE_PCLK1:
1541 case RCC_UART4CLKSOURCE_SYSCLK:
1544 case RCC_UART4CLKSOURCE_HSI:
1545 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1547 frequency = HSI_VALUE;
1550 case RCC_UART4CLKSOURCE_LSE:
1551 if(HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY))
1553 frequency = LSE_VALUE;
1568 case RCC_PERIPHCLK_UART5:
1571 srcclk = __HAL_RCC_GET_UART5_SOURCE();
1575 case RCC_UART5CLKSOURCE_PCLK1:
1578 case RCC_UART5CLKSOURCE_SYSCLK:
1581 case RCC_UART5CLKSOURCE_HSI:
1582 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1584 frequency = HSI_VALUE;
1587 case RCC_UART5CLKSOURCE_LSE:
1588 if(HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY))
1590 frequency = LSE_VALUE;
1603 case RCC_PERIPHCLK_LPUART1:
1606 srcclk = __HAL_RCC_GET_LPUART1_SOURCE();
1610 case RCC_LPUART1CLKSOURCE_PCLK1:
1613 case RCC_LPUART1CLKSOURCE_SYSCLK:
1616 case RCC_LPUART1CLKSOURCE_HSI:
1617 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1619 frequency = HSI_VALUE;
1622 case RCC_LPUART1CLKSOURCE_LSE:
1623 if(HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY))
1625 frequency = LSE_VALUE;
1636 case RCC_PERIPHCLK_ADC:
1638 srcclk = __HAL_RCC_GET_ADC_SOURCE();
1642 case RCC_ADCCLKSOURCE_SYSCLK:
1645 #if defined(RCC_PLLSAI1_SUPPORT) 1646 case RCC_ADCCLKSOURCE_PLLSAI1:
1647 if(__HAL_RCC_GET_PLLSAI1CLKOUT_CONFIG(RCC_PLLSAI1_ADC1CLK) != 0U)
1649 plln = READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N) >> RCC_PLLSAI1CFGR_PLLSAI1N_Pos;
1650 #if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) 1653 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1M) >> RCC_PLLSAI1CFGR_PLLSAI1M_Pos) + 1U));
1656 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
1659 frequency = (pllvco / (((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1R) >> RCC_PLLSAI1CFGR_PLLSAI1R_Pos) + 1U) << 1U));
1663 #if defined(STM32L471xx) || defined(STM32L475xx) || defined(STM32L476xx) || defined(STM32L485xx) || defined(STM32L486xx) || defined(STM32L496xx) || defined(STM32L4A6xx) 1664 case RCC_ADCCLKSOURCE_PLLSAI2:
1665 if(__HAL_RCC_GET_PLLSAI2CLKOUT_CONFIG(RCC_PLLSAI2_ADC2CLK) != 0U)
1667 plln = READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2N) >> RCC_PLLSAI2CFGR_PLLSAI2N_Pos;
1668 #if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) 1671 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2M) >> RCC_PLLSAI2CFGR_PLLSAI2M_Pos) + 1U));
1674 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
1677 frequency = (pllvco / (((READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2R) >> RCC_PLLSAI2CFGR_PLLSAI2R_Pos) + 1U) << 1U));
1689 #if defined(DFSDM1_Filter0) 1691 case RCC_PERIPHCLK_DFSDM1:
1694 srcclk = __HAL_RCC_GET_DFSDM1_SOURCE();
1696 if(srcclk == RCC_DFSDM1CLKSOURCE_PCLK2)
1708 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 1710 case RCC_PERIPHCLK_DFSDM1AUDIO:
1713 srcclk = __HAL_RCC_GET_DFSDM1AUDIO_SOURCE();
1717 case RCC_DFSDM1AUDIOCLKSOURCE_SAI1:
1720 case RCC_DFSDM1AUDIOCLKSOURCE_MSI:
1721 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_MSIRDY))
1724 frequency = MSIRangeTable[(__HAL_RCC_GET_MSI_RANGE() >> 4U)];
1727 case RCC_DFSDM1AUDIOCLKSOURCE_HSI:
1728 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1730 frequency = HSI_VALUE;
1745 case RCC_PERIPHCLK_I2C1:
1748 srcclk = __HAL_RCC_GET_I2C1_SOURCE();
1752 case RCC_I2C1CLKSOURCE_PCLK1:
1755 case RCC_I2C1CLKSOURCE_SYSCLK:
1758 case RCC_I2C1CLKSOURCE_HSI:
1759 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1761 frequency = HSI_VALUE;
1774 case RCC_PERIPHCLK_I2C2:
1777 srcclk = __HAL_RCC_GET_I2C2_SOURCE();
1781 case RCC_I2C2CLKSOURCE_PCLK1:
1784 case RCC_I2C2CLKSOURCE_SYSCLK:
1787 case RCC_I2C2CLKSOURCE_HSI:
1788 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1790 frequency = HSI_VALUE;
1803 case RCC_PERIPHCLK_I2C3:
1806 srcclk = __HAL_RCC_GET_I2C3_SOURCE();
1810 case RCC_I2C3CLKSOURCE_PCLK1:
1813 case RCC_I2C3CLKSOURCE_SYSCLK:
1816 case RCC_I2C3CLKSOURCE_HSI:
1817 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1819 frequency = HSI_VALUE;
1832 case RCC_PERIPHCLK_I2C4:
1835 srcclk = __HAL_RCC_GET_I2C4_SOURCE();
1839 case RCC_I2C4CLKSOURCE_PCLK1:
1842 case RCC_I2C4CLKSOURCE_SYSCLK:
1845 case RCC_I2C4CLKSOURCE_HSI:
1846 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1848 frequency = HSI_VALUE;
1861 case RCC_PERIPHCLK_LPTIM1:
1864 srcclk = __HAL_RCC_GET_LPTIM1_SOURCE();
1868 case RCC_LPTIM1CLKSOURCE_PCLK1:
1871 case RCC_LPTIM1CLKSOURCE_LSI:
1872 if(HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY))
1874 #if defined(RCC_CSR_LSIPREDIV) 1875 if(HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIPREDIV))
1877 frequency = LSI_VALUE/128U;
1882 frequency = LSI_VALUE;
1886 case RCC_LPTIM1CLKSOURCE_HSI:
1887 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1889 frequency = HSI_VALUE;
1892 case RCC_LPTIM1CLKSOURCE_LSE:
1893 if(HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY))
1895 frequency = LSE_VALUE;
1906 case RCC_PERIPHCLK_LPTIM2:
1909 srcclk = __HAL_RCC_GET_LPTIM2_SOURCE();
1913 case RCC_LPTIM2CLKSOURCE_PCLK1:
1916 case RCC_LPTIM2CLKSOURCE_LSI:
1917 if(HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY))
1919 #if defined(RCC_CSR_LSIPREDIV) 1920 if(HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIPREDIV))
1922 frequency = LSI_VALUE/128U;
1927 frequency = LSI_VALUE;
1931 case RCC_LPTIM2CLKSOURCE_HSI:
1932 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1934 frequency = HSI_VALUE;
1937 case RCC_LPTIM2CLKSOURCE_LSE:
1938 if(HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY))
1940 frequency = LSE_VALUE;
1953 case RCC_PERIPHCLK_SWPMI1:
1956 srcclk = __HAL_RCC_GET_SWPMI1_SOURCE();
1960 case RCC_SWPMI1CLKSOURCE_PCLK1:
1963 case RCC_SWPMI1CLKSOURCE_HSI:
1964 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
1966 frequency = HSI_VALUE;
1979 #if defined(OCTOSPI1) || defined(OCTOSPI2) 1981 case RCC_PERIPHCLK_OSPI:
1984 srcclk = __HAL_RCC_GET_OSPI_SOURCE();
1988 case RCC_OSPICLKSOURCE_SYSCLK:
1991 case RCC_OSPICLKSOURCE_MSI:
1992 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_MSIRDY))
1995 frequency = MSIRangeTable[(__HAL_RCC_GET_MSI_RANGE() >> 4U)];
1998 case RCC_OSPICLKSOURCE_PLL:
1999 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLLRDY))
2001 if(HAL_IS_BIT_SET(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN))
2004 plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos;
2005 pllvco = ((pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
2007 frequency = (pllvco / (((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos) + 1U) << 1U));
__STATIC_INLINE void uint32_t PeriphClk
uint32_t HAL_RCC_GetPCLK2Freq(void)
Return the PCLK2 frequency.
uint32_t HAL_RCC_GetSysClockFreq(void)
Return the SYSCLK frequency.
static uint32_t RCCEx_GetSAIxPeriphCLKFreq(uint32_t PeriphClk, uint32_t InputFrequency)
uint32_t HAL_RCC_GetPCLK1Freq(void)
Return the PCLK1 frequency.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))