本人之前其实也用STM32做过一些小东西,但因为时钟的初始化一般是直接在SystemInit时钟系统初始化函数里直接配置为72MHz,所以对于STM32的时钟框图并没有怎么理会,今天刚好有空就重新看了一下并写一篇博客记录一下吧,以免以后又忘了。

STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。   
①、HSI(High Speed Internal Clock signal)是高速内部时钟,RC振荡器,频率为8MHz,精度不高,受温度影响。 
②、HSE(High Speed External Clock signal)是高速外部时钟,为外接晶振提供的时钟,晶振频率范围为4MHz~16MHz,常用8MHz的外部晶振。
③、LSI(Low Speed Internal Clock signal)是低速内部时钟,RC振荡器,频率为40kHz,可配置为RTC的时钟来源,但RTC时钟对时钟精度要求较高,故较少用于RTC,常用于独立看门狗时钟。
④、LSE是低速外部时钟,接频率为32.768kHz的外部晶振,用于RTC时钟。
⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。  倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。我们常用8M的外部晶振的9倍频,即72MHz作为系统时钟(SYSCLK)。

如图,
红框1中的OSC_OUT和OSC_IN接外部8M晶振(范围为4到16MHz)作为HSE(外部高速时钟),通过PLLXTPRE位可控制选择器②是输出HSE还是HSE/2,选择器①通过PLLSRC位控制,用来选择是HSI/2还是选择器②的输出作为倍频锁相环(PLLMUL控制倍频的倍数)的输入,我们一般都是(系统默认)配置为8Mhz的HSE作为倍频器的输入并选择9倍频产生72MHz的时钟PLLCLK作为系统时钟(SYSCLK),系统时钟经AHB预分频器(默认分频系数为1)得到HCLK,可作为部分外设的时钟,如SDIO,FSMC等,再经APB1,APB2预分频器可得到PCLK1、PCLK2

PCLK1:APB1低速总线时钟,最高为36M。为APB1总线时钟的外设提供时钟。但又经过2倍频作为定时器2~7的时钟,所以定时器2~7即使是在APB1下,也为72M的时钟。

PCLK2:APB2高速总线时钟,最高为72M。为APB2总线时钟的外设(包含定时器1和8)提供时钟。

PCLK2经ADC预分频器(/2,4,6,8)作为ADCCLK(最大为14M),我们常选择6分频(72/6=12M)

(上图看看到挂载在APB1,2下的外设)

红框2表示RTC的时钟来源为:①HSE/128;②LSE;③LSI。我们通常选择LSE(频率为32.768KHz的外部晶振),而LSI精度较低,并不太适合RTC时钟,而常作为独立看门狗的时钟。

红框3表示STM32可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL 输出的2分频、HSI、HSE、或者系统时钟。

上面还漏了一点,关于CSS,CSS为时钟安全系统,在STM32参考手册6.2.7小节有提到,开发者可以通过CSS中断设置HSE故障后的系统时钟,比如HSI/2(4MHz)的16倍频,如果开发者未开启CSS中断或者在中断中没有进行相应
配置,则硬件默认使用HSI(8MHz)作为系统时钟。

另外关于如何配置以上所讲的时钟,可以看STM32参考手册6.3小节RCC寄存器描述。

