STM32的时钟系统与时钟树的配置

STM32的时钟系统是其微控制器(MCU)的核心组成部分,负责为CPU、外设和存储器等模块提供精确的时序信号。其设计灵活且复杂,通过多级时钟树(Clock Tree)实现时钟源的选择、分频和分配。以下是详细介绍:

一、STM32时钟系统的核心概念

  1. 时钟源(Clock Source)
    STM32提供多种时钟源,通常包括:
    • HSI(High-Speed Internal Oscillator):内部高速RC振荡器,频率通常为8MHz(部分型号为16MHz),启动快但精度低(±1%~2%)。
    • HSE(High-Speed External Oscillator):外部高速晶振,频率范围广(4~26MHz,部分型号支持更高),精度高(±0.1%~0.01%)。
    • LSI(Low-Speed Internal Oscillator):内部低速RC振荡器,频率约32kHz,用于独立看门狗(IWDG)或RTC备用时钟。
    • LSE(Low-Speed External Oscillator):外部低速晶振,频率通常为32.768kHz,专为RTC(实时时钟)设计,精度高。
    • PLL(Phase-Locked Loop):锁相环,可将输入时钟倍频(如将HSE的8MHz倍频至72MHz),提供更高频率的主时钟。
  2. 时钟树(Clock Tree)
    STM32的时钟信号通过多级分频和选择器分配到不同模块,形成树状结构。时钟树的主要功能包括:
    • 时钟源选择:通过寄存器配置选择HSI、HSE或PLL作为系统时钟。
    • 分频控制:对时钟信号进行预分频(Prescaler),以适应不同外设的频率需求。
    • 时钟分配:将分频后的时钟分配到CPU、APB总线、外设等模块。

二、STM32时钟树的关键路径

以STM32F1系列为例,时钟树的主要路径如下:

  1. 系统时钟(SYSCLK)
    • 来源:HSI、HSE或PLL。
    • 作用:为CPU核心、AHB总线(高速总线)和内存提供时钟。
    • 配置:通过RCC_CFGR寄存器的SW位选择时钟源。
  2. AHB总线时钟(HCLK)
    • 来源:SYSCLK经过AHB预分频器(AHB Prescaler)分频。
    • 作用:驱动AHB总线上的外设(如DMA、GPIO)和APB预分频器。
    • 分频系数:通过RCC_CFGR寄存器的HPRE位配置(1~512分频)。
  3. APB总线时钟(PCLK1/PCLK2)
    • 来源:HCLK经过APB预分频器分频。
    • 作用
      • PCLK1:驱动低速外设(如USART2、TIM2~TIM7)。
      • PCLK2:驱动高速外设(如USART1、TIM1、ADC)。
    • 分频系数:通过RCC_CFGR寄存器的PPRE1PPRE2位配置(1~16分频)。
  4. 外设时钟
    • 每个外设通过独立的时钟使能位(如RCC_APB2ENR中的USART1EN)控制是否启用时钟。
    • 外设实际工作频率可能经过二次分频(如USART的波特率分频)。
  5. PLL时钟
    • 输入源:HSI/2或HSE(可配置是否经过分频)。
    • 倍频系数:通过RCC_CFGR寄存器的PLLMUL位配置(2~16倍频)。
    • 输出:PLLCLK可作为SYSCLK或USB、RTC等专用时钟源。

三、先把“时钟”想象成“城市供水系统”

  • 水源(振荡器) → 水库/水井

  • 水管网(时钟树) → 主管→支管→入户

  • 水表(预分频器) → 控制每户水压

  • 用水设备(CPU、外设) → 厨房、浴室、花园……

STM32 的时钟树就是一套多级“供水系统”:
先选水源 → 经过开关/阀门(Mux) → 加压站(PLL) → 各级减压阀(Prescaler) → 最终送到每家每户。


四、图片里出现的“水源”逐个讲解

名字频率类型作用比喻
HSI RC8 MHz内部 RC 振荡器上电默认水源,省晶振自家院子里的手压井
HSE4-16 MHz(常用 8 MHz)外部晶振/时钟精度高,可倍频到 72 MHz城市自来水厂
LSI RC40 kHz低速内部 RC独立看门狗 IWDG、RTC 低功耗计时备用小水桶
LSE32.768 kHz32.768 kHz 外部晶振RTC 精准日历时钟标准石英钟
PLLCLK≤72 MHzPLL 倍频输出把 HSI/HSE 放大,给 CPU 和高速外设加压泵站

