38 #ifdef HAL_RCC_MODULE_ENABLED 45 #define PLLSAI1_TIMEOUT_VALUE 2U 46 #define PLLSAI2_TIMEOUT_VALUE 2U 47 #define PLL_TIMEOUT_VALUE 2U 49 #define DIVIDER_P_UPDATE 0U 50 #define DIVIDER_Q_UPDATE 1U 51 #define DIVIDER_R_UPDATE 2U 53 #define __LSCO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() 54 #define LSCO_GPIO_PORT GPIOA 55 #define LSCO_PIN GPIO_PIN_2 66 #if defined(RCC_PLLSAI1_SUPPORT) 68 static HAL_StatusTypeDef
RCCEx_PLLSAI1_Config(RCC_PLLSAI1InitTypeDef *PllSai1, uint32_t Divider);
72 #if defined(RCC_PLLSAI2_SUPPORT) 198 uint32_t tmpregister, tickstart;
199 HAL_StatusTypeDef ret =
HAL_OK;
200 HAL_StatusTypeDef status =
HAL_OK;
215 case RCC_SAI1CLKSOURCE_PLL:
217 #if defined(RCC_PLLSAI2_SUPPORT) 218 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_SAI3CLK);
220 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_SAI2CLK);
225 case RCC_SAI1CLKSOURCE_PLLSAI1:
231 #if defined(RCC_PLLSAI2_SUPPORT) 233 case RCC_SAI1CLKSOURCE_PLLSAI2:
241 case RCC_SAI1CLKSOURCE_PIN:
242 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 243 case RCC_SAI1CLKSOURCE_HSI:
277 case RCC_SAI2CLKSOURCE_PLL:
279 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_SAI3CLK);
283 case RCC_SAI2CLKSOURCE_PLLSAI1:
289 case RCC_SAI2CLKSOURCE_PLLSAI2:
295 case RCC_SAI2CLKSOURCE_PIN:
296 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 297 case RCC_SAI2CLKSOURCE_HSI:
323 FlagStatus pwrclkchanged = RESET;
329 if(__HAL_RCC_PWR_IS_CLK_DISABLED() != 0U)
331 __HAL_RCC_PWR_CLK_ENABLE();
336 SET_BIT(PWR->CR1, PWR_CR1_DBP);
341 while(READ_BIT(PWR->CR1, PWR_CR1_DBP) == 0U)
343 if((
HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
353 tmpregister = READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL);
355 if((tmpregister != RCC_RTCCLKSOURCE_NONE) && (tmpregister != PeriphClkInit->
RTCClockSelection))
358 tmpregister = READ_BIT(RCC->BDCR, ~(RCC_BDCR_RTCSEL));
360 __HAL_RCC_BACKUPRESET_FORCE();
361 __HAL_RCC_BACKUPRESET_RELEASE();
363 RCC->BDCR = tmpregister;
367 if (HAL_IS_BIT_SET(tmpregister, RCC_BDCR_LSEON))
373 while(READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U)
375 if((
HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
401 if(pwrclkchanged == SET)
403 __HAL_RCC_PWR_CLK_DISABLE();
541 #if defined(USB_OTG_FS) || defined(USB) 552 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_48M1CLK);
556 #if defined(RCC_PLLSAI1_SUPPORT) 585 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_48M1CLK);
587 #if defined(RCC_CCIPR2_SDMMCSEL) 591 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_SAI3CLK);
622 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_48M1CLK);
624 #if defined(RCC_PLLSAI1_SUPPORT) 644 #if !defined(STM32L412xx) && !defined(STM32L422xx) 653 #if defined(RCC_PLLSAI1_SUPPORT) 667 #if defined(STM32L471xx) || defined(STM32L475xx) || defined(STM32L476xx) || defined(STM32L485xx) || defined(STM32L486xx) || defined(STM32L496xx) || defined(STM32L4A6xx) 700 #if defined(DFSDM1_Filter0) 712 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 714 if(((PeriphClkInit->
PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1AUDIO) == RCC_PERIPHCLK_DFSDM1AUDIO)
736 __HAL_RCC_PLLSAI2_DISABLE();
742 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI2RDY) != 0U)
744 if((
HAL_GetTick() - tickstart) > PLLSAI2_TIMEOUT_VALUE)
795 #if defined(OCTOSPI1) || defined(OCTOSPI2) 809 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_48M1CLK);
830 #if defined(STM32L412xx) || defined(STM32L422xx) 832 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | \
833 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | \
834 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_USB | \
835 RCC_PERIPHCLK_RNG | \
838 #elif defined(STM32L431xx) 840 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | \
841 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | \
842 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | \
843 RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_SWPMI1 | \
846 #elif defined(STM32L432xx) || defined(STM32L442xx) 849 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C3 | \
850 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_USB | \
851 RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_SWPMI1 | \
854 #elif defined(STM32L433xx) || defined(STM32L443xx) 856 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | \
857 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | \
858 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_USB | \
859 RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_SWPMI1 | \
862 #elif defined(STM32L451xx) 864 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | RCC_PERIPHCLK_UART4 | \
865 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_I2C4 | \
866 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | \
867 RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_DFSDM1 | \
870 #elif defined(STM32L452xx) || defined(STM32L462xx) 872 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | RCC_PERIPHCLK_UART4 | \
873 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_I2C4 | \
874 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_USB | \
875 RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_DFSDM1 | \
878 #elif defined(STM32L471xx) 880 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 | \
881 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | \
882 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 | \
883 RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_SWPMI1 | RCC_PERIPHCLK_DFSDM1 | \
886 #elif defined(STM32L475xx) || defined(STM32L476xx) || defined(STM32L485xx) || defined(STM32L486xx) 888 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 | \
889 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | \
890 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 | RCC_PERIPHCLK_USB | \
891 RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_SWPMI1 | RCC_PERIPHCLK_DFSDM1 | \
894 #elif defined(STM32L496xx) || defined(STM32L4A6xx) 896 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 | \
897 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_I2C4 | \
898 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 | RCC_PERIPHCLK_USB | \
899 RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_SWPMI1 | RCC_PERIPHCLK_DFSDM1 | \
902 #elif defined(STM32L4R5xx) || defined(STM32L4S5xx) 904 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 | \
905 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_I2C4 | \
906 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 | RCC_PERIPHCLK_USB | \
907 RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_DFSDM1 | \
908 RCC_PERIPHCLK_DFSDM1AUDIO | RCC_PERIPHCLK_RTC | RCC_PERIPHCLK_OSPI;
910 #elif defined(STM32L4R7xx) || defined(STM32L4S7xx) 912 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 | \
913 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_I2C4 | \
914 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 | RCC_PERIPHCLK_USB | \
915 RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_DFSDM1 | \
916 RCC_PERIPHCLK_DFSDM1AUDIO | RCC_PERIPHCLK_RTC | RCC_PERIPHCLK_OSPI | RCC_PERIPHCLK_LTDC;
918 #elif defined(STM32L4R9xx) || defined(STM32L4S9xx) 920 PeriphClkInit->
PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 | \
921 RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_I2C4 | \
922 RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 | RCC_PERIPHCLK_USB | \
923 RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_DFSDM1 | \
924 RCC_PERIPHCLK_DFSDM1AUDIO | RCC_PERIPHCLK_RTC | RCC_PERIPHCLK_OSPI | RCC_PERIPHCLK_LTDC | RCC_PERIPHCLK_DSI;
928 #if defined(RCC_PLLSAI1_SUPPORT) 932 PeriphClkInit->
PLLSAI1.PLLSAI1Source = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC) >> RCC_PLLCFGR_PLLSRC_Pos;
933 #if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) 934 PeriphClkInit->
PLLSAI1.PLLSAI1M = (READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1M) >> RCC_PLLSAI1CFGR_PLLSAI1M_Pos) + 1U;
936 PeriphClkInit->
PLLSAI1.PLLSAI1M = (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U;
938 PeriphClkInit->
PLLSAI1.PLLSAI1N = READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N) >> RCC_PLLSAI1CFGR_PLLSAI1N_Pos;
939 PeriphClkInit->
PLLSAI1.PLLSAI1P = ((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1P) >> RCC_PLLSAI1CFGR_PLLSAI1P_Pos) << 4U) + 7U;
940 PeriphClkInit->
PLLSAI1.PLLSAI1Q = ((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1Q) >> RCC_PLLSAI1CFGR_PLLSAI1Q_Pos) + 1U) * 2U;
941 PeriphClkInit->
PLLSAI1.PLLSAI1R = ((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1R) >> RCC_PLLSAI1CFGR_PLLSAI1R_Pos) + 1U) * 2U;
945 #if defined(RCC_PLLSAI2_SUPPORT) 950 #if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) 951 PeriphClkInit->
PLLSAI2.
PLLSAI2M = (READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2M) >> RCC_PLLSAI2CFGR_PLLSAI2M_Pos) + 1U;
955 PeriphClkInit->
PLLSAI2.
PLLSAI2N = READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2N) >> RCC_PLLSAI2CFGR_PLLSAI2N_Pos;
956 PeriphClkInit->
PLLSAI2.
PLLSAI2P = ((READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2P) >> RCC_PLLSAI2CFGR_PLLSAI2P_Pos) << 4U) + 7U;
957 #if defined(RCC_PLLSAI2Q_DIV_SUPPORT) 958 PeriphClkInit->
PLLSAI2.
PLLSAI2Q = ((READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2Q) >> RCC_PLLSAI2CFGR_PLLSAI2Q_Pos) + 1U) * 2U;
960 PeriphClkInit->
PLLSAI2.
PLLSAI2R = ((READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2R)>> RCC_PLLSAI2CFGR_PLLSAI2R_Pos) + 1U) * 2U;
1022 #if defined(USB_OTG_FS) || defined(USB) 1035 #if !defined(STM32L412xx) && !defined(STM32L422xx) 1045 #if defined(DFSDM1_Filter0) 1049 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 1065 #if defined(OCTOSPI1) || defined(OCTOSPI2) 1154 uint32_t frequency = 0U;
1155 uint32_t srcclk, pll_oscsource, pllvco, plln;
1156 #if defined(SDMMC1) && defined(RCC_CCIPR2_SDMMCSEL) 1163 if(PeriphClk == RCC_PERIPHCLK_RTC)
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));
2048 #if defined(RCC_PLLSAI1_SUPPORT) 2059 HAL_StatusTypeDef status =
HAL_OK;
2062 assert_param(IS_RCC_PLLSAI1SOURCE(PLLSAI1Init->PLLSAI1Source));
2063 assert_param(IS_RCC_PLLSAI1M_VALUE(PLLSAI1Init->PLLSAI1M));
2064 assert_param(IS_RCC_PLLSAI1N_VALUE(PLLSAI1Init->PLLSAI1N));
2065 assert_param(IS_RCC_PLLSAI1P_VALUE(PLLSAI1Init->PLLSAI1P));
2066 assert_param(IS_RCC_PLLSAI1Q_VALUE(PLLSAI1Init->PLLSAI1Q));
2067 assert_param(IS_RCC_PLLSAI1R_VALUE(PLLSAI1Init->PLLSAI1R));
2068 assert_param(IS_RCC_PLLSAI1CLOCKOUT_VALUE(PLLSAI1Init->PLLSAI1ClockOut));
2071 __HAL_RCC_PLLSAI1_DISABLE();
2077 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI1RDY) != 0U)
2079 if((
HAL_GetTick() - tickstart) > PLLSAI1_TIMEOUT_VALUE)
2081 status = HAL_TIMEOUT;
2088 #if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) 2091 __HAL_RCC_PLLSAI1_CONFIG(PLLSAI1Init->PLLSAI1M, PLLSAI1Init->PLLSAI1N, PLLSAI1Init->PLLSAI1P, PLLSAI1Init->PLLSAI1Q, PLLSAI1Init->PLLSAI1R);
2095 __HAL_RCC_PLLSAI1_CONFIG(PLLSAI1Init->PLLSAI1N, PLLSAI1Init->PLLSAI1P, PLLSAI1Init->PLLSAI1Q, PLLSAI1Init->PLLSAI1R);
2098 __HAL_RCC_PLLSAI1CLKOUT_ENABLE(PLLSAI1Init->PLLSAI1ClockOut);
2101 __HAL_RCC_PLLSAI1_ENABLE();
2107 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI1RDY) == 0U)
2109 if((
HAL_GetTick() - tickstart) > PLLSAI1_TIMEOUT_VALUE)
2111 status = HAL_TIMEOUT;
2127 HAL_StatusTypeDef status =
HAL_OK;
2130 __HAL_RCC_PLLSAI1_DISABLE();
2136 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI1RDY) != 0U)
2138 if((
HAL_GetTick() - tickstart) > PLLSAI1_TIMEOUT_VALUE)
2140 status = HAL_TIMEOUT;
2146 __HAL_RCC_PLLSAI1CLKOUT_DISABLE(RCC_PLLSAI1CFGR_PLLSAI1PEN|RCC_PLLSAI1CFGR_PLLSAI1QEN|RCC_PLLSAI1CFGR_PLLSAI1REN);
2149 #if defined(RCC_PLLSAI2_SUPPORT) 2150 if(READ_BIT(RCC->CR, (RCC_CR_PLLRDY | RCC_CR_PLLSAI2RDY)) == 0U)
2152 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, RCC_PLLSOURCE_NONE);
2155 if(READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U)
2157 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, RCC_PLLSOURCE_NONE);
2166 #if defined(RCC_PLLSAI2_SUPPORT) 2177 HAL_StatusTypeDef status =
HAL_OK;
2184 #if defined(RCC_PLLSAI2Q_DIV_SUPPORT) 2191 __HAL_RCC_PLLSAI2_DISABLE();
2197 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI2RDY) != 0U)
2199 if((
HAL_GetTick() - tickstart) > PLLSAI2_TIMEOUT_VALUE)
2201 status = HAL_TIMEOUT;
2208 #if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) && defined(RCC_PLLSAI2Q_DIV_SUPPORT) 2212 #elif defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) 2216 #elif defined(RCC_PLLSAI2Q_DIV_SUPPORT) 2229 __HAL_RCC_PLLSAI2_ENABLE();
2235 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI2RDY) == 0U)
2237 if((
HAL_GetTick() - tickstart) > PLLSAI2_TIMEOUT_VALUE)
2239 status = HAL_TIMEOUT;
2255 HAL_StatusTypeDef status =
HAL_OK;
2258 __HAL_RCC_PLLSAI2_DISABLE();
2264 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI2RDY) != 0U)
2266 if((
HAL_GetTick() - tickstart) > PLLSAI2_TIMEOUT_VALUE)
2268 status = HAL_TIMEOUT;
2274 #if defined(RCC_PLLSAI2Q_DIV_SUPPORT) 2275 __HAL_RCC_PLLSAI2CLKOUT_DISABLE(RCC_PLLSAI2CFGR_PLLSAI2PEN|RCC_PLLSAI2CFGR_PLLSAI2QEN|RCC_PLLSAI2CFGR_PLLSAI2REN);
2277 __HAL_RCC_PLLSAI2CLKOUT_DISABLE(RCC_PLLSAI2CFGR_PLLSAI2PEN|RCC_PLLSAI2CFGR_PLLSAI2REN);
2281 if(READ_BIT(RCC->CR, (RCC_CR_PLLRDY | RCC_CR_PLLSAI1RDY)) == 0U)
2283 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, RCC_PLLSOURCE_NONE);
2305 __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(WakeUpClk);
2321 assert_param(IS_RCC_MSI_STANDBY_CLOCK_RANGE(MSIRange));
2323 __HAL_RCC_MSI_STANDBY_RANGE_CONFIG(MSIRange);
2335 SET_BIT(RCC->BDCR, RCC_BDCR_LSECSSON) ;
2345 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSECSSON) ;
2348 __HAL_RCC_DISABLE_IT(RCC_IT_LSECSS);
2359 SET_BIT(RCC->BDCR, RCC_BDCR_LSECSSON) ;
2362 __HAL_RCC_ENABLE_IT(RCC_IT_LSECSS);
2365 __HAL_RCC_LSECSS_EXTI_ENABLE_IT();
2366 __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE();
2376 if(__HAL_RCC_GET_IT(RCC_IT_LSECSS))
2382 __HAL_RCC_CLEAR_IT(RCC_IT_LSECSS);
2407 GPIO_InitTypeDef GPIO_InitStruct;
2408 FlagStatus pwrclkchanged = RESET;
2409 FlagStatus backupchanged = RESET;
2415 __LSCO_CLK_ENABLE();
2418 GPIO_InitStruct.Pin = LSCO_PIN;
2419 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
2420 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
2421 GPIO_InitStruct.Pull = GPIO_NOPULL;
2425 if(__HAL_RCC_PWR_IS_CLK_DISABLED())
2427 __HAL_RCC_PWR_CLK_ENABLE();
2428 pwrclkchanged = SET;
2430 if(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
2433 backupchanged = SET;
2436 MODIFY_REG(RCC->BDCR, RCC_BDCR_LSCOSEL | RCC_BDCR_LSCOEN, LSCOSource | RCC_BDCR_LSCOEN);
2438 if(backupchanged == SET)
2442 if(pwrclkchanged == SET)
2444 __HAL_RCC_PWR_CLK_DISABLE();
2454 FlagStatus pwrclkchanged = RESET;
2455 FlagStatus backupchanged = RESET;
2458 if(__HAL_RCC_PWR_IS_CLK_DISABLED())
2460 __HAL_RCC_PWR_CLK_ENABLE();
2461 pwrclkchanged = SET;
2463 if(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
2467 backupchanged = SET;
2473 if(backupchanged == SET)
2478 if(pwrclkchanged == SET)
2480 __HAL_RCC_PWR_CLK_DISABLE();
2492 SET_BIT(RCC->CR, RCC_CR_MSIPLLEN) ;
2595 __HAL_RCC_CRS_FORCE_RESET();
2596 __HAL_RCC_CRS_RELEASE_RESET();
2606 WRITE_REG(CRS->CFGR, value);
2616 SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN | CRS_CR_CEN);
2625 SET_BIT(CRS->CR, CRS_CR_SWSYNC);
2639 pSynchroInfo->
ReloadValue = (READ_BIT(CRS->CFGR, CRS_CFGR_RELOAD));
2645 pSynchroInfo->
FreqErrorCapture = (READ_BIT(CRS->ISR, CRS_ISR_FECAP) >> CRS_ISR_FECAP_Pos);
2668 uint32_t crsstatus = RCC_CRS_NONE;
2677 if(Timeout != HAL_MAX_DELAY)
2679 if(((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
2681 crsstatus = RCC_CRS_TIMEOUT;
2685 if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCOK))
2688 crsstatus |= RCC_CRS_SYNCOK;
2691 __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCOK);
2695 if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCWARN))
2698 crsstatus |= RCC_CRS_SYNCWARN;
2701 __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCWARN);
2705 if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_TRIMOVF))
2708 crsstatus |= RCC_CRS_TRIMOVF;
2711 __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_TRIMOVF);
2715 if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCERR))
2718 crsstatus |= RCC_CRS_SYNCERR;
2721 __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCERR);
2725 if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCMISS))
2728 crsstatus |= RCC_CRS_SYNCMISS;
2731 __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCMISS);
2735 if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_ESYNC))
2738 __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_ESYNC);
2740 }
while(RCC_CRS_NONE == crsstatus);
2751 uint32_t crserror = RCC_CRS_NONE;
2753 uint32_t itflags = READ_REG(CRS->ISR);
2754 uint32_t itsources = READ_REG(CRS->CR);
2757 if(((itflags & RCC_CRS_FLAG_SYNCOK) != 0U) && ((itsources & RCC_CRS_IT_SYNCOK) != 0U))
2760 WRITE_REG(CRS->ICR, CRS_ICR_SYNCOKC);
2766 else if(((itflags & RCC_CRS_FLAG_SYNCWARN) != 0U) && ((itsources & RCC_CRS_IT_SYNCWARN) != 0U))
2769 WRITE_REG(CRS->ICR, CRS_ICR_SYNCWARNC);
2775 else if(((itflags & RCC_CRS_FLAG_ESYNC) != 0U) && ((itsources & RCC_CRS_IT_ESYNC) != 0U))
2778 WRITE_REG(CRS->ICR, CRS_ICR_ESYNCC);
2786 if(((itflags & RCC_CRS_FLAG_ERR) != 0U) && ((itsources & RCC_CRS_IT_ERR) != 0U))
2788 if((itflags & RCC_CRS_FLAG_SYNCERR) != 0U)
2790 crserror |= RCC_CRS_SYNCERR;
2792 if((itflags & RCC_CRS_FLAG_SYNCMISS) != 0U)
2794 crserror |= RCC_CRS_SYNCMISS;
2796 if((itflags & RCC_CRS_FLAG_TRIMOVF) != 0U)
2798 crserror |= RCC_CRS_TRIMOVF;
2802 WRITE_REG(CRS->ICR, CRS_ICR_ERRC);
2876 #if defined(RCC_PLLSAI1_SUPPORT) 2891 HAL_StatusTypeDef status =
HAL_OK;
2895 assert_param(IS_RCC_PLLSAI1SOURCE(PllSai1->PLLSAI1Source));
2896 assert_param(IS_RCC_PLLSAI1M_VALUE(PllSai1->PLLSAI1M));
2897 assert_param(IS_RCC_PLLSAI1N_VALUE(PllSai1->PLLSAI1N));
2898 assert_param(IS_RCC_PLLSAI1CLOCKOUT_VALUE(PllSai1->PLLSAI1ClockOut));
2901 if(__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_NONE)
2904 if((__HAL_RCC_GET_PLL_OSCSOURCE() != PllSai1->PLLSAI1Source)
2906 (PllSai1->PLLSAI1Source == RCC_PLLSOURCE_NONE)
2907 #
if !defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT)
2909 (((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U) != PllSai1->PLLSAI1M)
2919 switch(PllSai1->PLLSAI1Source)
2921 case RCC_PLLSOURCE_MSI:
2922 if(HAL_IS_BIT_CLR(RCC->CR, RCC_CR_MSIRDY))
2927 case RCC_PLLSOURCE_HSI:
2928 if(HAL_IS_BIT_CLR(RCC->CR, RCC_CR_HSIRDY))
2933 case RCC_PLLSOURCE_HSE:
2934 if(HAL_IS_BIT_CLR(RCC->CR, RCC_CR_HSERDY))
2936 if(HAL_IS_BIT_CLR(RCC->CR, RCC_CR_HSEBYP))
2949 #if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) 2951 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, PllSai1->PLLSAI1Source);
2954 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, PllSai1->PLLSAI1Source | (PllSai1->PLLSAI1M - 1U) << RCC_PLLCFGR_PLLM_Pos);
2962 __HAL_RCC_PLLSAI1_DISABLE();
2968 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI1RDY) != 0U)
2970 if((
HAL_GetTick() - tickstart) > PLLSAI1_TIMEOUT_VALUE)
2972 status = HAL_TIMEOUT;
2979 if(Divider == DIVIDER_P_UPDATE)
2981 assert_param(IS_RCC_PLLSAI1P_VALUE(PllSai1->PLLSAI1P));
2982 #if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) 2985 #if defined(RCC_PLLSAI1P_DIV_2_31_SUPPORT) 2987 RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1PDIV | RCC_PLLSAI1CFGR_PLLSAI1M,
2988 (PllSai1->PLLSAI1N << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) |
2989 (PllSai1->PLLSAI1P << RCC_PLLSAI1CFGR_PLLSAI1PDIV_Pos) |
2990 ((PllSai1->PLLSAI1M - 1U) << RCC_PLLSAI1CFGR_PLLSAI1M_Pos));
2993 RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1P | RCC_PLLSAI1CFGR_PLLSAI1M,
2994 (PllSai1->PLLSAI1N << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) |
2995 ((PllSai1->PLLSAI1P >> 4U) << RCC_PLLSAI1CFGR_PLLSAI1P_Pos) |
2996 ((PllSai1->PLLSAI1M - 1U) << RCC_PLLSAI1CFGR_PLLSAI1M_Pos));
3001 #if defined(RCC_PLLSAI1P_DIV_2_31_SUPPORT) 3003 RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1PDIV,
3004 (PllSai1->PLLSAI1N << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) |
3005 (PllSai1->PLLSAI1P << RCC_PLLSAI1CFGR_PLLSAI1PDIV_Pos));
3008 RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1P,
3009 (PllSai1->PLLSAI1N << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) |
3010 ((PllSai1->PLLSAI1P >> 4U) << RCC_PLLSAI1CFGR_PLLSAI1P_Pos));
3015 else if(Divider == DIVIDER_Q_UPDATE)
3017 assert_param(IS_RCC_PLLSAI1Q_VALUE(PllSai1->PLLSAI1Q));
3018 #if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) 3021 RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1Q | RCC_PLLSAI1CFGR_PLLSAI1M,
3022 (PllSai1->PLLSAI1N << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) |
3023 (((PllSai1->PLLSAI1Q >> 1U) - 1U) << RCC_PLLSAI1CFGR_PLLSAI1Q_Pos) |
3024 ((PllSai1->PLLSAI1M - 1U) << RCC_PLLSAI1CFGR_PLLSAI1M_Pos));
3028 RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1Q,
3029 (PllSai1->PLLSAI1N << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) |
3030 (((PllSai1->PLLSAI1Q >> 1U) - 1U) << RCC_PLLSAI1CFGR_PLLSAI1Q_Pos));
3035 assert_param(IS_RCC_PLLSAI1R_VALUE(PllSai1->PLLSAI1R));
3036 #if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) 3039 RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1R | RCC_PLLSAI1CFGR_PLLSAI1M,
3040 (PllSai1->PLLSAI1N << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) |
3041 (((PllSai1->PLLSAI1R >> 1U) - 1U) << RCC_PLLSAI1CFGR_PLLSAI1R_Pos) |
3042 ((PllSai1->PLLSAI1M - 1U) << RCC_PLLSAI1CFGR_PLLSAI1M_Pos));
3046 RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1R,
3047 (PllSai1->PLLSAI1N << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) |
3048 (((PllSai1->PLLSAI1R >> 1U) - 1U) << RCC_PLLSAI1CFGR_PLLSAI1R_Pos));
3053 __HAL_RCC_PLLSAI1_ENABLE();
3059 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI1RDY) == 0U)
3061 if((
HAL_GetTick() - tickstart) > PLLSAI1_TIMEOUT_VALUE)
3063 status = HAL_TIMEOUT;
3071 __HAL_RCC_PLLSAI1CLKOUT_ENABLE(PllSai1->PLLSAI1ClockOut);
3081 #if defined(RCC_PLLSAI2_SUPPORT) 3096 HAL_StatusTypeDef status =
HAL_OK;
3106 if(__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_NONE)
3109 if((__HAL_RCC_GET_PLL_OSCSOURCE() != PllSai2->
PLLSAI2Source)
3112 #
if !defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT)
3114 (((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U) != PllSai2->
PLLSAI2M)
3126 case RCC_PLLSOURCE_MSI:
3127 if(HAL_IS_BIT_CLR(RCC->CR, RCC_CR_MSIRDY))
3132 case RCC_PLLSOURCE_HSI:
3133 if(HAL_IS_BIT_CLR(RCC->CR, RCC_CR_HSIRDY))
3138 case RCC_PLLSOURCE_HSE:
3139 if(HAL_IS_BIT_CLR(RCC->CR, RCC_CR_HSERDY))
3141 if(HAL_IS_BIT_CLR(RCC->CR, RCC_CR_HSEBYP))
3154 #if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) 3167 __HAL_RCC_PLLSAI2_DISABLE();
3173 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI2RDY) != 0U)
3175 if((
HAL_GetTick() - tickstart) > PLLSAI2_TIMEOUT_VALUE)
3177 status = HAL_TIMEOUT;
3184 if(Divider == DIVIDER_P_UPDATE)
3187 #if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) 3190 #if defined(RCC_PLLSAI2P_DIV_2_31_SUPPORT) 3192 RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2PDIV | RCC_PLLSAI2CFGR_PLLSAI2M,
3193 (PllSai2->
PLLSAI2N << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) |
3194 (PllSai2->
PLLSAI2P << RCC_PLLSAI2CFGR_PLLSAI2PDIV_Pos) |
3195 ((PllSai2->
PLLSAI2M - 1U) << RCC_PLLSAI2CFGR_PLLSAI2M_Pos));
3198 RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2P | RCC_PLLSAI2CFGR_PLLSAI2M,
3199 (PllSai2->
PLLSAI2N << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) |
3200 ((PllSai2->
PLLSAI2P >> 4U) << RCC_PLLSAI2CFGR_PLLSAI2P_Pos) |
3201 ((PllSai2->
PLLSAI2M - 1U) << RCC_PLLSAI2CFGR_PLLSAI2M_Pos));
3206 #if defined(RCC_PLLSAI2P_DIV_2_31_SUPPORT) 3208 RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2PDIV,
3209 (PllSai2->
PLLSAI2N << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) |
3210 (PllSai2->
PLLSAI2P << RCC_PLLSAI2CFGR_PLLSAI2PDIV_Pos));
3213 RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2P,
3214 (PllSai2->
PLLSAI2N << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) |
3215 ((PllSai2->
PLLSAI2P >> 4U) << RCC_PLLSAI2CFGR_PLLSAI2P_Pos));
3220 #if defined(RCC_PLLSAI2Q_DIV_SUPPORT) 3221 else if(Divider == DIVIDER_Q_UPDATE)
3224 #if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) 3227 RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2Q | RCC_PLLSAI2CFGR_PLLSAI2M,
3228 (PllSai2->
PLLSAI2N << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) |
3229 (((PllSai2->
PLLSAI2Q >> 1U) - 1U) << RCC_PLLSAI2CFGR_PLLSAI2Q_Pos) |
3230 ((PllSai2->
PLLSAI2M - 1U) << RCC_PLLSAI2CFGR_PLLSAI2M_Pos));
3234 RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2Q,
3235 (PllSai2->
PLLSAI2N << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) |
3236 (((PllSai2->
PLLSAI2Q >> 1U) - 1U) << RCC_PLLSAI2CFGR_PLLSAI2Q_Pos));
3243 #if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) 3246 RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2R | RCC_PLLSAI2CFGR_PLLSAI2M,
3247 (PllSai2->
PLLSAI2N << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) |
3248 (((PllSai2->
PLLSAI2R >> 1U) - 1U) << RCC_PLLSAI2CFGR_PLLSAI2R_Pos) |
3249 ((PllSai2->
PLLSAI2M - 1U) << RCC_PLLSAI2CFGR_PLLSAI2M_Pos));
3253 RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2R,
3254 (PllSai2->
PLLSAI2N << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) |
3255 (((PllSai2->
PLLSAI2R >> 1U) - 1U) << RCC_PLLSAI2CFGR_PLLSAI2R_Pos));
3260 __HAL_RCC_PLLSAI2_ENABLE();
3266 while(READ_BIT(RCC->CR, RCC_CR_PLLSAI2RDY) == 0U)
3268 if((
HAL_GetTick() - tickstart) > PLLSAI2_TIMEOUT_VALUE)
3270 status = HAL_TIMEOUT;
3292 uint32_t frequency = 0U;
3293 uint32_t srcclk = 0U;
3294 uint32_t pllvco, plln;
3295 #if defined(RCC_PLLP_SUPPORT) 3300 if(PeriphClk == RCC_PERIPHCLK_SAI1)
3302 srcclk = __HAL_RCC_GET_SAI1_SOURCE();
3303 if(srcclk == RCC_SAI1CLKSOURCE_PIN)
3305 frequency = EXTERNAL_SAI1_CLOCK_VALUE;
3312 if(PeriphClk == RCC_PERIPHCLK_SAI2)
3314 srcclk = __HAL_RCC_GET_SAI2_SOURCE();
3315 if(srcclk == RCC_SAI2CLKSOURCE_PIN)
3317 frequency = EXTERNAL_SAI2_CLOCK_VALUE;
3326 pllvco = InputFrequency;
3329 if((srcclk == RCC_SAI1CLKSOURCE_PLL) || (srcclk == RCC_SAI2CLKSOURCE_PLL))
3331 if(__HAL_RCC_GET_PLLCLKOUT_CONFIG(RCC_PLL_SAI3CLK) != 0U)
3334 pllvco = (pllvco / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
3336 plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos;
3337 #if defined(RCC_PLLP_DIV_2_31_SUPPORT) 3338 pllp = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPDIV) >> RCC_PLLCFGR_PLLPDIV_Pos;
3342 if(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP) != 0U)
3351 frequency = (pllvco * plln) / pllp;
3354 else if(srcclk == 0U)
3356 if(__HAL_RCC_GET_PLLSAI1CLKOUT_CONFIG(RCC_PLLSAI1_SAI1CLK) != 0U)
3358 #if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) 3361 pllvco = (pllvco / ((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1M) >> RCC_PLLSAI1CFGR_PLLSAI1M_Pos) + 1U));
3364 pllvco = (pllvco / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
3367 plln = READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N) >> RCC_PLLSAI1CFGR_PLLSAI1N_Pos;
3368 #if defined(RCC_PLLSAI1P_DIV_2_31_SUPPORT) 3369 pllp = READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1PDIV) >> RCC_PLLSAI1CFGR_PLLSAI1PDIV_Pos;
3373 if(READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1P) != 0U)
3382 frequency = (pllvco * plln) / pllp;
3385 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 3386 else if((srcclk == RCC_SAI1CLKSOURCE_HSI) || (srcclk == RCC_SAI2CLKSOURCE_HSI))
3388 if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
3390 frequency = HSI_VALUE;
3396 if(srcclk == RCC_SAI1CLKSOURCE_PLL)
3398 if(__HAL_RCC_GET_PLLCLKOUT_CONFIG(RCC_PLL_SAI2CLK) != 0U)
3401 pllvco = (pllvco / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
3403 plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos;
3404 #if defined(RCC_PLLP_DIV_2_31_SUPPORT) 3405 pllp = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPDIV) >> RCC_PLLCFGR_PLLPDIV_Pos;
3409 if(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP) != 0U)
3418 frequency = (pllvco * plln) / pllp;
3420 else if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
3423 frequency = HSI_VALUE;
3430 else if(srcclk == RCC_SAI1CLKSOURCE_PLLSAI1)
3432 if(__HAL_RCC_GET_PLLSAI1CLKOUT_CONFIG(RCC_PLLSAI1_SAI1CLK) != 0U)
3434 #if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) 3437 pllvco = (pllvco / ((READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1M) >> RCC_PLLSAI1CFGR_PLLSAI1M_Pos) + 1U));
3440 pllvco = (pllvco / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
3443 plln = READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N) >> RCC_PLLSAI1CFGR_PLLSAI1N_Pos;
3444 #if defined(RCC_PLLSAI1P_DIV_2_31_SUPPORT) 3445 pllp = READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1PDIV) >> RCC_PLLSAI1CFGR_PLLSAI1PDIV_Pos;
3449 if(READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1P) != 0U)
3458 frequency = (pllvco * plln) / pllp;
3460 else if(HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY))
3463 frequency = HSI_VALUE;
3472 #if defined(RCC_PLLSAI2_SUPPORT) 3474 else if((srcclk == RCC_SAI1CLKSOURCE_PLLSAI2) || (srcclk == RCC_SAI2CLKSOURCE_PLLSAI2))
3476 if(__HAL_RCC_GET_PLLSAI2CLKOUT_CONFIG(RCC_PLLSAI2_SAI2CLK) != 0U)
3478 #if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) 3481 pllvco = (pllvco / ((READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2M) >> RCC_PLLSAI2CFGR_PLLSAI2M_Pos) + 1U));
3484 pllvco = (pllvco / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U));
3487 plln = READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2N) >> RCC_PLLSAI2CFGR_PLLSAI2N_Pos;
3488 #if defined(RCC_PLLSAI2P_DIV_2_31_SUPPORT) 3489 pllp = READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2PDIV) >> RCC_PLLSAI2CFGR_PLLSAI2PDIV_Pos;
3493 if(READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2P) != 0U)
3502 frequency = (pllvco * plln) / pllp;
PLLSAI2 Clock structure definition.
void HAL_RCCEx_CRS_ExpectedSyncCallback(void)
RCCEx Clock Recovery System Expected SYNC interrupt callback.
uint32_t I2c2ClockSelection
uint32_t OspiClockSelection
void HAL_RCCEx_EnableLSCO(uint32_t LSCOSource)
Select the Low Speed clock source to output on LSCO pin (PA2).
HAL_StatusTypeDef HAL_RCCEx_DisablePLLSAI2(void)
Disable PLLISAI2.
uint32_t PeriphClockSelection
uint32_t Uart4ClockSelection
uint32_t FreqErrorCapture
uint32_t Sai2ClockSelection
uint32_t HSI48CalibrationValue
This file contains all the functions prototypes for the HAL module driver.
void HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void)
Generate the software synchronization event.
uint32_t AdcClockSelection
HAL_StatusTypeDef HAL_RCCEx_EnablePLLSAI1(RCC_PLLSAI1InitTypeDef *PLLSAI1Init)
Enable PLLSAI1.
__STATIC_INLINE void uint32_t PeriphClk
uint32_t I2c1ClockSelection
void HAL_RCCEx_CRS_SyncOkCallback(void)
RCCEx Clock Recovery System SYNCOK interrupt callback.
uint32_t I2c3ClockSelection
uint32_t HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout)
Wait for CRS Synchronization status.
RCC_PLLSAI1InitTypeDef PLLSAI1
HAL_StatusTypeDef HAL_RCCEx_EnablePLLSAI2(RCC_PLLSAI2InitTypeDef *PLLSAI2Init)
Enable PLLSAI2.
void HAL_PWR_DisableBkUpAccess(void)
Disable access to the backup domain (RTC registers, RTC backup data registers).
void HAL_RCCEx_CRS_IRQHandler(void)
Handle the Clock Recovery System interrupt request.
uint32_t I2c4ClockSelection
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
RCC_CRS Init structure definition.
uint32_t HAL_RCC_GetPCLK2Freq(void)
Return the PCLK2 frequency.
void HAL_RCCEx_LSECSS_IRQHandler(void)
Handle the RCC LSE Clock Security System interrupt request.
void HAL_RCCEx_DisableLSCO(void)
Disable the Low Speed clock output.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
uint32_t Swpmi1ClockSelection
uint32_t HSI48CalibrationValue
void HAL_RCCEx_CRS_ErrorCallback(uint32_t Error)
RCCEx Clock Recovery System Error interrupt callback.
uint32_t Lpuart1ClockSelection
RCC extended clocks structure definition.
void HAL_PWR_EnableBkUpAccess(void)
Enable access to the backup domain (RTC registers, RTC backup data registers).
uint32_t Usart1ClockSelection
void HAL_RCCEx_WakeUpStopCLKConfig(uint32_t WakeUpClk)
Configure the oscillator clock source for wakeup from Stop and CSS backup clock.
uint32_t Uart5ClockSelection
uint32_t Dfsdm1AudioClockSelection
void HAL_RCCEx_DisableLSECSS(void)
Disable the LSE Clock Security System.
uint32_t FreqErrorDirection
uint32_t Dfsdm1ClockSelection
static HAL_StatusTypeDef RCCEx_PLLSAI2_Config(RCC_PLLSAI2InitTypeDef *PllSai2, uint32_t Divider)
Configure the parameters N & P & optionally M of PLLSAI2 and enable PLLSAI2 output clock(s)...
HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
Initialize the RCC extended peripherals clocks according to the specified parameters in the RCC_Perip...
uint32_t Usart2ClockSelection
static HAL_StatusTypeDef RCCEx_PLLSAI1_Config(RCC_PLLSAI1InitTypeDef *PllSai1, uint32_t Divider)
Configure the parameters N & P & optionally M of PLLSAI1 and enable PLLSAI1 output clock(s)...
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
Initialize the GPIOx peripheral according to the specified parameters in the GPIO_Init.
void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
Get the RCC_ClkInitStruct according to the internal RCC configuration registers.
HAL_StatusTypeDef HAL_RCCEx_DisablePLLSAI1(void)
Disable PLLSAI1.
void HAL_RCCEx_DisableMSIPLLMode(void)
Disable the PLL-mode of the MSI.
uint32_t Lptim2ClockSelection
uint32_t Lptim1ClockSelection
void HAL_RCCEx_EnableLSECSS_IT(void)
Enable the LSE Clock Security System Interrupt & corresponding EXTI line.
void HAL_RCCEx_StandbyMSIRangeConfig(uint32_t MSIRange)
Configure the MSI range after standby mode.
uint32_t RTCClockSelection
uint32_t LtdcClockSelection
void HAL_RCCEx_EnableMSIPLLMode(void)
Enable the PLL-mode of the MSI.
void HAL_RCCEx_LSECSS_Callback(void)
RCCEx LSE Clock Security System interrupt callback.
ADC handle Structure definition.
uint32_t HAL_RCC_GetSysClockFreq(void)
Return the SYSCLK frequency.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
uint32_t Sdmmc1ClockSelection
static uint32_t RCCEx_GetSAIxPeriphCLKFreq(uint32_t PeriphClk, uint32_t InputFrequency)
uint32_t DsiClockSelection
uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk)
Return the peripheral clock frequency for peripherals with clock source from PLLSAIs.
void HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo)
Return synchronization info.
uint32_t UsbClockSelection
uint32_t HAL_RCC_GetPCLK1Freq(void)
Return the PCLK1 frequency.
RCC_PLLSAI2InitTypeDef PLLSAI2
void HAL_RCCEx_CRSConfig(RCC_CRSInitTypeDef *pInit)
Start automatic synchronization for polling mode.
void HAL_RCCEx_CRS_SyncWarnCallback(void)
RCCEx Clock Recovery System SYNCWARN interrupt callback.
uint32_t Usart3ClockSelection
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
uint32_t Sai1ClockSelection
void HAL_RCCEx_EnableLSECSS(void)
Enable the LSE Clock Security System.
uint32_t RngClockSelection