时钟是微处理器的驱动力,类似人的心脏,只有不停地跳动系统才能正常运行。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可以修正,以排除制造、温度和干扰的影响。
至此系统的时钟就搞定了,以后使用某个外设前,只需要使能对应的时钟即可。
!!!:不同的处理器其细节可能会有些许差别,具体的情况还需要查阅参考手册。
-
振荡器
+关注
关注
28文章
3832浏览量
139074 -
STM32
+关注
关注
2270文章
10900浏览量
355915 -
微处理器
+关注
关注
11文章
2262浏览量
82441 -
时钟
+关注
关注
10文章
1733浏览量
131474 -
STM32F030
+关注
关注
1文章
33浏览量
6659
发布评论请先 登录
相关推荐
评论