第15章 RCC—使用HSE/HSI配置时钟

本文详细介绍了STM32F7的RCC(复位和时钟控制器)在配置系统时钟过程中的作用,包括时钟树的结构、配置步骤以及库函数的使用。通过HSE和HSI设置系统时钟,如HSE通过PLL倍频到216MHz,解释了PLL的工作原理和参数设置。此外,还涉及了其他重要时钟源如RTC、独立看门狗、I2S、USB PHY和MCO时钟输出。最后,提供了实验指导,包括硬件和软件设计,以及如何通过调整系统时钟影响软件延时效果。
摘要由CSDN通过智能技术生成

本章参考资料:《STM32F7xx参考手册》RCC章节。

学习本章时,配合《STM32F7xx参考手册》RCC章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。

RCC reset clock control  复位和时钟控制器。本章我们主要讲解时钟部分,特别是要着重理解时钟树,理解了时钟树,F767的一切时钟的来龙去脉都会了如指掌。

15.1  RCC主要作用—时钟部分

设置系统时钟SYSCLK、设置AHB分频因子(决定HCLK等于多少)设置APB2分频因子(决定PCLK2等于多少)、设置APB1分频因子(决定PCLK1等于多少)、设置各个外设的分频因子;控制AHB、APB2和APB1这三条总线时钟的开启、控制每个外设的时钟的开启。对于SYSCLK、HCLK、PCLK2、PCLK1这四个时钟的配置一般是:HCLK = SYSCLK=PLLCLK = 216 MHzPCLK1=HCLK/2 = 108 MHzPCLK1=HCLK/4 = 54 MHz。这个时钟配置也是库函数的标准配置,我们用的最多的就是这个。

15.2  RCC框图剖析—时钟树

时钟树单纯讲理论的话会比较枯燥,如果选取一条主线,并辅以代码,先主后次讲解的话会很容易,而且记忆还更深刻。这里以配置系统时钟函数SystemClock_Config () 的编写流程来讲解时钟树。该函数的功能是利用外部晶振HSE=25 MHz把时钟倍频设置为:HCLK = SYSCLK=PLLCLK = 216 MHzPCLK1=HCLK/2 =108 MHzPCLK1=HCLK/4 = 54 MHz下面我们就以这个代码的流程为主线来分析时钟树,代码流程在时钟树中以数字的大小顺序标识。

 

15-1 STM32F767时钟树1

 

15-2 STM32F767时钟树2

15.2.1  系统时钟
1. ①HSE高速外部时钟信号

HSE是高速的外部时钟信号,可以由有源晶振或者无源晶振提供,频率从4-26 MHz不等。当使用有源晶振时,时钟从OSC_IN引脚进入,OSC_OUT引脚悬空为高阻态,当选用无源晶振时,时钟从OSC_IN进入,OSC_OUT输出,并且要配谐振电容。HSE我们使用25 MHz的无源晶振。如果我们使用HSE或者HSE经过PLL倍频之后的时钟作为系统时钟SYSCLK,当HSE故障时候,不仅HSE会被关闭,PLL也会被关闭,此时高速的内部时钟时钟信号HSI会作为备用的系统时钟,直到HSE恢复正常,HSI=16 MHz

2. ②锁相环PLL

PLL的主要作用是对时钟进行倍频,然后把时钟输出到各个功能部件。PLL有三个,分别是主PLLPLLSAIPLLI2S,他们均由HSE或者HSI提供时钟输入信号。

PLL有两路的时钟输出,第一个输出时钟PLLCLK用于系统时钟,F767里面最高是216 MHz,第二个输出用于USB OTG FS的时钟(48 MHz)、RNGSDMMC时钟(<=48 MHz)。PLLI2S用于生成精确时钟,给I2SSAISPDIFRX提供时钟。PLLSAISAILCD_TFT提供时钟,同时也可以产生PLLSAI48CLK时钟用于USB OTG FS的时钟(48 MHz)、RNGSDMMC时钟。

HSE或者HSI经过PLL时钟输入分频因子M2~63)分频后,成为VCO的时钟输入,VCO的时钟必须在1~2 MHz之间,我们选择HSE=25 MHz作为PLL的时钟输入,M设置为25,那么VCO输入时钟就等于1 MHz

VCO输入时钟经过VCO倍频因子N倍频之后,成为VCO时钟输出,VCO时钟必须在192~432 MHz之间。我们配置N432,则VCO的输出时钟等于432 MHz

VCO输出时钟之后有三个分频因子:PLLCLK分频因子pUSB OTG FS/RNG/SDMMC时钟分频因子Q,分频因子RF769才有,F767没有)产生DSI时钟驱动屏幕。p可以取值2468,我们配置为2,则得到PLLCLK=216 MHzQ可以取值4~15,但是USB OTG FS必须使用48MQ=VCO输出时钟432/48=9。有关PLL的配置有一个专门的RCC PLL配置寄存器RCC_PLLCFGR,具体描述看手册即可。

 PLL的时钟配置经过,稍微整理下可由如下公式表达:

VCOCLK_IN = PLLCLK_IN / M  = HSE / 25 = 1 MHz

VCOCLK_OUT = VCOCLK_IN * N = 1M * 432 = 432 MHz

PLLCLK_OUT=VCOCLK_OUT/P=432/2=216 MHz

USBCLK = VCOCLK_OUT/Q=432/9=48

3. ③系统时钟SYSCLK

系统时钟来源可以是:HSIPLLCLKHSE,具体的时钟配置寄存器RCC_CFGRSW位配置。我们这里设置系统时钟:SYSCLK = PLLCLK = 216 MHz如果系统时钟是由HSE经过PLL倍频之后的PLLCLK得到,当HSE出现故障的时候,系统时钟会切换为HSI=16M,直到HSE恢复正常为止。

4. ④AHB总线时钟HCLK

系统时钟SYSCLK经过AHB预分频器分频之后得到时钟叫APB总线时钟,即HCLK,分频因子可以是:[124,8,16,64,128,256,512],具体的由时钟配置寄存器RCC_CFGR的HPRE设置。片上大部分外设的时钟都是经过HCLK分频得到,至于AHB总线上的外设的时钟设置为多少,得等到我们使用该外设的时候才设置,我们这里只需粗线条的设置好APB的时钟即可我们这里设置为1分频,即HCLK=SYSCLK=216 MHz

5. ⑤APB1总线时钟HCLK1

APB1总线时钟PCLK1HCLK经过低速APB预分频器得到,分频因子可以是:       [124816],具体由时钟配置寄存器RCC_CFGRPPRE1位设置HCLK1属于低速的总线时钟,最高为54 MHz,片上低速的外设就挂载到这条总线上,比如LPTIMUSART2/3/4/5/7/8、<

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值