时钟系统(基于stm32f1)

0. 提要

本文将基于cubemx中的时钟树配置结合datasheet来讨论stm32的时钟系统, 从左到右, 从上到下

图1-stm32cubemx f1 芯片时钟树

图2-简化时钟树(源自keysking)

1. 时钟树时钟源

1.1 高速时钟源

1.1.1 高速时钟源的作用

  • 支持芯片高性能运行, 使得系统有快速响应, 高速计算的能力
  • 高速片上外设提供时钟源, 例如: USB接口(48Mhz), ADC(如1 MSPS采样率需至少14 MHz ADC时钟), UART, SPI等通信接口

1.1.1.2 高速时钟源的选择

  • HSI(High Speed Internal Clock): 高速内部时钟源, 由芯片内部RC振荡器(F1系列为8Mhz)提供, 受温度电压影响大

  • HSE(High Speed External Clock): 高速外部时钟源, 由外部晶振提供, 能够带来更高的精度, 且相较HSI, 更不易受到外部影响, 缺点是需要额外的晶振及其相关电路

  • HSE的精度和稳定性不一定比HSI强, 笔者曾使用过TI的MSPm03507芯片, 外部晶振40Mhz, 但是经过测试使用HSE会导致串口波特率出现严重波动导致通信失败, 而使用内部的RC振荡器却不会出现该问题

1.2 低速时钟源

1.2.1 低速时钟源的作用

  • 为芯片提供低功耗运行的时钟源
  • 低速片上外设提供时钟源, 例如: 独立看门狗(IWDG), 实时时钟(RTC), 低功耗定时器(LPTIM)

1.1.1.2 低速时钟源的选择

  • LSI(Low Speed Internal Clock): 低速内部时钟源, 由芯片内部RC振荡器(F1系列为40Khz)提供, 受温度电压影响大
  • LSE(Low Speed External Clock): 低速外部时钟源, 由外部晶振(一般为32.768Khz, 2的次幂数, 可分频到1hz, 为RTC提供时钟源)提供, 能够带来更高的精度, 且相较LSI, 更不易受到外部影响, 缺点是需要额外的晶振及其相关电路

1.3 锁相环(PLL)

  • 作用:

    1. 无论是HSI还是HSE, 一般都不会为芯片直接提供最高频率, 而是需要通过锁相环(PLL)进行倍频, PLL的出现, 为时钟速率提供了更为灵活更为宽阔的选择, 同时能实现高性能和低功耗之间的平衡
    2. 通过PLL闭环控制频率, 一定程度上减少HSE, HSI的频率抖动
  • 原理: 通过反馈来实现频率的稳定输出, 实现的原理可以自己去查

2. 系统时钟到外设时钟

2.1 SYSCLK

  • 整个系统的核心时钟源,所有其他时钟(HCLK、APB1/APB2等)均由其分频或直接派生。
  • 来源: HSI HSE PLL

2.2 HCLK(AHB总线时钟)

  • AHB总线: 为高速片上外设提供的, 例如DMA, SRAM, Core, Flash

2.3 APB1与APB2

  • 挂载在AHB总线

2.3.1 APB1(低速外设总线)

  • 来源:HCLK经过APB1分频器。
  • 最大频率:36 MHz(STM32F1系列)。
  • 连接外设:连接低速外设, 例如通用定时器, 基本定时器, 串口, SPI, IIC, RTC, WWDG, DAC等

2.3.2 APB2(高速外设总线)

  • 来源:HCLK经过APB2分频器。
  • 最大频率:72 MHz(STM32F1系列)。
  • 连接外设:连接高速外设, 例如高级定时器, GPIO, 高速SPI, ADC, USB等

以上APB1和APB2挂载的外设主要以datasheet实际内容为主

2.4 FCLK

  • 定义:专为Cortex-M内核提供的时钟,独立于HCLK,用于调试和低功耗场景。
  • 来源:与HCLK同源(但不受AHB分频器影响)。

3. 从datasheet看时钟树

stm32f103c8t6-datasheet-在线-立创商城

进入手册后 ctrl+F 搜索 performance line block diagram

从这个 performance line block diagram ,这个框图我们可以清晰直观的看见, MCU中的总线系统, 以及时钟树, 快速了解AHB, APB1, APB2上的最高时钟频率以及挂载的片上外设, 方便我们对芯片的性能以及外设有一个快速的基本的了解

4. 本文链接:

时钟系统(基于stm32f1) - 林接接 - 博客园

