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

STM32第九节(中级篇):RCC——时钟树讲解(第一节)

目录

前言

STM32第九节(中级篇):RCC——时钟树讲解

时钟树主系统时钟讲解

HSE时钟

HSI时钟

锁相环时钟

系统时钟

SW位控制

HCLK时钟

PCLKI时钟

PCLK2时钟

RTC时钟

MCO时钟输出

6.2.7时钟安全系统(CSS)

小结


前言

        从本章开始,我们就已经开始了中级篇的学习。在这一阶段,我们主要学习时钟RCC,中断定时器,串口通信,DMA,读写EEPROM,读写串行Flash以及FatFs的知识点,整体难度又上升了一部分。所以之前的代码功底,C语言编写能力以及单片机的使用至关重要。如果想学习的同学们可以观看我之前写的初级篇的内容。

        创作不易,点个三连支持一下吧!

STM32第九节(中级篇):RCC——时钟树讲解

        本节课我们讲RCC——复位和时钟控制。复位部分比较简单,我们本节课主要讲时钟部分。如下图就是时钟树的原理图。在讲完课程之后,我们要自己写一个系统使用的配置函数并实现超频工作。官方F103系列的时钟为72M,我们可以配置为128M,为极限频率。

时钟树主系统时钟讲解

HSE时钟

        该时钟为外部的高速时钟,如图所示,他靠的是OSC_IN以及OSC_OUT进行输入以及输出,来源呢是无源晶振(4~16M)我们通常使用8M。关于控制是RCC_CR时钟控制寄存器的位16:HSEON控制。我们可以看到,在下图中有两个起振电容,大小为20PF。与之相匹配的还有HSI在内部做时钟,两者的区别为HSE精度比较高,而LSE受温度影响,会有偏差。

HSI时钟

        高速的内部时钟,大小为8M,当HSE故障时,系统时钟会自动切换到HSI,直到HSE启动成功。而控制它的是RCC_CR 时钟控制寄存器的位0:HSION控制。这里要注意一下,HSE时钟的8M在经过倍频9倍后配置为72M,而如果启动了HSI时钟,则一直为8M,无法正常完成工作。

锁相环时钟

        来源 : (HSI/2、HSE)经过倍频所得。

        控制:CFGR:PLLXTPRE、PLLMUL口注意:PLL时钟源头使用HIS/2的时候,PLLMUL最大只能是16,这个时候PLLCLK最大只能是64M,小于ST官方推荐的最大时钟72M。

        我们观察发现,在HSE时钟进去之后,会有一个二分频和一个不分频的线路,与这根不分频线路相接的就是锁相环时钟源PLLSRC,除了这跟线路,还有一根就是HSI的二分频线路,8M被分频为4M接入PLLSRC。相对应的寄存器为RCC_CFGR寄存器的第十七位PLLXTPRE。

        PLLXTPRE: HSE分频器作为PLL输入(HSE divider for PLL entry)由软件置'1'或清”0'来分频HSE后作为PLL输入时钟。只能在关闭PLL时才能写入此位。0:HSE不分频,1:HSE 2分频。

        PLLSRC: PLL输入时钟源(PLLentryclock source)由软件置"1'或清'0'来选择PLL输入时钟源,只能在关闭PLL时才能写入此位。0:HSI振荡器时钟经2分频后作为PLL输入时钟,1:HSE时钟作为PLL输入时钟。

系统时钟

        我们可以看到,对于系统时钟来说,有三种方式可以配置系统时钟输入:HSI和HSE直接输入以及PLLCLK锁相环时钟配置,一般就是用锁相环时钟配置时钟为72M.,他就由SW位来控制。

    

SW位控制

        SW[1:0]:系统时钟切换(System clock switch)由软件置'1'或清’0'来选择系统时钟源。在从停止或待机模式中返回时或直接或间接作为系统时钟的HSE出现故障时,由硬件强制选择HSI作为系统时钟(如果时钟安全系统已经启动)。

        00:HSI作为系统时钟:

        01:HSE作为系统时钟:

        10:PLL输出作为系统时钟;

        11:不可用。

        而相应的寄存器位SWS位也会配置为1:

        我们一般把SW配置为10,PLL输出。然后我们读取SWS位是否为10,来判断我们是否时钟切换完毕。

