5.22 RCC 使用说明
本章说明 N32H49x 标准外设库中 RCC 驱动的文件组成与 77 个公开函数,以及 RCC_ClockConfig 示例。复位与时钟控制单元负责振荡器起振、PLL 倍频、系统与总线时钟分频、各外设时钟源选择与门控;各类时钟源的频率范围与使能顺序、总线时钟上限等约束请配合用户手册的“复位与时钟控制(RCC)”章节阅读。
5.22.1 相关文件
| 相对路径 | 作用 |
|---|---|
firmware/n32h49x_std_periph_driver/inc/n32h49x_rcc.h |
定义时钟源、分频、预分频与标志位等取值,声明 77 个公开函数 |
firmware/n32h49x_std_periph_driver/src/n32h49x_rcc.c |
实现上述 77 个函数:振荡器与 PLL 配置、系统与总线分频、外设时钟源选择与门控、标志与稳定等待 |
projects/n32h49x_EVAL/examples/RCC/ |
RCC 示例根目录,含 RCC_ClockConfig 示例 |
projects/n32h49x_EVAL/examples/RCC/RCC_ClockConfig/ |
该示例的工程目录组成:MDK-ARM/、EWARM/、inc/、src/、readme.txt |
projects/n32h49x_EVAL/bsp/ |
该示例引用的公共板级文件:串口日志与延时函数 |
5.22.2 API 参考
以下 77 个公开函数按 n32h49x_rcc.h 的声明顺序分为 8 组;每个条目给出功能摘要与 n32h49x_rcc.c 中该函数正上方的注释原文。
基础与系统时钟
RCC_DeInit、RCC_ConfigSysclk、RCC_GetSysclkSrc、RCC_ConfigHclk、RCC_ConfigPclk1、RCC_ConfigPclk2、RCC_GetClocksFreqValue
HSE 与 HSI
RCC_ConfigHse、RCC_EnableHSEClockSecuritySystem、RCC_EnableHSECSSChk、RCC_SetHSECSSPhaseOffsetLimit、RCC_SetHSECSSFrequencyHighLimit、RCC_SetHSECSSFrequencyLowLimit、RCC_SetHsiCalibValue、RCC_EnableHsi、RCC_EnableHSIClockSecuritySystem
PLL 与 EXTPLL、中断与标志
RCC_ConfigPll、RCC_EnablePll、RCC_ConfigEXTPll、RCC_EnableEXTPll、RCC_ConfigInt、RCC_ClrIntPendingBit、RCC_GetIntStatus、RCC_GetHSECSSStatus
定时器与串行时钟
RCC_ConfigATimClk、RCC_ConfigGTimClk、RCC_ConfigI2S3Clk、RCC_ConfigI2S2Clk、RCC_ConfigRngcClk、RCC_ConfigTrng1mClk、RCC_EnableTrng1mClk、RCC_ConfigTraceClk
USB、CAN、ADC 与 SDRAM 等时钟
RCC_EnableBORReset、RCC_ConfigFDCANPllClk、RCC_ConfigFDCANClksrc、RCC_ConfigUSBPLLPresClk、RCC_ConfigUSBFSClk、RCC_ConfigUSBHSClk、RCC_ConfigUSBHSBandwidth、RCC_ConfigUSBHSFrequency、RCC_ConfigAdc1mClk、RCC_ConfigAdcPllClk、RCC_ConfigAdcHclk、RCC_ConfigSDRAMClk、RCC_ConfigDSMUFilterClk、RCC_ConfigPeriphClk
低速时钟与备份域
RCC_EnableLsi、RCC_ConfigLse、RCC_EnableLSEClockSecuritySystem、RCC_ConfigRtcClk、RCC_EnableRtcClk、RCC_ConfigLPTIM1Clk、RCC_ConfigLPTIM2Clk、RCC_EnableLPTIMPeriphClk、RCC_EnableLPTIMPeriphReset、RCC_EnableBackupReset
外设时钟门控与复位
RCC_EnableFDCANOffRequest、RCC_EnableAHBPeriphClk、RCC_EnableAHB1PeriphClk、RCC_EnableAPB2PeriphClk、RCC_EnableAPB1PeriphClk、RCC_EnableAHBPeriphReset、RCC_EnableAPB2PeriphReset、RCC_EnableAPB1PeriphReset
MCO 输出、稳定等待与复位
RCC_ConfigMco1、RCC_EnableMco1、RCC_ConfigMco2、RCC_EnableMco2、RCC_EnableRemap、RCC_ConfigRemapMode、RCC_ClearResetFlag、RCC_WaitHseStable、RCC_WaitHsiStable、RCC_WaitLsiStable、RCC_WaitLseStable、RCC_GetFlagStatus、RCC_EnableVDDIOPORReset
void RCC_DeInit(void)复位 RCC 寄存器。
name RCC_DeInit.
fun Reset the RCC registers.
param none
return none
void RCC_ConfigHse(uint32_t RCC_HSE)配置外部高速振荡器(HSE)。
name RCC_ConfigHse.
fun Configures the External High Speed oscillator (HSE).
param RCC_HSE :
- RCC_HSE_DISABLE HSE oscillator OFF
- RCC_HSE_ENABLE HSE oscillator ON
- RCC_HSE_BYPASS HSE oscillator bypassed with external clock
return none:
note HSE can not be stopped if it is used directly or through the PLL as system clock
void RCC_EnableHSEClockSecuritySystem(FunctionalState Cmd)使能 HSE 时钟安全系统。
name RCC_EnableHSEClockSecuritySystem.
fun Enables the HSE Clock Security System.
param Cmd:
- ENABLE
- DISABLE
return none.
void RCC_EnableHSECSSChk(uint32_t Chk_type, FunctionalState Cmd)使能不同的 HSE CSS 检测类型。
name RCC_EnableHSECSSChktype.
fun Enable different HSE CSS detection type .
param Chk_type :
- RCC_CSSEN_HSEPOEN HSE phase shift out of range enable
- RCC_CSSEN_HSEFHEN HSE frequency out of high limit enable
- RCC_CSSEN_HSEFLEN HSE frequency out of low limit enable
param Cmd:
- ENABLE
- DISABLE
return none.
使用提示: 源码注释的 name 字段写作 RCC_EnableHSECSSChktype.,与函数名 RCC_EnableHSECSSChk 不一致,按函数名调用即可。
void RCC_SetHSECSSPhaseOffsetLimit(uint8_t limit_value)调整 HSE 相位偏移限值。
name RCC_SetHSECSSPhaseOffsetLimit.
fun Adjusts HSE Phase Offset Limit value.
param limit_value(the Limit value):
This parameter must be a number between 0x0 and 0xF
return none
note Error when phase offset Δt is greater than (tHSI*limit_value/32)us
void RCC_SetHSECSSFrequencyHighLimit(uint8_t limit_value)调整 HSE 频率上限。
name RCC_SetHSECSSFrequencyHighLimit.
fun Adjusts HSE Frequency High Limit value.
param limit_value(the Limit value):
This parameter must be a number between 0x0 and 0xF
return none
note Error when the frequency is greater than (2*32/limit_value)MHz
void RCC_SetHSECSSFrequencyLowLimit(uint8_t limit_value)调整 HSE 频率下限。
name RCC_SetHSECSSFrequencyLowLimit.
fun Adjusts HSE Frequency Low Limit value.
param limit_value(the Limit value):
This parameter must be a number between 0x0 and 0xF
return none
note Error when the frequency is less than (32/limit_value)MHz
void RCC_SetHsiCalibValue(uint8_t calibration_value)调整内部高速振荡器(HSI)的校准值。
name RCC_SetHsiCalibValue.
fun Adjusts the Internal High Speed oscillator (HSI) calibration value.
param calibration_value(the calibration trimming value):
This parameter must be a number between 0 and 0x7F
return none
void RCC_EnableHsi(FunctionalState Cmd)使能内部高速振荡器(HSI)。
name RCC_EnableHsi.
fun Enables the Internal High Speed oscillator (HSI).
param Cmd:
- ENABLE
- DISABLE
return none
note HSI can not be stopped if it is used directly or through the PLL as system clock.
void RCC_EnableHSIClockSecuritySystem(FunctionalState Cmd)使能 HSI 时钟安全系统。
name RCC_EnableHSIClockSecuritySystem.
fun Enables the HSI Clock Security System.
param Cmd:
- ENABLE
- DISABLE
return none.
void RCC_ConfigPll(uint32_t PLL_source, uint32_t PLL_prescaler, uint32_t PLL_multiplication, uint32_t PLL_outdivider)配置 PLL 时钟源与倍频系数。
name RCC_ConfigPll.
fun Configures the PLL clock source and multiplication factor.
param PLL_source(PLL entry clock source):
- RCC_PLL_SRC_HSI HSI oscillator clock selected as PLL clock entry
- RCC_PLL_SRC_HSI_DIV2 HSI oscillator divider 2 clock selected as PLL clock entry
- RCC_PLL_SRC_HSE HSE oscillator clock selected as PLL clock entry
- RCC_PLL_SRC_HSE_DIV2 HSE oscillator divider 2 clock selected as PLL clock entry
param PLL_prescaler(PLL input divider):
- RCC_PLL_PRE_1
- RCC_PLL_PRE_2
- RCC_PLL_PRE_3
- RCC_PLL_PRE_4
param PLL_multiplication(PLL multiplication factor):
- RCC_PLL_MUL_8
- RCC_PLL_MUL_10
- RCC_PLL_MUL_12
- RCC_PLL_MUL_14
- RCC_PLL_MUL_16
- RCC_PLL_MUL_18
- RCC_PLL_MUL_20
- RCC_PLL_MUL_22
- RCC_PLL_MUL_24
- RCC_PLL_MUL_26
- RCC_PLL_MUL_28
- RCC_PLL_MUL_30
- RCC_PLL_MUL_32
- RCC_PLL_MUL_34
- RCC_PLL_MUL_36
- RCC_PLL_MUL_38
- RCC_PLL_MUL_40
- RCC_PLL_MUL_42
- RCC_PLL_MUL_44
- RCC_PLL_MUL_46
- RCC_PLL_MUL_48
- RCC_PLL_MUL_50
- RCC_PLL_MUL_52
- RCC_PLL_MUL_54
- RCC_PLL_MUL_56
- RCC_PLL_MUL_58
- RCC_PLL_MUL_60
- RCC_PLL_MUL_62
- RCC_PLL_MUL_64
- RCC_PLL_MUL_66
- RCC_PLL_MUL_68
- RCC_PLL_MUL_70
- RCC_PLL_MUL_72
- RCC_PLL_MUL_74
- RCC_PLL_MUL_76
param PLL_outdivider(PLL out divider):
- RCC_PLLOUT_DIV_1
- RCC_PLLOUT_DIV_2
- RCC_PLLOUT_DIV_4
- RCC_PLLOUT_DIV_8
return none
note This function must be used only when the PLL is disabled.
note Fin frequency requirement is in the range of 4MHz ~ 50MHz,
Fref frequency requirement is in the range of 4MHz ~ 25MHz,
Fvco frequency requirement is in the range of 64MHz ~ 500MHz.
void RCC_EnablePll(FunctionalState Cmd)使能 PLL。
name RCC_EnablePll.
fun Enables the PLL.
param Cmd:
- ENABLE
- DISABLE
return none
void RCC_ConfigEXTPll(uint32_t EXTPLL_source, uint32_t EXTPLL_prescaler, uint32_t EXTPLL_mul, uint32_t EXTPLL_outdivider)配置 EXTPLL 时钟源与倍频系数。
name RCC_ConfigEXTPll.
fun Configures the EXTPLL clock source and multiplication factor.
param EXTPLL_source(EXTPLL entry clock source):
- RCC_EXTPLL_SRC_HSI HSI oscillator clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_HSI_DIV2 HSI oscillator divider 2 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_HSE HSE oscillator clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_HSE_DIV2 HSE oscillator divider 2 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV16 PLL divider 16 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV17 PLL divider 17 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV18 PLL divider 18 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV19 PLL divider 19 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV20 PLL divider 20 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV21 PLL divider 21 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV22 PLL divider 22 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV23 PLL divider 23 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV24 PLL divider 24 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV25 PLL divider 25 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV26 PLL divider 26 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV27 PLL divider 27 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV28 PLL divider 28 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV29 PLL divider 29 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV30 PLL divider 30 clock selected as EXTPLL clock entry
- RCC_EXTPLL_SRC_PLL_DIV31 PLL divider 31 clock selected as EXTPLL clock entry
param EXTPLL_prescaler(EXTPLL input divider):
- RCC_EXTPLL_PRE_1
- RCC_EXTPLL_PRE_2
- RCC_EXTPLL_PRE_3
- RCC_EXTPLL_PRE_4
param EXTPLL_mul(EXTPLL multiplication factor):
- RCC_EXTPLL_MUL_8
- RCC_EXTPLL_MUL_10
- RCC_EXTPLL_MUL_12
- RCC_EXTPLL_MUL_14
- RCC_EXTPLL_MUL_16
- RCC_EXTPLL_MUL_18
- RCC_EXTPLL_MUL_20
- RCC_EXTPLL_MUL_22
- RCC_EXTPLL_MUL_24
- RCC_EXTPLL_MUL_26
- RCC_EXTPLL_MUL_28
- RCC_EXTPLL_MUL_30
- RCC_EXTPLL_MUL_32
- RCC_EXTPLL_MUL_34
- RCC_EXTPLL_MUL_36
- RCC_EXTPLL_MUL_38
- RCC_EXTPLL_MUL_40
- RCC_EXTPLL_MUL_42
- RCC_EXTPLL_MUL_44
- RCC_EXTPLL_MUL_46
- RCC_EXTPLL_MUL_48
- RCC_EXTPLL_MUL_50
- RCC_EXTPLL_MUL_52
- RCC_EXTPLL_MUL_54
- RCC_EXTPLL_MUL_56
- RCC_EXTPLL_MUL_58
- RCC_EXTPLL_MUL_60
- RCC_EXTPLL_MUL_62
- RCC_EXTPLL_MUL_64
- RCC_EXTPLL_MUL_66
- RCC_EXTPLL_MUL_68
- RCC_EXTPLL_MUL_70
- RCC_EXTPLL_MUL_72
- RCC_EXTPLL_MUL_74
- RCC_EXTPLL_MUL_76
param EXTPLL_outdivider(EXTPLL out divider):
- RCC_EXTPLLOUT_DIV_1
- RCC_EXTPLLOUT_DIV_2
- RCC_EXTPLLOUT_DIV_4
- RCC_EXTPLLOUT_DIV_8
return none
note This function must be used only when the EXTPLL is disabled.
note Fin frequency requirement is in the range of 4MHz ~ 50MHz,
Fref frequency requirement is in the range of 4MHz ~ 25MHz,
Fvco frequency requirement is in the range of 64MHz ~ 500MHz.
void RCC_EnableEXTPll(FunctionalState Cmd)使能 EXTPLL。
name RCC_EnableEXTPll.
fun Enables the EXTPLL.
param Cmd:
- ENABLE
- DISABLE
return none
note The RCC_CTRL.PLLEN bit must be enabled when using EXTPLL.
uint32_t RCC_GetSysclkSrc(void)返回当前作为系统时钟的时钟源。
name RCC_GetSysclkSrc.
fun Returns the clock source used as system clock.
param none
return (The clock source used as system clock):
- RCC_CFG_SCLKSTS_HSI HSI used as system clock
- RCC_CFG_SCLKSTS_HSE HSE used as system clock
- RCC_CFG_SCLKSTS_PLL PLL used as system clock
- RCC_CFG_SRC_EXTPLL SHRPLL selected as system clock
- RCC_CFG_SRC_USBHS240M USBHS240M selected as system clock
void RCC_ConfigSysclk(uint32_t sysclk_source)配置系统时钟(SYSCLK)。
name RCC_ConfigSysclk.
fun Configures the system clock (SYSCLK).
param sysclk_source(clock source used as system clock):
- RCC_SYSCLK_SRC_HSI HSI selected as system clock
- RCC_SYSCLK_SRC_HSE HSE selected as system clock
- RCC_SYSCLK_SRC_PLL PLL selected as system clock
- RCC_SYSCLK_SRC_EXTPLL SHRPLL selected as system clock
- RCC_SYSCLK_SRC_USBHS240M USBHS240M selected as system clock
return none
void RCC_ConfigHclk(uint32_t sysclk_div)配置 AHB 时钟(HCLK)。
name RCC_ConfigHclk.
fun Configures the AHB clock (HCLK).
param sysclk_div(AHB clock is derived from the system clock (SYSCLK)):
- RCC_SYSCLK_DIV1 AHB clock = SYSCLK
- RCC_SYSCLK_DIV2 AHB clock = SYSCLK/2
- RCC_SYSCLK_DIV4 AHB clock = SYSCLK/4
- RCC_SYSCLK_DIV8 AHB clock = SYSCLK/8
- RCC_SYSCLK_DIV16 AHB clock = SYSCLK/16
- RCC_SYSCLK_DIV64 AHB clock = SYSCLK/64
- RCC_SYSCLK_DIV128 AHB clock = SYSCLK/128
- RCC_SYSCLK_DIV256 AHB clock = SYSCLK/256
- RCC_SYSCLK_DIV512 AHB clock = SYSCLK/512
return none
void RCC_ConfigPclk1(uint32_t hclk_div)配置低速 APB 时钟(PCLK1)。
name RCC_ConfigPclk1.
fun Configures the Low Speed APB clock (PCLK1).
param hclk_div(APB1 clock is derived from the AHB clock (HCLK)):
- RCC_HCLK_DIV1 APB1 clock = HCLK
- RCC_HCLK_DIV2 APB1 clock = HCLK/2
- RCC_HCLK_DIV4 APB1 clock = HCLK/4
- RCC_HCLK_DIV8 APB1 clock = HCLK/8
- RCC_HCLK_DIV16 APB1 clock = HCLK/16
return none
void RCC_ConfigPclk2(uint32_t hclk_div)配置高速 APB 时钟(PCLK2)。
name RCC_ConfigPclk2.
fun Configures the High Speed APB clock (PCLK2).
param hclk_div(APB2 clock is derived from the AHB clock (HCLK)):
- RCC_HCLK_DIV1 APB2 clock = HCLK
- RCC_HCLK_DIV2 APB2 clock = HCLK/2
- RCC_HCLK_DIV4 APB2 clock = HCLK/4
- RCC_HCLK_DIV8 APB2 clock = HCLK/8
- RCC_HCLK_DIV16 APB2 clock = HCLK/16
return none
void RCC_ConfigInt(uint32_t Interrupt, FunctionalState Cmd)使能指定的 RCC 中断。
name RCC_ConfigInt.
fun Enables the specified RCC interrupts.
param Interrupt(the RCC interrupt sources to be enabled):
- RCC_INT_LSIRDIF LSI ready interrupt
- RCC_INT_LSERDIF LSI ready interrupt
- RCC_INT_HSIRDIF HSI ready interrupt
- RCC_INT_HSERDIF HSE ready interrupt
- RCC_INT_PLLRDIF PLL ready interrupt
- RCC_INT_LSECSSIF LSE CSS interrupt
- RCC_INT_HSECSSIF HSE CSS interrupt
- RCC_INT_HSICSSIF HSI CSS interrupt
- RCC_INT_BORIF BOR interrupt
param Cmd:
- ENABLE
- DISABLE
return none
void RCC_ConfigATimClk(uint32_t timer_clksrc)配置 ATIM1/2/3 时钟源(ATIMCLK)。
name RCC_ConfigATimClk.
fun Configures the ATIM1/2/3 clock source(ATIMCLK).
param timer_clksrc(ATIM clock source):
- RCC_ATIM_CLKSRC_HCLK
- RCC_ATIM_CLKSRC_SYSCLK
return none
void RCC_ConfigGTimClk(uint32_t timer_clksrc)配置 GTIM8/9/10 时钟源(GTIMCLK)。
name RCC_ConfigGTimClk.
fun Configures the GTIM8/9/10 clock source(GTIMCLK).
param timer_clksrc(GTIM clock source):
- RCC_GTIM_CLKSRC_SYSCLKDIV
- RCC_GTIM_CLKSRC_SYSCLK
return none
void RCC_ConfigI2S3Clk(uint32_t I2S_clksrc)配置 I2S3 时钟源(I2S3CLK)。
name RCC_ConfigI2S3Clk_.
fun Configures the I2S3 clock source(I2S3CLK).
param I2S_clksrc(I2S3 clock source):
- RCC_I2S3_CLKSRC_SYSCLK
- RCC_I2S3_CLKSRC_EXTPLL
- RCC_I2S3_CLKSRC_CLKIN
- RCC_I2S3_CLKSRC_HSI
return none
使用提示: 源码注释的 name 字段写作 RCC_ConfigI2S3Clk_.,与函数名 RCC_ConfigI2S3Clk 不一致,按函数名调用即可。
void RCC_ConfigI2S2Clk(uint32_t I2S_clksrc)配置 I2S2 时钟源(I2S2CLK)。
name RCC_ConfigI2S2Clk_.
fun Configures the I2S2 clock source(I2S2CLK).
param I2S_clksrc(I2S2 clock source):
- RCC_I2S2_CLKSRC_SYSCLK
- RCC_I2S2_CLKSRC_EXTPLL
- RCC_I2S2_CLKSRC_CLKIN
- RCC_I2S2_CLKSRC_HSI
return none
使用提示: 源码注释的 name 字段写作 RCC_ConfigI2S2Clk_.,与函数名 RCC_ConfigI2S2Clk 不一致,按函数名调用即可。
void RCC_ConfigRngcClk(uint32_t RNG_prescaler)配置 RNGCCLK 预分频。
name RCC_ConfigRngcClk.
fun Configures the RNGCCLK prescaler.
param RNG_prescaler (specifies the RNGCCLK prescaler):
- RCC_RNGCCLK_SYSCLK_DIV1 SYSCLK Divided By 1
- RCC_RNGCCLK_SYSCLK_DIV2 SYSCLK Divided By 2
- RCC_RNGCCLK_SYSCLK_DIV3 SYSCLK Divided By 3
- RCC_RNGCCLK_SYSCLK_DIV4 SYSCLK Divided By 4
- RCC_RNGCCLK_SYSCLK_DIV5 SYSCLK Divided By 5
- RCC_RNGCCLK_SYSCLK_DIV6 SYSCLK Divided By 6
- RCC_RNGCCLK_SYSCLK_DIV7 SYSCLK Divided By 7
- RCC_RNGCCLK_SYSCLK_DIV8 SYSCLK Divided By 8
- RCC_RNGCCLK_SYSCLK_DIV9 SYSCLK Divided By 9
- RCC_RNGCCLK_SYSCLK_DIV10 SYSCLK Divided By 10
- RCC_RNGCCLK_SYSCLK_DIV11 SYSCLK Divided By 11
- RCC_RNGCCLK_SYSCLK_DIV12 SYSCLK Divided By 12
- RCC_RNGCCLK_SYSCLK_DIV13 SYSCLK Divided By 13
- RCC_RNGCCLK_SYSCLK_DIV14 SYSCLK Divided By 14
- RCC_RNGCCLK_SYSCLK_DIV15 SYSCLK Divided By 15
- RCC_RNGCCLK_SYSCLK_DIV16 SYSCLK Divided By 16
- RCC_RNGCCLK_SYSCLK_DIV17 SYSCLK Divided By 17
- RCC_RNGCCLK_SYSCLK_DIV18 SYSCLK Divided By 18
- RCC_RNGCCLK_SYSCLK_DIV19 SYSCLK Divided By 19
- RCC_RNGCCLK_SYSCLK_DIV20 SYSCLK Divided By 20
- RCC_RNGCCLK_SYSCLK_DIV21 SYSCLK Divided By 21
- RCC_RNGCCLK_SYSCLK_DIV22 SYSCLK Divided By 22
- RCC_RNGCCLK_SYSCLK_DIV23 SYSCLK Divided By 23
- RCC_RNGCCLK_SYSCLK_DIV24 SYSCLK Divided By 24
- RCC_RNGCCLK_SYSCLK_DIV25 SYSCLK Divided By 25
- RCC_RNGCCLK_SYSCLK_DIV26 SYSCLK Divided By 26
- RCC_RNGCCLK_SYSCLK_DIV27 SYSCLK Divided By 27
- RCC_RNGCCLK_SYSCLK_DIV28 SYSCLK Divided By 28
- RCC_RNGCCLK_SYSCLK_DIV29 SYSCLK Divided By 29
- RCC_RNGCCLK_SYSCLK_DIV30 SYSCLK Divided By 30
- RCC_RNGCCLK_SYSCLK_DIV31 SYSCLK Divided By 31
- RCC_RNGCCLK_SYSCLK_DIV32 SYSCLK Divided By 32
return none
note The RNGCCLK must not exceed interface clock(config by RCC_ConfigPeriphClk()).
void RCC_ConfigTrng1mClk(uint32_t TRNG1M_clksrc, uint32_t TRNG1M_prescaler)配置 TRNG 1M 时钟。
name RCC_ConfigTrng1mClk.
fun Configures the TRNG 1M clock .
param TRNG1M_clksrc(TRNG 1M clock source):
- RCC_TRNG1MCLK_SRC_HSI
- RCC_TRNG1MCLK_SRC_HSE
param TRNG1M_prescaler(TRNG 1M clock prescaler):
- RCC_TRNG1MCLK_DIV2
- RCC_TRNG1MCLK_DIV4
- RCC_TRNG1MCLK_DIV6
- RCC_TRNG1MCLK_DIV8
- RCC_TRNG1MCLK_DIV10
- RCC_TRNG1MCLK_DIV12
- RCC_TRNG1MCLK_DIV14
- RCC_TRNG1MCLK_DIV16
- RCC_TRNG1MCLK_DIV18
- RCC_TRNG1MCLK_DIV20
- RCC_TRNG1MCLK_DIV22
- RCC_TRNG1MCLK_DIV24
- RCC_TRNG1MCLK_DIV26
- RCC_TRNG1MCLK_DIV28
- RCC_TRNG1MCLK_DIV30
- RCC_TRNG1MCLK_DIV32
return none
void RCC_EnableTrng1mClk(FunctionalState Cmd)使能或禁止 TRNGCLK。
name RCC_EnableTrng1mClk.
fun Enables or disable the TRNGCLK.
param Cmd:
- ENABLE
- DISABLE
return none
void RCC_EnableBORReset(FunctionalState Cmd)使能或禁止 BOR 复位。
name RCC_EnableBORReset.
fun Enables or disable the BOR reset.
param Cmd:
- ENABLE
- DISABLE
return none
void RCC_ConfigFDCANPllClk(uint32_t FDCAN_prescaler)配置 FDCAN PLL 时钟预分频。
name RCC_ConfigFDCANPllClk.
fun Configures the FDCAN PLL clock prescaler.
param FDCAN_prescaler (specifies the CANCCLK prescaler):
- RCC_FDCAN_PLLSRC_DIV2 FDCAN PLL clock source Divided By 2
- RCC_FDCAN_PLLSRC_DIV3 FDCAN PLL clock source Divided By 3
- RCC_FDCAN_PLLSRC_DIV4 FDCAN PLL clock source Divided By 4
- RCC_FDCAN_PLLSRC_DIV5 FDCAN PLL clock source Divided By 5
- RCC_FDCAN_PLLSRC_DIV6 FDCAN PLL clock source Divided By 6
- RCC_FDCAN_PLLSRC_DIV7 FDCAN PLL clock source Divided By 7
- RCC_FDCAN_PLLSRC_DIV8 FDCAN PLL clock source Divided By 8
- RCC_FDCAN_PLLSRC_DIV9 FDCAN PLL clock source Divided By 9
- RCC_FDCAN_PLLSRC_DIV10 FDCAN PLL clock source Divided By 10
- RCC_FDCAN_PLLSRC_DIV11 FDCAN PLL clock source Divided By 11
- RCC_FDCAN_PLLSRC_DIV12 FDCAN PLL clock source Divided By 12
- RCC_FDCAN_PLLSRC_DIV13 FDCAN PLL clock source Divided By 13
- RCC_FDCAN_PLLSRC_DIV14 FDCAN PLL clock source Divided By 14
- RCC_FDCAN_PLLSRC_DIV15 FDCAN PLL clock source Divided By 15
return none
void RCC_ConfigFDCANClksrc(uint32_t FDCAN_clksrc)配置 FDCAN 时钟源(CANCLK)。
name RCC_ConfigFDCANClksrc.
fun Configures the FDCAN clock source(CANCLK).
param FDCAN_clksrc(FDCAN clock source):
- RCC_FDCAN_CLKSRC_PLL
- RCC_FDCAN_CLKSRC_EXTPLL
- RCC_FDCAN_CLKSRC_HSE
return none
note The divider needs to be configured first when selecting the PLL or EXTPLL
void RCC_ConfigTraceClk(uint32_t TRACE_prescaler)配置 Trace 时钟预分频。
name RCC_ConfigTraceClk.
fun Configures the Trace clock prescaler.
param TRACE_prescaler (specifies the prescaler):
- RCC_TRACECLK_DIV1 HCLK Divided By 1
- RCC_TRACECLK_DIV2 HCLK Divided By 2
- RCC_TRACECLK_DIV4 HCLK Divided By 4
- RCC_TRACECLK_DIV8 HCLK Divided By 8
return none
void RCC_ConfigUSBPLLPresClk(uint32_t USBPLL_clksrc, uint32_t USBPLL_prescaler)配置 USB PLL 时钟(USBPLLCLK)。
name RCC_ConfigUSBPLLPresClk.
fun Configures the USB PLL clock (USBPLLCLK).
param USBPLL_clksrc(USBPLL clock source):
- RCC_USBPLLCLK_SRC_PLL
- RCC_USBPLLCLK_SRC_EXTPLL
param USBPLL_prescaler(USBPLL clock prescaler):
- RCC_USBPLLCLK_DIV1
- RCC_USBPLLCLK_DIV2
- RCC_USBPLLCLK_DIV3
- RCC_USBPLLCLK_DIV4
- RCC_USBPLLCLK_DIV5
- RCC_USBPLLCLK_DIV6
- RCC_USBPLLCLK_DIV7
- RCC_USBPLLCLK_DIV8
- RCC_USBPLLCLK_DIV9
- RCC_USBPLLCLK_DIV10
- RCC_USBPLLCLK_DIV11
- RCC_USBPLLCLK_DIV12
- RCC_USBPLLCLK_DIV13
- RCC_USBPLLCLK_DIV14
- RCC_USBPLLCLK_DIV15
return none
void RCC_ConfigUSBFSClk(uint32_t USBFS_clksrc)配置 USBFS 时钟源(USBFSCLK)。
name RCC_ConfigUSBFSClk_.
fun Configures the USBFS clock source(USBFSCLK).
param USBFS_clksrc(USBFS clock source):
- RCC_USBFS_CLKSRC_UCDR
- RCC_USBFS_CLKSRC_PLLPRES
- RCC_USBFS_CLKSRC_USBHS48M
return none
note The PLL clock source and prescaler are first configured
by RCC_ConfigUSBPLLPresClk() function when selecting the RCC_USBFS_CLKSRC_PLLPRES.
使用提示: 源码注释的 name 字段写作 RCC_ConfigUSBFSClk_.,与函数名 RCC_ConfigUSBFSClk 不一致,按函数名调用即可。
void RCC_ConfigUSBHSClk(uint32_t USBHS_clksrc)配置 USBHS 时钟源(USBHSCLK)。
name RCC_ConfigUSBHSClk_.
fun Configures the USBHS clock source(USBHSCLK).
param USBHS_clksrc(USBHS clock source):
- RCC_USBHS_CLKSRC_HSE
- RCC_USBHS_CLKSRC_PLLPRES
return none
note The PLL clock source and prescaler are first configured
by RCC_ConfigUSBPLLPresClk() function when selecting the RCC_USBHS_CLKSRC_PLLPRES.
note The input clock frequency must be ensured to be 16M/19.2M/20M/24M/26M/32M.
使用提示: 源码注释的 name 字段写作 RCC_ConfigUSBHSClk_.,与函数名 RCC_ConfigUSBHSClk 不一致,按函数名调用即可。
void RCC_ConfigUSBHSBandwidth(uint32_t USBHS_bw)配置 USBHS 带宽。
name RCC_ConfigUSBHSClk_.
fun Configures the USBHS clock source(USBHSCLK).
param USBHS_bw(USBHS band width):
- RCC_USBHS_BW_16M Select this bit when input clock frequency is 16M
- RCC_USBHS_BW_OTHER Select this bit when input clock frequency is 19.2M/20M/24M/26M/32M
return none
note none
使用提示: 源码注释的 name 字段写作 RCC_ConfigUSBHSClk_.,与函数名 RCC_ConfigUSBHSBandwidth 不一致,按函数名调用即可。
void RCC_ConfigUSBHSFrequency(uint32_t USBHS_freq)配置 USBHS 频率。
name RCC_ConfigUSBHSFrequency.
fun Configures the USBHS clock source(USBHSCLK).
param USBHS_bw(USBHS band width):
- RCC_USBHS_FREQ_19_2M Select this bit when input clock frequency is 19.2M
- RCC_USBHS_FREQ_20M Select this bit when input clock frequency is 20M
- RCC_USBHS_FREQ_24M Select this bit when input clock frequency is 24M
- RCC_USBHS_FREQ_16_OR_32M Select this bit when input clock frequency is16 or 32M
- RCC_USBHS_FREQ_26M Select this bit when input clock frequency is 26M
return none
note none
void RCC_ConfigAdc1mClk(uint32_t ADC1M_clksrc, uint32_t ADC1M_prescaler)配置 ADCx 1M 时钟(ADC1MCLK)。
name RCC_ConfigAdc1mClk.
fun Configures the ADCx 1M clock (ADC1MCLK).
param ADC1M_clksrc(ADC1M clock source):
- RCC_ADC1MCLK_SRC_HSI
- RCC_ADC1MCLK_SRC_HSE
param ADC1M_prescaler(ADC1M clock prescaler):
- RCC_ADC1MCLK_DIV1
- RCC_ADC1MCLK_DIV2
- RCC_ADC1MCLK_DIV3
- RCC_ADC1MCLK_DIV4
- RCC_ADC1MCLK_DIV5
- RCC_ADC1MCLK_DIV6
- RCC_ADC1MCLK_DIV7
- RCC_ADC1MCLK_DIV8
- RCC_ADC1MCLK_DIV9
- RCC_ADC1MCLK_DIV10
- RCC_ADC1MCLK_DIV11
- RCC_ADC1MCLK_DIV12
- RCC_ADC1MCLK_DIV13
- RCC_ADC1MCLK_DIV14
- RCC_ADC1MCLK_DIV15
- RCC_ADC1MCLK_DIV16
- RCC_ADC1MCLK_DIV17
- RCC_ADC1MCLK_DIV18
- RCC_ADC1MCLK_DIV19
- RCC_ADC1MCLK_DIV20
- RCC_ADC1MCLK_DIV21
- RCC_ADC1MCLK_DIV22
- RCC_ADC1MCLK_DIV23
- RCC_ADC1MCLK_DIV24
- RCC_ADC1MCLK_DIV25
- RCC_ADC1MCLK_DIV26
- RCC_ADC1MCLK_DIV27
- RCC_ADC1MCLK_DIV28
- RCC_ADC1MCLK_DIV29
- RCC_ADC1MCLK_DIV30
- RCC_ADC1MCLK_DIV31
- RCC_ADC1MCLK_DIV32
return none
void RCC_ConfigAdcPllClk(uint32_t ADC_PLLsource, uint32_t ADC_PLLprescaler, uint32_t ADC_PLLenable)配置 ADC 时钟源(ADCCLK)。
name RCC_ConfigAdcPllClk.
fun Configures the ADC clock source(ADCCLK).
param ADC_PLLsource(ADC PLL clock source):
- RCC_ADCPLLCLK_SRC_PLL
- RCC_ADCPLLCLK_SRC_USBHS240M
param ADC_PLLprescaler(ADC PLLCLK prescaler):
- RCC_ADCPLLCLK_DIV1
- RCC_ADCPLLCLK_DIV2
- RCC_ADCPLLCLK_DIV3
- RCC_ADCPLLCLK_DIV4
- RCC_ADCPLLCLK_DIV6
- RCC_ADCPLLCLK_DIV8
- RCC_ADCPLLCLK_DIV10
- RCC_ADCPLLCLK_DIV12
param ADC_PLLenable:
- RCC_ADCPLLCLK_DISABLE
- RCC_ADCPLLCLK_ENABLE
return none
void RCC_ConfigAdcHclk(uint32_t ADC_hclk_prescaler)配置 ADCHCLK 预分频。
name RCC_ConfigAdcHclk.
fun Configures the ADCHCLK prescaler.
param ADC_hclk_prescaler(ADCHCLK prescaler):
- RCC_ADCHCLK_DIV1
- RCC_ADCHCLK_DIV2
- RCC_ADCHCLK_DIV3
- RCC_ADCHCLK_DIV4
- RCC_ADCHCLK_DIV6
- RCC_ADCHCLK_DIV8
- RCC_ADCHCLK_DIV10
- RCC_ADCHCLK_DIV12
- RCC_ADCHCLK_DIV16
- RCC_ADCHCLK_DIV32
return none
void RCC_ConfigSDRAMClk(uint32_t SDRAM_prescaler)配置 SDRAM HCLK 预分频。
name RCC_ConfigSDRAMClk.
fun Configures the SDRAM HCLK prescaler.
param SDRAM_prescaler(SDRAM HCLK prescaler):
- RCC_SDRAM_HCLK_DIV1
- RCC_SDRAM_HCLK_DIV2
- RCC_SDRAM_HCLK_DIV3
- RCC_SDRAM_HCLK_DIV4
- RCC_SDRAM_HCLK_DIV5
- RCC_SDRAM_HCLK_DIV6
- RCC_SDRAM_HCLK_DIV7
- RCC_SDRAM_HCLK_DIV8
return none
void RCC_ConfigDSMUFilterClk(uint32_t DSMU_prescaler)配置 DSMU 滤波预分频。
name RCC_ConfigDSMUFilterClk.
fun Configures the DSMU filter prescaler.
param DSMU_prescaler(DSMU filter prescaler):
- RCC_DSMU_FLT_DIV1
- RCC_DSMU_FLT_DIV2
- RCC_DSMU_FLT_DIV4
- RCC_DSMU_FLT_DIV6
return none
void RCC_ConfigPeriphClk(uint32_t Periph_prescaler)配置 SAC/SDIO/USBHS/ETH/FEMC/XSPI/CORDIC 外设 HCLK 预分频。
name RCC_ConfigPeriphClk.
fun Configures the SAC/SDIO/USBHS/ETH/FEMC/XSPI/CORDIC Peripheral HCLK prescaler.
param Periph_prescaler(Periph HCLK prescaler):
- RCC_PERIPH_HCLK_DIV1
- RCC_PERIPH_HCLK_DIV2
return none
note The interface clock must not exceed 120 MHz.
void RCC_EnableLsi(FunctionalState Cmd)使能内部低速振荡器(LSI)。
name RCC_EnableLsi.
fun Enables the Internal Low Speed oscillator (LSI).
param Cmd:
- ENABLE
- DISABLE
return none
void RCC_ConfigLse(uint32_t RCC_LSE)配置外部高速振荡器(LSE)。
name RCC_ConfigLse.
fun Configures the External High Speed oscillator (LSE).
param RCC_LSE :
- RCC_LSE_DISABLE LSE oscillator OFF
- RCC_LSE_ENABLE LSE oscillator ON
- RCC_LSE_BYPASS LSE oscillator bypassed with external clock
return none:
note BDCTRL is protected, you need to enable the PWR clock first,
then configure PWR_CTRL.DBKP to 1 to change it.
void RCC_EnableLSEClockSecuritySystem(FunctionalState Cmd)使能 LSE 时钟安全系统。
name RCC_EnableLSEClockSecuritySystem.
fun Enables the LSE Clock Security System.
param Cmd:
- ENABLE
- DISABLE
return none
note BDCTRL is protected, you need to enable the PWR clock first,
then configure PWR_CTRL.DBKP to 1 to change it.
void RCC_ConfigRtcClk(uint32_t rtcclk_source)配置 RTC 时钟(RTCCLK)。
name RCC_ConfigRtcClk.
fun Configures the RTC clock (RTCCLK).
param rtcclk_source(the RTC clock source):
- RCC_RTCCLK_SRC_LSE LSE selected as RTC clock
- RCC_RTCCLK_SRC_LSI LSI selected as RTC clock
- RCC_RTCCLK_SRC_HSE_DIV128 HSE clock divided by 128 selected as RTC clock
return none
note Once the RTC clock is selected it can't be changed unless the Backup domain is reset.
note BDCTRL is protected, you need to enable the PWR clock first,
then configure PWR_CTRL.DBKP to 1 to change it.
void RCC_EnableRtcClk(FunctionalState Cmd)使能 RTC 时钟。
name RCC_EnableRtcClk.
fun Enables the RTC clock.
param Cmd:
- ENABLE
- DISABLE
return none
note This function must be used only after the RTC clock was selected
using the RCC_ConfigRtcClk function.
note BDCTRL is protected, you need to enable the PWR clock first,
then configure PWR_CTRL.DBKP to 1 to change it.
void RCC_ConfigLPTIM1Clk(uint32_t clock_source)配置 LPTIM1 时钟(LPTIMCLK)。
name RCC_ConfigLPTIM1Clk.
fun Configures the LPTIM1 clock (LPTIMCLK).
param clock_source (specifies the LPTIM1 clock source).
- RCC_LPTIMCLK_SRC_LSI LSI selected as LPTIM1 clock
- RCC_LPTIMCLK_SRC_LSE LSE selected as LPTIM1 clock
- RCC_LPTIMCLK_SRC_HSI HSI selected as LPTIM1 clock
- RCC_LPTIMCLK_SRC_HSE HSE selected as LPTIM1 clock
- RCC_LPTIMCLK_SRC_PCLK1 PLCK1 clock selected as LPTIM1 clock
return none
note BDCTRL is protected, you need to enable the PWR clock first,
then configure PWR_CTRL.DBKP to 1 to change it.
void RCC_ConfigLPTIM2Clk(uint32_t clock_source)配置 LPTIM2 时钟(LPTIMCLK)。
name RCC_ConfigLPTIM2Clk.
fun Configures the LPTIM2 clock (LPTIMCLK).
param clock_source (specifies the LPTIM2 clock source).
- RCC_LPTIMCLK_SRC_LSI LSI selected as LPTIM2 clock
- RCC_LPTIMCLK_SRC_LSE LSE selected as LPTIM2 clock
- RCC_LPTIMCLK_SRC_HSI HSI selected as LPTIM2 clock
- RCC_LPTIMCLK_SRC_HSE HSE selected as LPTIM2 clock
- RCC_LPTIMCLK_SRC_PCLK1 PLCK1 clock selected as LPTIM2 clock
return none
note BDCTRL is protected, you need to enable the PWR clock first,
then configure PWR_CTRL.DBKP to 1 to change it.
void RCC_EnableLPTIMPeriphClk(uint32_t LPTIM_periph, FunctionalState Cmd)使能 LPTIM1 与 LPTIM2 时钟。
name RCC_EnableLPTIMPeriphClk.
fun Enables the LPTIM1 and LPTIM2 clock.
param LPTIM_periph (LPTIM peripheral to gates its clock):
- RCC_LPTIM1_PERIPH_EN
- RCC_LPTIM2_PERIPH_EN
param Cmd:
- ENABLE
- DISABLE
return none.
note BDCTRL is protected, you need to enable the PWR clock first,
then configure PWR_CTRL.DBKP to 1 to change it.
void RCC_EnableLPTIMPeriphReset(uint32_t LPTIM_periph)LPTIM1 与 LPTIM2 时钟复位。
name RCC_EnableLPTIMPeriphReset.
fun LPTIM1 and LPTIM2 clock reset.
param LPTIM_periph specifies the LPTIM peripheral to reset.
- RCC_LPTIM1_PERIPH_RST
- RCC_LPTIM2_PERIPH_RST
return none.
note BDCTRL is protected, you need to enable the PWR clock first,
then configure PWR_CTRL.DBKP to 1 to change it.
void RCC_EnableBackupReset(void)复位备份域。
name RCC_EnableBackupReset.
fun Reset Backup domain .
param none
return none.
note BDCTRL is protected, you need to enable the PWR clock first,
then configure PWR_CTRL.DBKP to 1 to change it.
void RCC_GetClocksFreqValue(RCC_ClocksType* RCC_clocks)返回各片上时钟的频率。
name RCC_GetClocksFreqValue.
fun Returns the frequencies of different on chip clocks.
param RCC_clocks pointer to a RCC_ClocksType structure which will hold
the clocks frequencies.
return none
note The result of this function could be not correct when using
fractional value for HSE crystal.
void RCC_EnableFDCANOffRequest(uint32_t FDCAN_sel, FunctionalState Cmd)使能后向 FDCAN 模块发送关闭请求。
name RCC_EnableFDCANOffRequest.
fun Sending a off request to the FDCAN module when enabled.
param FDCAN_sel :
-RCC_OFFEN_FDCAN1
-RCC_OFFEN_FDCAN2
-RCC_OFFEN_FDCAN3
param Cmd:
- ENABLE
- DISABLE
return none
note Hardware clears this bit after receiving a shutdown answer from the CAN module
void RCC_EnableAHBPeriphClk(uint32_t AHB_periph, FunctionalState Cmd)使能 AHB 外设时钟。
name RCC_EnableAHBPeriphClk.
fun Enables the AHB peripheral clock.
param AHB_periph (AHB peripheral to gates its clock):
- RCC_AHB_PERIPHEN_ATIM3
- RCC_AHB_PERIPHEN_ATIM2
- RCC_AHB_PERIPHEN_ATIM1
- RCC_AHB_PERIPHEN_DVP
- RCC_AHB_PERIPHEN_CORDIC
- RCC_AHB_PERIPHEN_SDRAM
- RCC_AHB_PERIPHEN_USBHS
- RCC_AHB_PERIPHEN_ETH
- RCC_AHB_PERIPHEN_CRC
- RCC_AHB_PERIPHEN_DMA2
- RCC_AHB_PERIPHEN_DMA1
- RCC_AHB_PERIPHEN_SDIO
- RCC_AHB_PERIPHEN_XSPI
- RCC_AHB_PERIPHEN_RNGC
- RCC_AHB_PERIPHEN_BKPSRAM
- RCC_AHB_PERIPHEN_FEMC
- RCC_AHB_PERIPHEN_FLITF
- RCC_AHB_PERIPHEN_SRAM
param Cmd:
- ENABLE
- DISABLE
return none
void RCC_EnableAHB1PeriphClk(uint32_t AHB_periph, FunctionalState Cmd)使能 AHB 外设时钟。
name RCC_EnableAHB1PeriphClk.
fun Enables the AHB peripheral clock.
param AHB_periph (AHB peripheral to gates its clock):
-RCC_AHB_PERIPHEN_SAC
-RCC_AHB_PERIPHEN_ADC3
-RCC_AHB_PERIPHEN_ADC2
-RCC_AHB_PERIPHEN_ADC1
-RCC_AHB_PERIPHEN_GPIOH
-RCC_AHB_PERIPHEN_GPIOG
-RCC_AHB_PERIPHEN_GPIOF
-RCC_AHB_PERIPHEN_GPIOE
-RCC_AHB_PERIPHEN_GPIOD
-RCC_AHB_PERIPHEN_GPIOC
-RCC_AHB_PERIPHEN_GPIOB
-RCC_AHB_PERIPHEN_GPIOA
param Cmd:
- ENABLE
- DISABLE
return none
void RCC_EnableAPB2PeriphClk(uint32_t APB2_periph, FunctionalState Cmd)使能高速 APB(APB2)外设时钟。
name RCC_EnableAPB2PeriphClk.
fun Enables the High Speed APB (APB2) peripheral clock.
param APB2_periph (APB2 peripheral to gates its clock):
- RCC_APB2_PERIPHEN_USART4
- RCC_APB2_PERIPHEN_UART10
- RCC_APB2_PERIPHEN_USART9
- RCC_APB2_PERIPHEN_GTIM10
- RCC_APB2_PERIPHEN_GTIM9
- RCC_APB2_PERIPHEN_GTIM8
- RCC_APB2_PERIPHEN_UART7
- RCC_APB2_PERIPHEN_UART6
- RCC_APB2_PERIPHEN_USART1
- RCC_APB2_PERIPHEN_SPI1
- RCC_APB2_PERIPHEN_SPI4
- RCC_APB2_PERIPHEN_SPI5
- RCC_APB2_PERIPHEN_SPI6
- RCC_APB2_PERIPHEN_AFIO
param Cmd:
- ENABLE
- DISABLE
return none.
void RCC_EnableAPB1PeriphClk(uint32_t APB1_periph, FunctionalState Cmd)使能低速 APB(APB1)外设时钟。
name RCC_EnableAPB1PeriphClk.
fun Enables the High Speed APB (APB1) peripheral clock.
param APB1_periph (APB1 peripheral to gates its clock):
- RCC_APB1_PERIPHEN_DSMU
- RCC_APB1_PERIPHEN_DAC12
- RCC_APB1_PERIPHEN_WWDG
- RCC_APB1_PERIPHEN_I2C4
- RCC_APB1_PERIPHEN_I2C3
- RCC_APB1_PERIPHEN_BTIM2
- RCC_APB1_PERIPHEN_BTIM1
- RCC_APB1_PERIPHEN_FDCAN3
- RCC_APB1_PERIPHEN_FDCAN2
- RCC_APB1_PERIPHEN_FDCAN1
- RCC_APB1_PERIPHEN_USBFS
- RCC_APB1_PERIPHEN_UCDR
- RCC_APB1_PERIPHEN_GTIM7
- RCC_APB1_PERIPHEN_GTIM6
- RCC_APB1_PERIPHEN_GTIM5
- RCC_APB1_PERIPHEN_GTIM4
- RCC_APB1_PERIPHEN_GTIM3
- RCC_APB1_PERIPHEN_GTIM2
- RCC_APB1_PERIPHEN_GTIM1
- RCC_APB1_PERIPHEN_SPI3
- RCC_APB1_PERIPHEN_SPI2
- RCC_APB1_PERIPHEN_I2C2
- RCC_APB1_PERIPHEN_I2C1
- RCC_APB1_PERIPHEN_UART5
- RCC_APB1_PERIPHEN_UART8
- RCC_APB1_PERIPHEN_USART3
- RCC_APB1_PERIPHEN_USART2
- RCC_APB1_PERIPHEN_BKP
- RCC_APB1_PERIPHEN_PWR
param Cmd:
- ENABLE
- DISABLE
return none.
void RCC_EnableAHBPeriphReset(uint32_t AHB_periph)AHB 外设复位。
name RCC_EnableAHBPeriphReset.
fun AHB peripheral reset.
param AHB_periph specifies the AHB peripheral to reset.
- RCC_AHB_PERIPHRST_ETH
- RCC_AHB_PERIPHRST_USBHS
- RCC_AHB_PERIPHRST_SDRAM
- RCC_AHB_PERIPHRST_CORDIC
- RCC_AHB_PERIPHRST_ATIM3
- RCC_AHB_PERIPHRST_ATIM2
- RCC_AHB_PERIPHRST_ATIM1
- RCC_AHB_PERIPHRST_DVP
- RCC_AHB_PERIPHRST_ADC3
- RCC_AHB_PERIPHRST_ADC2
- RCC_AHB_PERIPHRST_ADC1
- RCC_AHB_PERIPHRST_GPIOH
- RCC_AHB_PERIPHRST_GPIOG
- RCC_AHB_PERIPHRST_GPIOF
- RCC_AHB_PERIPHRST_GPIOE
- RCC_AHB_PERIPHRST_GPIOD
- RCC_AHB_PERIPHRST_GPIOC
- RCC_AHB_PERIPHRST_GPIOB
- RCC_AHB_PERIPHRST_GPIOA
- RCC_AHB_PERIPHRST_FEMC
- RCC_AHB_PERIPHRST_SDIO
- RCC_AHB_PERIPHRST_USBHSPHY
- RCC_AHB_PERIPHRST_XSPI
- RCC_AHB_PERIPHRST_RNGC
- RCC_AHB_PERIPHRST_SAC
return none.
void RCC_EnableAPB2PeriphReset(uint32_t APB2_periph)高速 APB(APB2)外设复位。
name RCC_EnableAPB2PeriphReset.
fun High Speed APB (APB2) peripheral reset.
param APB2_periph specifies the APB2 peripheral to reset.
- RCC_APB2_PERIPHRST_USART4
- RCC_APB2_PERIPHRST_GTIM10
- RCC_APB2_PERIPHRST_GTIM9
- RCC_APB2_PERIPHRST_GTIM8
- RCC_APB2_PERIPHRST_UART7
- RCC_APB2_PERIPHRST_UART6
- RCC_APB2_PERIPHRST_USART1
- RCC_APB2_PERIPHRST_SPI1
- RCC_APB2_PERIPHRST_SPI4
- RCC_APB2_PERIPHRST_SPI5
- RCC_APB2_PERIPHRST_SPI6
- RCC_APB2_PERIPHRST_AFIO
return none.
void RCC_EnableAPB1PeriphReset(uint32_t APB1_periph)低速 APB(APB1)外设复位。
name RCC_EnableAPB1PeriphReset.
fun Low Speed APB (APB1) peripheral reset.
param APB1_periph specifies the APB1 peripheral to reset.
- RCC_APB1_PERIPHRST_DAC12
- RCC_APB1_PERIPHRST_WWDG
- RCC_APB1_PERIPHRST_I2C4
- RCC_APB1_PERIPHRST_I2C3
- RCC_APB1_PERIPHRST_DSMU
- RCC_APB1_PERIPHRST_UART10
- RCC_APB1_PERIPHRST_USART9
- RCC_APB1_PERIPHRST_BTIM2
- RCC_APB1_PERIPHRST_BTIM1
- RCC_APB1_PERIPHRST_FDCAN3
- RCC_APB1_PERIPHRST_FDCAN2
- RCC_APB1_PERIPHRST_FDCAN1
- RCC_APB1_PERIPHRST_USBFS
- RCC_APB1_PERIPHRST_UCDR
- RCC_APB1_PERIPHRST_GTIM7
- RCC_APB1_PERIPHRST_GTIM6
- RCC_APB1_PERIPHRST_GTIM5
- RCC_APB1_PERIPHRST_GTIM4
- RCC_APB1_PERIPHRST_GTIM3
- RCC_APB1_PERIPHRST_GTIM2
- RCC_APB1_PERIPHRST_GTIM1
- RCC_APB1_PERIPHRST_SPI3
- RCC_APB1_PERIPHRST_SPI2
- RCC_APB1_PERIPHRST_I2C2
- RCC_APB1_PERIPHRST_I2C1
- RCC_APB1_PERIPHRST_UART5
- RCC_APB1_PERIPHRST_UART8
- RCC_APB1_PERIPHRST_USART3
- RCC_APB1_PERIPHRST_USART2
- RCC_APB1_PERIPHRST_BKP
- RCC_APB1_PERIPHRST_PWR
return none.
void RCC_ConfigMco1(uint32_t MCO_source, uint32_t MCO_prescaler)选择 MCO1 引脚输出的时钟源。
name RCC_ConfigMco1.
fun Selects the clock source to output on MCO1 pin.
param MCO_source(clock source to output):
- RCC_MCO_SYSCLK
- RCC_MCO_HSI
- RCC_MCO_HSE
- RCC_MCO_LSI
- RCC_MCO_LSE
- RCC_MCO_USBHS48M
- RCC_MCO_PLL
- RCC_MCO_EXTPLL
- RCC_MCO_USBHS240M
param MCO_prescaler(MCO clock prescaler):
- RCC_MCOCLK_DIV1
- RCC_MCOCLK_DIV2
- RCC_MCOCLK_DIV3
- RCC_MCOCLK_DIV4
- RCC_MCOCLK_DIV5
- RCC_MCOCLK_DIV6
- RCC_MCOCLK_DIV7
- RCC_MCOCLK_DIV8
- RCC_MCOCLK_DIV9
- RCC_MCOCLK_DIV10
- RCC_MCOCLK_DIV11
- RCC_MCOCLK_DIV12
- RCC_MCOCLK_DIV13
- RCC_MCOCLK_DIV14
- RCC_MCOCLK_DIV15
- RCC_MCOCLK_DIV16
return none.
void RCC_EnableMco1(FunctionalState Cmd)使能 MCO1。
name RCC_EnableMco1.
fun Enables the MCO1.
param Cmd:
- ENABLE
- DISABLE
return none
void RCC_ConfigMco2(uint32_t MCO_source, uint32_t MCO_prescaler)选择 MCO2 引脚输出的时钟源。
name RCC_ConfigMco2.
fun Selects the clock source to output on MCO2 pin.
param MCO_source(clock source to output):
- RCC_MCO_SYSCLK
- RCC_MCO_HSI
- RCC_MCO_HSE
- RCC_MCO_LSI
- RCC_MCO_LSE
- RCC_MCO_USBHS48M
- RCC_MCO_PLL
- RCC_MCO_EXTPLL
- RCC_MCO_USBHS240M
param MCO_prescaler(MCO clock prescaler):
- RCC_MCOCLK_DIV1
- RCC_MCOCLK_DIV2
- RCC_MCOCLK_DIV3
- RCC_MCOCLK_DIV4
- RCC_MCOCLK_DIV5
- RCC_MCOCLK_DIV6
- RCC_MCOCLK_DIV7
- RCC_MCOCLK_DIV8
- RCC_MCOCLK_DIV9
- RCC_MCOCLK_DIV10
- RCC_MCOCLK_DIV11
- RCC_MCOCLK_DIV12
- RCC_MCOCLK_DIV13
- RCC_MCOCLK_DIV14
- RCC_MCOCLK_DIV15
- RCC_MCOCLK_DIV16
return none.
void RCC_EnableMco2(FunctionalState Cmd)使能 MCO2。
name RCC_EnableMco2.
fun Enables the MCO2.
param Cmd:
- ENABLE
- DISABLE
return none
void RCC_EnableRemap(void)使能系统重映射。
name RCC_EnableRemap.
fun Enables the system remap.
param none
return none
void RCC_ConfigRemapMode(uint32_t Remap_mode)重映射启动模式选择。
name RCC_ConfigRemapMode.
fun Remap boot mode selection.
param Remap_mode:
- RCC_REMAP_SYS boot from system memory
- RCC_REMAP_BFLASH boot from bank before flash main
- RCC_REMAP_AFLASH boot from bank after flash main
- RCC_REMAP_SRAM boot from SRAM
- RCC_REMAP_FEMC boot from FEMC
- RCC_REMAP_XSPI boot from XSPI
- RCC_REMAP_SDRAM boot from SDRAM
return none.
void RCC_ClearResetFlag(void)清除 RCC 复位标志。
name RCC_ClearResetFlag.
fun Clears the RCC reset flags.
param none
return none
note Clear the following flags:
- RCC_FLAG_BORRSTF BOR reset flag
- RCC_FLAG_MAINEMCF MAIN_EMC reset flag
- RCC_FLAG_BKPEMCF BKP_EMC reset flag
- RCC_FLAG_RAMERSTF RAM or FLASH ECC error reset flag
- RCC_FLAG_SMPURSTF SMPU reset flag
- RCC_FLAG_PINRSTF Pin reset flag
- RCC_FLAG_PORRSTF POR/PDR reset flag
- RCC_FLAG_SFTRSTF Software reset flag
- RCC_FLAG_IWDGRSTF Independent Watchdog reset flag
- RCC_FLAG_WWDGRSTF Window Watchdog reset flag
- RCC_FLAG_LPWRRSTF Low Power reset flag
void RCC_ClrIntPendingBit(uint32_t interrupt_clear)清除 RCC 的中断挂起位。
name RCC_ClrIntPendingBit.
fun Clears the RCC's interrupt pending bits.
param interrupt_clear(interrupt pending bit to clear):
- RCC_CLR_LSIRDIF LSI ready interrupt
- RCC_CLR_LSERDIF LSI ready interrupt
- RCC_CLR_HSIRDIF HSI ready interrupt
- RCC_CLR_HSERDIF HSE ready interrupt
- RCC_CLR_PLLRDIF PLL ready interrupt
- RCC_CLR_LSECSSIF LSE CSS interrupt
- RCC_CLR_HSECSSIF HSE CSS interrupt
- RCC_CLR_HSICSSIF HSE CSS interrupt
- RCC_CLR_BORIF BOR interrupt
return none
ErrorStatus RCC_WaitHseStable(void)等待 HSE 起振稳定。
name RCC_WaitHseStable.
fun Waits for HSE start-up.
param none
return ErrorStatus:
- SUCCESS HSE oscillator is stable and ready to use
- ERROR HSE oscillator not yet ready
ErrorStatus RCC_WaitHsiStable(void)等待 HSI 起振稳定。
name RCC_WaitHsiStable.
fun Waits for HSI start-up.
param none
return ErrorStatus:
- SUCCESS HSI oscillator is stable and ready to use
- ERROR HSI oscillator not yet ready
ErrorStatus RCC_WaitLsiStable(void)等待 LSI 起振稳定。
name RCC_WaitLsiStable.
fun Waits for LSI start-up.
param none
return ErrorStatus:
- SUCCESS LSI oscillator is stable and ready to use
- ERROR LSI oscillator not yet ready
ErrorStatus RCC_WaitLseStable(void)等待 LSE 起振稳定。
name RCC_WaitLseStable.
fun Waits for LSE start-up.
param none
return ErrorStatus:
- SUCCESS LSE oscillator is stable and ready to use
- ERROR LSE oscillator not yet ready
FlagStatus RCC_GetHSECSSStatus(uint32_t interrupt_flag)检查指定的 HSE CSS 标志是否发生。
name RCC_GetHSECSSStatus.
fun Checks whether the specified HSE CSS flag has occurred or not.
param interrupt_flag(RCC interrupt source to check):
- RCC_CSSFLAG_HSEPOF HSE phase shift out of range flag
- RCC_CSSFLAG_HSEFHF HSE frequency out of high limit flag
- RCC_CSSFLAG_HSEFLF HSE frequency out of low limit flag
return FlagStatus:
- SET
- RESET
FlagStatus RCC_GetFlagStatus(uint8_t RCC_flag)检查指定的 RCC 标志是否置位。
name RCC_GetFlagStatus.
fun Checks whether the specified RCC flag is set or not.
param RCC_flag:
- RCC_FLAG_PLLRDF PLL clock ready
- RCC_FLAG_HSIRDF HSI oscillator clock ready
- RCC_FLAG_HSERDF HSE oscillator clock ready
- RCC_FLAG_RPINTF LSI oscillator clock ready
- RCC_FLAG_LSECSSF LSE Clock Safety System flag
- RCC_FLAG_HSECSSF HSE Clock Safety System flag
- RCC_FLAG_HSICSSF HSI Clock Safety System flag
- RCC_FLAG_LSIRDF LSI oscillator clock ready
- RCC_FLAG_BORRSTF BOR reset flag
- RCC_FLAG_MAINEMCF MAIN_EMC reset flag
- RCC_FLAG_BKPEMCF BKP_EMC reset flag
- RCC_FLAG_RAMERSTF RAM or FLASH ECC error reset flag
- RCC_FLAG_SMPURSTF SMPU reset flag
- RCC_FLAG_PINRSTF Pin reset flag
- RCC_FLAG_PORRSTF POR/PDR reset flag
- RCC_FLAG_SFTRSTF Software reset flag
- RCC_FLAG_IWDGRSTF Independent Watchdog reset flag
- RCC_FLAG_WWDGRSTF Window Watchdog reset flag
- RCC_FLAG_LPWRRSTF Low Power reset flag
- RCC_FLAG_LSERDF LSE oscillator clock ready
- RCC_FLAG_HSEFLF HSE frequency out of low limit flag
- RCC_FLAG_HSEFHF HSE frequency out of high limit flag
- RCC_FLAG_HSEPOF HSE phase shift out of range flag
- RCC_FLAG_APBALIGNF APB1 and APB2 Subdivided Clock Rising Edge Alignment flag
- RCC_FLAG_VIOPORRSTF VDDIO POR Reset flag
- RCC_FLAG_EXTPLLRDF EXTPLL clock ready
return FlagStatus:
- SET
- RESET
INTStatus RCC_GetIntStatus(uint32_t interrupt_flag)检查指定的 RCC 中断是否发生。
name RCC_GetIntStatus.
fun Checks whether the specified RCC interrupt has occurred or not.
param interrupt_flag(RCC interrupt source to check):
- RCC_INT_LSIRDIF LSI ready interrupt
- RCC_INT_LSERDIF LSI ready interrupt
- RCC_INT_HSIRDIF HSI ready interrupt
- RCC_INT_HSERDIF HSE ready interrupt
- RCC_INT_PLLRDIF PLL ready interrupt
- RCC_INT_LSECSSIF LSE CSS interrupt
- RCC_INT_HSECSSIF HSE CSS interrupt
- RCC_INT_HSICSSIF HSI CSS interrupt
- RCC_INT_BORIF BOR interrupt
return The new state of RccInt
- SET
- RESET
void RCC_EnableVDDIOPORReset(FunctionalState Cmd)使能 VDDIO 上电复位请求。
name RCC_EnableVDDIOPORReset.
fun Enables the VDDIO POR Reset request.
param Cmd:
- ENABLE
- DISABLE
return none
5.22.3 Demo 示例说明
本节说明 RCC 的 RCC_ClockConfig 示例:它把系统时钟配置为 HSI、HSE、PLL、EXTPLL 之一并打印各时钟频率,同时从 PA7 输出 MCO 时钟。
5.22.3.1 RCC_ClockConfig 系统时钟配置
工程目录: projects/n32h49x_EVAL/examples/RCC/RCC_ClockConfig/
打印复位后的时钟信息→按编译宏选择一种时钟配置→配置并使能对应时钟源→切换系统时钟并打印新频率→从 PA7 输出 MCO 时钟
| 项目 | 源码解读 |
|---|---|
| 功能 | 把系统时钟分别配置为 HSI、HSE、PLL、EXTPLL 之一并打印各时钟频率; 同时把 SYSCLK 分频后从 PA7 复用为 MCO 输出,便于用示波器观察 |
| 源码组成 | src/main.c:main、PrintfClockInfo、SetSysClockToHSI、SetSysClockToHSE、SetSysClockToPLL、SetSysClockToEXTPLL;inc/n32h49x_it.h:头文件并定义时钟源选择宏;src/n32h49x_it.c:中断服务程序;readme.txt:功能、环境与使用说明;MDK-ARM/、EWARM/:Keil 与 IAR 工程 |
| 关键配置 | 时钟:默认 SYSCLK_SOURCE_SELECT 取 SYSCLK_SOURCE_PLL,即 HSE 经 PLL 倍频到 160MHz,HCLK=SYSCLK、PCLK1=PCLK2=HCLK/2;输出:PA7 复用为 AF13, RCC_ConfigMco1(RCC_MCO_SYSCLK, RCC_MCOCLK_DIV10) 输出 SYSCLK 的十分频;串口:USART1 TX PA9,115200 |
| 程序与数据路径 | main 先打印复位后的时钟信息,再按编译宏选择一种时钟配置函数;配置完成后再次打印 SYSCLK、HCLK、PCLK1、PCLK2; 最后把 PA7 配置为 MCO1 输出 |
| 主要 API | RCC_ConfigSysclk、RCC_ConfigPll、RCC_GetSysclkSrc、RCC_GetClocksFreqValue、RCC_ConfigMco1 |
| 验证方法 | 编译烧录复位运行后,串口打印复位后的时钟与所选方案的频率信息; 用示波器在 PA7 上可测得 SYSCLK 的十分频波形 |
| 使用提示 | 硬件平台为全功能板 N32H497ZGL7_EVB V1.0; 开发环境为 KEIL MDK-ARM 5.34 或 IAR EWARM 8.50.1; 切换时钟源后串口需重新初始化,示例在打印前重新初始化日志; MCO 输出引脚为 PA7 |
核心代码解读与移植
示例把时钟配置与打印分离:每次切换时钟后重新初始化日志并打印各时钟频率,再配置并使能目标时钟源、切换系统时钟,最后把系统时钟从 PA7 输出。
数据路径: main 打印复位后时钟 → 按编译宏调用某个时钟配置函数 → SetSysClockToPLL 配置并使能 PLL 后切换 SYSCLK → main 打印新时钟 → RCC_ConfigMco1 与 RCC_EnableMco1 从 PA7 输出
1. 打印各时钟频率。 PrintfClockInfo 在每次切换时钟后重新初始化日志,读取并打印 SYSCLK、HCLK、PCLK1、PCLK2。
void PrintfClockInfo(const char* msg)
{
log_init(); /* should reinit after sysclk changed */
log_info("--------------------------------\n");
log_info("%s:\n", msg);
RCC_GetClocksFreqValue(&RCC_ClockFreq);
log_info("SYSCLK: %d\n", RCC_ClockFreq.SysclkFreq);
log_info("HCLK: %d\n", RCC_ClockFreq.HclkFreq);
log_info("PCLK1: %d\n", RCC_ClockFreq.Pclk1Freq);
log_info("PCLK2: %d\n", RCC_ClockFreq.Pclk2Freq);
while (USART_GetFlagStatus(USART1, USART_FLAG_TXC) == RESET)
{
}
}
RCC_GetClocksFreqValue 依据当前寄存器算出各时钟频率,切换时钟后必须重新初始化串口,否则打印乱码。
2. 配置 PLL 并切换系统时钟。 SetSysClockToPLL 先设置总线分频并配置 PLL,使能后等待就绪,再把系统时钟切换到 PLL。
/* HCLK = SYSCLK */
RCC_ConfigHclk(RCC_SYSCLK_DIV1);
/* PCLK2 */
RCC_ConfigPclk2(pclk2div);
/* PCLK1 */
RCC_ConfigPclk1(pclk1div);
/* pll */
RCC_ConfigPll(PLL_src, pllpre, pllmul, plloutdiv);
/* Enable PLL */
RCC_EnablePll(ENABLE);
/* Wait till PLL is ready */
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDF) != SET)
{
if ((timeout_value--) == 0)
{
return ERROR;
}
}
/* Select PLL as system clock source */
RCC_ConfigSysclk(RCC_SYSCLK_SRC_PLL);
/* Wait till PLL is used as system clock source */
timeout_value = 0xFFFFFFFF;
while (RCC_GetSysclkSrc() != RCC_CFG_SCLKSTS_PLL)
{
if ((timeout_value--) == 0)
{
return ERROR;
}
}
FLASH_SetLatency(latency);
return SUCCESS;
必须先配置再使能 PLL,并等待 RCC_FLAG_PLLRDF 就绪后才切换系统时钟;切换前按频率设置 Flash 等待周期。
3. 把系统时钟从 PA7 输出。 main 使能 GPIOA 与 AFIO 时钟,把 PA7 配置为复用推挽并选择 MCO1 时钟源,使能后即可在引脚上观察。
/* Output HSE clock on MCO pin */
RCC_EnableAHB1PeriphClk(RCC_AHB_PERIPHEN_GPIOA, ENABLE);
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPHEN_AFIO, ENABLE);
GPIO_InitStruct(&GPIO_InitStructure);
GPIO_InitStructure.Pin = GPIO_PIN_7;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP;
GPIO_InitStructure.GPIO_Alternate = GPIO_AF13;
GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
/* Select the corresponding MCO clock source */
RCC_ConfigMco1(RCC_MCO_SYSCLK,RCC_MCOCLK_DIV10);
RCC_EnableMco1(ENABLE);
GPIO_AF13 是 PA7 的 MCO 复用功能;RCC_MCOCLK_DIV10 把 SYSCLK 十分频后输出,便于示波器观察。
对应源码: src/main.c
5.22.4 注意与排障
| 场景 | 检查与建议 | 来源 |
|---|---|---|
| PLL 输入频率 | PLL 与 EXTPLL 的输入频率应保持在 4MHz50MHz,参考频率4MHz25MHz,VCO 频率 64MHz~500MHz; 超出范围会导致锁频失败。 |
用户手册 |
| 先配置后使能 PLL | 应先调用配置函数写好 PLL 时钟源、预分频、倍频与输出分频,再使能 PLL; 使能后再改配置不会生效。 |
用户手册 |
| 复位使能位 | PLLRSTEN、EXTRSTEN 与 HSERSTEN 等复位使能位需在时钟就绪前按用户手册要求设置; 用于在失锁或起振失败时自动复位。 |
用户手册 |
| 总线时钟上限 | AHB 时钟最高 240MHz,且 SDIO、USBHS、ETH、FEMC、SAC、xSPI、CORDIC 等外设要求其时钟不高于 120MHz; 超过时应对 HCLK 二分频。 |
用户手册 |
| RTC 时钟源 | RTC 时钟源一旦选定,在备份域复位前不可修改; 修改前需解除备份域写保护。 |
用户手册 |
| 备份域控制寄存器写保护 | 备份域控制寄存器受写保护,修改前需先写解锁口令; 否则写入被忽略。 |
用户手册 |
| USB 时钟要求 | USBFS 需要 48MHz; USBHS 使用 HSE 时其频率需为用户手册列出的允许值之一。 |
用户手册 |
| 时钟源停止条件 | 正在被使用的时钟源(如 HSI、HSE、PLL)不可被关闭; 切换完成后才能关闭不再使用的时钟源。 |
用户手册 |