Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文精通STM32时钟树-以F401为例

一文精通STM32时钟树-以F401为例

作者头像
云深无际
发布于 2025-02-06 02:53:39
发布于 2025-02-06 02:53:39
2290
举报
文章被收录于专栏:云深之无迹云深之无迹

主要就是主要和次级

关键就是这个时钟树了

首先就是所有的时钟都有使能功能。

也有一些默认的时钟分频

可通过多个预分频器配置 AHB 频率、高速 APB (APB2) 和低速 APB (APB1)。

AHB 域的最大频率为 168 MHz。

高速 APB2 域的最大允许频率为 84 MHz。

低速 APB1 域的最大允许频率为 42 MHz。

TR为带料,每次选的时候都迷惑

是一个中间的型号

涵盖这俩类子型号

参考手册

是256KB的大内存版本

可以看到都整合到了总线上面

I-Code:此总线用于将 CPU 内核的指令总线连接到 Flash 指令接口。通过此总线可执行预取操作。

D-Code:此总线用于将 CPU 的 D-Code 总线(数据加载和调试访问)连接到 Flash 数据接口

S总线用于将 Cortex™-M4F 数据总线和 64 KB CCM 数据 RAM 连接到总线矩阵。内核通过此总线进行立即数加载和调试访问。此总线访问的对象是包含代码或数据的存储器(内部Flash 或通过 FSMC 的外部存器)。

通过一个AHB连接所有外设

flash慢,这里还使用了一个缓存器。内存高达64KB,USB可以看到是一个直接的外设。

有两个DMA

GPIO都在AHB1上面,速度最大84Mhz,就在高性能的主干线上面。DMA也是。

APB1和2都在角落里面,右下角

APB1上面连接的是低速外设,包括电源接口、备份接口、CAN、USB、I2C1、I2C2、USART2、USART3等。

APB2上面连接的是高速外设包括USART1、SPI1、Timer1、ADC1、ADC2、GPIO等。

APB2也可以到84M

看样子,是AHB转到了APB的

右边是APB1的外设线,可以到42M

在使用外设的时候一定看时钟

一般我们有自己的晶振

第二种

需要在这里开启外部晶振

就是这样的一条线

HSE(High Speed External):高速外部时钟源,通常为晶振。HSE也是STM32芯片的默认时钟源之一,其频率范围可以在1MHz到25MHz之间。HSE可以作为系统时钟和PLL锁相环输入,还可以经过128分频后输入给RTC。

靠上一点是HSI

高速内部时钟源(Internal),时钟频率为8MHz。HSI是STM32芯片默认的时钟源之一,因为其时钟稳定性和精度较高。可作为系统时钟或PLL锁相环的输入。

HSI 时钟信号由内部 16 MHz RC 振荡器生成,可直接用作系统时钟,或者用作 PLL 输入。

HSI RC 振荡器的优点是成本较低(无需使用外部组件)。此外,其启动速度也要比HSE晶振快,但即使校准后,其精度也不及外部晶振或陶瓷谐振器。

两个PLL

作用在此,PLL就是可以让系统工作到最大频率

我发现-PLL:锁相环倍频输出 可以让后面的时钟跑满

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

时钟环路是这样的

锁相环的作用包括:

  1. 时钟信号重构:锁相环可以将不稳定的输入时钟信号转换为稳定的输出时钟信号,以提高系统时钟的精度和稳定性。
  2. 时钟信号分频:锁相环可以将高频率的时钟信号按照一定比例分频,以适应不同的系统时钟需求。
  3. 时钟信号倍频:锁相环可以将低频率的时钟信号按照一定比例倍频,以适应高速系统时钟的需求。
  4. 频率合成:锁相环可以将不同频率的输入信号合成为一种新的频率信号,以适应某些特定的应用,例如无线通信。
  5. 相位检测:锁相环可以检测输入信号的相位差异,并将其与参考信号的相位进行比较,以实现相位同步。

SYSCLK是指系统时钟,是指计算机系统的主时钟信号,也是整个系统的主时钟。SYSCLK信号的频率决定了整个系统的运行速度和性能。

在微处理器系统中,SYSCLK信号通常由晶体振荡器或其他外部时钟源提供,然后经过分频、倍频等处理后,作为CPU、内存、外设等各个部分的时钟信号。SYSCLK信号的频率越高,系统运行速度越快,但同时也会增加功耗和热量等问题。

RTC和IWDG是独立的时钟系统

LSE 晶振是 32.768 kHz 低速外部 (LSE) 晶振或陶瓷谐振器,可作为实时时钟外设 (RTC) 的时钟源来提供时钟/日历或其它定时功能,具有功耗低且精度高的优点。

RTC时钟是指实时时钟(Real-Time Clock),是计算机系统中一种独立于CPU的时钟源,用于提供系统的实时时钟功能。与SYSCLK不同,RTC时钟一般不受系统运行状态的影响,即使系统处于关机状态,RTC时钟也可以继续运行。

RTC时钟通常由一个独立的晶体振荡器提供,其频率通常为32.768kHz。RTC时钟的精度和稳定性很高,可以保证系统的时间精度和稳定性。

