STM32之二:时钟树
目录
1. 时钟
2. STM3时钟源(哪些可以作为时钟信号)
2.1 HSE时钟
2.1.1 高速外部时钟信号(HSE)来源
2.1.2 HSE外部晶体电路配置
2.2 HSI时钟
2.3 PLL时钟
2.4 LSE时钟
2.5 LSI时钟
3. STM32时钟(哪些系统使用时钟)
3.1 系统(SYSCLK)时钟
3.2 RTC时钟
3.3 看门狗时钟
3.4 时钟输出MOC
4. STM32时钟树
4.1 AHB预分频器
5. STM32时钟配置
1. 时钟
STM32的时钟就是周期性的脉冲,50%占空比的方波、正弦波或三角波都可作为STM32的时钟信号。
2. STM3时钟源(哪些可以作为时钟信号)
| 时钟源 | 时钟范围 | 主要用途 | |
| HSE | 高速外部时钟 | 4~16MMHz | 1. 系统时钟 2. 128分频后输入RTC时钟 |
| HSI | 高速内部时钟 | 8MHz | 1. 备用时钟源 2. 2分频后作为PLL输入 |
| LSE | 低速外部时钟 | 32.768kHz | RTC实时时钟 |
| LSI | 低速内部时钟 | 40kHz | 1. 待机/停机模式下时钟 2.RTC、IDWG、AWU时钟 |
2.1 HSE时钟
2.1.1 高速外部时钟信号(HSE)来源
- HSE外部晶体/陶瓷谐振器(通常使用这种)
- HSE用户外部时钟
2.1.2 HSE外部晶体电路配置

注:1.时钟控制寄存器(RCC_CR)中HSERDY位被置位,表示高速外部振荡器稳定2.时钟控制寄存器(RCC_CR)中HSEON位表示开启或关闭HSE高速外部时钟
2.2 HSI时钟
| 来源 | 内部8MHz |
| 振荡器 | RC振荡器 |
| 作用 | 1. 直接作为系统时钟 2.2分频后作为PLL输入 3.如果HSE失效,HSI时钟会被作为备用时钟源 |
| 优点 | 1. 不需要额外的外部器件,成本较低 2.启动时间比HSE短 |
| 缺点 | 1.校准后时钟频率精度仍然较差 2.RC振荡器精度受电压和环境影响 |
| 时钟控制寄存器RCC_CR | 1. HSIRDY位置位,表示HSI时钟稳定 2.HSION位开启或者关闭HSI时钟 |
2.3 PLL时钟
PLL锁相环是一种控制系统,之所以叫PLL时钟,是因为,PLL通过调整输入信号(HSE、HSI)的频率和相位,以满足系统对不同频率的要求。
| 输入 | 1. HSI 2分频后输入 2.HSE |
| 使用 | 1. 输入时钟源稳定后才能使能PLL(RCC_CR的HSIRDY或者HSERDY置位) 2.使能PLL前需要完成PLL配置(选择时钟源、预分频系数、倍频系数) |
时钟配置寄存器(RCC_CFGR):

为何要用倍频器,而不是选择一个高频率的晶振?
对于稳定运行的电路来说,时钟频率越高,指令执行越快,单位时间内处理的功能也就越多。但是时钟源的时钟频率最高也就16MHz,达不到STM32系统时钟72MHz的要求,因此需要倍频器将外部时钟频率进行倍频,在输入给系统时钟。
倍频涉及到时钟配置寄存器(RCC_CFGR):

2.4 LSE时钟
| 来源(输入) | 外部32.768KHz |
| 振荡器 | 外部晶体 |
| 作用 | 1. 驱动RTC实时时钟 2. 备份域控制寄存器(RCC_BDCR)LSERDY置位表示晶体振荡器稳定,LSEON表示开启或关闭该时钟 |
| 优点 | 1. 低功耗 2. 精确 |
2.5 LSI时钟
| 来源 | 内部40kHzRC震荡时钟 |
| 作用 | 1. 在停机模式/待机模式下保持运行 2. 独立看门狗(IDWG)时钟、自动唤醒单元(AWU)时钟 3.控制 /状态寄存器(RCC_CSR)里的LSIRDY置位表示震荡稳定,LSION位控制开启或关闭该时钟 |
3. STM32时钟(哪些系统使用时钟)
3.1 系统(SYSCLK)时钟
SYSCLK为整个芯片提供时钟信号,其来源主要有3种:
1. HSE作为系统时钟
2. HSI作为系统时钟
3.PLL作为系统时钟(又叫做HSE间接作为系统时钟)
可在时钟控制寄存器(RCC_CR)中状态指示位查看当前系统时钟的时钟来源。
另外,当系统时钟的时钟源要进行切换时,只有目标时钟源准备就绪后,时钟源的切换才会发生,涉及时钟配置寄存器RCC_CFGR:

3.2 RTC时钟
三个输入:LSE、LSI、HSE128分频

3.3 看门狗时钟
LSI提供40kHz时钟。如果看门狗被启动,则LSI会被强制启动,待振荡器稳定后,输入给看门狗。
3.4 时钟输出MOC

4. STM32时钟树

图中标红色方框的为时钟源,可以看到包括之前介绍的HSE、LSE、PLL、HSI、LSI。
图中标绿色方框的为使用时钟(MCO为输出时钟),包括SYSCLK、RTC、IWDG、MOC。
除此之外,时钟树右侧部分,即SYSCLK输出,主要包括外设和和AHB。
4.1 AHB预分频器
预分频器,可通过配置分频系数,调整输出时钟的频率。分频允许系统中不同部分以不同的频率运行,以满足不同模块的工作需求。【主时钟(SYSCLK)、APB1时钟、APB2时钟】
AHB预分频器的分频系数可以选择为1(不分频)、2、4、6、8、16、64、128、256、512。
涉及寄存器为时钟配置寄存器RCC_CFGR:

AHB输出到APB1总线和APB2总线,其中APB1总线最大时钟频率为36MHz,为低速时钟,片上挂载低速外设,例如看门狗定时器,USART2\3\4\5,SPI2\3等。APB2总线最大时钟频率为72MHz,其上通常为各种外设的1号选手,例如USART1、ADC1、SPI1等。
5. STM32时钟配置
看一下STM32是怎么配置系统时钟的。
此处以STM32F10xx系列为例,下载STM32固件库后,找到system_stm32f10x.c和system_stm32f10x.h两个文件,这两个文件是STM32用来配置系统时钟的。它提供了两个函数、一个变量和一些宏定义来进行时钟配置。


可以看到,通过SystemInit()函数,最终调用SetSSysclockTo72(),使用高速外部时钟源,最终在PLL锁相环9倍频,赋值给系统时钟。AHB、APB1、APB2经过分频系数分频,分别得到72MHz、36MHz、72MHz时钟频率。
观察SetSysClock(),通过宏定义最终调用所选择的主频率,如果为了降低功耗,或者需要修改STM的主频,可直接修改SYSCLK_FREQ_xxMHz宏定义来修改系统的主频,同样可以在system_stm32f10x.c文件中修改。