时钟系统(基于stm32f1)的更多相关文章

  1. 【STM32H7教程】第14章 STM32H7的电源,复位和时钟系统

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第14章       STM32H7的电源,复位和时钟系 ...

  2. 基于STM32F1与NRF24L01模块的SPI简单通信

    一.前言 1.简介: 本文是基于STM32F1,将数据发送至NRF模块的寄存器,并将数据重新读取,通过串口发送出来的简单SPI单通信. 2.SPI简介: 调过STM8的都已经对SPI有所了解,调法都一 ...

  3. STM32入门系列-STM32时钟系统,STM32时钟树

    时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行.时钟系统犹如人的心脏,一旦有问题整个系统就崩溃.我们知道STM32属于高级单片机,其内部有很多的外设,但不是 ...

  4. ntp子母钟(gps子母钟系统)时钟系统在智能交通系统中的重要性

    ntp子母钟(gps子母钟系统)时钟系统在智能交通系统中的重要性 ntp子母钟(gps子母钟系统)时钟系统在智能交通系统中的重要性 技术交流:岳峰 15901092122 http://www.bjh ...

  5. 9.S5PV210的时钟系统

    1.时钟域:MSYS.DSYS.PSYS(1)因为S5PV210的时钟体系比较复杂,内部外设模块太多,因此把整个内部的时钟划分为3大块,叫做3个域.(2)MSYS: CPU(Cortex-A8内核). ...

  6. STM32时钟系统

    一.在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. ①HSI是高速内部时钟,RC振荡器,频率为8MHz. ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率 ...

  7. 总结:S5PV210时钟系统

    在数据手册<S5PV210_UM_REV1.1>中的section 02_system/3 CLOCK CONTROLLER(354页)   一.时钟域 在S5PV210的SoC中,时钟系 ...

  8. STM8时钟系统详解

    就我个人看来,研究一块单片机,分为新手和老手两种模式,新人迫切的想先用,你得告诉他们怎么样最快的写出一个能跑起来的程序,告诉他们每一个外设的使用方式,老手不同,用的单片机多了外设对于他们而言没太多好奇 ...

  9. S3C2440时钟系统详解

    在讲述系统时钟之前,因为这些设备都是挂靠在系统时钟上的,所以必须先说系统时钟,S3C2440的时钟系统如下 外部时钟源分两种,晶振或者外部频率,由om3-2选择,时钟电路根据两种选择也有两种 我们来分 ...

  10. Stm32复习之时钟系统

    地点:南图 这部分的内容是整个STM32学习知识的核心,不管是什么微控制器处理器,时钟系统都是其核心类似于人之心脏,因此学好理解这一章节至关重要. 为了便于理解这一系统,将从以下几个层次来讲.(忘了是 ...

随机推荐

  1. 网鼎杯-phpweb

    找了一些php读取文件的函数尝试读取源码,试了一个readfile就成功了 <?php $disable_fun = array("exec","shell_exe ...

  2. <HarmonyOS第一课08>保存应用数据

    视频链接: https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101717498132814493 ?ha_so ...

  3. 【记录】LangChain|Ollama结合LangChain使用的速通版(包含代码以及切换各种模型的方式)

    官方教程非常长,我看了很认可,但是看完了之后呢就需要一些整理得当的笔记让我自己能更快地找到需求.所以有了这篇文章.[写给自己看的,里面半句废话的解释都没有,如果看不懂的话直接看官方教程再看我的] 我是 ...

  4. 参考用例之“本地Excel导入系统测试方案”

    本地Excel导入系统测试方案 Excel 代码 @Test public void importperson() throws FileNotFoundException { FileInputSt ...

  5. STL vector容器存储键值对

    在阅读tvm源码时,发现了一个挺有意思的代码: std::vector<std::pair<std::string, ObjectRef>> update; vector容器里 ...

  6. Boost库简单介绍

    c++ boost库官网 https://www.boost.org/ 官网最新版文档说明 https://www.boost.org/doc/libs/1_70_0/ Boost库是一个可移植.提供 ...

  7. 异步日志监控:FastAPI与MongoDB的高效整合之道

    title: 异步日志监控:FastAPI与MongoDB的高效整合之道 date: 2025/05/27 17:49:39 updated: 2025/05/27 17:49:39 author: ...

  8. Nohup 启动程序未指定输出日志,导致磁盘空间被占满的解决方案

    1. 问题原因 当使用 nohup 启动程序时,默认情况下,标准输出(stdout)和标准错误(stderr)都会被重定向到 nohup.out 文件.例如: nohup python my_scri ...

  9. DOS命令快速启动和关闭MySQL服务

    为了搭建网格服务框架,在本地创建了MySQL数据库,但是,为了减少内存占用,MySQL数据库服务没有设置为自动启动,所以,需要手动的开启和关闭服务.因此,需要掌握一些短小精悍的DOS命令,下面介绍启动 ...

  10. java springboot项目启动脚本,指定jdk、指定yml配置文件

    start.bat @echo off rem 设置Java路径,根据你的实际情况修改 set JAVA_PATH="./jdk-17.0.6/bin/java.exe" rem ...