三、STM32时钟树系统及初始化

stm32的时钟不是很复杂,在CUBEMX里是可以直接图形化配置的,而且在启动文件的复位中断里进行了初始化

先讲一下时钟树

认识STM32的时钟管理方式后就要对其时钟树系统有一个大体的掌握,时钟树系统的结构如下,从图中可以知晓有多少时钟、时钟速度为多少、时钟如何分配等。图看起来很复杂,但我们只需要大体了解其运作流程即可。
在这里插入图片描述
各类时钟简括:

1.HSE时钟(高速外部时钟):来源为外部无源晶振,通常速度8M。由RCC_CR时钟控制寄存器中的16:HSEON控制。

2.HSI时钟(高速内部时钟):来源为芯片内部,大小为8M,当HSE故障时,系统时钟会自动切换到HSI,知道HSE启动成功,相当于HSE的替补。由RCC_CR时钟控制寄存器的位0:HSION控制。

3.PLLCLK(锁相环时钟):来源为HSI/2、HSE经过倍频所得。由CFGR(时钟配置寄存器)中PLLXTPRE、PLLMUL控制。

4.SYSCLK(系统时钟):来源为HSI、HSE、PLLCLK,最高速度为72M。
由CFGR中的SW控制。

5.HCLK(AHB高速总线时钟):来源由系统时钟分频得到,速度最高为72M。由CFGR中的HPRE控制。

6.PCLK1(APB1低总线时钟):来源为HCLK分频得到,速度最高为36M ,为APB1总线上的外设提供时钟。由RCC_CFGR时钟配置寄存器的PPRE1位控制。

7.PCLK2(APB2高总线时钟):来源为HCLK分频得到,速度最高为72M,为APB2总线上的外设提供时钟。由RCC_CFGR时钟配置寄存器的PPRE2位控制。

8.RTC时钟:来源为HSE_RTC(HSE分频得到)、LSE、LSI,为芯片内部的RTC外设提供时钟。由RCC备份域控制寄存器RCC_BDCR中RTCSEL控制。

9.MCO时钟输出 :来源为PLLCLK/2、HSE、HSI、SYSCLK,微控制器时钟输出引脚,由PA8复用所得。由CRGR中MCO控制。

再结合图示就很好理解了,可以看看CUBEMX里的图形化配置,挺直观的

在这里插入图片描述
其实调来调去就是那几个锁相环和分频器

再看程序

在标准库里面它是在SystemInit里初始化好了才进入main里面的
在这里插入图片描述
在这里插入图片描述
其实人家都给写好了,我们直接用就行。。。
更改这个.c文件前面的宏定义就行
在这里插入图片描述
如果要自己去折腾,可以调用stm32f10x_rcc.h(Hal库里也有类似的库),里面注释十分清楚(打开有道翻译科学上网没问题的)。超频什么的可以试试,不过单片机没什么太大意义。。。一般是为了追求低功耗降低频率。。。
写一个时钟初始化函数在main函数的最开始初始化就行。不过官方的rcc库做的不是很好个人感觉。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值