stm32f10x 时钟系统详解/时钟树/时钟初始化/SystemInit函数全注解

2023-11-16

STM32F10x 时钟系统初学总结


一、时钟系统

1、概述

   用通俗的话来说,时钟是单片机的“脉搏”,是单片机的驱动源,使用单片机中的任何一个外设都必须打开此外设相应的时钟。这样的好处是,在不使用某个外设的时候,关闭此时钟外设,从而可以降低系统的总功耗,进而节能,以实现低功耗的效果。

   衡量“脉搏”强度的量为xx次/分钟,在单片机中衡量时钟强度的量叫做时钟频率,即 xx 周期/秒,就是我们常说的赫兹 Hz;脉搏(心跳)每跳动一次,就会将血液能量送往全身以供使用,脉搏越快,每分钟输送能量越大,耗能越快;相对应的时钟每发送一个时钟信号,单片机处理一条指令(或一条指令的一部分),频率越高,每秒钟处理指令越多,耗能相应越快。

2、原理

  由时钟源(晶体振荡器等)产生时钟信号,该时钟信号经过分频/倍频后作为系统时钟,系统时钟经分频/倍频后作为各个外设的频率;在时钟信号发出后,单片机内部各部分收到了来自时钟的信号,执行指令(类似于触发器,由电平高低触发)。系统时钟,是处理器运行时间基准(每一条机器指令一个时钟周期)。这样每个时钟 tick 系统都会处理一步指令,这样使得工作一步一步,不会出现紊乱。所以频率越高,每秒钟处理指令数越多,速度越快。(此处为理想情况,不考虑其他外接设备造成的“木桶效应”)

   时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行指令。以 Pentium 4 2.0 为例,它的工作主频为 2.0GHz,具体来说,2.0GHz 意味着每秒钟它会产生 20 亿个时钟脉冲信号,每个时钟信号周期为 0.5 纳秒。而 Pentium 4 CPU 有 4 条流水线运算单元,如果负载均匀的话,CPU 在 1 个时钟周期内可以进行 4 个二进制加法运算。这就意味着该 Pentium 4 CPU 每秒钟可以执行 80 亿条二进制加法运算。

3、stm32 时钟概述

   STM32 本身十分复杂,外设非常多,但是在我们实际使用的过程中往往不会用到所有的外设,如果将全部外设都开启,就会造成浪费,加大耗能;所以在实际情况下,STM32 的外设时钟是独立的,可以控制使能或除能,即“打开”需要用到的外设,不用的外设是默认“关闭”的。

   使用任何外设都需要时钟才能启动,但是不同的外设所需要的时钟频率不同,都是用低速无法满足需求,都是用高速又会造成浪费。一个单片机内提供多个不同的系统时钟,可以适应更多的应用场合。不同的功能模块会有不同的时钟上限,因此提供不同的时钟,也能在一个单片机内放置更多的功能模块。对不同模块的时钟增加开启和关闭功能,可以降低单片机的功耗。并且,同一个电路,时钟越快功耗越快,同时抗电磁干扰能力也就越弱,所以较为复杂的 MCU 都是采用多时钟源的方法来解决这些问题。所以便有了 STM32 复杂的时钟系统和时钟树。主要的目的就是给相对独立的外设模块提供时钟,也是为了降低整个芯片的耗能。

二、STM32 系统框图

在这里插入图片描述

图 1-stm32f10x 系统时钟框架图

在这里插入图片描述

图 2-stm32f10x 系统时钟框架图-官方数据手册版

1、时钟源

   stm32f10x 时钟系统总共有四个时钟源:HSE、LSE、HSI、LSI 和 PLL,其中 PLL 是由时钟信号输入再进行倍频,间接产生时钟信号,另外四个时钟源为石英晶振或 RC 振荡器,直接产生时钟信号;芯片内的其他时钟都是通过以上五个时钟源分频或倍频得来;图 1 中为蓝色方块。

(1)HSE(External high-speed clock)

  HSE Osc,高速外部时钟信号,可接晶体/陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz-16MZh;通常选用 8MHz 的晶振;

(2)LSE(External low-speed clock)

  LSE Osc,低速外部时钟,接频率为 32.768MHz 的石英晶体,为实时时钟或其他定时器时钟提供一个低功耗且准确的时钟源;

