STM32基础篇:RCC × 时钟

时钟树简介

在STM32芯片内部,有很多片上外设,每个片上外设负责执行一定的功能。而片上外设本质是时序电路,让其工作必须提供时钟,且不同片上外设所需时钟频率不同。

因此需要再STM32芯片内部去产生各种频率的时钟信号,并且最终把这些时钟信号分配给每一个片上外设。此功能通过时钟系统(时钟树)来完成,如下图所示:

将时钟系统画成一棵树来表示,以大树为例:在树根的位置(HSL、HSE)是时钟的来源,然后通过一些复杂的电路对时钟进行一些运算(倍频、分频)和加工,得到三个不同的频率信号,分配给三路片上外设。

由上图可知,对于STM32芯片内部大部分片上外设都是通过大树获取时钟,而右边的小树只给两个模块(RTC实时时钟、IWDG看门狗)去提供时钟。


计数器与分频

我们通过计数器来实现分频,对于计数器,它由三部分组成:2个寄存器,1个比较器。

对于寄存器来说,一个用于设置计数器的计数周期,另一个用于记录当前的计数值(从0开始计数,晶振每来一个脉冲,数值就加一,直到与计数周期相等,再重新置0);当计数周期与计数值相等时,比较器向外输出一个脉冲,从而实现分频的作用。

我们可以设置计数周期来设置分频系数,假设计数周期是N,则分频系数便为N+1;


HSI、HSE、LSI、LSE

对于HSI、HSE、LSI、LSE,是芯片的时钟(脉冲信号)的来源,含义如下表格所示:

LSI  (Low Speed Internal)

LSE  (Low Speed External)

HSI  (High Speed Internal)

HSE  (High Speed External)

其中LSI、HSI位于芯片内部,其频率固定;而LSE、HSE位于芯片外部,需要外接(晶振),通常规定HSE为4~16MHz、LSE与LSI相同,为32.768KHz;

我们既可以使用内部时钟源来提供时钟,也可以使用外部时钟源。但相比较而言,外部时钟源精度更为准确。需要精准定时的话,必须使用外部时钟源,即晶振。


系统时钟来源

系统时钟SYSCLK有三种来源,如下图所示:

注意,SYSLCK最大频率为72MHz;

对于从锁相环PLL而言,其倍频系数为2~16。


总线时钟的产生

对于总线时钟:PCLK1、PCLK2、HCLK而言,都是由系统时钟SYSCLK经过逐级分频得到的。对于AHB、APB1、APB2分频器,其分频系数可通过编程控制,具体如下:

需要注意,对于HCLK、PCLK2来说,所允许的最高频率为72MHz; 对于PCLK1来说,所允许最高频率为36MHz。

时钟树的初始状态:

1、SYSCLK=HSI

2、分频器系数都是1;

3、SYSCLK、HCLK、PCLK1、PCLK2都为8MHz;

4、大部分片上外设的时钟处于关闭状态;

注意,在使用标准库编程时,时钟树初始状态并非如上所述。因为在执行main函数之前,会先执行启动文件里的Reset_Handler函数,该函数中包含了SystemInit函数,会将各时钟配置成最高频率

可在启动文件大概130行处找到对应函数,将里面的SystemInit函数注释掉。


RCC简介

RCC:Reset and Clock Control,即复位和时钟控制,是STM32的片上外设之一,负责控制芯片的复位以及对时钟树进行配置。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值