半小时搞懂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

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

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

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

相关文章

安全风险 - 如何解决 setAccessible(true) 带来的安全风险?

可能每款成熟的金融app上架前都会经过层层安全检测才能执行上架,所以我隔三差五就能看到安全检测报告中提到的问题,根据问题的不同级别,处理的优先级也有所不同,此次讲的主要是一个 “轻度问题” ,个人认为属于那种可改…

FinnConverter格式转换工具

FinnConverter简介 1. 简洁的操作界面 2. 支持多种格式相互转换 支持word转pdf;ppt转pdf;raw格式转png/jpng…;其他格式相互转换 2.1 输入格式支持 bmp、cr2、cr3、crw、cur、dcr、dng、doc、docx、gif、ico、jpeg、jpg、kdc、mos、nef、…

线程纵横:C++并发编程的深度解析与实践

hello !大家好呀! 欢迎大家来到我的Linux高性能服务器编程系列之《线程纵横:C并发编程的深度解析与实践》,在这篇文章中,你将会学习到C新特性,并发编程,以及其如何带来的高性能的魅力&#xff0…

LeetCode hot100-39-N

101. 对称二叉树给你一个二叉树的根节点 root , 检查它是否轴对称。做不出来哇,递归一生之敌 普通的对一棵树的递归遍历根本没办法只接比较左子树的左和右子树的右这样来比较,所以这题比较巧妙的是把这棵树当做两棵树一样去遍历比较。 官方…

使用XxlCrawler抓取全球航空公司ICAO三字码

目录 前言 一、数据源介绍 1、目标网站 2、页面渲染结构 二、XxlCrawler信息获取 1、创建XxlCrawler对象 2、定义PageVo对象 3、直接PageVO解析 4、自定义解析 总结 前言 长距离旅行或者出差,飞机一定是出行的必备方式。对于旅行达人或者出差人员而言&…

中国目前比较有影响力的人物颜廷利:物质与无知通音

既然是在中国优秀传统文化之根-汉语当中,汉字‘物质’二字跟‘无知’通音,因此,面对当前金钱肆虐、物欲横流的现实生活,当人类众生把‘物质’(无知)生活看的太真、太重时,那么,这就很…

什么是wamp

WAMP是一个缩写,代表Windows、Apache、MySQL和PHP。它是一个用于本地开发网络应用程序的软件堆栈,主要用于在Windows操作系统上搭建Web服务器环境。WAMP提供了一个简单的方式,让开发者可以在本地计算机上模拟一个Web服务器环境,以…

Python模块之Numpy(四)-- 矩阵

矩阵的创建 在NumPy中,矩阵是ndarray的子类,常用来创建矩阵的函数有mat、matrix以及bmat,使用如下: import numpy as np matr1 np.mat("1 1 1; 2 2 2;3 3 3") #矩阵的行用分号隔开,列用空格隔开 matr2 np.matrix([[1…

Banana Pi BPI-F3, 进迭时空K1芯片设计,定位工业级应用,网络通信及工业自动化

香蕉派BPI-F3是一款工业级 8核RISC-V开源硬件开发板,它采用进迭时空(SpacemiT) K1 8核RISC-V芯片设计,CPU集成2.0 TOPs AI计算能力。4G DDR和16G eMMC。2个GbE以太网接口,4个USB 3.0和PCIe M.2接口,支持HDM…

kafka SSL加密 —— 筑梦之路

生成SSL证书文件脚本 #!/bin/bash ################################## 设置环境变量 ############################## BASE_DIR/mnt/disk/test # SSL各种生成文件的基础路径 CERT_OUTPUT_PATH"$BASE_DIR/certificates" # 证书文…

Jenkins构建流程

Jenkins是DevOps【(Development和Operations的混成词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例)】的重要一环,是一款开源的CI&CD软件。也就是持续集成…

汽车行业软件开发V 模型与医疗行业异同,与传统瀑布开发模型区别

软件开发在汽车和医疗行业 V 模型的异同 V 模型是一种软件开发过程中的验证和确认模型,它被用来表示软件开发的各个阶段和它们的验证/ 确认活动。 在汽车和医疗行业中,V模型的使用有一些相似之处,但也有一些不同之处。 相同之处: 都使用V 模…

【LeetCode】【滑动窗口】【双指针】长度最小的子数组

题目:209. 长度最小的子数组 - 力扣(LeetCode) 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如…

【Viso画图】Viso导出与图形适配的pdf

step1:选中开发工具点击shapeSheet,选中页 step2:进入页面参数设置窗口,将下面框选的参数设为0,enter后保存 目前效果: step3:选中设计->大小,选择适应页面大小或者自己根据图片调整 目前效果: step4: 以…

【C++】priority_queues(优先级队列)和反向迭代器适配器的实现

目录 一、 priority_queue1.priority_queue的介绍2.priority_queue的使用2.1、接口使用说明2.2、优先级队列的使用样例 3.priority_queue的底层实现3.1、库里面关于priority_queue的定义3.2、仿函数1.什么是仿函数?2.仿函数样例 3.3、实现优先级队列1. 1.0版本的实现…

android自定义view仿微信联系人列表

说明:最近碰到一个需求,弄一个类似国家或省份列表,样式参照微信联系人 文件列表: step1:主界面 加载列表数据~\app\src\main\java\com\example\iosdialogdemo\MainActivity.java step2:右侧列表数据排序~\app\src\com\example\io…

hive自定义udtf函数

udtf,一个输入,对应多个输出,实现流程如下 1、继承genericUDF 2、在initialize中做初始化工作,例如定义输出的数据格式 3、在process中实现具体的逻辑 参考链接 https://blog.csdn.net/qq_34321590/article/details/127412147…

6. 第K小的和-二分

6.第K小的和 - 蓝桥云课 (lanqiao.cn) #include <bits/stdc.h> #define int long long #define endl \n using namespace std; int n,m,k,an[100005],bm[100005]; int check(int x){int res0;//序列C中<x的数的个数for(int i0;i<n;i){//遍历数组A&#xff0c;对于每…

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 是一个指令&…

神级框架!!不要再封装各种 Util 工具类了【送源码】

这个工具类就比较厉害了&#xff0c;不过我在 Halo 当中用得最多的还是 HtmlUtil.encode&#xff0c;可以将一些字符转化为安全字符&#xff0c;防止 xss 注入和 SQL 注入&#xff0c;比如下面的评论提交。 comment.setCommentAuthor(HtmlUtil.encode(comment.getCommentAutho…