STM32使用RCC(Reset Clock Contorl,复位时钟控制器)配置时钟以及时钟树

  • RCC主要作用
    • 设置系统时钟SYSCLK(System Clock)频率;
    • 设置AHB、APB2、APB1以及各个外设分频因子,从而设置HCLK、PCLK2、PCLK1以及各个外设的时钟频率;
    • 控制AHB、APB2、APB1这三条总线时钟以及每个外设的时钟开启;
      【AHB,Advanced High-Performence Bus,先进高性能总线;APB2,Advanced Peripheral Bus1,先进外设总线1;APB1,Advanced Peripheral Bus2,先进外设总线2】
      STM32F103系列一般的时钟配置:
      PLLCLK=SYSCLK=HCLK=PCLK2=72MHZ; (锁相环时钟=系统时钟=高性能时钟=外设时钟2=72MHZ)
      PCLK1=HCLK/2=36MHZ;(外设时钟1=高性能时钟/2=36MHZ)
  • 时钟树(《STM32F10X-中文参考手册》图8,参考手册下载
  1. PLL输入时钟(Phase Lock Loop,锁相环:一种电子控制系统,用于生成与输入信号频率和相位相关的输出信号)
  • PLL输入时钟有两个选择:
    • HSE:High Speed External Clock Signal,高速外部时钟信号,可以由有源晶振或无源晶振提供。当使用有源晶振时,时钟从OSC_IN引脚进入,OSC_OUT引脚悬空;当使用无源晶振时,时钟从OSC_IN和OSC_OUT引脚进入,并要配谐振电容。【Crystal Oscillator 晶振,晶体振荡器】
    • HSI/2 :High Speed Internal Clock Signal,高速内部时钟信号,频率为8MHz。根据温度和环境的情况会有漂移,一般不作为PLL的时钟源。
    • 具体选择哪个输入时钟由时钟配置寄存器(RCC_CFGR)的16位来设置;当选择HSE作为输入时钟时,是否2分频由时钟配置寄存器(RCC_CFGR)的17位来设置.如下图所示(《STM32F10X-中文参考手册》62页)
  1. SYSCLK系统时钟
  • SYSCLK的输入时钟有3个选择:
    • PLLMUL:锁相环经过倍频后的输出时钟。通过设置PLL的倍频因子,可以对PLL的输入时钟进行倍频,倍频因子可以是[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],具体设置成多少,由时钟配置寄存器(RCC_CFGR)的位21:18设置,具体如下图所示(《STM32F10X-中文参考手册》62页)。我们这里设置9倍频,PLL的输出时钟:8M*9=72MHz。72MHz是ST官方推荐的稳定运行时钟。
    • HSE:同上;
    • HSI:同上;
  1. AHB总线时钟HCLK
  • 系统时钟SYSCLK经过AHB预分频器分频后得到的时钟叫AHB时钟,即HCLK。AHB预分频器的分频因子可以是[1,2,4,8,16,64,128,256,512],具体由时钟配置寄存器(RCC_CFGR)的位7:4设置,具体如下图所示(《STM32F10X-中文参考手册》63页)。我们这里设置为1分频,即HCLK=SYSCLK=72MHz。
  1. APB2总线时钟PCLK2
    • APB2总线时钟PCLK2由HCLK经过APB2预分频器得到,分频因子可以是[1,2,4,8,16],具体由时钟配置寄存器(RCC_CFGR)的位13:11设置,具体如下图所示(《STM32F10X-中文参考手册》62页)。PCLK2属于高速总线时钟,片上高速外设就挂载在这条总线上,例如:全部的GPIO、USART1、SPI1等。我们这里设置为1分频,即PCLK2=HCLK=72MHz。
  1. APB1总线时钟PCLK1
  • APB1总线时钟PCLK1由HCLK经APB1预分频器得到,分频因子可以是[1,2,4,8,16],具体由时钟配置寄存器(RCC_CFGR)的位10:8设置,具体如下图所示(《STM32F10X-中文参考手册》63页)。PCLK1属于低速的总线时钟,最高为36MHz,片上低速的外设就挂载在这条总线上,例如:USART2/3/45、SPI2/3、I2C1/2等。我们这里设置为2分频,即PCLK1=HCLK/2=26MHz。
  1. USB时钟
  • USB时钟是由PLLCLK经过USB预分频器得到,分频因子可以是[1,1.5],具体由时钟配置寄存器(RCC_CFGR)的位22设置,具体如下图所示(《STM32F10X-中文参考手册》63页)。USB最高时钟是48MHz,根据分频因子反推PLLCLK只能是48MHz或72MHz。一般设置PLLCLK=72MHz,USBCLK=48MHz。【注意:USB对视中要求比较高,所以PLLCLK只能由HSE倍频得到,不能使用HSI倍频】
  1. Cortex系统时钟
  • Cortex系统时钟由HCLK8分频得到,等于9MHz,用来驱动内核的系统定时器SysTick。SysTick一般用于操作系统的时钟节拍,也可以用作普通的定时。
  1. ADC时钟
  • ADC时钟由PCLK2经过ADC预分频器得到,分频因子可以是[2,4,6,8],具体由时钟配置寄存器(RCC_CFGR)的位15:14设置,具体如下图所示(《STM32F10X-中文参考手册》62页)。ADC时钟最高只能是14MHz
  1. RTC时钟
  • RTC时钟的输入时钟有三个选择:HSE/128、LSE(32.768KHz)、LSI。具体选用哪个时钟由备份域控制寄存器 (RCC_BDCR)位9:8设置,具体如下图所示(《STM32F10X-中文参考手册》74页)。
  1. 独立看门狗时钟
  • 独立看门狗时钟由LSI提供,且只能由LSI提供,LSI是低速的内部时钟信号,频率为30~60KHz,一般取40KHz.
  1. MCO时钟输出
  • MCO,Microcontroller clock output,微控制器时钟输出引脚,在STM32F1系列中由PA8复用得到,主要作用是对外提供时钟,相当于一个有源晶振。MCO的时钟源有4个选择:PLLCLK/2、HSI、HSE、SYSCLK,具体由时钟配置寄存器(RCC_CFGR)的位26:24设置,具体如下图所示(《STM32F10X-中文参考手册》62页)。
相关推荐
木子单片机2 分钟前
基于51单片机温度上下限报警设计 数码管显示
stm32·单片机·嵌入式硬件·51单片机·keil
森利威尔电子-1 小时前
森利威尔SL3180 替换LTC3639 150V降压恒压芯片 3A峰值电流能力转换效率高 静态电流低
单片机·嵌入式硬件·集成电路·芯片·电源芯片
yugi9878382 小时前
基于51单片机的篮球计分器设计
单片机·嵌入式硬件·51单片机
zmj3203243 小时前
单片机内存在C 语言编译后的 “逻辑分区”
c语言·单片机·内存分区
魈学习ing4 小时前
IO口无法外部上拉到3.3V以上,或被钳位到3.8V左右
stm32
小柯博客4 小时前
STM32MP2 Secure Boot实战
stm32·单片机·嵌入式硬件
Ww.xh4 小时前
STM32调用AI接口完整教程
stm32·单片机·嵌入式硬件
LCG元5 小时前
STM32实战:基于STM32F407的LWIP以太网通信(TCP Server)
stm32·嵌入式硬件·tcp/ip
Wave8455 小时前
嵌入式底层核心架构详解 (Cortex-M3)
stm32·架构
渡己之道5 小时前
笔记-lvgl移植到stm32f407
c语言·笔记·stm32