STM32学习笔记二——STM32时钟源时钟树

news2024/11/15 10:04:21

目录

STM32芯片内部系统架构详细讲解:

1.芯片内部混乱电信号解决方案:

2.时钟树:

1.内部RC振荡器与外部晶振的选择

2. STM32 时钟源

3.STM32中几个与时钟相关的概念

4.时钟输出的使能及其流程

5.时钟设置的基本流程


时钟源——单片机的心脏与动脉   

STM32F103最高频率——72MHZ

STM32芯片内部系统架构详细讲解:

1.芯片内部混乱电信号解决方案:

        芯片内部的电路组成结构大多数是逻辑电路(与门、或门、非门、异或门、同或门等),然而在多个逻辑电路连接运算时,由于逻辑门内部运算涉及了充放电过程,因此在电路的运算过程中,寄存器会出现一段由于门电路运算延时产生的错误状态,但是短暂的错误状态会导致依赖此寄存器状态的程序与其他逻辑电路出现更加严重的错误。

        那么,设计电路时遇到这个问题该怎么办呢?——解决方法就是,在寄存器前面放一个边缘触发器,并且接入一个一定频率的方波信号——可以为寄存器规避门电路运算的混乱状态

        原理:方波的一个周期内,门电路执行运算产生的任何副作用都不会影响到寄存器的值,等待门电路运算稳定后,方波的上升沿到达,最终运算产生的结果才会通过边沿触发器进入寄存器中——方波信号即为时钟信号

(图片来自bilibili up主keysking)

图中的方波信号为时钟信号,时钟信号在单片机中由时钟源(单片机的心脏)产生,通过时钟树传播到整个芯片当中

2.时钟树:

AHB(Advanced High Performance Bus)先进高性能总线

(可以理解为STM32芯片内部电路的主干道,芯片上的各种外设都连接到这一总线上,通过这一总线进行数据通信)

HCLK——AHB总线中的时钟线

STM32时钟树

SysTick为时钟提供一个时钟基准

分频器:为频率作除法

APB先进外设总线:专门用来连接外设,然后通过桥接器连接到AHB总线上,与其他一同连接到AHB总线上的部分进行通信

FCLK自由运行时钟:当我们为了节省电量,需要STM32进入低功耗模式之一的停止模式时,AHB会停止运行,HCLK会停止传输时钟脉冲

Enable CSS:时钟安全系统——他可以在HSE发生故障时,立即切换会HSI,并且产生中断,让我们可以进行紧急制动处理

独立小时钟树


 

STM32 的时钟系统比较复杂, 但又十分重要,理解STM32的时钟树对理解STM32 十分重要。

下面分五个部分择要对其进行阐述:

1.内部RC振荡器与外部晶振的选择

