Martin Johnson / STM32F3-Discovery

Dependents:   Space_Invaders_Demo neopixels gpio_test_stm32f3_discovery gpio_test_systimer ... more

Embed: (wiki syntax)

« Back to documentation index

Internal and external clocks, PLL, CSS and MCO configuration functions

Internal and external clocks, PLL, CSS and MCO configuration functions
[RCC_Private_Functions]

Internal and external clocks, PLL, CSS and MCO configuration functions. More...

Functions

void RCC_DeInit (void)
 Resets the RCC clock configuration to the default reset state.
void RCC_HSEConfig (uint8_t RCC_HSE)
 Configures the External High Speed oscillator (HSE).
ErrorStatus RCC_WaitForHSEStartUp (void)
 Waits for HSE start-up.
void RCC_AdjustHSICalibrationValue (uint8_t HSICalibrationValue)
 Adjusts the Internal High Speed oscillator (HSI) calibration value.
void RCC_HSICmd (FunctionalState NewState)
 Enables or disables the Internal High Speed oscillator (HSI).
void RCC_LSEConfig (uint32_t RCC_LSE)
 Configures the External Low Speed oscillator (LSE).
void RCC_LSEDriveConfig (uint32_t RCC_LSEDrive)
 Configures the External Low Speed oscillator (LSE) drive capability.
void RCC_LSICmd (FunctionalState NewState)
 Enables or disables the Internal Low Speed oscillator (LSI).
void RCC_PLLConfig (uint32_t RCC_PLLSource, uint32_t RCC_PLLMul)
 Configures the PLL clock source and multiplication factor.
void RCC_PLLCmd (FunctionalState NewState)
 Enables or disables the PLL.
void RCC_PREDIV1Config (uint32_t RCC_PREDIV1_Div)
 Configures the PREDIV1 division factor.
void RCC_ClockSecuritySystemCmd (FunctionalState NewState)
 Enables or disables the Clock Security System.
void RCC_MCOConfig (uint8_t RCC_MCOSource)
 Selects the clock source to output on MCO pin (PA8).
void RCC_MCOConfig (uint8_t RCC_MCOSource, uint32_t RCC_MCOPrescaler)
 Selects the clock source to output on MCO pin (PA8) and the corresponding prescsaler.

Detailed Description

