时钟树简介
在STM32芯片内部,有很多片上外设,每个片上外设负责执行一定的功能。而片上外设本质是时序电路,让其工作必须提供时钟,且不同片上外设所需时钟频率不同。
因此需要再STM32芯片内部去产生各种频率的时钟信号,并且最终把这些时钟信号分配给每一个片上外设。此功能通过时钟系统(时钟树)来完成,如下图所示:
将时钟系统画成一棵树来表示,以大树为例:在树根的位置(HSL、HSE)是时钟的来源,然后通过一些复杂的电路对时钟进行一些运算(倍频、分频)和加工,得到三个不同的频率信号,分配给三路片上外设。
由上图可知,对于STM32芯片内部大部分片上外设都是通过大树获取时钟,而右边的小树只给两个模块(RTC实时时钟、IWDG看门狗)去提供时钟。
计数器与分频
我们通过计数器来实现分频,对于计数器,它由三部分组成:2个寄存器,1个比较器。
对于寄存器来说,一个用于设置计数器的计数周期,另一个用于记录当前的计数值(从0开始计数,晶振每来一个脉冲,数值就加一,直到与计数周期相等,再重新置0);当计数周期与计数值相等时,比较器向外输出一个脉冲,从而实现分频的作用。
我们可以设置计数周期来设置分频系数