STM32可以选择内部时钟(内部RC振荡器),也可以选择外部时钟(外部晶振)。但如果使用内部RC振荡器而不使用外部晶振,必须清楚以下几点:
(1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。

(2)对于少于100脚的产品,有两种接法:
方法1: OSC_IN和OSC _OUT分别通过10KΩ电阻接地。此方法可提高EMC性能。方法2:分别重映射OSC_IN和OSC _OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出0。此方法相对于方法1,可以减小功耗并节省两个外部电阻。

(3) 内部8MHz的RC振荡器的误差在1%左右,内部RC振荡器的精度通常比用HSE(外部晶振)要低十倍以上。STM32 的ISP就是利用了HSI (内部RC振荡器)。

2. STM32 时钟源

在STM32中,有5个时钟源,分别为HSI、HSE、LSI、 LSE、PLL
(1) HSI 是高速内部时钟,RC振荡器,频率为8MHz(是STM32主要的时钟)

(2) HSE是高速外部时钟,可接石英谐振器、陶瓷谐振器,或者接外部时钟源,它的频率范围为4MHz~ 16MHz。

(3) LSI是低速内部时钟,RC振荡器,频率为40kHz。

(4) LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

(5)PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择2~16倍,但是其输出频率最大不得超过72MHz。

3.STM32中几个与时钟相关的概念

SYSCLK:系统时钟,STM32大部分器件的时钟来源。它由AHB预分频器分配到各个部件。

HCLK:由AHB预分频器直接输出得到,它是高速总线AHB的时钟信号,提供给存储器、DMA及Cortex内核,是Cortex内核运行的时钟,CPU主频就是这个信号,它的大小与STM32运算速度、数据存取速度密切相关。

FCLK:同样由AHB预分频器输出得到,是内核的“自由运行时钟”(free running clock).“自由”表现在它不来自时钟HCLK,因此在HCLK时钟停止时FCLK也会继续运行。它的存在,可以保证在处理器休眠时,也能够采样中断和跟踪休眠事件,它与HCLK互相同步。

PCLKI:外设时钟,由APB1预分频器输出得到,最大频率为36MHz,提供给挂载在APBI总线上的外设(低速外设)。

PCLK2:外设时钟,由APB2预分频器输出得到,最大频率可为72MHz,提供给挂载在APB2总线上的外设(高速外设)。


4.时钟输出的使能及其流程

时钟输出中有很多是带使能控制的,如AHB总线时钟、内核时钟、各种APB1外设时钟、APB2外设时钟等。
当需要使用某模块时,必须先使能对应的时钟,需要注意的是定时器的倍频器,当APB的分频为1时,它的倍频值为1,否则它的倍频值就为2.
连接在APB1上的设备(低速外设)有电源接口备份接口、CAN、USB、IIC1、IIC2、UART2、UART3、SPI2、窗口看门物、Timer2、Timer3、Timer4.

注意:USB模块虽然需要一个单独的48MHz时钟信号,但它不是供USB模块工作的时钟,而只是提供给串行接口引擎(SIE)使用的时钟,USB模块工作的时钟应该是由APB1提供的
连接在APB2上的设备(高速外设)有:GPIO_A-E、USART1、ADC1、ADC2、ADC3(ADC需要采集一段时间的数据才能更准确地获取电压值)、TM1、TIM8、SPI1、AFIO.

5.时钟设置的基本流程

假设使用HSE时钟,并且使用ST的固件库函数,那么在程序中设置时钟参数的流程如下:

第1步:
将RCC寄存器重新设置为默认值,即调用函数RCC_DeInit;
第2步:
打开外部高速时钟晶振HSE,调用函数RCC_HSEConfig(RCC_HSE_ON);
第3步:
等待外部高速时钟晶振工作,调用HSEStartUpStatus = RCC_WaitForHSEStartUp();

第4步:
设置AHB时钟,即调用函数RCC_HCLKConfig;
第5步:
设置高速AHB时钟,即调用函数RCC_PCLK2Config;
第6步:
设置低速AHB时钟,即调用函数RCC_PCLK1Config;
第7步:
设置PLL,即调用函数RCC_PLLConfig;
第8步:
打开PLL,即调用函数RCC_PLLCmd(ENABLE);
第9步:
等待PLL工作,while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);

第10步:
设置系统时钟,即调用函数RCC_SYSCLKConfig;
第11步;
判断PLL是否是系统时钟,while(RCC_GetSYSCLKSource()!=0x08);
第12步:
打开要使用的外设时钟,即调用函数RCC_APB2PeriphClockCmd();或者 RCC_APB1PeriphClockCmd();

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

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

相关文章

应用下载页源码简洁高大尚下载单页

首先可以设置多个下载源 软件截图可以滚动 暗夜主题交换 图片都可以自定义配置 精美的页面会让你眼前一亮的 源代码学习资料:https://pan.baidu.com/s/1ulE9zde2XMs-6E7eF3D3kg?pwdfhxq 密码:123

1178:单词数

题目描述 统计一篇文章里不同单词的总数。 输入 有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由大小写字母和空格组成,没有标点符号,遇到#时表示输入结束。每篇文章的单词数小于1000,每个单词最多由30个…

系统分析师-22年-下午题目

系统分析师-22年-下午题目 更多软考知识请访问 https://ruankao.blog.csdn.net/ 试题一必答,二、三、四、五题中任选其中两题作答 试题一 (25分) 说明 某软件公司拟开发一套博客系统,要求能够向用户提供一个便捷发布自已心得,及时有效的…

Cmake编译Opencv3.3.1遇到有些文件无法下载的错误解决:

前言: 对于,opencv有些配置文件错误并未致命,所以,有错误也不影响后续的编译:但是,后引用如果要用,在回过头来还是要解决的。 问题表述: 比如,有些文件下载的错误&am…

穷游网酒店数据采集与可视化分析与实现

摘 要 穷游网酒店数据采集与可视化分析大屏的背景是为了满足用户对酒店数据的需求以及提供数据洞察和决策支持。随着旅游业的快速发展,人们对酒店信息的需求日益增加,而穷游网作为一家专注于旅游信息的网站,拥有丰富的酒店数据资源。 这个大…