(3)HSI(Internal high-speed clock)

  HSI RC,高速内部时钟,RC 振荡器,频率为 8MHz,精度较于晶体/陶瓷谐振器较低。

(4)LSI(Internal low-speed clock)

  LSI RC,低速内部时钟,RC 振荡器,频率为 40KHz,可以在停机和待机模式下保持运行。

(5)PLL(Phase Locked Loop)

  PLL,锁相环倍频输出,时钟输入源可选择为 HSI/2、HSE 或者 HSE/2;可选择 16 种倍频 1-16;输出为锁相环倍频输出时钟(PLLCLK,最大 72MHz)。

2、选择器

   stm32f10x 芯片时钟系统中,共有 5 个频率选择器:PLLXTPRE、PLLSRC、SW、MCO、RTCSEL,功能为从多个输入时钟源中选择一个作为选择器输出;图 1 中为灰色梯形。

(1)PLLXTPRE(HSE divider for PLL entry)

   PLLXTPRE,HSE 分频器作为 PLL 输入;选择 HSE 不分频或 HSE 二分频输出到 PLLSRC。

(2)PLLSRC(PLL entry clock source)

   PLLSRC,PLL 输入时钟源,选择 HSI 经二分频或者 PLLXTPRE 输出时钟作为输出时钟到 PLL;

(3)SW(System clock switch)

   SW,系统时钟切换,选择 HSI 或 HSE 或 PLL 输出作为系统时钟;

(4)MCO(Microcontroller clock output)

   MCO,微控制器时钟输出,选择不输出、系统时钟(SYSCLK)输出、内部 RC 振荡器时钟(HSI)输出、外部振荡器时钟(HSE)输出或 PLL 时钟 2 分频后输出。

(5)RTCSEL(RTC clock source selection)

   RTCSEL,RTC 时钟源选择,无时钟、LSE 振荡器作为 RTC 时钟、LSI 振荡器作为 RTC 时钟、HSE 振荡器在 128 分频后作为 RTC 时钟。

3、(预)分频器/“倍频器”

   stm32f10x 芯片时钟系统中,可供设置选择分频系数的共有 5 个预分频器和 2 个倍频器;5 个预分频器:AHB prescaler、APB1 prescaler、APB2 prescaler、ADC prescaler、USB prescaler;2 个倍频器:TIM2,3,4 Multiplier、TIM1 Multiplier;功能是将输出时钟频率倍频或分频后输出;图 1 中为绿色方形。

(1)AHB prescaler

   AHB

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32f10x 时钟系统详解/时钟树/时钟初始化/SystemInit函数全注解 的相关文章

  • 思科CISCO常用命令汇总

    视图模式介绍 1 普通视图router gt 2 特权视图router 在普通模式下输入enable 3 全局视图router config 在特权模式下输入configt 4 接口视图router config if 在全局模式下输入in
  • ASN.1的一些理解

    为什么要有ASN 1这个东西 我们知道 像C Java这种高级语言 对于计算机来说都要转化为二进制代码才能识别和操作 这就涉及到序列化和反序列化这两个概念 将一个对象序列化成二进制代码 就可以保存成文本或者利用网络传输到远程 与序列化相对的
  • 2021-02-23(亚马逊服务存储桶)

    亚马逊云服务器测试情况 需要外网 国际 才能登录 网址 https 956438185477 signin aws amazon com console 国际短信的话 在右上角区域区域选择弗吉尼亚北部 左边选择sms短信服务 视频加速要用到

