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

半小时搞懂STM32面经知识——RCC

1. 时钟的概念

时钟是由电路产生的具有周期性的脉冲信号,相当于单片机的心脏,要想使用单片机的外设必须开启时钟。

时钟对单片机有什么作用?

        1. 驱动外设的本质是寄存器,而寄存器需要时钟触发才能改写值。

        2. 时钟频率越高,CPU在相同的时间能够执行更多的指令,运行速度更快。

2. 时钟树

 STM32微控制器芯片上的时钟分配和控制结构,它定义了各种时钟源、时钟分频、时钟分配等,形成一个树状结构

时钟树的作用?

1. 给相对独立的外设模块提供时钟,不同的外设需要的时钟频率不一致,需要通过时钟树分配相应的时钟。

 2. 降低整个芯片的功耗所有外设时钟默认都是关闭状态(disable)当我们使用某个外设就要开启这个外设的时钟(enable) ,没有让所有外设都使用高速时钟造成浪费。 

2.1 时钟源

STM32总共有四个时钟源为什么要有四个时钟源,兼容不同速度的外设, STM32的四个时钟源分别为HSE, LSE, HSI, LSI。

HSE时钟:高速的外部时钟。

来源: 无源晶振,通常使用8M, STM32F1系列为(4~16M)

作用:可不分频或2分频(频率/2)作为PLL锁相环的输入,还可直接不分频作为系统时钟,128分频作为外设RTC时钟的输入

HSI时钟: 高速的内部时钟

来源: 芯片内部,大小为8M,当HSE故障时,系统时钟会自动切换到HSI,直到HSE启动成功。

作用: 可直接作为系统时钟或在2分频后作为PLL输入。HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差。

LSE: 低速的外部时钟

来源:芯片内部,LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。 

作用: 直接作为RTC的时钟来源

LSI: 低速的内部时钟

来源: 内部芯片,LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,LSI时钟频率大约40kHz(在30kHz和60kHz之间)。

作用: 为独立看门狗自动唤醒单元(RTC)提供时钟。

2.2 锁相环时钟PLLCLK

锁相环时钟:PLLCLK

来源: 选择HIS振荡器除2或HSE振荡器为PLL的输入时钟,和选择倍频因子,必须在其被激活前完成。一旦PLL被激活,这些参数就不能被改动。

作用: 内部PLL可以用来倍频HSI的输出时钟或HSE晶体输出时钟(倍频数2~16倍),而经过倍频变成PLLCLK可以作为系统时钟源

注意: PLL时钟源头使用HIS/2的时候,PLLMUL最大只能 是16,这个时候PLLCLK最大只能是64M,小于ST官方推 荐的最大时钟72M。如果需要在应用中使用USB接口,PLL必须被设置为输出48或72MHZ时钟,用于提供48MHz的USBCLK时钟。

2.3 系统时钟

系统时钟:SYSCLK系统时钟是时钟树的最终输出,它是整个微控制器系统的主时钟。

来源:HSI,HSE,PLLCLK

注意:F103通常的配置是SYSCLK = PLLCLK=72M(最大的时钟频率, STM32官方推荐)

通常系统时钟配置的输出流程:

2.4 HCLK时钟

HCLK: AHB高速总线时钟,速度最高为72MHZ

来源: 系统时钟分频得到,一般设置HCLK=SYSCLK=72M

作用: 为AHB总线的外设提供时钟、为Cortex系统定时器提供时钟(SysTick)、为内核提供时钟(FCLK)。

2.5 PCLK1时钟

PCLK1: APB1低速总线时钟,最高为36MHZ。

来源: HCLK分频得到,一般配置PCLK1 = HCLK/2 = 36MHZ。

作用: 为APB1总线的外设提供时钟。1或2倍频之后则为APB1总线的定时器2~7提供时钟,最大为72M。

2.6 PCLK2时钟

PCLK2: APB2高速总线时钟,最高为72MHZ

来源: HCLK分频得到,一般配置PCLK1=HCLK=72M

作用: 为APB2总线的外设提供时钟。为APB2总线的定时器1和8提供时钟,最大为72M。APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。

2.7 RTC时钟

RTC:实时时钟。

来源:HSE分频得到, LSE、 LSI

作用:它拥有一组连续计数的计数器,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。实质上它是一个掉电后还可以继续运行的定时器。

相关文章:

半小时搞懂STM32面经知识——RCC