JS基础 - 遍历对象方法(6种)

初始值: var obj {a: 1,b: 2,c: 3,d: 4,e: 5,}; 第一种:for in for (let key in obj) {console.log(key ":" obj[key]);} 第二种:Object.keys 获取key Object.keys(obj).forEach((key) > {console.log(key ":" …

【乳腺肿瘤诊断分类及预测】基于Elman神经网络

课题名称:基于Elman神经网络的乳腺肿瘤诊断分类及预测 版本日期:2023-05-15 运行方式: 直接运行Elman0501.m 文件即可 代码获取方式:私信博主或QQ:491052175 模型描述: 威斯康辛大学医学院经过多年的收集和整理&a…

关于TongWeb部署应用报错java.lang.NoSuchFieldError: REFLECTION (by liuhui)

关于TongWeb部署应用报错java.lang.NoSuchFieldError: REFLECTION (by liuhui) 关于TongWeb部署应用报错java.lang.NoSuchFieldError: REFLECTION 问题现象:xml解析对象工厂类错误导致解析失败 解决办法:增加配置参数问题解决 -…

学习鸿蒙基础(2)

arkts是声名式UI DevEcoStudio的右侧预览器可以预览。有个TT的图标可以看布局的大小。和html的布局浏览很像。 上图布局对应的代码: Entry //入口 Component struct Index {State message: string Hello Harmonyos //State 数据改变了也刷新的标签build() {Row()…

MATLAB知识点:MATLAB的文件管理

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第2章 上一章我们说过,MATLAB是一款非常强…

opencv-python计算视频光流

光流基本概念 光流表示的是相邻两帧图像中每个像素的运动速度和运动方向。具体:光流是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系&#xf…

软考复习之数据结构篇

算法设计 迭代法:用于求方程的近似根。 1、若方程无解,则算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考查方程是否有解,并在程序中对迭代的次数给予限制。 2、方程虽有解&#…

B3626 跳跃机器人——洛谷(疑问)

题目描述 地上有一排格子,共 �n 个位置。机器猫站在第一个格子上,需要取第 �n 个格子里的东西。 机器猫当然不愿意自己跑过去,所以机器猫从口袋里掏出了一个机器人!这个机器人的行动遵循下面的规则&#…

使用 Paimon + StarRocks 极速批流一体湖仓分析

摘要:本文整理自阿里云智能高级开发工程师王日宇,在 Flink Forward Asia 2023 流式湖仓(二)专场的分享。本篇内容主要分为以下四部分: StarRocksPaimon 湖仓分析的发展历程使用 StarRocksPaimon 进行湖仓分析主要场景和…

读AI3.0笔记10_读后总结与感想兼导读

1. 基本信息 AI 3.0 (美)梅拉妮米歇尔 著 四川科学技术出版社,2021年2月出版 1.1. 读薄率 书籍总字数355千字,笔记总字数33830字。 读薄率33830355000≈9.53% 1.2. 读厚方向 千脑智能 脑机穿越 未来呼啸而来 虚拟人 新机器人 如何创造可信的AI 新机器智…

【极数系列】Flink集成DataSource读取Socket请求数据(09)

文章目录 01 引言02 简介概述03 基于socket套接字读取数据3.1 从套接字读取。元素可以由分隔符分隔。3.2 windows安装netcat工具(1)下载netcat工具(2)安装部署(3)启动socket端口监听 04 源码实战demo4.1 po…

回归预测 | Matlab实现CPO-SVR冠豪猪优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab实现CPO-SVR冠豪猪优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab实现CPO-SVR冠豪猪优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现CPO-SVR冠豪猪优化支持向量机的数据多输入…

深度强化学习(王树森)笔记11

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

部署PXE高效批量网络装机

部署PXE高效批量网络装机 因在Cisco3850核心交换机中已开启DHCP 服务,因此不需要在配置DHCP服务。如果您的网络环境中也已有DHCP服务,也不用再配置DHCP服务了,直接部署PXE相关服务即可。 找一台linux系统的服务器,这本次试验用的是…

华为云codeArts使用操作流程

一、开启服务 什么是华为云CodeArts? 本实验将在华为云CodeArts平台上搭建一个凤凰商城开发项目,并完成需求管理、代码仓库、代码检查、编译构建、发布、部署、流水线等软件开发操作。 1)新建项目 进入华为云“控制台”,鼠标移动到页面左侧菜…