呦西

看门狗时钟是一种硬件定时器,它在计算机系统中用于监控系统的运行状态,当系统出现异常或死锁等情况时,看门狗时钟可以重启系统以恢复正常运行。看门狗时钟通常由一个独立的计数器和一个独立的晶体振荡器组成,其工作原理类似于定时器。

要使能

可以看到激活了

直接从HCLK出去的

Systick是一种硬件定时器,是ARM Cortex-M系列芯片中的一种系统时钟,它提供了一个简单的计时器,用于计算器芯片的时间。所以可以说Systick属于时钟的一种。

Systick计时器由计数器和中断控制器组成,它的计数器可以在芯片上电后自动开始计数,时间间隔由寄存器SYST_RVR来设置,一般设置为1ms。当计数器达到设定值时,Systick计时器就会触发一个中断,通过中断处理函数可以实现各种定时任务。

这里

HCLK为高性能总线AHB(advanced high-performance bus)提供时钟信号。由系统时钟SYSCLK分频得到,一般不分频时等于系统时钟,是给外设使用的。

还有一个FCLK

FCLK(free running clock)是自由运行时钟,为CPU内核提供时钟信号。我们所说的CPU主频为xxHz,指的就是这个时钟信号频率,CPU时钟周期就是1/FCLK。

“自由”表现在它不来自系统时钟HCLK,在系统时钟停止时FCLK也继续运行。FCLK用作采样中断或者为调试模块计时。在处理器休眠时,通过FCLK可以采样到中断和跟踪休眠事件。Cortex-M3内核的FCLK和HCLK互相同步、互相平衡,保证Cortex-M3的延迟相同。

我个人感觉是可以通过观测FCLK来推测HCLK。

这个时钟也可以输出

MCO是STM32系列芯片中的一个时钟输出引脚,全称为Master Clock Output。MCO引脚可以将芯片内部的时钟信号输出到外部,用于连接到其他芯片或模块中,例如外部时钟源、LCD显示器等。

MCO引脚可以输出多种类型的时钟信号,包括系统时钟、PLL时钟、HSE时钟等。输出的时钟信号频率和类型可以通过寄存器设置来控制,以满足不同的应用需求。同时,MCO引脚还可以通过GPIO复用功能来使用,实现其他功能,如输入捕获、输出比较等。

RCC里面开启

挨着的

在看就是可以输出了

我比较严谨,看到了这里的区别

原因是这个定时器时钟就是专门给定时器的

APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给定时器(Timer)1倍频器使用。

对的

该倍频器可选择1或者2倍频,时钟输出供定时器1使用。另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。

ADC分频器可选择为2、4、6、8分频。这个没有办法知道。

看图确实是有个分频的

ADC在APB2上面挂着

确实啊

也可以看中文版的

就是这个地方

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【STM32】系统时钟RCC详解(超详细,超全面)
时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。
全栈程序员站长
2022/09/14
2.1K0
【STM32】系统时钟RCC详解(超详细,超全面)
stm32时钟配置简介
时钟是单片机非常重要的一部分,它为单片机的系统或是外设提供了时序。这里主要来讲解一下stm32的时钟配置。
飞哥
2020/07/10
1.4K0
stm32时钟配置简介
单片机stm32的5个时钟源的详细分析
众所周知STM32有5个时钟源HSI、HSE、LSI、LSE、PLL,其实他只有四个,因为从上图中可以看到PLL都是由HSI或HSE提供的。
用户6754675
2020/05/07
3.1K0
STM32F4系统时钟树
时钟配置在system_stm32f4xx.c和stm32f4xx.h中,如PLL_M、PLL_N、PLL_P、PLL_Q、HSE_VALUE。 时钟配置函数:SystemInit()
小锋学长生活大爆炸
2020/11/24
1.1K0
STM32F4系统时钟树
STM32时钟系统
时钟对于一款芯片非常重要,其作用相当于人的心脏,人只有在心率正常稳定的情况下才能健康生活,同样的,芯片只有工作在合法正常的时钟频率下才能保证程序得到正常的运行。
韦东山
2022/05/05
5380
STM32时钟系统
STM32F10x从零开始配置时钟
实际上,对于STM32F10x系列的芯片,如果使用库函数方式开发,芯片的时钟初始化函数已经写好,并且在启动文件(例如startup_stm32f10x_hd.s)中被自动调用,在进入main函数之前,系统以及外设时钟均配置完成,main程序中不需要对时钟再进行任何配置,直接编写应用程序即可。但是作为一个底层驱动玩家必须要打破砂锅问到底,看看STM32F10x系列芯片的时钟系统到底是怎么样的以及如何配置时钟,下文将着重分析STM32F10x的时钟系统以及用寄存器方式从零开始一步一步配置时钟。
知否知否应是绿肥红瘦
2025/02/19
1260
STM32F10x从零开始配置时钟
stm32开发教程_单片机STM32
有关stm32F1,stm32F4 固件驱动包的下载,请打开这篇文章: https://blog.csdn.net/xiaoeleis/article/details/105789061
全栈程序员站长
2022/10/04
8630
stm32开发教程_单片机STM32
Cubemx与HAL库系列教程|系统时钟配置详解及源码分析
STM32种类繁多,时钟系统也不尽相同,但基本的还是大差不差,今日小飞哥就F1系列的MCU简单聊一聊STM32的时钟系统
用户8913398
2022/03/04
2.8K0
Cubemx与HAL库系列教程|系统时钟配置详解及源码分析
【STM32H7教程】第16章 STM32H7必备的HAL库API(重要)
本章教程为大家讲解制作一个STM32H7的例子所需的最基本API函数,对于一些常用的API函数,一定要熟练掌握这些函数都是实现了什么功能,不常用的函数有个了解即可,用到的时候再去学。
Simon223
2019/05/15
2.4K0
【STM32H7教程】第16章       STM32H7必备的HAL库API(重要)
STM32 RTC时钟
STM32 的 RTC 外设是一个掉电后还继续运行的定时器。 这里的掉电是指当主电源断开的时候,可以接上锂电池给RTC供电。RTC时钟具有计时和触发中断的功能,但是它比起其它外设强大在它的掉电可持续运行特性。
AnieaLanie
2021/12/08
1.6K0
(八)STM32——时钟系统介绍
        相比于51来说,STM32F4的时钟比较难一点,我也是没想到,都有时钟树这种东西出来了,并且还有5个时钟,不过好在以前有51的基础,学习起来稍微轻松一点,就是要自己配置许多的东西和了解以及使用不同的时钟,个人觉得正点原子的课程讲的有点乱,所以这是我自己整理之后的笔记,按照每一个时钟的输入输出来解释,希望听不懂课程的同学可以理解。