HCLK时钟

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

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

        控制:CFGR:HPRE。

PCLKI时钟

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

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

        控制:RCC CFGR 时钟配置寄存器的PPRE1位

PCLK2时钟

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

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

        控制 : RCC CFGR 时钟配置寄存器的PPRE2位

        当APB2配置为72M的时候,通过ADC预分频器最大为14MHz,而在不超频的前提下,最大放大倍数为4倍。

RTC时钟

        RTC时钟:为芯片内部的RTC外设提供时钟口来源:HSE RTC(HSE分频得到)、LSE(外部32.768KHZ的晶体提供)、LSI(32KHZ)

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

        独立看门狗时钟:IWDGCLK,由LSI提供

        除了HSE提供的128分之一,还有LSE时钟提供的32.768KHz,还有一个40KHzz的LSI HIC。我们可以发现,在LSE时钟中,有两个接口,分别为OSC32_IN以及OSC32_OUT,如图所示:

MCO时钟输出

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

        来源:PLLCLK/2,HSE、HSI、SYSCLK

        控制:CRGR以及MCO

6.2.7时钟安全系统(CSS)

        时钟安全系统可以通过软件被激活。一旦其被激活,时钟监测器将在HSE振荡器启动延迟后被使能,并在HSE时钟关闭后关闭。

        如果HSE时钟发生故障,HSE振荡器被自动关闭,时钟失效事件将被送到高级定时器(TIM1和TIM8)的刹车输入端,并产生时钟安全中断CSSI,允许软件完成营救操作。此CSSI中断连接到CortexTm-M3的NM|中断(不可屏蔽中断)。一旦CSS被激活,并目HSE时钟出现故障,CSS中断就产生,并且NMI也自动产生。NMI将被不断执行,直到CSS中断挂起位被清除。因此,在NMI的处理程序中必须通过设置时钟中断寄存器(RCC CIR)里的CSSC位来清除CSS中断。

        如果HSE振荡器被直接或间接地作为系统时钟,(间接的意思是:它被作为PLL输入时钟,并且PLL时钟被作为系统时钟),时钟故障将导致系统时钟自动切换到HSI振荡器,同时外部HSE振荡器被关闭。在时钟失效时,如果HSE振荡器时钟(被分频或未被分频)是用作系统时钟的PLL的输入时钟,PLL也将被关闭。

小结

        本节课我们讲述了功能框图,下节课我们讲这个系统使用配置代码部分。

相关文章:

STM32第九节(中级篇):RCC——时钟树讲解(第一节)

目录 前言 STM32第九节(中级篇):RCC——时钟树讲解 时钟树主系统时钟讲解 HSE时钟 HSI时钟 锁相环时钟 系统时钟 SW位控制 HCLK时钟 PCLKI时钟 PCLK2时钟 RTC时钟 MCO时钟输出 6.2.7时钟安全系统(CSS) 小结 前言 从…...

c/c++字符串处理标准库 string 介绍

c语言中string.h介绍 C语言的标准库中包含了一个头文件 <string.h>&#xff0c;该头文件提供了一系列字符串处理函数的声明和定义。以下是一些常用的函数&#xff1a; 字符串复制&#xff1a;strcpy(dest, src)。将源字符串 src 复制到目标字符串 dest&#xff0c;包括…...

HarmonyOS NEXT应用开发之深色模式适配

介绍 本示例介绍在开发应用以适应深色模式时&#xff0c;对于深色和浅色模式的适配方案&#xff0c;采取了多种策略如下&#xff1a; 固定属性适配&#xff1a;对于部分组件的颜色属性&#xff0c;如背景色或字体颜色&#xff0c;若保持不变&#xff0c;可直接设定固定色值或…...

Go微服务: 基于Go Micro框架实现微服务调用

Go Micro 1 &#xff09;概述 在具体的项目开发过程中&#xff0c;开发者聚焦的是业务逻辑的开发和功能的实现大量的环境配置&#xff0c;调试搭建等基础性工作会耗费相当一部分的精力因此有必要将微服务架构中所涉及到的&#xff0c;相关的解决方案做集中管理和维护Go Micro …...

大模型prompt提示词如何调优?

