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

超详细!必看!!STM32--时钟树原理

一、什么是时钟?

时钟是单片机的脉搏,是系统工作的同步节拍。单片机上至CPU,下至总线外设,它们工作时序的配合,都需要一个同步的时钟信号来统一指挥。时钟信号是周期性的脉冲信号。

二、什么是时钟树?

STM32有很多外设器件,每个器件的时钟信号不一样,所以要将一个固定的信号频率进行倍频/分频处理,达到每个外设需要的频率。时钟信号的分频就像树的分支一样,这就是时钟树。

三、时钟介绍

HSI(内部高速时钟): 时钟信号由内部RC震荡电路提供,时钟频率为8MHz,但是这个时钟频率会随着温度产生漂移,很不稳定,所以一般不使用此时钟信号。
LSI(内部低速时钟): 时钟信号由内部RC振荡电路提供,时钟频率一般为40KHz,这个信号一般用于独立看门狗时钟。
HSE(外部高速时钟): 时钟信号由外部晶振提供,时钟频率一般在4-16MHz,是经常会用到的时钟源。
LSE(外部低速时钟): 时钟信号由外部晶振提供,时钟频率一般为32.768KHz,这个信号一般用于RTC实时时钟。

四、时钟框架图

请添加图片描述

五、框架图分析

(1)外部低速时钟LSE,外接引脚OSC32_IN和OSC32_OUT就是接外部晶振的引脚,进来的频率是32.768KHZ进来后只有一个走向就是为RTC提供时钟。
(2) RTCCLK蓝色框的四选一数据选择器,一共有三个输入,一个来自最上方的HSE,中间经过了一个128的分频器。一个是LSE以及最下方的LSI时钟。也就是说看门狗智能由内部低速时钟LSI提供时钟,RTC可以由LSI、LSE、或者是HSE经过分频后来提供时钟,具体使用哪一个需要我们在代码里面配置。
(3) PLL锁相环中的数据选择器有两个输入,一个是内部高速时钟HSI经过2分频连接。另一个输入是外部高速时钟HSE经过1分频或2分频输出后连接。经过数据选择器后,进行倍频操作供给系统时钟。对于系统时钟一般选择HSE时钟经过PLL锁相环倍频后的时钟作为系统时钟。倍频系数可选范围:2~16。
注:一般在PLL锁相环中数据选择器中我们选择来自外部高速时钟HSE的时钟信号,因为HSI时钟信号很不稳定,容易受到环境的影响。
(4)对于系统时钟选择器,一共有四个输入。最上面为HSI时钟输入,中间为PLLCLK时钟输入,下面两个分别是HSE时钟直接输入,以及在HSE后加入CSS时钟安全检测标志后输入。

六、示例

外部晶振电路:
请添加图片描述
连接外部高速时钟:
在这里插入图片描述

假如外部时钟晶振频率为8MHz,如何设置72MHz的系统时钟?
答:HSE接入8MHz的外部震荡信号,由PLLXTPER进行选择进行1分频还是2分频,假如是1分频,则8MHz的时钟信号来到了PLLSRC控制选择的位置,配置PLLSRC,选择进入PLL锁相环的时钟信号源,假设来自HSE的信号选通,则8MHz的信号来到锁相环中,配置PLLMUL,可以选择倍频系数,假设倍频系数选为9,则PLL输出72MHz的时钟信号,SYSCLK前面的梯形的选择逻辑控制着SYSCLK时钟信号来自于3个接入信号HSE、HIS、PLLCLK中的哪一个,通过SW和CSS控制,选择PLLCLK后,系统就可以获得72MHz的时钟频率了。这个CSS是时钟安全保护系统,主要是在HSE出现故障时发生NMI中断(不可屏蔽中断,产生这个中断的时候,表示系统发生了致命的错误),具体要看手册59页信息介绍。
为了减少功耗,STM32上外设的时钟初始状态默认为关闭,如需使用外设,则必须开启外设时钟。譬如我们现在要使用外设GPIOB,则系统时钟SYSCLK要通过预分频器AHB分频,再进入APB2总线进行再分频(GPIOB是挂载在APB2总线上的外设),时钟信号的输入和外设时钟使能位接在一个与门上,当要使用外设时,需要将这个使能位置1,配置完成之后,GPIOB方可正常工作。

http://www.lryc.cn/news/229744.html

相关文章:

  • 用 Golang 采集 Nginx 接口流量大小
  • Linux java jar启停脚本(合并版)
  • 计算机毕业设计选题推荐-公共浴池微信小程序/安卓APP-项目实战
  • sqli-labs关卡13(基于post提交的单引号加括号的报错盲注)通关思路
  • SparkAi创作系统ChatGPT网站源码+详细搭建部署教程+AI绘画系统+支持GPT4.0+Midjourney绘画
  • shiro默认session设置永不超时
  • 前端食堂技术周刊第 104 期:Angular v17、GPTs、Vue vapor mode、Svelte Flow、Bundler 的设计取舍
  • list复制出新的list后修改元素,也更改了旧的list?
  • Qt绘制各种图形
  • NIO 笔记(二)Netty框架专题
  • HTTP——
  • 第13章 Java IO流处理(二) 字节流与字符流
  • 【论文阅读】(CTGAN)Modeling Tabular data using Conditional GAN
  • 如何进行iOS技术博客的备案?
  • RTSP/Onvif安防平台EasyNVR批量禁用/启用通道接口的详细操作步骤
  • 2个器件,做1个恒流源
  • SQL INSERT INTO SELECT 语句
  • Elasticsearch 在 Java 开发中的应用
  • linux 的uart驱动框架分析
  • 头歌答案HTML——基础
  • 【数据结构——队列的实现(单链表)】
  • 《LeetCode力扣练习》代码随想录——链表(移除链表元素---Java)
  • linux 安装 mini conda,linux下安装 Miniconda
  • 机器人 Null impedance(零阻抗)梳理
  • MDM9205开发环境搭建与编译调试
  • Linux操作系统使用及C高级编程-D3Linux shell命令(权限、输入输出)
  • 无线充,大功率小家电,智能家居,无人机快速充电等产品供电 LDR6328S芯片TYUPE-C PD诱骗电压 USB-C解决PD电源取电问题
  • 2023数字科技生态大会-数字安全论坛 学习笔记
  • 玩转ChatGPT:ARIMA模型定制GPT-1.0
  • CSDN每日一题学习训练——Java版(字符串相乘、子集、删除链表的倒数第 N 个结点)