时钟树属于STM32内部资源,是整个芯片内部模块种最难看懂的一部分,相对于其他高性能CPU芯片,STM32时钟树相对没有那么复杂,了解STM32时钟树对熟悉整个芯片内部架构非常有帮助,进一步学习其他高性能CPU芯片也不再话下。

STM32整个时钟树图如下:


整个时钟树第一次看起来比较复杂,可以按照分块进行一一介绍,将其进行拆解(复杂东西合理拆解,看起来就没那么复杂,哈哈)

时钟来源
STM32时钟来源有两个,一个是外部时钟HSE,一个内部16MHZ HSI,由于精度问题一般都是采用外部时钟,当外部时钟出现问题时,可以通过配置寄存器时自动切换到外部时钟。

外部时钟频率范围可以是4~26MHz,分为有源和无源晶振,其中OSC_IN 引脚进入, OSC_OUT 引脚悬空 。无源晶振,OSC_IN和OSC_OUT 都需要链接,并且要配相应的外设电路。

PLL锁相环

PLL主要作用是对输入的时钟频率倍频,将时钟倍频到相应所需要的时钟频率输出到各个功能部件种。STM32有两个PLL,如下图所示:

两个PLL一个是主PLL用于产生PLLCLK用于系统时钟,一个是PLLl2SCLK,专门用于I2S模块。

主PLL
主PLL主要是产生系统时钟,其主要流程主要如下,下面将按照如下箭头分别描述

以外部时钟输入为例子,外部时钟选取为8MHz作为用例,外部时钟输入首先遇到第1分频因子M
1:M
M作为外部时钟遇到的第一个分频因子,其分频值可以为(2~63),主要是将分频的时钟作为VCO的输入,VOC的频率为1MHz或2MHz, VOC的输入频率fvoc 等于HSE的频率/M, 例子种HSE的频率为8MHz,将fvoc的频率配置为1Mhz,则 M=8.在代码种M为 PLL_M
HSE的频率宏定义为:HSE_BYPASS_INPUT_FREQUENCY


2和3: VOC/N
VOC猜测是为了得到更准确得时钟频率,需要首先将外部时钟进行初步分频,以排除干扰。VOC经过N倍分频之后得到VOC的输出频率,VOC的输出频率位于VCO 时钟必须在 192~432MHz 之间,才能保证时钟准确性,因为STM32系统时钟工作在168MHz,所以将VOC的输出频率配置为336MHz, VOC的输出频率为VOC的输入频率*N,(可以看出系统时钟树中的框图XN,代表为乘以N),则N配置为336.
由上述几步可以得知以下VOC的输出时钟公式:
f(VCO 时钟) = f(HSE 时钟输入) × (PLLN / PLLM)
M和N的值可以通过RCC_PLLCFGR寄存器来配置。寄存器不再详细描述,可以查看datasheet.
4,5,6:分频因子
VOS输出之后有三个分频因子:P, Q和R,其中P分频之后为系统时钟PLLCLK,PLLCLK为168MHz,故P为2. Q分频之后为外设时钟,供给USB OTG FS/RNG/SDIO时钟为48MHz,故 Q=336/48=7. R STMF407系列没有使用,只有F466系列才有。
P,Q,R也可以通过RCC_PLLCFGR寄存器来配置。

参考文档

《 零死角玩转STM32》

《STM32F4XX中文参考手册》

《arm体系结构与编程》