STM32时钟树解析相关推荐

  1. 参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

    微控制器(处理器)的运行必须要依赖周期性的时钟脉冲来驱动--往往由一个外部晶体振荡器提供时钟输入为始,最终转换为多个外部设备的周期性运作为末,这种时钟"能量"扩散流动的路径,犹如大 ...

  2. STM32时钟树分析

    对于刚接触STM32的时钟树,对时钟树的理解,可以重点先思考两个问题: 1.时钟从哪里来:时钟源. 2.时钟怎么供给STM32的系统工作:时钟的流向(输入-->处理-->输出) 下面以ST ...

  3. STM32—时钟树(结合系统时钟函数理解)

    时钟树的概念: 我们可以把MCU的运行比作人体的运行一样,人最重要的是什么?是心跳! 心脏的周期性收缩将血液泵向身体各处.心脏对于人体好比时钟对于MCU,微控制器(MCU)的运行要靠周期性的时钟脉冲来 ...

  4. STM32时钟树学习笔记

    直接上时钟树 在学习STM32的时候时钟的配置是一直必不可少的过程,也许你用别人的代码很爽,但是真正的做项目还是使用自己建立的工程最靠谱. 上图为用的原子哥的一张时钟树的图片. 下面是经常用到的全局宏 ...

  5. esp32 rtc 时钟设置不对_STM32入门系列-STM32时钟系统,STM32时钟树

    时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行.时钟系统犹如人的心脏,一旦有问题整个系统就崩溃.我们知道STM32属于高级单片机,其内部有很多的外设,但不是 ...

  6. stm32时钟树_先学STM8,还是学STM32?

    有朋友问:我学习过51,接下来我是先学习STM8,还是STM32呢? 物联网STM32入门 - 直播课程 - 创客学院​www.makeru.com.cn 嵌入式开发直播课 - STM32 USART ...

  7. stm32时钟树_STM32中的时钟

    时序在数字电路中的作用,就像通信中用到的载波,载波并不起眼,但是很重要.时钟也一样,现象上只是某种频率波峰波谷跳动,一成不变.但是有了它,就像人类的历史有了时间轴一样,什么时候该干什么事才有了可能.程 ...

  8. 一文读懂STM32时钟树(时钟系统)(以STM32F767为例)

    STM32时钟系统 导读 时钟系统的构成 总结 导读 我在刚开始接触STM32/单片机的时候看到它的时钟系统/时钟树,都会感觉懵懵的,这是个啥?它想要告诉我哪方面的数据?特此一文记录一下学习心得. 时 ...

  9. STM32的时钟配置——时钟树解析

    此文章由于讲得较详细因此篇幅较长,请带着一点耐心去读,相信会有收获! 目录 STM32为什么要有复杂的时钟系统 详解STM32时钟系统 STM32有几个时钟源 关于时钟输出 软件配置时钟 STM32为 ...

最新文章

  1. 魔兽世界多玩服务器位置,选择服务器也有大学问?新手入坑《魔兽世界》该在哪里“扎根”...
  2. java使用ireport生成报表_JasperReport(3)——Java简单使用IReport生成的文件建立报表...
  3. (57)模拟线程切换
  4. (二)性能优化的指标和工具 (告别前端小白,成为大神的必经之路)
  5. bcc挖矿用什么_BCC对BTC挖矿有何影响?
  6. Ubuntu 重置MySQL密码
  7. 超级终端设置-基本配置(华为)
  8. Win10不能直接拖文件/Foxmail不能拖文件解决办法
  9. 农行总行携手趣链科技上线区块链涉农电商融资产品
  10. 九齐单片机NY8B062D项目开发总结
  11. 现代密码学概论|密码学基础--仿射密码实验C语言(文末附上C语言源代码)
  12. java udp发送速率_项目总结22:Java UDP Socket数据的发送和接收
  13. 用命令打开文件服务器资源管理器,Windows10使用命令参数打开文件资源管理器的方法...
  14. C语言_回文字符串的判断
  15. thread ‘main‘ panicked at ‘called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound
  16. 再谈中断机制(APIC)
  17. C4D的GPU渲染器Octane和Redshift的渲染对比
  18. Ty-网络编程(Socket)基础笔记
  19. pgsql实现json格式转换
  20. 如何在.config文件自定义配置节

热门文章

  1. Android PreferenceActivity 使用
  2. activemq安装与配置_ActiveMQ(消息队列)从入门到了解
  3. java web 保护_java web项目请求控制及简单漏洞防范
  4. Ubuntu下安装OpenSSH Server并在客户端远程连接Ubuntu
  5. C排序算法:(三)插入排序
  6. C语言中定义变量位置
  7. C++ 构建最小堆、最大堆
  8. 操作系统上机作业--使用系统调用实现mycat
  9. pygame只能编写游戏_游戏框架搭建
  10. tomcat没有错,但是还是一闪而过(端口被占用)