五、时钟树的流向(对照图片箭头)

  1. SYSCLK(总水源)
    HSI / HSE / PLLCLK 三选一决定,最大 72 MHz。
    图中“SYSCLK (MHz)”就是最终给 CPU 喝的“主水管”。

  2. HCLK(主管道)
    SYSCLK → AHB Prescaler(1、2、4…512 分频)→ HCLK
    给 AHB 总线、CPU 核心、内存、DMA 使用。
    图中“HCLK (MHz)”就是这条主管的水压。

  3. PCLK1 / PCLK2(两条支管)

    • HCLK → APB1 PrescalerPCLK1(≤36 MHz)
      挂在 APB1 的外设:USART2/3、I²C1/2、SPI2、TIM2~4…

    • HCLK → APB2 PrescalerPCLK2(≤72 MHz)
      挂在 APB2 的外设:GPIO、USART1、SPI1、TIM1、ADC1/2…
      图中 APB1、APB2 后面分别标注了“8 MHz、72 MHz max”。

  4. 专用小水管

    • ADC 时钟:PCLK2 → ADC Prescaler(2/4/6/8)→ 4~18 MHz

    • USB 时钟:PLL 直接 48 MHz 分支(图上 USB (MHz) 48)

    • RTC 时钟:LSE(32.768 kHz) / LSI(40 kHz) / HSE/128 三选一,图上“RTC Clock Mux”

    • 独立看门狗 IWDG:固定 LSI 40 kHz

    • SysTick:可以走 HCLK 或 HCLK/8,给操作系统节拍用。


六、把数字换成“水压值”(一个常见配置举例)

节点实际计算结果
HSE8 MHz 晶振8 MHz
PLL8 MHz × 972 MHz
SYSCLK选 PLL72 MHz
HCLKAHB 不分频72 MHz
PCLK172 / 236 MHz(APB1 最大)
PCLK272 / 172 MHz(APB2 最大)
ADC72 / 612 MHz
USBPLL / 1.548 MHz(固定)
RTC选 LSE32.768 kHz

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96009.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NV 工具metrics分析(ncu, nsys/torch profiler)

以下分析都以A100硬件架构为例; Theoretical Max Active Warps per SM: 64 Register number: 512 (规定每个thread不能超过256) Theoretical Active Warps per SM [warp]:512//registers_per_thread*4, which defines theoretical active warp occupancy Waves P…

[CISCN2019 总决赛 Day2 Web1]Easyweb

登录界面可以看到随机切换的图片。从页面源码中可以看到<div class"avtar"><img src"image.php?id3" width"200" height"200"/></div>&#xff0c;图片文件的请求地址&#xff0c;并且有传参id。web应用中像这种动…

第 3 讲:KAFKA生产者(Producer)详解

这是一篇既照顾入门也能给高级工程师提供落地经验的实战笔记。0. TL;DR&#xff08;先上结论&#xff09; 想稳&#xff1a;acksall 合理 retries&#xff1b;需要“分区内不重不丢”→ 再加 enable.idempotencetrue 且 max.in.flight<5。想快&#xff1a;适度增大 batch.s…

微信小程序截屏与录屏功能详解

微信小程序提供了丰富的API支持截屏和录屏功能&#xff0c;适用于多种场景&#xff0c;如教育类应用的课程录制、游戏类应用的精彩瞬间分享、电商类应用的商品展示等。以下将详细介绍实现方法和应用案例。 截屏功能实现 截屏功能通过调用wx.canvasToTempFilePath或wx.captureSc…

React 中的 HOC 和 Hooks

写在前面 在函数式组件主导的 React 项目中&#xff0c;高阶组件&#xff08;HOC&#xff09;并非首选推荐&#xff0c;更建议优先使用 Hooks来实现复用逻辑。核心原因是 HOC 存在固有的设计缺陷&#xff0c;而 Hooks 能更优雅、简洁地解决相同问题&#xff0c;同时避免 HOC 的…

【 苍穹外卖 | Day2】

1. 相关视频 Day2的全部视频集数 2. 学习记录 2.1 对象属性拷贝 当DTO与实体类或者VO对象之间的一个装换的时候&#xff0c;如果通过new创建对象&#xff0c;然后调用set方法进行属性赋值&#xff0c;不够方便&#xff0c;代码不够简洁。当属性过多时候&#xff0c;代码就会…

焊接自动化测试平台图像处理分析-模型训练推理

1、使用技术栈&#xff1a;jdk17/springboot/python/opencv/yolov8 2、JAVA环境搭建 JDK17下载安装&#xff1a;wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 解压软件 tar -xf jdk-17.0.16_linux-x64_bin.tar.gz 配置全局变量 vim /etc/p…

【python实用小脚本-205】[HR揭秘]手工党逐行查Bug的终结者|Python版代码质量“CT机”加速器(建议收藏)

