当前位置: 首页 > news >正文

超详细!必看!!STM32--时钟树原理

一、什么是时钟?

时钟是单片机的脉搏,是系统工作的同步节拍。单片机上至CPU,下至总线外设,它们工作时序的配合,都需要一个同步的时钟信号来统一指挥。时钟信号是周期性的脉冲信号。

二、什么是时钟树?

STM32有很多外设器件,每个器件的时钟信号不一样,所以要将一个固定的信号频率进行倍频/分频处理,达到每个外设需要的频率。时钟信号的分频就像树的分支一样,这就是时钟树。

三、时钟介绍

HSI(内部高速时钟): 时钟信号由内部RC震荡电路提供,时钟频率为8MHz,但是这个时钟频率会随着温度产生漂移,很不稳定,所以一般不使用此时钟信号。
LSI(内部低速时钟): 时钟信号由内部RC振荡电路提供,时钟频率一般为40KHz,这个信号一般用于独立看门狗时钟。
HSE(外部高速时钟): 时钟信号由外部晶振提供,时钟频率一般在4-16MHz,是经常会用到的时钟源。
LSE(外部低速时钟): 时钟信号由外部晶振提供,时钟频率一般为32.768KHz,这个信号一般用于RTC实时时钟。

四、时钟框架图

请添加图片描述

五、框架图分析

(1)外部低速时钟LSE,外接引脚OSC32_IN和OSC32_OUT就是接外部晶振的引脚,进来的频率是32.768KHZ进来后只有一个走向就是为RTC提供时钟。
(2) RTCCLK蓝色框的四选一数据选择器,一共有三个输入,一个来自最上方的HSE,中间经过了一个128的分频器。一个是LSE以及最下方的LSI时钟。也就是说看门狗智能由内部低速时钟LSI提供时钟,RTC可以由LSI、LSE、或者是HSE经过分频后来提供时钟,具体使用哪一个需要我们在代码里面配置。
(3) PLL锁相环中的数据选择器有两个输入,一个是内部高速时钟HSI经过2分频连接。另一个输入是外部高速时钟HSE经过1分频或2分频输出后连接。经过数据选择器后,进行倍频操作供给系统时钟。对于系统时钟一般选择HSE时钟经过PLL锁相环倍频后的时钟作为系统时钟。倍频系数可选范围:2~16。
注:一般在PLL锁相环中数据选择器中我们选择来自外部高速时钟HSE的时钟信号,因为HSI时钟信号很不稳定,容易受到环境的影响。
(4)对于系统时钟选择器,一共有四个输入。最上面为HSI时钟输入,中间为PLLCLK时钟输入,下面两个分别是HSE时钟直接输入,以及在HSE后加入CSS时钟安全检测标志后输入。

六、示例

外部晶振电路:
请添加图片描述
连接外部高速时钟:
在这里插入图片描述

假如外部时钟晶振频率为8MHz,如何设置72MHz的系统时钟?
答:HSE接入8MHz的外部震荡信号,由PLLXTPER进行选择进行1分频还是2分频,假如是1分频,则8MHz的时钟信号来到了PLLSRC控制选择的位置,配置PLLSRC,选择进入PLL锁相环的时钟信号源,假设来自HSE的信号选通,则8MHz的信号来到锁相环中,配置PLLMUL,可以选择倍频系数,假设倍频系数选为9,则PLL输出72MHz的时钟信号,SYSCLK前面的梯形的选择逻辑控制着SYSCLK时钟信号来自于3个接入信号HSE、HIS、PLLCLK中的哪一个,通过SW和CSS控制,选择PLLCLK后,系统就可以获得72MHz的时钟频率了。这个CSS是时钟安全保护系统,主要是在HSE出现故障时发生NMI中断(不可屏蔽中断,产生这个中断的时候,表示系统发生了致命的错误),具体要看手册59页信息介绍。
为了减少功耗,STM32上外设的时钟初始状态默认为关闭,如需使用外设,则必须开启外设时钟。譬如我们现在要使用外设GPIOB,则系统时钟SYSCLK要通过预分频器AHB分频,再进入APB2总线进行再分频(GPIOB是挂载在APB2总线上的外设),时钟信号的输入和外设时钟使能位接在一个与门上,当要使用外设时,需要将这个使能位置1,配置完成之后,GPIOB方可正常工作。

相关文章:

超详细!必看!!STM32--时钟树原理

一、什么是时钟? 时钟是单片机的脉搏,是系统工作的同步节拍。单片机上至CPU,下至总线外设,它们工作时序的配合,都需要一个同步的时钟信号来统一指挥。时钟信号是周期性的脉冲信号。 二、什么是时钟树? S…...

用 Golang 采集 Nginx 接口流量大小

简介 在开发和运维中,我们经常需要监控和分析服务器的接口流量大小,特别是对于部署了 Nginx 的服务器。本文将介绍如何使用 Golang 采集 Nginx 接口流量大小,并展示如何将这些数据进行实时监控和分析。 步骤一:准备工作 在开始…...

Linux java jar启停脚本(合并版)

#包文件路径及名称(目录按照各自配置) APP_NAME=/opt/whkc/gs/app-java.jar#查询进程,并杀掉当前jar/java程序 pid=`ps -ef|grep app-java.jar | grep -v grep | awk {print $2}` kill...

