STM32时钟树

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总线上的外设。

原文地址:https://www.cnblogs.com/hanhuo/p/9470106.html

时间: 2024-08-28 05:57:27

STM32时钟树的相关文章

转 STM32 时钟树

本文章来自: http://www.openedv.com/posts/list/302.htm 作者 张洋 时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是必要的,有助于深入理解STM32.    下面是从网上找的一个STM32时钟框图,比<STM32中文参考手册>里面的是中途看起来清晰一些: 重要的时钟:  PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系要弄清楚; 1.HSI:高速内部时钟信号 stm32单片机内带的时钟 (8M频率) 

【stm32】时钟树解析

有时候会突然忘了这个重要的时钟树,这里转载一个比较好的,以防忘记. STM32时钟系统 在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. ①HSI是高速内部时钟,RC振荡器,频率为8MHz. ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz. ③LSI是低速内部时钟,RC振荡器,频率为40kHz. ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体. ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2.HSE或

AM335x时钟树

个人比较菜鸟,搞了AM335x快一年了,依旧对其时钟一脸蒙蔽,虽然RTM已经有对时钟的详细描述,但是依旧感觉不太熟悉,偶然机会逛TI论坛(http://www.deyisupport.com)知道有一个叫CTT的软件,其专门针对AM335x等开发板,直观的显示系统时钟,让我们能够很快知道该配置那些时钟,那些是已经设置好而不需要配置的. 1.CTT是什么,有什么用? CTT为Clock Tree Tool英文缩写,其主要针对TI部分CPU,用于快速便捷配置系统时钟,由于AM335x时钟比较麻烦,分

RCC—使用 HSE/HSI 配置时钟 ---时钟树

本章参考资料:< STM32F4xx 中文参考手册> RCC 章节.学习本章时,配合< STM32F4xx 中文参考手册> RCC 章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分.RCC : reset clock control 复位和时钟控制器.本章我们主要讲解时钟部分,特别是要着重理解时钟树,理解了时钟树, F429 的一切时钟的来龙去脉都会了如指掌. HSE时钟 HSE:High Speed External Clock signal,即高速的外部时钟.来源:有源晶

EFM32G232F64时钟树

1.为了熟悉MCU的时钟树,先看看EFM32G232F64的CMU(ClockManagementUnit) 时钟管理单元(CMU)用于管控晶振(时钟源)和各个时钟节点.出于降低功耗和启动时间的目的,EFM32G的时钟源支持数个不同规格的晶振.另外还有一个独立的RC振荡器用于烧写Flash和调试.当然,时钟管理单元也从硬件级别上支持RC振荡器的校准. 晶振和系统时钟树,对于降低MCU的系统功耗有巨大意义.有了低功耗的晶振再结合弹性的时钟控制策略,就可以在各种应用场合下降低功耗.不使用的外设就关掉

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

关键词:时钟.PLL.Mux.Divider.Gate.clk_summary等. 时钟和电源是各种设备的基础设施,整个时钟框架可以抽象为几种基本的元器件:负责提供晶振 Linux内核提供了良好的CCF(Common Clock Framework),框架的两端一个是provider,一个是consumer. provider指的是提供时钟模块,包括晶振.PLL.Mux.Divider.Gate等,consumer指的是使用这些时钟的模块. 1. Linux时钟框架基础 相关文档对时钟框架做了详

STM32的时钟树深入详解以及RCC配置

在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法 如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: 1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空.2)对于少于100脚的产品,有2种接法:   2.1)OSC_IN和OSC_OUT分别通过10K电阻接地.此方法可提高EMC性能.   2.2)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出'0'.此方法可以减小功耗并(相对上面2.1)节省2个外

STM32时钟数

在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. 其实是四个时钟源,如下图所示(灰蓝色),PLL是由锁相环电路倍频得到PLL时钟. ①.HSI是高速内部时钟,RC振荡器,频率为8MHz. ②.HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz. ③.LSI是低速内部时钟,RC振荡器,频率为40kHz. ④.LSE是低速外部时钟,接频率为32.768kHz的石英晶体. ⑤.PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2.HS

使用ST-LINK&#160;V2和openocd调试STM32时出现电压过低的问题及解决

转载请贴上原帖地址. 最近项目需要用到STM32,使用GCC+openocd的编译环境调试STM32.出现了个很奇怪的现象,单独使用ST-LINK给STM32供电,会出现触发电压过低的错误,且无法连接上STM32. 其实问题很简单,ST-LINK带有检测目标板电压的功能,如果检测到目标板电压过低,则会报错. 20pin  Jtag的1.2脚为TVCC,这两个引脚就是负责检测目标板的电压. 在openocd中报错信息说target voltage只有0.5V,但测试1.2脚却有1.6V.于是用示波