当使用大型模型&#xff08;如GPT-3.5&#xff09;时&#xff0c;可以通过优化提示&#xff08;prompt&#xff09;来引导模型生成更加符合预期的内容。以下是一些调优提示词的建议&#xff1a; 1、清晰的问题陈述&#xff1a;确保你的问题或提示清晰、简明&#xff0c;能够准…...

【Python/crawl】如何使用Python爬虫将一系列网页上的同类图片下载到本地

【需求】 从网页https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html 开始&#xff0c;有十七页&#xff0c;每页都有大漂亮“小濑田麻由”的若干图片&#xff0c;想要将其…...

Postgresql 连接数查看,死锁问题解决

-- 查看所有连接 select * -- datname,pid,application_name,state from pg_stat_activity; -- 查询最大连接数 select max_conn-now_conn as resi_conn from (select setting::int8 as max_conn,(select count(*) from pg_stat_activity) as now_conn from pg_settings where…...

ssm蛋糕甜品商城系统(程序+文档+数据库)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…...

算法空间复杂度计算

目录 空间复杂度定义 影响空间复杂度的因素 算法在运行过程中临时占用的存储空间讲解 例子 斐波那契数列递归算法的性能分析 二分法&#xff08;递归实现&#xff09;的性能分析 空间复杂度定义 空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大…...

C++ lambda函数个人理解

及方便自己在函数内部定义函数 int main() {int i 1;auto c [](int a, int c) {return ab;};int d a(2, i);cout<<c;return 0; }格式&#xff1a; auto functionname [capture](parameters) -> return_type { /* … */ }; &#xff08;1&#xff09;[capture] &a…...

SwiftUI的context Menu

SwiftUI的 context Menu 现在来演示一下如何使用 SwiftUI 的 Context Menu 。 代码&#xff1a; import SwiftUIstruct ContextMenuBootCamp: View {State var bgColor: Color .purplevar body: some View {VStack(alignment: .leading, spacing: 10.0) {Image(systemName: …...

【数据结构】树与堆 (向上/下调整算法和复杂度的分析、堆排序以及topk问题)

文章目录 1.树的概念1.1树的相关概念1.2树的表示 2.二叉树2.1概念2.2特殊二叉树2.3二叉树的存储 3.堆3.1堆的插入&#xff08;向上调整&#xff09;3.2堆的删除&#xff08;向下调整&#xff09;3.3堆的创建3.3.1使用向上调整3.3.2使用向下调整3.3.3两种建堆方式的比较 3.4堆排…...

安装CDH平台的服务器磁盘满了,磁盘清理过程记录

1.使用hdfs命令查看哪个文件占用最大 hdfs dfs -du -h /tmp 2.我的服务器上显示/tmp/hive/hive文件夹下的&#xff0c;一串字符串命名的文件特别大几乎把磁盘占满了 网上查到/tmp文件是临时文件&#xff0c;由于hiveserver2任务运行异常导致缓存未删除&#xff0c;正常情况下…...

《互联网的世界》第七讲-能源

本想聊聊 tcp 和 quic&#xff0c;但这些都属于术的范畴&#xff0c;变化多端&#xff0c;等孩子们长大了又不知变成什么样子了&#xff0c;趁这段时间在家&#xff0c;还是得讲一些相对不变的东西&#xff0c;或法或势。 从 安阳卖血糕的精巧篦子 想到如何做圆米粉和圆面条&a…...

前端代码整洁与规范之CSS篇

一、代码整洁 1. 命名规范 CSS 类名的命名应该简洁清晰&#xff0c;能够准确描述元素的作用。避免使用无意义的名称&#xff0c;例如“a”、“b”等&#xff0c;而应该使用有意义的英文单词或单词缩写。同时&#xff0c;也要避免使用驼峰命名法和下划线命名法混杂使用&#x…...

在【IntelliJ IDEA】中配置【Tomcat】【2023版】【中文】【图文详解】

作为一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;IntelliJ IDEA为Web服务器提供了卓越的支持&#xff0c;从而极大地简化了程序员在Web开发过程中的工作流程。学习Java Web开发实质上就是掌握如何创造动态Web资源&#xff0c;这些资源在完成开发后&…...

【SSM】任务列表案例 基本CRUD SSM整合

文章目录 一、案例功能预览二、接口分析三、前端工程导入四、后端程序实现和测试4.1 准备4.2 功能实现4.2.1 分页查询显示4.2.2 添加计划4.2.2 删除计划4.2.3 修改计划 4.3 前后联调 一、案例功能预览 Github 地址 &#xff1a; ssm-integration-part 二、接口分析 学习计划…...

基于微信小程序的校园跑腿小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

网络学习:9个计算机的“网络层”知识点

目录 一、IP 地址 1.1 分类表示法&#xff1a; 1.1.1 分类表示地址的其他说明 1.2 无分类编址 CIDR 二、IP 数据报文格式 Q: IP 报文里有什么&#xff1f;可以不按顺序或者字节来讲一讲 三、 路由概念 3.1 路由表 3.2 路由网络匹配 3.3 ARP 解析 3.4 RARP 逆地址解析…...

web项目的搭建

使用Webstorm并创建Next.js文件 1、配置nodejs环境、安装webstorm【配置node.js可以使用nvm去管理nodejs的版本】 2、需要破解webstorm&#xff0c;可能会导致原本的idea失效&#xff0c;注册码过期 3、taobao的npm过期&#xff0c;导致npm is sass执行不成功&#xff0c;需…...

C++for语句

1.求平均年龄 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位 输入 第1行有一个整数n(1 <= n <=100),表示学生的人数;其后n行每行有1个整数,表示每个学生的年龄,取值为15~25 输出 一行,包含一个浮点数,为所求的平…...

最新基于R语言lavaan结构方程模型(SEM)技术

原文链接&#xff1a;最新基于R语言lavaan结构方程模型&#xff08;SEM&#xff09;技术https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247596681&idx4&sn08753dd4d3e7bc492d750c0f06bba1b2&chksmfa823b6ecdf5b278ca0b94213391b5a222d1776743609cd3d14…...

【网络安全】-数字证书

数字证书 数字证书是互联网通讯中用于标志通讯各方身份信息的一串数字或数据&#xff0c;它为网络应用提供了一种验证通信实体身份的方式。具体来说&#xff0c;数字证书是由权威的证书授权&#xff08;CA&#xff09;中心签发的&#xff0c;包含公开密钥拥有者信息以及公开密…...

【C++ 】stack 和 queue

1. 标准库中的stack stack 的介绍&#xff1a; 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行 元素的插入与提取操作 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其…...

html--彩虹马

文章目录 htmljscss 效果 html <!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>Rainbow Space Unicorn</title> <link rel"stylesheet" href"css/style.css"> &l…...

如何将应用一键部署至多个环境?丨Walrus教程

在 Walrus 平台上&#xff0c;运维团队在资源定义&#xff08;Resource Definition&#xff09;中声明提供的资源类型&#xff0c;通过设置匹配规则&#xff0c;将不同的资源部署模板应用到不同类型的环境、项目等。与此同时&#xff0c;研发人员无需关注底层具体实现方式&…...

Redis的一些问题,解决并发的

项目通布隆过滤器&#xff1a; 布隆过滤器&#xff1a; 布隆过滤器是一种空间效率非常高的数据结构&#xff0c;用于快速判断一个元素是否可能存在于一个集合中。它由一个位数组&#xff08;通常是长度为 m 的比特数组&#xff09;和 k 个不同的哈希函数组成。当一个元素被加入…...

郭炜老师mooc第十一章数据分析和展示(numpy,pandas, matplotlib)

多维数组库numpy numpy创建数组的常用函数 # numpy数组import numpy as np #以后numpy简写为np print(np.array([1,2,3])) #>>[1 2 3] print(np.arange(1,9,2)) #>>[1 3 5 7] 不包括9 print(np.linspace(1,10,4)) #>>[ 1. 4. 7. 10.] # linespace(x,y,n)&…...

Redis主从架构和管道Lua(一)

Redis主从架构 架构 Redis主从工作原理 如果为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个PSYNC命令给master请求复制数据。master受到PSYNC命令&#xff0c;会在后台进行数据持久化通过bgsave生成最新的 RDB快照文件&#xff0c;持久化期间…...

GTH手册学习注解

CPLL的动态配置 终于看到有这个复位功能了 QPLL SWITCHing需要复位 器件级RESET没发现有管脚引出来 两种复位方式&#xff0c;对应全复位和器件级复位 对应的复位功能管脚 改那个2分频的寄存器说明段&#xff0c;复位是自动发生的&#xff1f;说明可能起效了&#xff0c;但是分…...