STM32那点事(2)_时钟树(上)相关推荐

  1. STM32那点事(2)_时钟树(下)

    上两篇主要讲述了系统时钟,APB1, APB2, AHB配置的整个过程,是系统启动的关键,剩余部门将单独介绍 独立看门狗(IWDGCLK) 独立看门够采用内部单独时钟LSIRC,用于与其他系统时钟隔离 ...

  2. STM32那点事(2)_时钟树(中)

    上篇主要介绍了外部时钟通过PLL分频或者倍频之后得到PLLCLK的整个流程,此流程是芯片启动过程中首先根据硬件需要进行相应配置.只有将上述流程搞清楚,系统才能正常启动. 系统时钟 系统频率为168Mh ...

  3. STM32那点事(3)_中断(上)

    中断是STM32核心模块之一,几乎所有的模块都需要和中断打交道.了解STM32运作机制非常重要.在<STM32那点事(1)_STM32F40_41xx启动文件详解>中讲解启动流程中提到,中 ...

  4. STM32那点事(6)_定时器(上)

    STM32定时器是CPU中的基本功能模块之一,最基本的功能是提供定时,STM32定时器共用16个定时器,主要分为两个基本定时器,10个通用定时器,2个高级定时器,以及两个看门狗定时器.看门狗定时器后面 ...

  5. STM32那点事(3)_中断(下)

    上节主要讲述了STM32 的中断基础知识以及一般配置过程.外部中断与其他模块中断相对要复杂一点.外部中断一般都是由GPIO触发,是在整个系统中需要经常用到. 介绍 STM32F4 有多达23个中断,每 ...

  6. STM32-RCC时钟-时钟树介绍

    本篇文章主要讲解STM32的时钟部分,解读时钟树.本片文章较长请耐心看完.那么你会了解对于STM32的一切时钟的来龙去脉.且本片文章大量的对照着STM32Fxx手册.请读者们提前下好手册的链接我放这了 ...

  7. stm32时钟树_先学STM8,还是学STM32?

    有朋友问:我学习过51,接下来我是先学习STM8,还是STM32呢? 物联网STM32入门 - 直播课程 - 创客学院​www.makeru.com.cn 嵌入式开发直播课 - STM32 USART ...

  8. 【STM32】7—通用定时器 时钟树学习

    目录 0 实验预期效果 1 相关原理图 2 定时器TIM2与时钟树 2.1 TIM2 简介与特性 2.2 时钟树 3 软件配置 3.1 配置GPIO 3.2 配置定时器TIM2 4 代码编写 0 实验 ...

  9. 参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

    微控制器(处理器)的运行必须要依赖周期性的时钟脉冲来驱动--往往由一个外部晶体振荡器提供时钟输入为始,最终转换为多个外部设备的周期性运作为末,这种时钟"能量"扩散流动的路径,犹如大 ...

最新文章

  1. 对标以太坊的EOS再火,也拼不过InterValue的区块链4.0
  2. 【基础算法】算法,从排序学起(一)
  3. 命令行下执行带参数php
  4. 程序员,如何三十而立?
  5. 矩阵乘法计算速度再次突破极限,我炼丹能更快了吗?| 哈佛、MIT
  6. T-SQL 将存储过程结果插入到表中
  7. 【数据平台】python语言NLP库Gensim初识
  8. php lararel,laravel整合tinymce和ckeditor编辑器,并用elfinder上传图片
  9. CVPR 2019 | APDrawingGAN:人脸秒变艺术肖像画
  10. 一个判断字符串是否是数字的正则表达式
  11. 剑指offer 翻转链表
  12. 1566:基础练习 十六进制转八进制
  13. [JZOJ P1281] [DP]背包的第k优解
  14. php 上传类 缩略图,php图片文件上传类 (附自动生成缩略图) | 学步园
  15. 苹果将削减iPhone SE及AirPods产量 iPhone 13也要求减产
  16. 程序员想早点下班被经理拒绝,一气之下要辞职,经理慌了
  17. rsync+lsync实现多服务器多文件夹双向同步
  18. 【Win10 应用开发】实现数据的增量加载
  19. 7-模块开发卷宗(GB8567——88)
  20. ios UIView sizeToFit sizeThatFits

热门文章

  1. Jeecg-Boot 快速开发平台,前后端分离—开发环境搭建
  2. 【JEECG技术文档】Redis与Eache切换文档
  3. 【jeecg-mybatis版本】 mybatis+spring mvc 完美整合方案 查询,保存,更新,删除自动生成
  4. 记录hadoop HDFS与hadoop YARN无法访问问题
  5. angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  6. sed的高级命令和软件包管理器rpm
  7. CentOS 7系统上部署Apache+PHP+MariaDB+xcache使用rpm,php module
  8. Linux通过端口查找tomcat的路径
  9. c# 使用GDAL处理大图
  10. “用户、组或角色'XXX'在当前数据库中已存在”问题