STM32第15章 RCC-使用HSE/HSI配置时钟

时间:2024.10.21-10.23

参考资料:

《零死角玩转STM32》“RCC-使用HSE/HIS配置时钟”章节

TIPS:

从前面的历程中我们知道,程序在启动的时候会执行汇编文件,汇编文件里会调用System_Init(固件库编程的函数),它里面会把时钟初始化成72M,因此前面我们在用固件库写程序的时候,有关时钟这一部分就忽略了。

一、学习内容

1、时钟树

书P119图15-5时钟树

1.1时钟树主系统时钟讲解

1.1.1HSE时钟
HSE

High Speed External Clock signal,高速的外部时钟

来源:

无源晶振(4-16M),通常使用8M

控制:

RCC_CR时钟控制寄存器的位16:HSEON控制

晶振电路原理图

霸道和指南者开发板使用的都是8M的无源晶振。

TIPS:

当使用无源晶振时,时钟从OSC_IN和OSC_OUT进入,并且要配谐振电容

当使用有源晶振时,时钟从OSC_IN引脚进入·,OSC_OUT悬空

1.1.2HSI时钟
HSI:

与高速的HSE相对应有一个内部的HSI,它也是8M的高速时钟信号

Low  Speed Internal Clock signal,高速的内部时钟

来源:

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

控制:

RCC_CR时钟控制寄存器的位0:HSION控制

HSE和LSE的区别:

HSE的精度比较高,LSE的精度比较小,受温度的影响比较大,会存在温漂

当把位16置1时,表示HSE振荡器开启,因为它是无源的,需要和起振电容一起配置来起振。

起振需要一定的时间,如果它启动完毕,就会有位7HSERDY外部高速时钟就绪标志=1,当这个位为1时,表示外部4-16MHz振荡器就绪。

对HSI有两个位,位0的HSION和位1的HSIRDY,和HSE的两个位类似。

1.1.3 一般配置系统时钟的流程:

利用HSE8M经过倍频,一般九倍频,配置成72M,当HSE故障时,HSI就会被选为系统时钟,那么此时整个系统就会被配置成8M,和瘫痪状态差不多。

1.1.4锁相环时钟PLLCLK
来源:

(HSI/2、HSE)通过倍频所得

控制:

CFGR:PLLXTPRE、PLLMUL

注意:

PLL时钟源头使用HSI/2的时候,PLLMUL最大只能是16,这个时候PLLCLK最大只能是64M,小于ST官方推荐的最大时钟72M

1.1.5系统时钟
锁相环时钟:

SYSCIK,最高为72M(ST官方推荐的)

来源:

(HSI、HSE、PLLCLK)通过倍频所得

控制:

CFGR:SW

注意:

通常的配置是SYSCLK=PLLCLK=72M

配置好系统时钟以后,单片机里有很多条总线,由SYSCLK出来后有一个AHB分频器,用于配置AHB总线,在AHB总线的基础上还有两个预分频器APB1和APB2,这两条总线上挂载了很多外设,我们在配置系统时钟时只配置好AHB、APB1、APB2这三条总线的时钟,具体外设的时钟当我们真正需要使用这个外设的时候再具体地配置

我们在配置系统时钟时只配置好AHB、APB1、APB2这三条总线的时钟

这三条总线的分频因子配置:

1.1.6HCLK时钟
HCLK:

AHB高速总线时钟,速度最高为72M。为AHB总线的外设提供时钟、为Cortex系统定时器提供时钟(SysTick)、为内核提供时钟(FCLK)

AHB:

advanced high-performance bus

来源:

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

控制:

CFGR:HPRE

1.1.7PCLK1时钟
PCLK1:

APB1低速总线时钟,速度最高为36M。为APB1总线的外设提供时钟。2倍频后则为APB1总线的定时器2-7提供时钟,最大为72M。

来源:

HCLK分频得到,一般设置PCLK1=HCLK/2=36M

控制:

RCC_CFGR时钟配置寄存器的PPRE1位

1.1.8 PCLK2时钟
PCLK2:

APB2高速总线时钟,速度最高为72M。为APB2总线的外设提供时钟。为APB1总线的定时器1和8提供时钟,最大为72M。

来源:

HCLK分频得到,一般设置PCLK1=HCLK=72M

控制:

RCC_CFGR时钟配置寄存器的PPRE2位

1.2时钟树其他时钟讲解

1.2.1 RTC时钟
RTC时钟:

为芯片内部的RTC外设提供时钟。

来源:

HSE_RTC(HSE分频得到)、LSE(外部32.768KHZ的晶体提供)、LSI(32KHZ)

控制:

RCC备份域控制寄存器RCC_BDCR:RTCSEL位控制

无源的,需要配置10pf的起振电容

1.2.2 独立看门狗时钟
独立看门狗时钟:

IWDGCLK,由LSI提供。

1.2.3 MCO时钟输出
MCO:

microcontroller clock output,微控制器时钟输出引脚,由PA8复用所得。

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

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

相关文章

MSR寄存器独有的还是共享的

英特尔白皮书Volume 4: Model-Specific Registers 这一章列出了不同英特尔处理器系列的 MSR(模型特定寄存器)。所有列出的 MSR 都可以使用 RDMSR 和 WRMSR 指令进行读取和写入。MSR 的作用域定义了访问相同 MSR 的处理器集合,具体如下&#x…

栈和队列(上)-栈

1. 栈的概念 引入: 我们平时拿羽毛球,是从盒子顶部的羽毛球开始拿的,而顶部的元素是我们最后放进去的. 栈: 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后…

温泉押金原路退回系统, 押金+手牌+电子押金单——未来之窗行业应用跨平台架构

