您的位置 首页 > 数码极客

stm32如何读取系统时钟

时钟是微处理器的驱动力,类似人的心脏,只有不停地跳动系统才能正常运行。Stm32不同系列的时钟基本结构类似,就是外设有些差别。这里以stm32f030系列为例来介绍。

在参考手册中,时钟树如下所示:

图中红色块表示时钟源,这里一共有5个时钟源。

1、8M HSI RC,这是芯片内部的RC时钟

2、4-32M HSE OSC,这是外部时钟,可以输入外部时钟或者晶振,精度高

3、32.7689k LSE OSC,这是RTC外部晶振时钟

4、40K LSI RC,这是内部低速RC振荡器时钟

5、14M HSI14RC,这是专门给ADC用的内部14M RC晶振

根据自己的需求和硬件设计,选择打开对应的时钟源,不用的就不要打开,可以减少功耗。

紫色线表示Flash的时钟,可以看到它的时钟源是内部的8M RC振荡器,从这里可以推测内部这个8M的时钟基本在一直工作,因为程序运行时需要不断地访问flash。

实际在系统复位后,会默认使用这个内部的8M RC时钟,而想要关掉它必须保证没有任何设备直接或者间接使用它。

中间红绿蓝三条通路是系统时钟的三种可选项。可以直接使用内部的8M RC时钟,可以直接使用外部HSE OSC时钟,或者通过PLL倍频后的时钟。

走PLL那条路需要:

1、 时钟源分频

2、 选择PLL时钟源

3、 PLL倍频

4、 选择PLL作为SYSCLK

只有通过PLL才能达到最高的工作频率。

黄色块是AHB分频,青色块是APB分频,这俩上接了很多外设。

要访问这些外设的寄存器,首先必须打开对应的时钟。APB分成了两组,需要在对应的寄存器中进行配置。

实际写代码的时候,使能一个时钟以后要等待其稳定,每个时钟源都有专门的寄存器位指示是否ready。另外,HSI 8M和HSI14M可以修正,以排除制造、温度和干扰的影响。

至此系统的时钟就搞定了,以后使用某个外设前,只需要使能对应的时钟即可。

!!!:不同的处理器其细节可能会有些许差别,具体的情况还需要查阅参考手册。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“stm32如何读取系统时钟”边界阅读