嵌入式入门,继续点亮第一盏LED灯,在Stm32CubeMX这个图形界面,一共是需要配置2个地方,1是GPIO引脚,2是时钟
,上一篇文章已经将引脚PC13配置为输出引脚,这个引脚需要输出的是低电平
,这篇文章就是配置时钟,很多初学者很不理解为什么要配置时钟,时钟的作用是什么
,这样子理解,芯片相当于大脑,时钟就相当于心脏,我们电脑的CPU主频其实也就是时钟,在数字电路里面,时钟相当于节拍,数字电路是根据节拍进行数据处理的,我们平常使用的U盘,内部就有时钟,这个时钟坏了,U盘就工作不了了
stm32有内部时钟,和外部时钟,内部和外部时钟又可以分为低速和高速,所以stm32的时钟类型有4种,
1是HSI (高速内部时钟),2是HSE (高速外部时钟),3是LSI (低速内部时钟),4是LSE (低速外部时钟),那么作为初入门,只需要知道HSE (高速外部时钟)就可以,这个是最常用的,因为它的精度高,HSE时钟的提供者,是晶振,晶振是一种电子元件,它的频率通常是8MHz
,频率的单位是MHz, stm32的系统时钟的频率越高,stm32的处理速度就越快,
这个应该很好理解。
明白了stm32时钟基本的一些概念之后,就在stm32CubeMX配置时钟。
1. 配置时钟源
选中 Crystal/Ceramic Resonator (外部晶振)
接着点击 Clock Configuration 进行进一步的配置
2. 选中PLLCLK作为系统时钟
注意箭头指着的地方,系统时钟的选择有3个,HSI,HSE,PLLCLK,那么为什么不直接选HSE,因为PLLCLK可以配置频率。
3. 将HSE的频率配置为72MHz
先看红色箭头指着的地方,PLL就可以选择HSI,还是HSE,那么选择HSE,接着就是配置HSE的频率,stm32F103晶振提供的频率是8MHz,也就是HSE的输入频率是8MHz,现在通过PLL倍频系数,也就是绿色箭头指向,选择9这个倍频,那么HSE的输出频率就是8*9=72MHz,
注意的是, 最大频率不能超过72MHz
到这里,stm32系统时钟就设置完,时钟方式是HSE,时钟源头是外部晶振,频率是72MHz
4. 设置AHB高速总线时钟频率
这里有个概念,就是stm32总线,stm32的总线有2种,AHB 和 APB,这2个总线可以理解为相当于PC的南桥总线和北桥总线,南桥总线是连接键盘这些低速外设,北桥总线是连接显卡这些高速外设,同样的,AHB是系统总线,是高性能总线,是连接处理器,APB是连接周边外设,APB又分为APB1和APB2,APB1是低速总线,APB2是高速总线,它们分别连接的外设是不同的
明白了总线这个概念之后,下面就设置这3条总线 (AHB,APB1,APB2) 的时钟频率
先设置AHB时钟频率
看绿色箭头,叫做AHB预分频器,意思也就设置AHB的倍频,这里设置AHB的倍频是1,那么最终的AHB总线时钟频率是=系统时钟频率*AHB倍频,那么这里的HCLK就是AHB总线时钟频率,因为AHB倍频设为1,所以HCLK就等于系统时钟频率。
5. 设置APB1和APB2总线的时钟频率
看红色箭头,和AHB预分频器同样的,APB1和APB2也分别有,APB1预分频器,和APB2预分频器,都是设置APB1和APB2总线的倍频,以APB1为例,APB1的时钟频率 = AHB时钟频率 * APB1倍频,
这里就设置 APB1时钟频率是AHB时钟频率的1/2,APB2的时钟频率等于AHB时钟频率。
到这里,stm32CubeMX的时钟就配置好了,这里涉及的概念挺多的,时钟和总线是stm32的很重要的2个部分,