LL RCC Macros

Common Write and read registers Macros

group RCC_LL_EM_WRITE_READ

Defines

LL_RCC_WRITE_REG ( reg , value ) STM32_WRITE_REG(RCC->reg, (value))

Write a value in RCC register.

Parameters :
  • reg – Register to be written

  • value – Value to be written in the register

LL_RCC_READ_REG ( reg ) STM32_READ_REG(RCC->reg)

Read a value in RCC register.

Parameters :
  • reg – Register to be read

Return values :

Register – value

Calculate frequencies

group RCC_LL_EM_CALC_FREQ

Defines

LL_RCC_CALC_PLL1CLK_FREQ ( input_freq , pll1m , pll1n , pll1r ) ((((input_freq) /(pll1m)) * (pll1n)) / (pll1r))

Helper macro to calculate the PLL1CLK frequency on system domain.

Note

ex: LL_RCC_CALC_PLL1CLK_FREQ (HSE_VALUE,LL_RCC_PLL1_GetDivider (), LL_RCC_PLL1_GetN (), LL_RCC_PLL1_GetR ()).

Parameters :
  • input_freq – PLL1 Input frequency (based on MSI/HSE/HSI)

  • pll1m – parameter can be a value between 1 and 16

  • pll1n – parameter can be a value between 4 and 512

  • pll1r – parameter can be a value between 1 and 128 (Only division by 1 and even division are allowed)

Return values :

PLL1 – clock frequency (in Hz)

LL_RCC_CALC_PLL1CLK_SAI_FREQ ( input_freq , pll1m , pll1n , pll1p ) ((((input_freq) / (pll1m)) * (pll1n)) / (pll1p))

Helper macro to calculate the PLL1CLK frequency used on SAI domain.

Note

ex: LL_RCC_CALC_PLL1CLK_SAI_FREQ (HSE_VALUE,LL_RCC_PLL1_GetDivider (), LL_RCC_PLL1_GetN (), LL_RCC_PLL1_GetP ()).

Parameters :
  • input_freq – PLL1 Input frequency (based on MSI/HSE/HSI)

  • pll1m – parameter can be a value between 1 and 16

  • pll1n – parameter can be a value between 4 and 512

  • pll1p – parameter can be a value between 1 and 128

Return values :

PLL1 – clock frequency (in Hz)

LL_RCC_CALC_PLL1CLK_48M_FREQ ( input_freq , pll1m , pll1n , pll1q ) ((((input_freq) / (pll1m)) * (pll1n)) / (pll1q))

Helper macro to calculate the PLL1CLK frequency used on 48M domain.

Note

ex: LL_RCC_CALC_PLL1CLK_48M_FREQ (HSE_VALUE,LL_RCC_PLL1_GetDivider (), LL_RCC_PLL1_GetN (), LL_RCC_PLL1_GetQ ()).

Parameters :
  • input_freq – PLL1 Input frequency (based on MSI/HSE/HSI)

  • pll1m – parameter can be a value between 1 and 16

  • pll1n – parameter can be a value between 4 and 512

  • pll1q – parameter can be a value between 1 and 128

Return values :

PLL – clock frequency (in Hz)

LL_RCC_CALC_PLL2CLK_SAI_FREQ ( input_freq , pll2m , pll2n , pll2p ) ((((input_freq) / (pll2m)) * (pll2n)) / (pll2p))

Helper macro to calculate the PLL2 frequency used for SAI domain.

Note

ex: LL_RCC_CALC_PLL2CLK_SAI_FREQ (HSE_ALUE,LL_RCC_PLL2_GetDivider (), LL_RCC_PLL2_GetN (), LL_RCC_PLL2_GetP ()).

Parameters :
  • input_freq – PLL Input frequency (based on MSI/HSE/HSI)

  • pll2m – parameter can be a value between 1 and 16

  • pll2n – parameter can be a value between 4 and 512

  • pll2p – parameter can be a value between 1 and 128

Return values :

PLL2 – clock frequency (in Hz)

