STM32的时钟系统

相较于51单片机,stm32的时钟系统可以说是非常复杂了,我们现在看下面的一张图:

上图说明了时钟的走向,是从左至右的从时钟源一步步的分配给外设时钟。需要注意的是,上图左侧一共有四个时钟源,从上到下依次是:

高速内部时钟(HSI):以内部RC振荡器产生,频率为8Mhz,但相较于外部时钟不稳定。

高速内部时钟(HSE):以外部晶振作为时钟源,晶振频率可取范围为4~16Mhz,一般采用8Mhz的晶振。

低速外部时钟(LSE): 以外部晶振作为时钟源,主要是提供给实时时钟模块,所以一般选用32.768khz,该频率下定时器方便取整。

低速内部时钟(LSI): 从内部RC振荡器产生,频率为40khz,也是主要提供给实时时钟模块。

根据上图,以我们最常用的高速外部时钟为例,沿着路线一步步的分析:

  1. 从最左端的OSC_OUT和OSC_IN开始,这两个引脚分别连接到外部晶振的两端。

  2. 我们假设连接的晶振为8Mhz,它遇到了第一个分频器PLLXTPRE。在这个分频器中,可以选择设置二分频,或者不分频。这里我们选择不分频。

  3. 然后箭头指向了开关PLLSRC,这个开关可以选择HSE或者HSI作为其时钟输出。这里我们选择HSE,紧接着又遇到锁相环PLL,也叫倍频器。我们可以设定2到16的倍频因子(PLLMUL),经过PLL的时钟称为PLLCLK。在这里设置倍频因子为9,也就是说乘以9,PLLCLK为72Mhz。

  4. 然后又遇到一个开关SW,经过这个开关之后就是STM32的系统时钟(SYSCLK)了。通过这个开关,可以切换SYSCLK的时钟源,有HSI,PLLCLK,HSE三个选择。我们选择PLLCLK时钟,所以SYSCLK就为72Mhz了。

  5. PLLCLK在输入到SW前,还流向了USB预分频器,所以这个PLLCLK也作为USB的时钟。

  6. 再继续看SYSCLK,SYSCLK经过AHB预分频器,分频后再输入到其他外设。本例中AHB不分频,直接输入到HCLK,FCLK或者SDIOCLK等时钟。

  7. 接下来看最后一层,GPIO外设是挂载在APB2总线上的,APB2总线的时钟来源于APB2预分频器,在APB2预分频器中可以选择/2,/4,/8,/16这几个分频倍数。在这里我选择不分频率,也就是说,GPIO的时钟也为72Mhz

上面这一套流程走下来,经历了一系列的分频和倍频,得到了几个与我们开发密切相关的时钟。

1.SYSCLK:系统时钟,是STM32大部分器件的时钟来源,主要由AHB预分频器分配到各个部件。

2.HCLK:由AHB预分频器直接输出得到,它是高速总线AHB的时钟信号,提供给存储器,DMA及Cortex内核,是Cortex内核运行的时钟,CPU主频就是这个信号。

3.FCLK:也是由AHB输出得到,是内核的“自由运行时钟”。“自由”表现在它不来自时钟HCLK。因此在HCLK停止时FCLK也可以继续运行。也就是说,即使CPU休眠了,也能够采样到外部中断和跟踪休眠事件。低功耗模式下使用。

4.PCLK1:外设时钟,由APB1分频得到,最大可为72Mhz,提供给APB1总线上的外设使用。

5.PCLK2:外设时钟,由APB2预分频输出得到,最大为72Mhz,提供给APB2总线上的外设。

