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.mzph.cn/bicheng/58198.shtml

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

相关文章

数据结构:“小猫钓鱼游戏”

一:题目 栈和队列的综合应用:“小猫钓鱼”的游戏规则是:将一副扑克牌平均分成两份,每人拿一份。玩家甲先拿出手中的第一张扑克牌放在桌上,然后玩家乙也拿出手中的第一张扑克牌,并放在玩家甲刚打出的扑克牌的…

采用Excel作为可视化设计器的开源规则引擎 NopRule

决策树和决策矩阵是业务人员可以直观理解的复杂IF-ELSE逻辑表达形式,也是规则引擎中最常用、最有用的部分。常见的规则引擎如Drools虽然提供了更加丰富的功能特性集, 特别是所谓的RETE算法可以用于高效复用多次重复出现的表达式片段,但在实际…

SpringSecurity + Jwt权限校验,接口调用403 Forbidden问题排查与解决

问题背景:部分接口调用正常,部分接口调用报403Forbidden,postman不显示具体报错信息。 问题描述: 接口调用报错,经排查,权限校验认证通过,可以进入接口,但是在执行过程中&#xff0…

深入了解 Android 中的命名空间:`xmlns:tools` 和其他常见命名空间

在 Android 开发中,xmlns (.xml的namespace)命名空间是一个非常重要的概念。通过引入不同的命名空间,可以使用不同的属性来设计布局、设置工具属性或者支持自定义视图等。除了 xmlns:tools 以外,还有很多常见的命名空间…

从0到1学习node.js(npm)

文章目录 一、NPM的生产环境与开发环境二、全局安装三、npm安装指定版本的包四、删除包 五、用npm发布一个包六、修改和删除npm包1、修改2、删除 一、NPM的生产环境与开发环境 类型命令补充生产依赖npm i -S uniq-S 等效于 --save -S是默认选项npm i -save uniq包的信息保存在…

webpack 老项目升级记录:从 node-sass 限制的的 node v8 提升至支持 ^node v22

老项目简介 技术框架 vue 2.5.17webpack 4.16.5"webpack-cli": "3.1.0""node-sass": "^4.7.2" 几个阶段 第一步:vue2 升级到最新 第一步:升级 vue2 至最新版本,截止到目前(2024-10-…

ATom:加州理工学院化学电离质谱仪(CIT-CIMS)的现场数据,V2版

目录 简介 摘要 代码 引用 网址推荐 知识星球 机器学习 ATom: In Situ Data from Caltech Chemical Ionization Mass Spectrometer (CIT-CIMS), V2 ATom:加州理工学院化学电离质谱仪(CIT-CIMS)的现场数据,V2版 简介 该数…

trueNas 24.10 docker配置文件daemon.json无法修改(重启被覆盖)解决方案

前言 最近听说truenas的24.10版本开放docker容器解决方案放弃了原来难用的k3s,感觉非常巴适,就研究了一下,首先遇到无法迁移老系统应用问题比较好解决,使用sudo登录ssh临时修改daemon.json重启docker后进行docker start 容器即可…

十一、数据库配置

一、Navicat配置 这个软件需要破解 密码是:123456; 新建连接》新建数据库 创建一个表 保存出现名字设置 双击打开 把id设置为自动递增 这里就相当于每一次向数据库添加一个语句,会自动增长id一次 二、数据库的增删改查 1、Vs 建一个控…

Java设计模式之代理模式(二)

一、CGLIB动态代理 JDK动态代理要求被代理的类必须实现接口,有很强的局限性,而CGLIB动态代理则不要求被代理类实现接口。简单的说,CGLIB会让生成的代理类继承被代理类,并在代理类中对代理方法进行强化处理(前置处理、后置处理等)。…

git的学习之远程进行操作

1.代码托管GitHub:充当中央服务器仓库的角色 2.git远程进行操作 3.配置本地服务器的公钥 4.推送 5.git远程操作 pull .gitignore 6.给命令配置别名 git config --global alias.st status 7.标签管理 git tag -a [name] -m "XXX" [commit_id] 操作标签…

基于Python的自然语言处理系列(46):4-bit LLM 量化与 GPTQ

在本篇文章中,我们将深入探讨如何使用 GPTQ (Generative Pre-trained Quantization) 进行4-bit大语言模型(LLM)的量化。在大规模语言模型训练和推理的背景下,模型的量化不仅能够大大降低计算成本,还能够提高推理速度,因此对构建高…

查找与排序-插入排序

1.直接插入排序的基本思想 假设n个数据元素关键字存储在静态数组a中,则直接插入排序的基本思想可做如下描述: (1)初始有序子序列由一个元素a[0] 组成; (2)从a[1]开始,对于序列中每…

leetcode 75-13 k和数对的最大数目

我的思路 sort函数排序 然后双指针判断 这样时间复杂度nlgn 题解给出了一种空间换时间方法 用哈希表 注意一下写法 现在完全不会这样写 还有就是注意sort函数的代码 怎么写排序也给忘了 sort用的是什么排序方法

自由职业者的一天:作为小游戏开发者的真实工作日记

大家好,我是小蜗牛。 在这个快节奏的数字时代,自由职业者的生活往往充满了挑战与机遇。作为一名微信小游戏开发者,我的日常工作并不像人们想象中的那样充满光鲜亮丽的画面,而是由无数的编码、调试和创意碰撞组成的。今天&#xf…

MySQL 回收表碎片实践教程

前言: 在 MySQL 数据库中,随着数据的增删改操作,表空间可能会出现碎片化,这不仅会占用额外的存储空间,还可能降低表的扫描效率,特别是一些大表,在进行数据清理后会产生大量的碎片。本篇文章我们…

Lesson11---stack

Lesson11—stack cstack的介绍使用以及模拟实现 文章目录 Lesson11---stack前言一、stack成员函数1.stack2.empty3.size4. top5.push6.pop 二、stack相关题目1. 最小栈2.栈的压入、弹出序列 三、模拟实现总结 前言 stack的介绍和使用stack是一种容器适配器,专门用…

B+树(B树的改进)

目录 一、什么是B树? 二、B树的性质 1.B树被广泛作为数据库索引的索引结构 2.m个分支的结点有m个元素 3.每个元素对应子结点最大值 4.多级索引结构 5.叶子结点层包含所有元素 三、B树和B树的区别 四、B树的查找 1.顺序查找 2.随机查找 3.范围查找 一、什…

vue3完整Demo(数据绑定,数据显示,数据修改,数据提交)

需要引入的的依赖:jquery(用于异步请求) 一、数据显示的前端页面 条件查询数据并显示,下拉框使用的model双向绑定 二、js代码(list页面的数据请求) 后端传来的时间数据需要转换可以使用new Intl.DateTim…

Vue3 学习笔记(七)Vue3 语法-计算属性 computed详解

#1024程序员节|征文# 1、计算属性 computed 在 Vue.js 中,计算属性(computed properties)是一种特殊的响应式属性,它们根据依赖的响应式数据自动更新。计算属性非常适合用于当你需要根据现有数据派生出一些状态时。 (1)、基本用法…