Internal and external clocks, PLL, CSS and MCO configuration functions.

 ===============================================================================
 ##### Internal-external clocks, PLL, CSS and MCO configuration functions #####
 ===============================================================================  
    [..] This section provides functions allowing to configure the internal/external 
         clocks, PLL, CSS and MCO.
         (#) HSI (high-speed internal), 8 MHz factory-trimmed RC used directly 
             or through the PLL as System clock source.
             The HSI clock can be used also to clock the USART and I2C peripherals.
         (#) LSI (low-speed internal), 40 KHz low consumption RC used as IWDG and/or RTC
             clock source.
         (#) HSE (high-speed external), 4 to 32 MHz crystal oscillator used directly or
             through the PLL as System clock source. Can be used also as RTC clock source.
         (#) LSE (low-speed external), 32 KHz oscillator used as RTC clock source.
             LSE can be used also to clock the USART peripherals.
         (#) PLL (clocked by HSI or HSE), for System clock.
         (#) CSS (Clock security system), once enabled and if a HSE clock failure occurs 
             (HSE used directly or through PLL as System clock source), the System clock
             is automatically switched to HSI and an interrupt is generated if enabled. 
             The interrupt is linked to the Cortex-M4 NMI (Non-Maskable Interrupt) 
             exception vector.   
         (#) MCO (microcontroller clock output), used to output SYSCLK, HSI, HSE, LSI, LSE,
             PLL clock on PA8 pin.


Function Documentation

void RCC_AdjustHSICalibrationValue ( uint8_t  HSICalibrationValue )

Adjusts the Internal High Speed oscillator (HSI) calibration value.

Note:
The calibration is used to compensate for the variations in voltage and temperature that influence the frequency of the internal HSI RC. Refer to the Application Note AN3300 for more details on how to calibrate the HSI.
Parameters:
HSICalibrationValue,:specifies the HSI calibration trimming value. This parameter must be a number between 0 and 0x1F.
Return values:
None

Definition at line 295 of file stm32f30x_rcc.c.

void RCC_ClockSecuritySystemCmd ( FunctionalState  NewState )

Enables or disables the Clock Security System.

Note:
If a failure is detected on the HSE oscillator clock, this oscillator is automatically disabled and an interrupt is generated to inform the software about the failure (Clock Security System Interrupt, CSSI), allowing the MCU to perform rescue operations. The CSSI is linked to the Cortex-M4 NMI (Non-Maskable Interrupt) exception vector.
Parameters:
NewState,:new state of the Clock Security System. This parameter can be: ENABLE or DISABLE.
Return values:
None

Definition at line 498 of file stm32f30x_rcc.c.

void RCC_DeInit ( void   )

Resets the RCC clock configuration to the default reset state.

Note:
The default reset state of the clock configuration is given below:
  • HSI ON and used as system clock source
  • HSE, PLL and PLLI2S OFF
  • AHB, APB1 and APB2 prescaler set to 1.
  • CSS and MCO OFF
  • All interrupts disabled
However, This function doesn't modify the configuration of the
  • Peripheral clocks
  • LSI, LSE and RTC clocks
Parameters:
None
Return values:
None

Definition at line 189 of file stm32f30x_rcc.c.

void RCC_HSEConfig ( uint8_t  RCC_HSE )

Configures the External High Speed oscillator (HSE).

Note:
After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application software should wait on HSERDY flag to be set indicating that HSE clock is stable and can be used to clock the PLL and/or system clock.
HSE state can not be changed if it is used directly or through the PLL as system clock. In this case, you have to select another source of the system clock then change the HSE state (ex. disable it).
The HSE is stopped by hardware when entering STOP and STANDBY modes.
This function resets the CSSON bit, so if the Clock security system(CSS) was previously enabled you have to enable it again after calling this function.
Parameters:
RCC_HSE,:specifies the new state of the HSE. This parameter can be one of the following values:

  • RCC_HSE_OFF: turn OFF the HSE oscillator, HSERDY flag goes low after 6 HSE oscillator clock cycles.
  • RCC_HSE_ON: turn ON the HSE oscillator
  • RCC_HSE_Bypass: HSE oscillator bypassed with external clock
Return values:
None

Definition at line 236 of file stm32f30x_rcc.c.

void RCC_HSICmd ( FunctionalState  NewState )

Enables or disables the Internal High Speed oscillator (HSI).

Note:
After enabling the HSI, the application software should wait on HSIRDY flag to be set indicating that HSI clock is stable and can be used to clock the PLL and/or system clock.
HSI can not be stopped if it is used directly or through the PLL as system clock. In this case, you have to select another source of the system clock then stop the HSI.
The HSI is stopped by hardware when entering STOP and STANDBY modes.
When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator clock cycles.
Parameters:
NewState,:new state of the HSI. This parameter can be: ENABLE or DISABLE.
Return values:
None

Definition at line 329 of file stm32f30x_rcc.c.

void RCC_LSEConfig ( uint32_t  RCC_LSE )

Configures the External Low Speed oscillator (LSE).

Note:
As the LSE is in the Backup domain and write access is denied to this domain after reset, you have to enable write access using PWR_BackupAccessCmd(ENABLE) function before to configure the LSE (to be done once after reset).
Care must be taken when using this function to configure LSE mode as it clears systematically the LSEON bit before any new configuration.
After enabling the LSE (RCC_LSE_ON or RCC_LSE_Bypass), the application software should wait on LSERDY flag to be set indicating that LSE clock is stable and can be used to clock the RTC.
Parameters:
RCC_LSE,:specifies the new state of the LSE. This parameter can be one of the following values:

  • RCC_LSE_OFF: turn OFF the LSE oscillator, LSERDY flag goes low after 6 LSE oscillator clock cycles.
  • RCC_LSE_ON: turn ON the LSE oscillator
  • RCC_LSE_Bypass: LSE oscillator bypassed with external clock
Return values:
None

Definition at line 356 of file stm32f30x_rcc.c.

void RCC_LSEDriveConfig ( uint32_t  RCC_LSEDrive )

Configures the External Low Speed oscillator (LSE) drive capability.

Parameters:
RCC_LSEDrive,:specifies the new state of the LSE drive capability. This parameter can be one of the following values:

  • RCC_LSEDrive_Low: LSE oscillator low drive capability.
  • RCC_LSEDrive_MediumLow: LSE oscillator medium low drive capability.
  • RCC_LSEDrive_MediumHigh: LSE oscillator medium high drive capability.
  • RCC_LSEDrive_High: LSE oscillator high drive capability.
Return values:
None

Definition at line 382 of file stm32f30x_rcc.c.

void RCC_LSICmd ( FunctionalState  NewState )

Enables or disables the Internal Low Speed oscillator (LSI).

Note:
After enabling the LSI, the application software should wait on LSIRDY flag to be set indicating that LSI clock is stable and can be used to clock the IWDG and/or the RTC.
LSI can not be disabled if the IWDG is running.
When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator clock cycles.
Parameters:
NewState,:new state of the LSI. This parameter can be: ENABLE or DISABLE.
Return values:
None

Definition at line 406 of file stm32f30x_rcc.c.

void RCC_MCOConfig ( uint8_t  RCC_MCOSource )

Selects the clock source to output on MCO pin (PA8).

Note:
PA8 should be configured in alternate function mode.
Parameters:
RCC_MCOSource,:specifies the clock source to output. This parameter can be one of the following values:

  • RCC_MCOSource_NoClock: No clock selected.
  • RCC_MCOSource_LSI: LSI oscillator clock selected.
  • RCC_MCOSource_LSE: LSE oscillator clock selected.
  • RCC_MCOSource_SYSCLK: System clock selected.
  • RCC_MCOSource_HSI: HSI oscillator clock selected.
  • RCC_MCOSource_HSE: HSE oscillator clock selected.
  • RCC_MCOSource_PLLCLK_Div2: PLL clock divided by 2 selected.
Return values:
None

Definition at line 521 of file stm32f30x_rcc.c.

void RCC_MCOConfig ( uint8_t  RCC_MCOSource,
uint32_t  RCC_MCOPrescaler 
)

Selects the clock source to output on MCO pin (PA8) and the corresponding prescsaler.

Note:
PA8 should be configured in alternate function mode.
Parameters:
RCC_MCOSource,:specifies the clock source to output. This parameter can be one of the following values:

  • RCC_MCOSource_NoClock: No clock selected.
  • RCC_MCOSource_LSI: LSI oscillator clock selected.
  • RCC_MCOSource_LSE: LSE oscillator clock selected.
  • RCC_MCOSource_SYSCLK: System clock selected.
  • RCC_MCOSource_HSI: HSI oscillator clock selected.
  • RCC_MCOSource_HSE: HSE oscillator clock selected.
  • RCC_MCOSource_PLLCLK_Div2: PLL clock divided by 2 selected.
  • RCC_MCOSource_PLLCLK: PLL clock selected.
RCC_MCOPrescaler,:specifies the prescaler on MCO pin. This parameter can be one of the following values:

  • RCC_MCOPrescaler_1: MCO clock is divided by 1.
  • RCC_MCOPrescaler_2: MCO clock is divided by 2.
  • RCC_MCOPrescaler_4: MCO clock is divided by 4.
  • RCC_MCOPrescaler_8: MCO clock is divided by 8.
  • RCC_MCOPrescaler_16: MCO clock is divided by 16.
  • RCC_MCOPrescaler_32: MCO clock is divided by 32.
  • RCC_MCOPrescaler_64: MCO clock is divided by 64.
  • RCC_MCOPrescaler_128: MCO clock is divided by 128.
Return values:
None

Definition at line 565 of file stm32f30x_rcc.c.

void RCC_PLLCmd ( FunctionalState  NewState )

Enables or disables the PLL.

Note:
After enabling the PLL, the application software should wait on PLLRDY flag to be set indicating that PLL clock is stable and can be used as system clock source.
The PLL can not be disabled if it is used as system clock source
The PLL is disabled by hardware when entering STOP and STANDBY modes.
Parameters:
NewState,:new state of the PLL. This parameter can be: ENABLE or DISABLE.
Return values:
None

Definition at line 454 of file stm32f30x_rcc.c.

void RCC_PLLConfig ( uint32_t  RCC_PLLSource,
uint32_t  RCC_PLLMul 
)

Configures the PLL clock source and multiplication factor.

Note:
This function must be used only when the PLL is disabled.
The minimum input clock frequency for PLL is 2 MHz (when using HSE as PLL source).
Parameters:
RCC_PLLSource,:specifies the PLL entry clock source. This parameter can be one of the following values:

  • RCC_PLLSource_HSI: HSI oscillator clockselected as PLL clock entry
  • RCC_PLLSource_HSI_Div2: HSI oscillator clock divided by 2 selected as PLL clock entry
  • RCC_PLLSource_PREDIV1: PREDIV1 clock selected as PLL clock source
RCC_PLLMul,:specifies the PLL multiplication factor, which drive the PLLVCO clock This parameter can be RCC_PLLMul_x where x:[2,16]
Return values:
None

Definition at line 430 of file stm32f30x_rcc.c.

void RCC_PREDIV1Config ( uint32_t  RCC_PREDIV1_Div )

Configures the PREDIV1 division factor.

Note:
This function must be used only when the PLL is disabled.
Parameters:
RCC_PREDIV1_Div,:specifies the PREDIV1 clock division factor. This parameter can be RCC_PREDIV1_Divx where x:[1,16]
Return values:
None

Definition at line 469 of file stm32f30x_rcc.c.

ErrorStatus RCC_WaitForHSEStartUp ( void   )

Waits for HSE start-up.

Note:
This function waits on HSERDY flag to be set and return SUCCESS if this flag is set, otherwise returns ERROR if the timeout is reached and this flag is not set. The timeout value is defined by the constant HSE_STARTUP_TIMEOUT in stm32f30x.h file. You can tailor it depending on the HSE crystal used in your application.
Parameters:
None
Return values:
AnErrorStatus enumeration value:

  • SUCCESS: HSE oscillator is stable and ready to use
  • ERROR: HSE oscillator not yet ready

Definition at line 261 of file stm32f30x_rcc.c.