STM32时钟树的更多相关文章

  1. STM32—时钟树(结合系统时钟函数理解)

    时钟树的概念: 我们可以把MCU的运行比作人体的运行一样,人最重要的是什么?是心跳! 心脏的周期性收缩将血液泵向身体各处.心脏对于人体好比时钟对于MCU,微控制器(MCU)的运行要靠周期性的时钟脉冲来 ...

  2. STM32 时钟树配置快速入门

    layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 为什么要了解时钟树? ...

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

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

  4. stm32时钟树讲解

    1.管理好时钟,功耗才能更低

  5. 【stm32】时钟树解析

    有时候会突然忘了这个重要的时钟树,这里转载一个比较好的,以防忘记. STM32时钟系统 在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. ①HSI是高速内部时钟,RC振荡器,频 ...

  6. STM32学习笔记:【001】时钟树与RCC

    导言 如果学过单片机的同学应该不会陌生,学习51单片机时最经常听到的就是“最小系统”. 最小系统里面少不了晶振,否则单片机无法工作. 单片机需要晶振(时钟源)来工作,那么对于STM32芯片同样如此. ...

  7. NUCLEO-L053R8 RCC时钟树 MCO输出

    RCC时钟配置实验 最近玩了一下Nucleo-L053R8板子,即STM32L053R8T6.浏览了RCC章节后,顺便做了个小实验,现在给大伙分享一下. 实验非常简单,配置一下系统时钟,可以通过肉眼观 ...

  8. ICC_lab总结——ICC_lab4:时钟树综合

    时钟树综合的理论知识总结在这里:http://www.cnblogs.com/IClearner/p/6580034.html 下面是实践环节:使用ICC进行时钟树综合. 这个实验的目标是: ·设置C ...

  9. Linux下时钟框架实践---一款芯片的时钟树配置

    关键词:时钟.PLL.Mux.Divider.Gate.clk_summary等. 时钟和电源是各种设备的基础设施,整个时钟框架可以抽象为几种基本的元器件:负责提供晶振 Linux内核提供了良好的CC ...

随机推荐

  1. 学习JQuery - 10

    第四章 Styling and Animating 1. 使用内联属性修改CSS 我们知道HTML在onload时会读取css的各项值. 那么,我们能不能在之后的操作中改变css值呢? 答案是肯定的! ...

  2. MQTT-SN协议乱翻之消息格式

    前言 紧接着上篇初步介绍,本文为第二篇,主要梳理MQTT-SN 1.2协议中定义的消息格式. 通用消息格式 消息头 其它可变部分 2/4字节表示 N字节组成 消息头部 长度 消息类型 1或3个字节 1 ...

  3. devstack with neutron 参考文献

    http://networkstatic.net/installing-openstack-ml2-neutron-plugin-devstack-fedora/ https://wiki.opens ...

  4. Excel 2010 如何将筛选后的数据复制粘贴到另一个工作表筛选后的表格里

    如果你是指自动筛选后,把筛选数据复制/粘贴到另外一个工作表中,不妨试试试 第一步选中筛选后的数据区域:第二步执行菜单命令“编辑/定位/定位条件/可见单元格”,确定:第三步单击复制按钮或者Ctrl+C或 ...

  5. Inflater与findViewById()区别

    /** * Inflater英文意思是膨胀,在Android中应该是扩展的意思吧. LayoutInflater的作用类似于 * findViewById(),不同点是LayoutInflater是用 ...

  6. 有关velocity的资料(等待整理)

    proxy-target-class="true" 与proxy-target-class="false"的区别: proxy-target-class属性值决 ...

  7. spring+springMVC+Mybatis 中使用@Transcational方式管理事务的配置方法

    springMVC 中,事务通常都在service层控制,当然controller层也可以用事务,只要配置配对,但通常不建议直接在controller层配事务,controller的作用是管理参数以及 ...

  8. IIS Admin Service 服务由于下列服务特定错误而终止: 无效签名。

    于是查看系统日志: 具体信息如下:日志名称:          System来源:            Service Control Manager日期:            2015/11/2 ...

  9. Golang学习 - builtin 包

    Go builtin包提供了go预先声明的函数.变量等的文档.这些函数变量等的实现其实并不是在builtin包里,只是为了方便文档组织. 这些内置的变量.函数.类型无需引入包即可使用. 默认提供的有: ...

  10. Python开发【笔记】:如何在字典遍历中删除key值?

    数据遍历时不能犯傻系列 前言: 针对字典做一些操作时,有时会遇到下面的状况,列如我们需要把data中的key值根据replace中的映射关系进行替换(Caller替换为caller) data = { ...