玩转STM32(11)CPU的心跳历程

前面说CPU怎么样才有脉搏,也就是给CPU装了一个心脏,这样这个由泥沙组成的CPU才能开始拥有像生命的力量了。在前文后面,提到了使用25MHz晶振作为外部的频率来源,但是我们的目标是让CPU工作在168MHz的频率,这样才可以让CPU工作得更快,运行代码更快,效率更高。当然,如果你想让CPU工作在25MHz也是可以的,只是有点不值得,用这么贵的硬件,运行这么低的频率。要想快,就得提高CPU运行的频率,那么怎么样才可以把25MHz的频率转换为168MHz的频率呢?可以看到168M是比25M频率高很多,显然要使用到倍频电路,也要使用到分频电路。比如把25M按25分频系数来分频,那么得到频率就是1M,然后再使用倍频电路,比如使用336作为倍频系数,然后再进行2分频,就可以得到168M的频率。

 

你也许认为搞到168M的频率,就已经大功告成了,不再用做别的事情了,如果这是STC51单片机,就算完事了。可见,STC51单片机确实是比STM32要简单一些,当然它的功能也差一些。如果是简单的应用,使用STC51还是非常合适的,毕竟它简单,简单的产品才少出问题。如果是复杂的任务,要上STM32,必须要有点耐心,才能使用它。STM32为了既能高速运行,又能节能的应用,因此就在时钟的频率上作了很多设计。因为它是高速运行,也就是晶体管不断地开关,这样必然会导致消耗更多的电能。为了节省电能,STM32就对时钟频率分为两大类时钟,第一类是高速时钟,第二类是低速时钟。高速时钟就叫做High Speed Clock,主要使用在CPU的核心模块里。低速时钟用在实时时钟和看门狗上面,这样就可以让一部分电路运行在低频率区域。

 

在这里会遇到一个先有鸡还是先有蛋的问题,为了使用外部晶振,就得先要配置晶振的寄存器,但是没有晶振的配置,就没有办法运行CPU里的配置程序。为了解决这个问题,STM32在CPU内部预先内置了两个时钟,一个高速的RC时钟,一个低速的RC时钟。当CPU复位时,首先在内部的时钟下运行,这样就可以运行配置程序,配置程序再把外部晶振配置好,就可以使用外部晶振来工作了。这样也有另外一个好处,如果不需要外部晶振的需求时,也可以省掉这部分成本,同时也可以方便在新电路板时进行电路确认测试,比如布了一个新板,CPU不工作了,为了查找问题,就可以采用内部晶振来运行,查看是否晶振电路有问题。

 

可见STM32的时钟有四种选择可以组合:

HSI(High Speed Internal Clock)高速内部时钟,16MHz,复位时默认运行;HSE(High Speed External Clock)高速外部时钟,由外面的晶振决定,4到26MHz之间;LSI(Low Speed Internal Clock)低速内部时钟,32KHz,复位时默认运行;LSE(Low Speed External Clock)低速外部时钟,32.768KHz。

内部时钟树如下图:

到这里,就可以理解STM32内部四个时钟的作用了。

https://blog.csdn.net/caimouse/article/details/51749579

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值