STM32学习 时钟树

在单片机中,时钟的概念非常重要,这次记录一下时钟树相关的知识。

STM32的时钟树是由多个时钟源和时钟分频组成的,为STM32芯片提供各种时钟信号。也就是说,在使用STM32的时候,所有的频率和时钟都是通过时钟树产生的。

那么既然提到时钟源,肯定要先说明来源,STM32的基础时钟源有4个HSI振荡器时钟 、HSE振荡器时钟 、LSI振荡器时钟 、LSE振荡器时钟。这是最底层的时钟来源。

HSI就是高速内部时钟,通过说明可以看到是由RC振荡器产生的8Mhz。

HSE就是高速外部时钟,通过说明可以看到是通过外部引入的,一般就是芯片上的石英晶振,通常也是8Mhz。

LSE就是低速外部时钟,通过说明可以看到是通过外部引入的,可以看到上面是32.768Khz,选用这个数值是它后面直接接入到RTC,因为RTC需要1hz,这个特殊的数值易于分频得到1hz。

LSI就是低速内部时钟,通过说明可以看到是由RC振荡器产生的40Khz。

在时钟源的后面,就是各个时钟源的去向,通过图来理解,不同时钟源的去向是不同的,框图里面的可以简单理解成多选一的数选器的功能,就是用来选定一个时钟来源的。

来看第一个框,可以看到SYSCLK的来源是在HSI,HSE,PLLCLK中选择一个,其中PLLCLK那个看起来很乱的东西就是分频和倍频;下面在HSE和其2分频中选一个通入到上面,再和HSI 的2分频进行选择,之后PLLMUL就是倍频,为什么要倍频,可以看到后面的SYSCLK最大是72Mhz,但是HSI和HSE最大也就是8Mhz,倍频就是把频率增加,可以看到PLLMU有多种选择,x2,x4最多是16倍倍频,具体使用哪一个需要我们在代码里面配置。

那么在来看第二个框就好理解了,RTC的时钟源可以由LSI、LSE、或者是HSE经过分频后来提供时钟,独立看门狗的时钟就是LSI了,具体使用哪一个需要我们在代码里面配置。

再来看后面的框图,可以看到AHB,AHB就是先进高性能总线,在AHB总线上有一条时钟线HCLK,这条时钟线就连接到DMA,内存,CPU等,其中系统时钟就是系统滴答时钟。

可以看到,各种外设并没有直接连接在AHB总线上,而是挂载在了APB1和APB2,APB就是先进外设总线,APB1和APB2桥连在了AHB总线总线上,所以APB1和APB2的时钟线也就是HCLK,APB1和APB2再通过各种分频处理之后连接到相应的外设,其中可以看到都有一个外设使能位,就是在函数里面配置的时钟初始化。

注意到HCLK和SYSCLK, 系统时钟SYSCLK最大频率为72MHz,它是供STM32中绝大部分部件工作的时钟源。系统时钟可由PLL、HSI或者HSE提供输出,并且它通过AHB分频器分频后送给各模块使用,AHB分频器可选择1、2、4、8、16、64、128、256、512分频。

最下面这一部分就是各时钟源的输出,可以在外部使用示波器来查看其频率与设定的是否正确。

参考资料

【STM32】超清晰STM32时钟树动画讲解_哔哩哔哩_bilibili

嵌入式学习笔记——STM32的时钟树_stm32时钟树-CSDN博客

STM32中的几个时钟SysTick、FCLK、SYSCLK、HCLK - Darrick_Jan - 博客园 (cnblogs.com)

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-19 05:32:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-19 05:32:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-19 05:32:03       82 阅读
  4. Python语言-面向对象

    2024-06-19 05:32:03       91 阅读

热门阅读

  1. 个人关于Vue2组成的见解

    2024-06-19 05:32:03       33 阅读
  2. 向大家推荐一个好用的云服务器

    2024-06-19 05:32:03       35 阅读
  3. 汇编语言实验五、子程序和宏

    2024-06-19 05:32:03       34 阅读
  4. 【做一道算一道】零钱兑换

    2024-06-19 05:32:03       59 阅读
  5. 音频流采样器类的实现【6】

    2024-06-19 05:32:03       35 阅读
  6. Shellcode详解

    2024-06-19 05:32:03       56 阅读
  7. 在JPA项目启动时新增MySQL字段

    2024-06-19 05:32:03       30 阅读
  8. 访问者模式

    2024-06-19 05:32:03       36 阅读
  9. 使用ReentrantLock和ThreadPoolExecutor模拟抢课

    2024-06-19 05:32:03       53 阅读
  10. 最大子段和问题

    2024-06-19 05:32:03       27 阅读