1. 场景故事 “作为HR&#xff0c;我曾用2小时逐行审阅50份Python简历项目&#xff0c;直到发现候选人的代码复杂度超标导致线上事故…” → 转折点&#xff1a;用麦凯布&#xff08;McCabe&#xff09;圈复杂度检测脚本&#xff0c;30秒扫描全仓库&#xff0c;现可100%拦截“高…

LeetCode - 1089. 复写零

题目 1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 思路 这道题我首先想到的是从前往后双指针&#xff0c;但是这样做会造成数据的覆盖&#xff0c;比如说下面的这个情况 所以解决的方法就是从后往前去复写&#xff0c;但是从后往前的话就要知道最后一个有效元素是…

c#中public类比博图

简单来说&#xff0c;**public 定义了“接口”或“引脚”**&#xff0c;就像你的FB块上的 Input, Output, InOut 管脚一样。它决定了外部的其他代码&#xff08;如另一个FB或OB1&#xff09;可以看到和操作这个块里的什么东西。让我用你最熟悉的博图概念来详细类比一下。---###…

K8s基于节点软亲和的高 CPU Pod 扩容与优先调度方案

场景与目标 集群节点&#xff1a;master&#xff08;4 核&#xff09;、node1&#xff08;16 核&#xff09;、node2&#xff08;16 核&#xff09;。目标&#xff1a;将一个高 CPU 消耗的工作负载横向扩展到 4 个实例&#xff0c;并通过**节点亲和性&#xff08;软亲和&#…

MySQL InnoDB 的锁机制

引言 锁是数据库管理并发访问的另一种核心机制&#xff0c;与 MVCC 相辅相成。本文将系统梳理 MySQL InnoDB 中锁的粒度、类型和工作原理&#xff0c;并深入探讨它如何与事务隔离级别配合&#xff0c;共同保障数据的一致性和完整性。 一、 锁的粒度&#xff1a;由粗到细 InnoD…

状态模式(State Pattern)——网络连接场景的 C++ 实战

一、为什么要用状态模式&#xff1f;在开发中&#xff0c;经常遇到“对象在不同状态下行为不同”的情况。最常见的写法是用一堆 if/else 或 switch 来判断状态&#xff0c;然后在不同分支里写逻辑。这样做有两个问题&#xff1a;状态增多后&#xff0c;条件分支会变得臃肿。修改…

使用csi-driver-nfs实现K8S动态供给

文章目录一、部署NFS二、k8s环境部署csi-nfs三、测试动态供给补充应用服务器IPnfs-server192.168.1.5k8s-master01192.168.1.1k8s-node01192.168.1.2k8s-node02192.168.1.3 一、部署NFS 1、在NFS服务端和k8s所有节点部署nfs-utils 因为客户端去挂载nfs服务端的共享目录时&…

【开题答辩全过程】以 基于ssm的房屋中介管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

MySQL主从复制之进阶延时同步、GTID复制、半同步复制完整实验流程

1.主从同步1.1主从同步原理是指将主库的DDL和DML操作通过二进制日志(binlog)传到从库服务器&#xff0c;然后在从库上对这些日志进行重新执行&#xff0c;从而使从库和主库数据保持一致1.2环境设置库名ip地址操作系统mysql版本主库msyql-master192.168.31.228rhel7.9源码安装my…

织信低代码:用更聪明的方式,把想法变成现实!

你有没有过这样的时刻&#xff1f;想亲手做一个应用&#xff0c;却因为“不会编码”而迟迟没有开始&#xff1b;或曾无奈地目睹公司里一个看似简单的需求&#xff0c;硬是耗费数月、投入大量人力反复开发……现在&#xff0c;有一类工具正在改变这一切。它叫低代码。而今天我们…

【序列晋升】28 云原生时代的消息驱动架构 Spring Cloud Stream的未来可能性

目录 一、Spring Cloud Stream是什么&#xff1f; 二、诞生背景与设计动机 2.1 微服务架构的挑战 2.2 Spring生态的发展 2.3 Spring Integration的演进 三、架构设计与核心组件 3.1 分层架构设计 3.2 核心组件详解 3.3 编程模型 四、解决的问题与优势 4.1 解决的核心…

内网后渗透攻击--linux系统(权限维持)

用途限制声明&#xff0c;本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具&#xff0c;严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果&#xff0c;作者及发布平台不承担任何责任。渗透测试涉及复杂技…

C++笔记之同步信号量、互斥信号量与PV操作再探(含软考题目)

C++笔记之同步信号量、互斥信号量与PV操作再探(含软考题目) code review! 参考笔记: 1.C++笔记之同步信号量、互斥信号量与PV操作再探(含软考题目) 2.C++笔记之信号量、互斥量与PV操作 参考链接 1.嵌入式基础知识-信号量,PV原语与前趋图 2.信号量、PV操作及软考高级试题解析…