关于STM32的时钟学习

(注:此为乐某学习记录,若有出错的地方欢迎各位指出!)

前言

本人使用的开发板的芯片是STM32H743XIH6,所以时钟也是根据此芯片来介绍。

一、什么是时钟

时钟是一个具有周期性的脉冲信号,相当于人类的心脏。如果没有脉冲,就像人类没有心跳一样,是时钟信号推动了芯片的运行。那么,芯片运行的速度,也就跟时钟的频率相关。举个例子,当人运动的时候,如果运动的强度越大,那么就心跳就会越快,以推动血液的流通。芯片的外设也会根据时钟的每个时钟节拍来工作。当然,如果我们使用较高的时钟频率,就可以工作的越快,但是相应的功耗也就会越高。就像白天运动之后,晚上就会累得不行...

二、时钟树(时钟系统)

一个芯片本身就是非常复杂的,有各种各样的外设。而任何一个外设想要使用的话,都需要开启对应的时钟通道,让时钟脉冲接入外设。而这些外设,并不是每一个的时钟频率都是跟系统的时钟频率一样高,所以为了兼容不同的外设,就有了时钟树(时钟系统)。具有了时钟树(时钟系统),就能够适应不同的场合,能够对不同的外设进行时钟的开启和关闭,也就能够控制电路的功耗。

三、系统时钟的选择

先看到参考手册的时钟介绍,其中有6个时钟源:HSE、LSE、HSI、HSI48、LSI、CSI。我们要学会的是,根据参考手册提供时钟框图,了解不同的时钟源可以作用在哪些地方。这样,我们就可以根据自己想要的效果,对时钟进行相应的设置。

1.HSE(外部高速时钟:4 MHz 到 48 MHz):

参考手册上对HSE的时钟来源说明:

由下图可知:

(1)可直接使用与系统时钟

(2)可经过PLL倍频之后使用与系统时钟

(3)可驱动至MCO1和MCO2做时钟输出

2.LSE(外部低速时钟:32.768Khz):

参考手册上对HSE的时钟来源说明:

由下图可知:

(1)外部低速时钟仅用于实时时钟(RTC)、自动唤醒(AWU)和时钟安全系统(CSS)。

(2)可驱动之MCO1做时钟输出

3.HSI(内部高速时钟:8M、16M、32M、64M)

参考手册上对HSI的时钟来源说明:

由下图可知:

(1)可直接使用与系统时钟

(2)可经过PLL倍频之后使用与系统时钟

(3)可驱动至MCO1和MCO2做时钟输出

4.HSI48(内部48M时钟)

参考手册上对HSI48的时钟来源说明:

由下图可知:

(1)可直接使用到外设

(2)可驱动至MCO1做时钟输出

5.LSI(内部低速时钟:32K)

参考手册上对LSI的时钟来源说明:

由下图可知:

(1)使用与独立看门狗(IWDG)、实时时钟(RTC)、自动唤醒(AWU)

(2)可驱动至MCO2做时钟输出

(3)可直接接入外设使用

6.CSI(内部低功耗时钟:4M)

参考手册上对CSI的时钟来源说明:

由下图可知:

(1)可直接使用到外设

(2)可驱动至MCO2做时钟输出

四、PLL锁相环(输入1-16Mhz)

简要的描述为:将时钟频率进行翻倍的操作,假如我们目前的最高时钟只有64M,但是我们想要320M的频率,那么就需要使用到PLL,PLL是提高系统时钟的必要条件。但是,当我们看到时钟框图的PLL部分,实际上只有PLL1可以用在系统时钟上。

五、时钟安全系统CSS

在外部时钟发生故障时,CSS会进行一些操作,来做出一些故障标志,或者切换时钟。在HSE故障的情况下,会自动切换回HSI。在LSE故障的情况下,就不会对RTC提供时钟源。这两种情况下,都可以产生中断,以保证MCU会进行救援工作。

六、时钟输出生成MCO1和MCO2

此MCU有两个引脚可用作时钟输出到其他的设备,可以分别选择一个时钟源,也可以用预分配器输出自己想要的时钟频率,但是不能够超过最大的引脚输出速度。

七、时钟通道

我们已经对时钟有了基本的了解,那要怎么去知道对应的外设怎么开启时钟呢?我们需要打开对应芯片的数据手册,而我们不需要去网上下载,只需要我们的Keil下载了对应的芯片包,并创建了一个工程即可。下面就是我们打开数据手册的位置。

我们翻到类似下面的这张图,就可以看到上面有APB、AHB这些字眼,这些就是我们外设的通道了。

例如我们想要开启GPIO的时钟,我们就要知道,AHB4就是GPIO的 时钟通道,我们就要去想办法找到开启方法。

八、个人总结

学到这里最大的感受就是,一定要会看数据手册和参考手册,不然很多都是一知半解的,还有一个就是要会看框图,后面学到的其他外设,其实有对应的框图的。这一篇主要只是介绍了不同的时钟源,以及简单看了一下框图,我们就知道了每个时钟源可以作用到哪里。

九、参考文章

https://blog.csdn.net/k666499436/article/details/124111203?spm=1001.2014.3001.5506

https://blog.csdn.net/as480133937/article/details/98845509?spm=1001.2014.3001.5506

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值