小点点
2022/12/12
6060
(八)STM32——时钟系统介绍
【STM32F429开发板用户手册】第16章 STM32F429必备的HAL库API(重要)
本章教程为大家讲解制作一个STM32F4的例子所需的最基本API函数,对于一些常用的API函数,一定要熟练掌握这些函数都是实现了什么功能,不常用的函数有个了解即可,用到的时候再去学。
Simon223
2020/07/14
9010
【STM32F429开发板用户手册】第16章       STM32F429必备的HAL库API(重要)
M-Arch(7)第六个示例:时钟频率
通常所说的系统时钟就是指时钟系统,它是由振荡器(信号源)、定时唤醒器、分频器等组成的电路。常用的信号源有晶体振荡器和RC振荡器,如下图所示:
滚神大人
2021/10/08
7220
STM32时钟系统之利用 systick 定时器来实现准确的延时。
  本篇文章带着大家来认识一下 STM32 的时钟系统,以及利用 systick 定时器来实现一个比较准确的延时。
用户6754675
2020/01/02
1K0
STM32入门时钟初始化配置函数
在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main。那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使用库函数编写的LED程序,在system_stm32f10x.c文件中可以找到SystemInit()函数,SystemInit()代码如下:
用户6754675
2020/05/18
9650
【STM32】HAL库 STM32CubeMX教程十三—RTC时钟
本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
全栈程序员站长
2022/08/11
2.9K0
【STM32】HAL库 STM32CubeMX教程十三—RTC时钟
【STM32】HAL库 STM32CubeMX教程六—-定时器中断
今天我们来学习定时器,32的定时器有着非常丰富的功能, 输入捕获/输出比较,PWM,中断等等。是我们学习STM32最频繁使用到的外设之一,所以一定要掌握好,这节我们讲解定时器中断,本系列教程将对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
全栈程序员站长
2022/08/11
4.2K0
【STM32】HAL库 STM32CubeMX教程六—-定时器中断
从小白到 Pro | RCC时钟基础知识和常见问题
RCC,Reset and Clock Control(复位和时钟控制),在绝大部分MCU芯片中都包含复位和时钟控制模块,也是MCU重要的组成部分。
AI 电堂
2020/07/27
1.5K0
从小白到 Pro | RCC时钟基础知识和常见问题
CW32L010-M0+时钟树小览
系统内部时钟 SysClk 经过分频为 CPU 内核提供高级高性能总线时钟 HCLK,HCLK 时钟经过分频为数字及模拟外设提供高级外设时钟 PCLK。
云深无际
2025/02/06
850
CW32L010-M0+时钟树小览
【嵌入式开发】时钟初始化 ( 时钟相关概念 | 嵌入式时钟体系 | Lock Time | 分频参数设置 | CPU 异步模式设置 | APLL MPLL 时钟频率设置 )
参考手册 : S3C2440.pdf , 章节 : 7 CLOCK & POWER MANAGEMENT , Page 235;
韩曙亮
2023/03/27
4.4K0
【嵌入式开发】时钟初始化 ( 时钟相关概念 | 嵌入式时钟体系 | Lock Time | 分频参数设置 | CPU 异步模式设置 | APLL MPLL 时钟频率设置 )
推荐阅读
相关推荐
【STM32】系统时钟RCC详解(超详细,超全面)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档