Bootstrap

系统时钟是怎么来的?

系统时钟:

       STM32F407的系统时钟源是168MHZ,但你知道这个具体是怎么来的吗?下文我将讲解相关的知识。

       STM32通常都有外部高速时钟(HSE)外部低速时钟源(LSE)内部高速时钟(HSI)内部低速时钟(LSI)四个时钟,而一般用于驱动系统时钟的只用外部高速时钟(HSE),内部高速时钟(HSI),还有上面没讲到的主PLL时钟。

          以STM32F407为例,HSE时钟频率为8~25MHZ,HSI时钟频率为16MHZ,而STM32F407的系统时钟源是168MHZ,这两个时钟源频率对比系统时钟来说有些太低了。那我们是如何解决的呢?STM32电路里会通过倍频电路来将时钟源频率进行倍频来达到168MHZ的频率。

        在电路里HSE时钟,HSI时钟都会接到选择寄存器上,这个选择寄存器的作用是选择时钟源作为系统时钟。且HSE时钟,HSI时钟都会接出一条线来连接PLL锁相环电路,也就是倍频电路,它们经过分频(/m),倍频(*n),在分频(/p)的过程来达到达到提升时钟频率的效果。这个提升之后的时钟就是主PLL时钟。(我们通常只会用HSE时钟来进行倍频,因为HSI时钟是振荡器电路,其时钟不够稳定)一般情况下都会采用主PLL时钟来驱动系统时钟。时钟图如下:

      既然一般使用主PLL时钟来驱动系统时钟,那为什么还要其他时钟也可以驱动系统时钟呢?因为STM32是比较讲究功耗的,当设备不需要那么高的性能的时候,我们可以去使用其他时钟来驱动系统时钟,这样可以降低功耗,增强续航功能。

     最后还有一个小点,时钟总线会分出APB1时钟,APB2时钟,使用定时器是要看清楚当前定时器是属于哪个时钟,不同的时钟其频率也不一样,还有要注意的是如果其所属的时钟的时钟频率比系统时钟小,那么定时器的时钟频率就是其所属时钟的两倍。

        

;