1. 什么是时钟?
时钟是单片机的脉搏,是系统工作的同步节拍。单片机上至CPU,下至总线外设,它们工作时序的配合,都需要一个同步的时钟信号来统一指挥。时钟信号是周期性的脉冲信号。
2. 时钟频率、时钟周期、机器周期
时钟频率:指的是处理器或其他数字电路每秒钟振荡的次数,单位是 赫兹(Hz),通常以 MHz(兆赫, Hz) 来表示。例如,时钟频率为 1GHz 的CPU,每秒钟振荡 10亿次。时钟频率直接决定了处理器执行指令的基本速度,但并不是唯一影响性能的因素。现代CPU采用流水线、并行计算、超标量架构等优化手段,使得即使在相同时钟频率下,不同架构的处理器性能也可能有很大差异。
时钟周期:是指CPU时钟信号的一个完整振荡周期,它是计算机执行指令的最基本时间单位。CPU的时钟周期由时钟频率(Clock Frequency)决定,例如,时钟频率为1GHz的CPU,其时钟周期为 1纳秒(ns),即 1÷1GHz=1ns。(被除数1是1s)
机器周期:是指CPU执行一条指令所需的基本时间单位,它是CPU执行指令的最小时间片段。通常,一个机器周期由多个时钟周期(Clock Cycle)组成,具体的数量取决于CPU的架构和设计。在早期的单片机(如8051)中,一个机器周期通常由12个时钟周期组成,而在现代高性能处理器中,机器周期可能会更短,并且不同指令的执行时间可能不同。
3. 什么是时钟树?
STM32有很多外设器件,每个器件的时钟信号不一样,所以要将一个固定的信号频率进行倍频/分频处理,达到每个外设需要的频率。时钟信号的分频就像树的分支一样,这就是时钟树。
4. STM32F1 时钟介绍
HSI(内部高速时钟): 时钟信号由内部RC震荡电路提供,时钟频率为8MHz,但是这个时钟频率会随着温度产生漂移,很不稳定,所以一般不使用此时钟信号。
LSI(内部低速时钟): 时钟信号由内部RC振荡电路提供,时钟频率一般为40KHz,这个信号一般用于独立看门狗时钟。
HSE(外部高速时钟): 时钟信号由外部晶振提供,时钟频率一般在4-16MHz,是经常会用到的时钟源。
LSE(外部低速时钟): 时钟信号由外部晶振提供,时钟频率一般为32.768KHz,这个信号一般用于RTC实时时钟。
时钟框架图
框图分析流程:
(1)外部低速时钟LSE,外接引脚OSC32_IN和OSC32_OUT就是接外部晶振的引脚,进来的频率是32.768KHZ进来后只有一个走向就是为RTC提供时钟。
(2) RTCCLK蓝色框的四选一数据选择器,一共有三个输入,一个来自最上方的HSE,中间经过了一个128的分频器。一个是LSE以及最下方的LSI时钟。也就是说看门狗智能由内部低速时钟LSI提供时钟,RTC可以由LSI、LSE、或者是HSE经过分频后来提供时钟,具体使用哪一个需要我们在代码里面配置。
(3) PLL锁相环中的数据选择器有两个输入,一个是内部高速时钟HSI经过2分频连接。另一个输入是外部高速时钟HSE经过1分频或2分频输出后连接。经过数据选择器后,进行倍频操作供给系统时钟。对于系统时钟一般选择HSE时钟经过PLL锁相环倍频后的时钟作为系统时钟。倍频系数可选范围:2~16。
注:一般在PLL锁相环中数据选择器中我们选择来自外部高速时钟HSE的时钟信号,因为HSI时钟信号很不稳定,容易受到环境的影响。
(4)对于系统时钟选择器,一共有四个输入。最上面为HSI时钟输入,中间为PLLCLK时钟输入,下面两个分别是HSE时钟直接输入,以及在HSE后加入CSS时钟安全检测标志后输入。