您的位置:首页 > 文旅 > 旅游 > STM32基础篇:RCC × 时钟

STM32基础篇:RCC × 时钟

2024/12/24 3:35:11 来源:https://blog.csdn.net/qq_74114817/article/details/140908696  浏览:    关键词: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的片上外设之一,负责控制芯片的复位以及对时钟树进行配置。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com