相关文章:
STM32之二:时钟树
目录 1. 时钟 2. STM3时钟源(哪些可以作为时钟信号) 2.1 HSE时钟 2.1.1 高速外部时钟信号(HSE)来源 2.1.2 HSE外部晶体电路配置 2.2 HSI时钟 2.3 PLL时钟 2.4 LSE时钟 2.5 LSI时钟 3. STM32时钟(哪些系统使用时…...
第十四站:Java玫瑰金——移动开发(第二篇)
处理不同类型的网络连接和增强错误处理及用户反馈,需要我们对网络状态检查逻辑进行扩展,并在UI上给予用户适当的提示。以下是对Java代码的进一步扩充: 网络状态检查扩展:区分Wi-Fi和移动数据,并根据网络类型提供不同的…...
数据处理技术影响皮质-皮质间诱发电位的量化
摘要 皮质-皮质间诱发电位(CCEPs)是探究颅内人体电生理学中有效连接性的常用工具。与所有人体电生理学数据一样,CCEP数据极易受到噪声的影响。为了解决噪声问题,通常会对CCEP数据进行滤波和重参考,但不同的研究会采用不同的处理策略。本研究…...
ResultSet的作用和类型
ResultSet的作用: ResultSet在Java中主要用于处理和操作数据库查询结果。它是一个接口,提供了一系列方法来访问和操作数据库查询得到的结果集。具体来说,ResultSet的作用包括: 获取查询结果:通过ResultSet可以获取数…...
计算机网络:运输层 - TCP首部格式 连接的创建与释放
计算机网络:运输层 - TCP首部格式 & 连接的创建与释放 TCP首部格式源端口 目的端口序号确认号数据偏移保留控制位窗口检验和紧急指针 TCP连接创建 - 三次握手TCP传输过程TCP连接释放 - 四次挥手 TCP首部格式 TCP的首部如下: 首部的前20 byte是固定的…...
妈耶!被夸爆的零售数据分析方案在这里
在竞争激烈的零售市场中,数据分析已成为企业决胜的关键。今天,就为大家揭秘一份备受赞誉的零售数据分析方案——奥威BI零售数据分析方案,它围绕“人、货、场、供、财”五大主题,助力企业精准决策,实现业务增长。 一、人…...
AI探索:最佳落地应用场景
如果说今年的风口,那一定是 AI。不过AI像一把双刃剑,既有助益也有风险。我们将从IBM Watson的高飞与坠落,到Google Allo的黯然失色,探索AI应用中的教训。同时,瑞幸咖啡的成功故事展现了凭借策略得当的AI应用࿰…...
2024年最新机动车签字授权人考试题库。
31."简易瞬态工况法"所使用的五气分析仪的温度范图:分析系统及相关部件应在( )。 A.0-40℃ B.0-50℃ C.0-60℃ D.-10-40℃ 答案:A 32.稀释氧传感器环境空气量程检测时的读数值位于( )%vol范围之外时,应…...
软RAID
硬盘 连续空间 无法 扩容 lvm 非连续空间 可以动态扩容 raid 备份, 提高读写性能,不能扩容 raid 是磁盘的集合,按照排列组合的方法不 一,给 raid 去了不同的名字 raid0 raid1 raid5 raid10 什么是 RAID "RAID"…...
IDEA 学习之 启动“卡死”
目录 1. 断点问题2. IDEA 版本问题 1. 断点问题 部分断点涉及应用启动,会导致启动“卡死” 2. IDEA 版本问题 部分 IDEA 版本存在启动问题,本人之前遇到过(别人启动三分钟,我启动半个小时)。更换别的版本ÿ…...
豆瓣高分项目管理书籍推荐
📬豆瓣网站上有很多项目管理领域的书籍获得了较高的评分,以下是一些高分项目管理书籍的精选列表,发出来跟大家分享一下: 《项目管理知识体系指南(PMBOK指南)》 【内容简介】这本书是美国项目管理协会&…...
关于docker存储overlay2相关问题
报错如下: 报错原因:使用rm -rf 清理overlay2导致的,非正常清理。 正常清理命令如下: # 清理Docker的所有构建缓存 docker builder prune# 删除旧于24小时的所有构建缓存 docker builder prune --filter "until24h"#删…...
实现批量自动化电商数据采集|商品详情页面|店铺商品信息|订单详情数据
电商数据采集是指通过技术手段获取电商平台上的商品信息、店铺信息和订单信息等数据。这些数据可以用于市场分析、竞品分析、用户行为分析等。 商品详情页面是指电商平台上展示商品详细信息的页面,包括商品名称、价格、图片、描述、评价等信息。通过采集商品详情页…...
ES6(ECMAScript 6.0) 新特性
1 ES6 基本介绍 (1)ECMAScript 6.0(简称 ES6)是 JavaScript 语言的下一代标准, 2015 年 6 月发布。 (2)ES6 设计目标:达到 JavaScript 语言可以用来编写复杂的大型程序,成为企业级开发语言 &…...
性能工具之 JMeter 常用组件介绍(八)
文章目录 一、Jmeter命令行启动二、Jmeter脚本录制 本文主要介绍JMeter命令行启动和脚本录制功能 一、Jmeter命令行启动 Jmeter有两种运行: 一种是采用的界面模式(GUI)启动,会占用不少系统资源;另一种是命令行模式(n…...
分布式锁(Redission)
分布式锁: 使用场景: 通常对于一些使用率高的服务,我们会进行多次部署,可能会部署在不同的服务器上,但是他们获取和操作的数据仍然是同一份。为了保证服务的强一致性,我们需要对线程进行加锁,…...
【ARMv8/v9 GIC 系列 3 -- GIC 的 类型寄存器 GICD_TYPER】
文章目录 GIC 类型寄存器 GICD_TYPERESPI_Range, 位[31:27]RSS, 位[26]No1N, 位[25]A3V, 位[24]IDBits, 位[23:19]DVIS, 位[18]LPIs, 位[17]MBIS, 位[16]NUM_LPIs, 位[15:11]SecurityExtn, 位[10]NMI, 位[9]ESPI, 位[8]CPUNumber, 位[7:5]ITLinesNumber, 位[4:0]GIC 类型寄存器…...
MATLAB算法实战应用案例精讲-【数模应用】线性判别分析(附MATLAB、python和R语言代码实现)
目录 前言 算法原理 什么是判别分析 线性判别分析(LDA) 数学模型 二分类 多分类LDA 编辑 算法思想: 费歇(FISHER)判别思想 贝叶斯(BAYES)判别思想 LDA算法流程 LDA与PCA对比 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 5、案例操作 …...
打造智能家居:用ESP32轻松实现无线控制与环境监测
ESP32是一款集成了Wi-Fi和蓝牙功能的微控制器,广泛应用于物联网项目。它由Espressif Systems公司开发,具有强大的处理能力和丰富的外设接口。下面我们将详细介绍ESP32的基础功能和引脚功能,并通过具体的实例项目展示其应用。 主要功能 双核处…...
大型Web应用的模块化与组织实践:Flask Blueprints深入解析
目录 一、引言 二、Flask Blueprints概述 三、Flask Blueprints的使用 创建Blueprint对象 定义路由和视图函数 注册Blueprint 使用Blueprints组织代码 四、案例分析 创建模块目录结构 创建Blueprint对象 注册Blueprint 五、代码示例与最佳实践 1. 代码示例 …...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