计算机毕业设计选题推荐-公共浴池微信小程序/安卓APP-项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

sqli-labs关卡13(基于post提交的单引号加括号的报错盲注)通关思路

文章目录 前言一、回顾第十二关知识点二、靶场第十三关通关思路1、判断注入点2、爆显位3、爆数据库名4、爆数据库表5、爆数据库列6、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的平台,…...

SparkAi创作系统ChatGPT网站源码+详细搭建部署教程+AI绘画系统+支持GPT4.0+Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...

shiro默认session设置永不超时

Shiro默认情况下session是有超时时间的,而不是永不超时。默认的超时时间是30分钟,可以通过修改Shiro的配置文件来更改超时时间。如果想要让session永不超时,可以将超时时间设置为一个很大的值,例如Integer.MAX_VALUE。 以下是修改…...

前端食堂技术周刊第 104 期:Angular v17、GPTs、Vue vapor mode、Svelte Flow、Bundler 的设计取舍

美味值:🌟🌟🌟🌟🌟 口味:金奖乳鸽 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…...

list复制出新的list后修改元素,也更改了旧的list?

例子 addAll() Testpublic void CopyListTest(){Student student Student.builder().id(1).name("张三").age(23).classId(1).build();Student student2 Student.builder().id(2).name("李四").age(22).classId(1).build();List<Student> student…...

Qt绘制各种图形

重载绘图事件&#xff1a; protected:void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;void Widget::paintEvent(QPaintEvent *event) { 进行绘图操作 } 绘图前操作&#xff1a; //基本绘图QPainter painter(this);//创建QPainter对象painter.setRenderHint(QPa…...

NIO 笔记(二)Netty框架专题

【笔记来自&#xff1a;it白马】 Netty框架 前面我们学习了Java为我们提供的NIO框架&#xff0c;提供使用NIO提供的三大组件&#xff0c;我们就可以编写更加高性能的客户端/服务端网络程序了&#xff0c;甚至还可以自行规定一种通信协议进行通信。 NIO框架存在的问题 但是之…...

HTTP——

HTTP 请求报文的构成 如下图: 第一行:HTTP请求的方法,具体是POST方法还是GET方法,或是其它方法;URI就是你的HTTP请求的路径;后面是HTTP协议的版本; 第二行往下连续多行:这些是请求头部分,也就是请求的首部设置的一些信息,相当于对HTTP请求的一些设置; 空格行:在…...

第13章 Java IO流处理(二) 字节流与字符流

目录 内容说明 章节内容 1、I/O与流 2、输入流和输出流 3、字节流与字符流...

【论文阅读】(CTGAN)Modeling Tabular data using Conditional GAN

论文地址&#xff1a;[1907.00503] Modeling Tabular data using Conditional GAN (arxiv.org) 摘要 对表格数据中行的概率分布进行建模并生成真实的合成数据是一项非常重要的任务&#xff0c;有着许多挑战。本文设计了CTGAN&#xff0c;使用条件生成器解决挑战。为了帮助进行公…...

如何进行iOS技术博客的备案?

​ 如何进行iOS技术博客的备案&#xff1f; 标题&#xff1a;iOS技术博客备案流程及要求解析 摘要&#xff1a; 在本篇问答中&#xff0c;我们将为iOS技术博主介绍如何进行备案。如果你的iOS应用只包含简单的页面&#xff0c;并通过蓝牙进行数据采集和传输&#xff0c;那么你…...

RTSP/Onvif安防平台EasyNVR批量禁用/启用通道接口的详细操作步骤

TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中&#xff0c;EasyNVR可提供视频实时监控直播、云端…...

2个器件,做1个恒流源

在项目中经常要用到恒流源&#xff0c;查找资料可以使用电压源芯片LM317构造一个电流源芯片。本文将电压源加上一个电阻改为电流源&#xff0c;这种设计思路可以扩展到其他类型的电源芯片上&#xff0c;如开关电源及其他类型的线性电源&#xff0c;关键点在于基准电压VREF的使用…...

SQL INSERT INTO SELECT 语句

SQL INSERT INTO SELECT 语句 使用SQL&#xff0c;您可以将信息从一个表中复制到另一个表中。 INSERT INTO SELECT 语句从表中复制数据&#xff0c;并将数据插入现有的表中。目标表中的任何现有行都不会受到影响。 SQL INSERT INTO SELECT 语法 我们可以将所有列从一个表中复制…...

Elasticsearch 在 Java 开发中的应用

Elasticsearch 在 Java 开发中的应用 Elasticsearch 是一个开源的分布式搜索引擎&#xff0c;广泛应用于全文搜索、日志分析等场景。本文将介绍 Elasticsearch 在 Java 开发中的基本使用和一些实际场景中的应用。 1. 引入 Elasticsearch 依赖 首先&#xff0c;需要在 Maven 或…...

linux 的uart驱动框架分析

文章目录 一、底层串行硬件驱动程序二、Console支持三、锁支持四、核心数据结构1、struct uart_driver2、struct uart_port3、struct uart_ops四、常用API总结五、uart驱动示例剖析1、原厂设计的uart驱动2、8250标准uart驱动六、总结🔺【linux内核系列文章】 👉对一些文章内…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...