LL_RCC_CALC_PLL2CLK_48M_FREQ ( input_freq , pll2m , pll2n , pll2q ) ((((input_freq) / (pll2m)) * (pll2n)) / (pll2q))

Helper macro to calculate the PLL2 frequency used on 48M domain.

Note

ex: LL_RCC_CALC_PLL2CLK_48M_FREQ (HSE_VALUE,LL_RCC_PLL2_GetDivider (), LL_RCC_PLL2_GetN (), LL_RCC_PLL2_GetQ ()).

Parameters :
  • input_freq – PLL Input frequency (based on MSI/HSE/HSI)

  • pll2m – parameter can be a value between 1 and 16

  • pll2n – parameter can be a value between 4 and 512

  • pll2q – parameter can be a value between 1 and 128

Return values :

PLL2 – clock frequency (in Hz)

LL_RCC_CALC_PLL2CLK_ADC_FREQ ( input_freq , pll2m , pll2n , pll2r ) ((((input_freq) / (pll2m)) * (pll2n)) / (pll2r))

Helper macro to calculate the PLL2 frequency used on ADC domain.

Note

ex: LL_RCC_CALC_PLL2CLK_ADC_FREQ (HSE_VALUE,LL_RCC_PLL2_GetDivider (), LL_RCC_PLL2_GetN (), LL_RCC_PLL2_GetR ()).

Parameters :
  • input_freq – PLL2 Input frequency (based on MSI/HSE/HSI)

  • pll2m – parameter can be a value between 1 and 16

  • pll2n – parameter can be a value between 4 and 512

  • pll2r – parameter can be a value between 1 and 128

Return values :

PLL2 – clock frequency (in Hz)

LL_RCC_CALC_PLL3CLK_SAI_FREQ ( input_freq , pll3m , pll3n , pll3p ) ((((input_freq) / (pll3m)) * (pll3n)) / (pll3p))

Helper macro to calculate the PLL3 frequency used for SAI domain.

Note

ex: LL_RCC_CALC_PLL3CLK_SAI_FREQ (HSE_VALUE,LL_RCC_PLL3_GetDivider (), LL_RCC_PLL3_GetN (), LL_RCC_PLL3_GetP ()).

Parameters :
  • input_freq – PLL3 Input frequency (based on MSI/HSE/HSI)

  • pll3m – parameter can be a value between 1 and 16

  • pll3n – parameter can be a value between 4 and 512

  • pll3p – parameter can be a value between 1 and 128

Return values :

PLL3 – clock frequency (in Hz)

LL_RCC_CALC_PLL3CLK_48M_FREQ ( input_freq , pll3m , pll3n , pll3q ) ((((input_freq) / (pll3m)) * (pll3n)) / (pll3q))

Helper macro to calculate the PLL2 frequency used on 48M domain.

Note

ex: LL_RCC_CALC_PLL3CLK_48M_FREQ (HSE_VALUE,LL_RCC_PLL3_GetDivider (), LL_RCC_PLL3_GetN (), LL_RCC_PLL3_GetQ ()).

Parameters :
  • input_freq – PLL3 Input frequency (based on MSI/HSE/HSI)

  • pll3m – parameter can be a value between 1 and 16

  • pll3n – parameter can be a value between 4 and 512

  • pll3q – parameter can be a value between 1 and 128

Return values :

PLL3 – clock frequency (in Hz)

LL_RCC_CALC_PLL3CLK_HSPI_LTDC_FREQ ( input_freq , pll3m , pll3n , pll3r )

((((input_freq) \

/(pll3m)) * (pll3n)) / (pll3r))


Helper macro to calculate the PLL3 frequency used on HSPI domain.

Note

ex: LL_RCC_CALC_PLL3CLK_HSPI_LTDC_FREQ (HSE_VALUE,LL_RCC_PLL3_GetDivider (), LL_RCC_PLL3_GetN (), LL_RCC_PLL3_GetQ ()).

