STM32G474xx HAL用户手册
函数
初始化和反初始化函数
RCC导出函数

初始化和配置函数。 更多...

函数

HAL_StatusTypeDef HAL_RCC_DeInit (void)
 将RCC时钟配置复位到默认复位状态。
HAL_StatusTypeDef HAL_RCC_OscConfig (const RCC_OscInitTypeDef *RCC_OscInitStruct)
 根据RCC_OscInitTypeDef中指定的参数初始化RCC振荡器。
HAL_StatusTypeDef HAL_RCC_ClockConfig (const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
 根据RCC_ClkInitStruct中指定的参数初始化CPU、AHB和APB总线时钟。

详细描述

初始化和配置函数。

 ===============================================================================
           ##### Initialization and de-initialization functions #####
 ===============================================================================
    [..]
      This section provides functions allowing to configure the internal and external oscillators
      (HSE, HSI, LSE, LSI, PLL, CSS and MCO) and the System buses clocks (SYSCLK, AHB, APB1
       and APB2).

    [..] Internal/external clock and PLL configuration
         (+) HSI (high-speed internal): 16 MHz factory-trimmed RC used directly or through
             the PLL as System clock source.

         (+) LSI (low-speed internal): 32 KHz low consumption RC used as IWDG and/or RTC
             clock source.

         (+) HSE (high-speed external): 4 to 48 MHz crystal oscillator used directly or
             through the PLL as System clock source. Can be used also optionally as RTC clock source.

         (+) LSE (low-speed external): 32.768 KHz oscillator used optionally as RTC clock source.

         (+) PLL (clocked by HSI, HSE) providing up to three independent output clocks:
           (++) The first output is used to generate the high speed system clock (up to 170 MHz).
           (++) The second output is used to generate the clock for the USB (48 MHz),
                the QSPI (<= 48 MHz), the FDCAN, the SAI and the I2S.
           (++) The third output is used to generate a clock for ADC

         (+) CSS (Clock security system): once enabled, 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 LSI, HSI, LSE, HSE,
             main PLL clock, system clock or RC48 clock (through a configurable prescaler) on PA8 pin.

    [..] System, AHB and APB buses clocks configuration
         (+) Several clock sources can be used to drive the System clock (SYSCLK): HSI,
             HSE and main PLL.
             The AHB clock (HCLK) is derived from System clock through configurable
             prescaler and used to clock the CPU, memory and peripherals mapped
             on AHB bus (DMA, GPIO...). APB1 (PCLK1) and APB2 (PCLK2) clocks are derived
             from AHB clock through configurable prescalers and used to clock
             the peripherals mapped on these buses. You can use
             "HAL_RCC_GetSysClockFreq()" function to retrieve the frequencies of these clocks.

         -@- All the peripheral clocks are derived from the System clock (SYSCLK) except:

           (+@) RTC: the RTC clock can be derived either from the LSI, LSE or HSE clock
                divided by 2 to 31.
                You have to use __HAL_RCC_RTC_ENABLE() and HAL_RCCEx_PeriphCLKConfig() function
                to configure this clock.
           (+@) USB FS and RNG: USB FS requires a frequency equal to 48 MHz
                to work correctly, while the RNG peripheral requires a frequency
                equal or lower than to 48 MHz. This clock is derived of the main PLL
                through PLLQ divider. You have to enable the peripheral clock and use
                HAL_RCCEx_PeriphCLKConfig() function to configure this clock.
           (+@) IWDG clock which is always the LSI clock.


         (+) The maximum frequency of the SYSCLK, HCLK, PCLK1 and PCLK2 is 170 MHz.
             The clock source frequency should be adapted depending on the device voltage range
             as listed in the Reference Manual "Clock source frequency versus voltage scaling" chapter.

  

表1. STM32G4xx器件HCLK时钟频率 +----------------------------------------------------------------------------+ | 等待周期 | HCLK时钟频率 (MHz) | | |----------------------------------------------------------| | | 电压范围1 | 电压范围1 | 电压范围2 | | | 升压模式 1.28 V | 正常模式 1.2 V | 1.0 V | |-----------------|-------------------|-------------------|------------------| |0WS(1 CPU周期)| HCLK <= 34 | HCLK <= 30 | HCLK <= 13 | |-----------------|-------------------|-------------------|------------------| |1WS(2 CPU周期)| HCLK <= 68 | HCLK <= 60 | HCLK <= 26 | |-----------------|-------------------|-------------------|------------------| |2WS(3 CPU周期)| HCLK <= 102 | HCLK <= 90 | - | |-----------------|-------------------|-------------------|------------------| |3WS(4 CPU周期)| HCLK <= 136 | HCLK <= 120 | - | |-----------------|-------------------|-------------------|------------------| |4WS(5 CPU周期)| HCLK <= 170 | HCLK <= 150 | - | +----------------------------------------------------------------------------+


函数文档

HAL_StatusTypeDef HAL_RCC_ClockConfig ( const RCC_ClkInitTypeDef RCC_ClkInitStruct,
uint32_t  FLatency 
)

根据RCC_ClkInitStruct中指定的参数初始化CPU、AHB和APB总线时钟。

参数:
RCC_ClkInitStruct指向RCC_OscInitTypeDef结构体的指针,该结构体包含RCC外设的配置信息。
FLatencyFLASH等待周期。该参数可以是以下值之一:
  • FLASH_LATENCY_0 FLASH 0个等待周期
  • FLASH_LATENCY_1 FLASH 1个等待周期
  • FLASH_LATENCY_2 FLASH 2个等待周期
  • FLASH_LATENCY_3 FLASH 3个等待周期
  • FLASH_LATENCY_4 FLASH 4个等待周期
  • FLASH_LATENCY_5 FLASH 5个等待周期
  • FLASH_LATENCY_6 FLASH 6个等待周期
  • FLASH_LATENCY_7 FLASH 7个等待周期
  • FLASH_LATENCY_8 FLASH 8个等待周期
  • FLASH_LATENCY_9 FLASH 9个等待周期
  • FLASH_LATENCY_10 FLASH 10个等待周期
  • FLASH_LATENCY_11 FLASH 11个等待周期
  • FLASH_LATENCY_12 FLASH 12个等待周期
  • FLASH_LATENCY_13 FLASH 13个等待周期
  • FLASH_LATENCY_14 FLASH 14个等待周期
  • FLASH_LATENCY_15 FLASH 15个等待周期
注意:
SystemCoreClock CMSIS变量用于存储系统时钟频率,并由该函数内部调用的HAL_RCC_GetHCLKFreq()函数更新。
复位后、从STANDBY模式唤醒后,默认使用HSI作为系统时钟源。从复位重启后,HSI频率设置为其默认值16 MHz。
从STOP模式唤醒后,或者当直接或间接使用HSE作为系统时钟发生故障时(如果时钟安全系统CSS已启用),可以选择HSI作为系统时钟源。
从一个时钟源切换到另一个时钟源仅在目标时钟源准备就绪(启动延迟后时钟稳定或PLL锁定)时发生。如果选择了尚未就绪的时钟源,则切换将在时钟源准备就绪时进行。
您可以使用HAL_RCC_GetClockConfig()函数了解当前用作系统时钟源的时钟。
根据器件电压范围,软件必须正确设置HPRE[3:0]位,以确保HCLK不超过允许的最大频率(更多详情请参阅上文“初始化/反初始化函数”部分)。
返回值:

定义位于文件stm32g4xx_hal_rcc.c的第766行。

引用了__HAL_FLASH_GET_LATENCY__HAL_FLASH_SET_LATENCY__HAL_RCC_GET_SYSCLK_SOURCERCC_ClkInitTypeDef::AHBCLKDividerRCC_ClkInitTypeDef::APB1CLKDividerRCC_ClkInitTypeDef::APB2CLKDividerassert_paramCLOCKSWITCH_TIMEOUT_VALUERCC_ClkInitTypeDef::ClockTypeHAL_GetTick()HAL_InitTick()HAL_RCC_GetSysClockFreq()IS_FLASH_LATENCYIS_RCC_CLOCKTYPEIS_RCC_HCLKIS_RCC_PCLKIS_RCC_SYSCLKSOURCERCC_CLOCKTYPE_HCLKRCC_CLOCKTYPE_PCLK1RCC_CLOCKTYPE_PCLK2RCC_CLOCKTYPE_SYSCLKRCC_GetSysClockFreqFromPLLSource()RCC_HCLK_DIV16RCC_SYSCLK_DIV1RCC_SYSCLK_DIV2RCC_SYSCLKSOURCE_HSERCC_SYSCLKSOURCE_PLLCLKRCC_ClkInitTypeDef::SYSCLKSourceuwTickPrio

HAL_StatusTypeDef HAL_RCC_DeInit ( void  )

将RCC时钟配置复位到默认复位状态。

注意:
时钟配置的默认复位状态如下:
  • HSI开启并用作系统时钟源
  • HSE、PLL关闭
  • AHB、APB1和APB2预分频器设置为1。
  • CSS、MCO1关闭
  • 所有中断禁用
  • 所有中断和复位标志已清除
此函数不修改以下项的配置:
  • 外设时钟
  • LSI、LSE和RTC时钟
返回值:
HAL状态

定义位于文件stm32g4xx_hal_rcc.c的第219行。

引用了CLOCKSWITCH_TIMEOUT_VALUEHAL_GetTick()HAL_InitTick()HSI_TIMEOUT_VALUEHSI_VALUEPLL_TIMEOUT_VALUERCC_HSICALIBRATION_DEFAULTuwTickPrio

HAL_StatusTypeDef HAL_RCC_OscConfig ( const RCC_OscInitTypeDef RCC_OscInitStruct)

根据RCC_OscInitTypeDef中指定的参数初始化RCC振荡器。

参数:
RCC_OscInitStruct指向RCC_OscInitTypeDef结构体的指针,该结构体包含RCC振荡器的配置信息。
注意:
当PLL用作系统时钟时,不会禁用PLL。
此宏不支持LSE旁路到LSE开启以及LSE开启到LSE旁路的转换。用户应先请求转换到LSE关闭,然后再请求LSE开启或LSE旁路。
此宏不支持HSE旁路到HSE开启以及HSE开启到HSE旁路的转换。用户应先请求转换到HSE关闭,然后再请求HSE开启或HSE旁路。
返回值:
HAL状态

定义位于文件stm32g4xx_hal_rcc.c的第312行。

引用了__HAL_RCC_GET_PLL_OSCSOURCE__HAL_RCC_GET_SYSCLK_SOURCE__HAL_RCC_HSE_CONFIG__HAL_RCC_HSI48_DISABLE__HAL_RCC_HSI48_ENABLE__HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST__HAL_RCC_HSI_DISABLE__HAL_RCC_HSI_ENABLE__HAL_RCC_LSE_CONFIG__HAL_RCC_LSI_DISABLE__HAL_RCC_LSI_ENABLE__HAL_RCC_PLL_CONFIG__HAL_RCC_PLL_DISABLE__HAL_RCC_PLL_ENABLE__HAL_RCC_PLLCLKOUT_ENABLE__HAL_RCC_PWR_CLK_DISABLE__HAL_RCC_PWR_CLK_ENABLE__HAL_RCC_PWR_IS_CLK_DISABLEDassert_paramHAL_GetTick()HAL_InitTick()HSE_TIMEOUT_VALUE