1. 时钟的概念 时钟是由电路产生的具有周期性的脉冲信号,相当于单片机的心脏,要想使用单片机的外设必须开启时钟。 时钟对单片机有什么作用? 1. 驱动外设的本质是寄存器,而寄存器需要时钟触发才能改写值。 2. 时钟频率越高&#…...

汇聚荣科技:拼多多开店没有流量应该怎么办?

拼多多开店没有流量是一个常见的问题,许多新手商家都会遇到这样的困境。那么,如何解决这个问题呢?下面从四个方面进行详细阐述。 一、优化店铺和商品 首先,要确保店铺和商品的质量。店铺要有自己独特的风格和特色,商品要有高质量…...

uni-app(三):离线打包与插件引用(Android)

离线打包与插件引用 1.下载Android离线SDK2.使用Android Studio打开离线打包项目并更新Gradle3.解决报错4.构建5.配置AppKeya.查看证书b.申请AppKeyc.配置AppKey 6.生成本地打包App资源7.拷贝App资源到Android项目中8.修改 appid9.修改Android项目配置文件10.下载证书并配置11.…...

数据分析——对比思维、A/B test

对比分析 数据大小 :与中值、平均值、目标值、标准做对比数据波动:变异系数、方差、标准差数据趋势:时间维度和空间维度 其中 时间维度 横向比较(连续7天每天的销售量) 纵向比较(同一时期不同品类对比&…...

深度探索Java工厂模式:创新与灵活性的结合

在软件设计中,有效地组织对象的创建过程是至关重要的。Java工厂模式是一种优秀的设计模式,它能够在对象创建的过程中提供更大的灵活性和可扩展性。本文将深入探讨工厂模式的不同实现方式,并提供详细的代码示例,以帮助读者更好地理…...

delphi6直连redis服务(用lua脚本redis模块)

一、创建一个exe程序 创建一个exe程序,引用LuaRedis.pas单元(此单元自己封装的代码,目前主要封装了获取key和设置key/value功能),代码如下: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variant…...

嵌入式Linux:编译和使用Protobuf库

目录 1、开发环境和工具 2、安装和编译Protobuf、Protobuf-C库 3、编写和编译proto文件 4、修改makefile文件 5、测试示例 6、参考资料 Protobuf(Protocol Buffers)是由 Google 开发的一种轻量级、高效的结构化数据序列化方式,用于在不同应用…...

导航app为什么知道还有几秒变绿灯?

在使用地图导航app行驶至信号灯的交叉路口时,这些应用程序会贴心地告知用户距信号灯变化还有多少秒,无论是即将转为绿灯还是红灯。这一智能化提示不仅使得驾驶员能适时做好起步或刹车的准备,有效缓解了因等待时间不确定而产生的焦虑情绪&…...

设计模式 六大原则之单一职责原则

文章目录 概述代码例子小结 概述 先看下定义吧,如下: 单一职责原则的定义描述非常简单,也不难理解。一个类只负责完成一个职责或者功能。也就是说在类的设计中, 我们不要设计大而全的类,而是要设计粒度小、功能单一的类。 代码例…...

DOM重点核心(注册事件+DOM事件流)

目录 1.注册事件 注册时间概述 addEventListener() 删除事件 2.DOM事件流 DOM事件流理论 事件对象 事件对象的常见属性和方法 e.targe 和 this的区别 阻止默认行为 阻止冒泡 事件委托 禁止右键菜单和禁止选中文字 获得鼠标的坐标(可视区、页面、浏览器…...

浅谈操作系统中的重要概念——线程(3)——设计模式

文章目录 一、什么是设计模式?二、单例模式2.1、饿汉模式2.2、懒汉模式2.3、多线程情况下调用 饿汉模式与懒汉模式 谁是安全的??(重点) 三、工厂模式3.1、什么是工厂模式?3.1.1、构造方法存在的缺陷3.1.1.1…...

nginx配置域名与IP访问服务冲突问题

在最近的一次开发中遇到一个问题,我在云服务器上部署了两个服务,A服务和B服务, A服务在服务器中用的端口是80端口,所以我在浏览器访问的地址就是 B服务在服务器中用的是9818端口,所以我在浏览器访问的是 现在我给B服务…...

2024OD机试卷-字符串序列判定 (java\python\c++)

题目:字符串序列判定 题目描述 输入两个字符串 S 和 L ,都只包含英文小写字母。S长度 ≤ 100,L长度 ≤ 500,000。判定S是否是L的有效子串。 判定规则:S 中的每个字符在 L 中都能找到(可以不连续),且 S 在L中字符的前后顺序与 S 中顺序要保持一致。(例如,S = ” ace…...

7-128 最长公共子串

一个序列中去掉若干(也可以不去掉)元素剩下的部分称为其子序列。对于给定的序列X = <x1​,x2​,…,xm​>,称序列Z = <z1​,z2​,…,zk​>为X的一个子序列,仅当在X中存在一个递增序号序列<i1​,i2​,…,ik​>,对所有的j(1,2,…,k)满足 xij…...

【瑞萨RA6M3】2. UART 实验

https://blog.csdn.net/qq_35181236/article/details/132789258 使用 uart9 配置 打印 void hal_entry(void) {/* TODO: add your own code here */fsp_err_t err;uint8_t c;/* 配置串口 */err g_uart9.p_api->open(g_uart9.p_ctrl, g_uart9.p_cfg);while (1){g_uart9.…...

js遇到需要正则匹配来修改img标签+清除行内样式

方法一 var regex0 new RegExp("(i?)(\<img)([^\>]\>)", "gmi") //正则匹配表达式this.newcontent this.content.replace(regex0,"$2 styledisplay:block;margin: auto;width:120px; $3") //下面这个则需要在$2 $3左右添加和修改东…...

Vue学习v-if与v-else-if

Vue学习v-if与v-else-if 一、前言1、v-if2、v-else-if3、v-else4、示例 一、前言 v-if 和 v-else-if 是 Vue.js 中用于条件渲染的指令&#xff0c;它们通常与 v-else 一起使用。下面我来详细解释一下它们的用法和区别&#xff1a; 1、v-if 用法&#xff1a;v-if 是一个指令&…...

linux进阶高级配置,你需要知道的有哪些2-firewalld防火墙(一)

1、防火墙的技术上分类&#xff1a; 包过滤&#xff1a;firewalld属于这种 应用代理&#xff1a; 状态检测&#xff1a;ASA 2、firewalld的两种配置模式&#xff1a; 运行时配置 &#xff1a;立即生效 永久配置&#xff1a;重新加载服务生效 3、常用的区域&#xff1a; trust…...

Centos 中如何汉化man命令

刚学Linux&#xff0c;记不住命令和选项&#xff0c;很依赖里面的 man 查看命令&#xff0c;但因为着实看不懂&#xff0c;有没有什么办法把man查看命令的信息改成中文 在CentOS 7中&#xff0c;你可以通过安装man-pages-zh包来获取中文的man手册。以下是具体的步骤&#xff1a…...

原生小程序开发如何使用 tailwindcss

原生小程序开发如何使用 tailwindcss 原生小程序开发如何使用 tailwindcss 前言什么是 weapp-tailwindcss ?0. 准备环境以及小程序项目1. 安装与配置 tailwindcss 0. 使用包管理器安装 tailwindcss1. 在项目目录下创建 postcss.config.js 并注册 tailwindcss2. 配置 tailwind…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

2.3 物理层设备

在这个视频中&#xff0c;我们要学习工作在物理层的两种网络设备&#xff0c;分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间&#xff0c;需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质&#xff0c;假设A节点要给…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python&#xff0c;或者java 的大型项目中&#xff0c;都会涉及到 自身平台微服务之间的相互调用&#xff0c;以及和第三发平台的 接口对接&#xff0c;那在python 中是怎么实现的呢&#xff1f; 在 Python Web 开发中&#xff0c;FastAPI 和 Django 是两个重要但定位不…...

动态规划-1035.不相交的线-力扣(LeetCode)

一、题目解析 光看题目要求和例图&#xff0c;感觉这题好麻烦&#xff0c;直线不能相交啊&#xff0c;每个数字只属于一条连线啊等等&#xff0c;但我们结合题目所给的信息和例图的内容&#xff0c;这不就是最长公共子序列吗&#xff1f;&#xff0c;我们把最长公共子序列连线起…...

精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑

精益数据分析&#xff08;98/126&#xff09;&#xff1a;电商转化率优化与网站性能的底层逻辑 在电子商务领域&#xff0c;转化率与网站性能是决定商业成败的核心指标。今天&#xff0c;我们将深入解析不同类型电商平台的转化率基准&#xff0c;探讨页面加载速度对用户行为的…...