Parameters :
  • input_freq – PLL3 Input frequency (based on MSI/HSE/HSI)

  • pll3m – parameter can be a value between 1 and 16

  • pll3n – parameter can be a value between 4 and 512

  • pll3r – parameter can be a value between 1 and 128

Return values :

PLL3 – clock frequency (in Hz)

LL_RCC_CALC_HCLK_FREQ ( sysclk_freq , ahb_prescaler )

((sysclk_freq) >> \

AHBPrescTable[((ahb_prescaler)& RCC_CFGR2_HPRE) \

>> RCC_CFGR2_HPRE_Pos])


Helper macro to calculate the HCLK frequency.

Parameters :
Return values :

HCLK – clock frequency (in Hz)

LL_RCC_CALC_PCLK1_FREQ ( hclk_freq , apb1_prescaler )

((hclk_freq) >> \

(APBPrescTable[((apb1_prescaler)& \

RCC_CFGR2_PPRE1) >> RCC_CFGR2_PPRE1_Pos]))


Helper macro to calculate the PCLK1 frequency (ABP1)

Parameters :
Return values :

PCLK1 – clock frequency (in Hz)

LL_RCC_CALC_PCLK2_FREQ ( hclk_freq , apb2_prescaler )

((hclk_freq) >>\

APBPrescTable[(apb2_prescaler) >> \

RCC_CFGR2_PPRE2_Pos])


Helper macro to calculate the PCLK2 frequency (ABP2)

Parameters :
Return values :

PCLK2 – clock frequency (in Hz)

LL_RCC_CALC_PCLK3_FREQ ( hclk_freq , apb3_prescaler )

((hclk_freq) >> \

APBPrescTable[(apb3_prescaler) >> \

RCC_CFGR3_PPRE3_Pos])


Helper macro to calculate the PCLK3 frequency (ABP3)

Parameters :
Return values :

PCLK3 – clock frequency (in Hz)

LL_RCC_CALC_MSIS_FREQ ( msis_sel , msis_range ) (((msis_sel) == LL_RCC_MSIRANGESEL_RUN

) ? \

(MSIRangeTable[((msis_range) >> 28U) & 0x0FU]) : \

(MSIRangeTable[((msis_range) >> 12U) & 0x0FU]))


Helper macro to calculate the MSIS frequency (in Hz)

Note

msis_sel can be retrieved thanks to function LL_RCC_MSI_IsEnabledRangeSelect().

Note

if msis_sel is equal to LL_RCC_MSIRANGESEL_STANDBY, msis_range can be retrieved by LL_RCC_MSIS_GetRangeAfterStandby() else by LL_RCC_MSIS_GetRange() ex: LL_RCC_CALC_MSIS_FREQ(LL_RCC_MSI_IsEnabledRangeSelect(), (LL_RCC_MSI_IsEnabledRangeSelect()? LL_RCC_MSIS_GetRange(): LL_RCC_MSIS_GetRangeAfterStandby())).

Parameters :
Return values :

MSI – clock frequency (in Hz)

LL_RCC_CALC_MSIK_FREQ ( msik_sel , msik_range ) (((msik_sel) == LL_RCC_MSIRANGESEL_RUN

) ? \

(MSIRangeTable[((msik_range) >> 24U) & 0x0FU]) : \

(MSIRangeTable[((msik_range) >> 8U) & 0x0FU]))


Helper macro to calculate the MSIK frequency (in Hz)

Note

msik_sel can be retrieved thanks to function LL_RCC_MSIK_IsEnabledRangeSelect().

Note

if msik_sel is equal to LL_RCC_MSIKRANGESEL_STANDBY, __MSIKRANGE__can be retrieved by LL_RCC_MSIK_GetRangeAfterStandby() else by LL_RCC_MSIK_GetRange() ex: LL_RCC_CALC_MSIK_FREQ(LL_RCC_MSIK_IsEnabledRangeSelect(), (LL_RCC_MSIK_IsEnabledRangeSelect()? LL_RCC_MSIK_GetRange(): LL_RCC_MSIK_GetRangeAfterStandby())).

Parameters :
Return values :

MSIK – clock frequency (in Hz)