随机推荐

  • 13.openssl编程——ASN1库

    13 1 ASN1 简介 ANS 1 Abstract Syntax Notation One X 208 是一套灵活的标记语言 他允许定义多种数据类型 从integer bit string 一类的简单类型到结构化类型 如set和sequ
  • LeetCode-链表中倒数第k个节点

    单链表只能从前往后遍历 所以 我们可以先计算出链表长度 倒数第k个节点相当于正数第n k 1个节点 然后我们再从头往后找 找到第n k 1个节点就可以了 while循环版 Definition for singly linked list
  • Semaphore 源码分析

    需要提前了解的知识点 AbstractQueuedSynchronizer 实现原理 类介绍 Semaphore 信号量 是用来控制同时访问特定资源的线程数量 它通过协调各个线程 以保证合理的使用公共资源 比如控制用户的访问量 同一时刻只允
  • cesium+vue-cli安装步骤

    1 依赖node所以先安装node 可从官网下载安装 安装一直下一步最后选安装目录 2 win r输入cmd运行 先输入node v和npm v查看node安装是否正常 我这里node是10 5 0 npm是6 1 0 3 安装vue np
  • Log4net等级说明以及按照不同级别写入多个日志文件

    等级说明 Level级别 DEBUG
  • canvas制作在线画板

    上效果图
  • ubuntu中使用Deb安装VS Code

    01 进入VS Code 下载安装包 网址 https code visualstudio com 02 将Windows系统中下载的deb安装包复制到虚拟机ubuntu中 03 进入虚拟机ubuntu中 通过cd命令进入到deb安装包目录
  • 点云配准注意的地方

    1 法向量是局部坐标系的概念 因此要将点云中心移到原点 再计算法向量 类似于先平移再旋转 而不是先旋转再平移 2 用kdtree时 用近邻点个数 而不是距离 因为点云各个不同 3 变换矩阵的对角线是目标与源点云的相似度 位移为0 x det
  • Unity小地图制作

    Unity小地图制作 方法一 简易版 如果角色有跳跃功能不建议使用 原理 利用一个新的摄像机来制作小地图 步骤 1 先搭建一个简单场景 2 在层级列表先创建一个摄像机 移出其中的Audio Listener组件 一个场景中只能有一个Audi
  • 题目 1054: 二级C语言-计算素数和

    输入两个正整数m和n m
  • 锁消除和锁粗化

    一 锁消除 JIT 及时编译器 对锁的优化 因为正常都是多个线程去竞争同一把锁 但是当前代码中每调用一次m1方法就会创建一个新的对象 也可以理解为每个线程对应了一把新的锁 没有竞争的情况 毫无意义 所以叫锁消除 锁消除 public cla
  • C语言实现数据高低位翻转

    通过指针转换为字节类型 直接交换 include
  • 73. Set Matrix Zeroes

    Given a m x n matrix if an element is 0 set its entire row and column to 0 Do it in place 这题有很多方法 一开始想的是用O m n 的空间 用vect
  • 使用Freemarker 实现JSP页面的静态化

    使用Freemarker 静态化网页 一 原理 Freemarker 生成静态页面 首先需要使用自己定义的模板页面 这个模板页面可以是最最普通的html 也可以是嵌套freemarker中的 取值表达式 标签或者自定义标签等等 然后后台读取
  • 【网络】Wireshark分析RST消息

    文章目录 前言 1 定义 2 有三个条件可以产生RST 3 说明 4 RST数据报文产生情况 1 端口未打开 系列文章 Wireshark分析Netty建链过程 tcp三次握手 osi模型 IPV4数据报头部格式 Wireshark分析RS
  • 数据结构双向链表,实现增删改查

    一 双向链表的描述 在单链表中 查找直接后继结点的执行时间为O 1 而查找直接前驱的执行时间为O n 为克服单链表这种单向性的缺点 可以用双向链表 在双向链表的结点中有两个指针域 一个指向直接后继 另一个指向直接前驱 二 双向链表的存储结构
  • Base64 转 文件下载

    将base64字符串转化为文件 1 将下面代码另存为html文件 2 用浏览器打开 3 点击下载 代码如下 div 输入base64字符串 div
  • opensips之yyparse( )

    parse the config file prior to this only default values e g for debugging settings will be used yyin cfg stream if yypar
  • HTTPS协议详解

    文章目录 一 HTTPS是什么 二 HTTPS的工作过程 引入对称加密 引入非对称加密 引入证书 总结 三 HTTPS 与 HTTP 的区别 区别 HTTPS的优缺点 总结 一 HTTPS是什么 HTTPS HTTPS 也是一个应用层协议
  • stm32f10x 时钟系统详解/时钟树/时钟初始化/SystemInit函数全注解

    STM32F10x 时钟系统初学总结 一 时钟系统 1 概述 用通俗的话来说 时钟是单片机的 脉搏 是单片机的驱动源 使用单片机中的任何一个外设都必须打开此外设相应的时钟 这样的好处是 在不使用某个外设的时候 关闭此时钟外设 从而可以降低系