一、温泉手牌收押金必要性 1. 防止手牌丢失:手牌是顾客在温泉内存储个人物品和进出更衣室的重要凭证。收押金可以让顾客更加重视手牌,降低丢失的概率。比如说,有的顾客可能会因为粗心大意随手放置手牌,如果没有押金的约束&…

STM32之外部中断(实验对射式传感器计次实验)

外部中断配置 #include "stm32f10x.h" // Device headeruint16_t CountSensor_Count;void CountSensor_Init(void) {//RCC--> GPIO--> AFIO--> EXTI--> NVIC五步RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOB时…

图---java---黑马

图 概念 图是由顶点(vertex)和边(edge)组成的数据结构,例如 该图有四个顶点:A,B,C,D以及四条有向边,有向图中,边是单向的。 有向 vs 无向 如果是无向图,那么边是双向的&#x…

aarch64-opencv341交叉编译,并在arm上部署helloopencv

背景 当需要在jetson xavier nx或者rk 3562等平台上开发关于视觉检测的工程时,由于arm板子资源不足或者不能联网等原因,通常在虚拟机上利用交叉编译器编译得到可执行程序,然后部署到arm板上。 aarch64-opencv341交叉编译 ubuntu虚拟机中先…

【Linux】环境下升级redis

一、摘要 最近漏洞扫描服务器发现,Redis 缓冲区溢出漏洞(CVE-2024-31449),解决办法redis更新到6.2.16、7.2.6或7.4.1及以上版本。 二、漏洞描述 漏洞描述:经过身份验证的用户可能会使用特制的 Lua 脚本来触发位库中的堆栈缓冲区溢出&#…

Kaggle比赛复盘

Kaggle - LLM Prompt Recovery 解决方案报告 比赛背景/目标 大型语言模型(Large Language Models,LLMs)通常被用于改写或对文本进行风格修改。本次Kaggle竞赛的目标是根据给定的改写文本,还原用于将原始文本转换为改写文本的LLM…

MetaArena推出《Final Glory》:引领Web3游戏技术新风向

随着区块链技术的日益成熟,Web3游戏成为了游戏产业探索的新方向,将去中心化经济与虚拟世界结合在一起,形成了一个全新的生态体系。然而,尽管Web3游戏展示了令人兴奋的可能性,但其背后的技术障碍依旧严峻,特…

Android Activity SingleTop启动模式使用场景

通知栏 当用户点击通知栏中的通知时,可以使用单顶启动模式来打开对应的活动,并确保只有一个实例存在。 简单集成极光推送 创建应用 获取appkey参数 切换到极光工作台 极光sdk集成 Project 根目录的主 gradle 配置 Module 的 gradle 配置 Jpush依赖配置 配置推送必须…

华为原生鸿蒙操作系统:我国移动操作系统的新篇章

华为原生鸿蒙操作系统:我国移动操作系统的新篇章 引言 在移动操作系统领域,苹果iOS和安卓系统一直占据主导地位。然而,随着华为原生鸿蒙操作系统的正式发布,这一格局正在发生深刻变化。作为继苹果iOS和安卓系统后的全球第三大移动…

Python酷库之旅-第三方库Pandas(170)

目录 一、用法精讲 781、pandas.arrays.IntervalArray.contains方法 781-1、语法 781-2、参数 781-3、功能 781-4、返回值 781-5、说明 781-6、用法 781-6-1、数据准备 781-6-2、代码示例 781-6-3、结果输出 782、pandas.arrays.IntervalArray.overlaps方法 782-1…

shodan3,vnc空密码批量连接,ip历史记录查找

shodan语法,count,honeyscore count 今天带大家继续学习shodan,今天会带大家学一学这个count命令,再学学其他小命令好其实关键命令也没那么多,就是很方便记忆一下就学会了这样子。 shodan count "/x03/x00/x00…

Docker下载途径

Docker不是Linux自带的,需要我们自己安装 官网:https://www.docker.com/ 安装步骤:https://docs.docker.com/engine/install/centos/ Docker Hub官网(镜像仓库):https://hub.docker.com/ 在线安装docker 先卸载旧的docker s…

JMeter实战之——模拟登录

本篇介绍使用JMeter 如何对需要登录的站点进行压力测试。 基本Session验证的机制 使用session进行请求验证的机制是一种常见的Web应用认证方式。 该认证方式的主要内容如下: 一、登录过程 用户输入:用户在登录页面输入用户名和密码。发送请求&#x…

JDBC: Java数据库连接的桥梁

什么是JDBC? Java数据库连接(Java Database Connectivity,简称JDBC)是Java提供的一种API,允许Java应用程序与各种数据库进行交互。JDBC提供了一组标准的接口,开发者可以利用这些接口执行SQL语句、处理结果集…

XQT_UI 组件|02| 按钮 XPushButton

XPushButton 使用文档 简介 XPushButton 是一个自定义的按钮类,基于 Qt 框架构建,提供了丰富的样式和功能选项。它允许开发者轻松创建具有不同外观和行为的按钮,以满足用户界面的需求。 特性 颜色设置:支持多种颜色选择。样式设…

Python之Excel自动化处理(三)

一、Excel数据拆分-xlrd 1.1、代码 import xlrd from xlutils.copy import copydef get_data():wb xlrd.open_workbook(./base_data/data01.xlsx)sh wb.sheet_by_index(0){a: [{},{},{}],b:[{},{},{}],c:[{},{},{}],}all_data {}for r in range(sh.nrows):d {type:sh.cell…

css知识点梳理2

1. 选择器拓展 在 CSS 中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基本选择器进行组合形成的。 ​ 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的&#xf…