历史上的今天
返回首页

历史上的今天

今天是:2025年06月26日(星期四)

正在发生

2018年06月26日 | STM32F10X的时钟树及时钟初始化

2018-06-26 来源:eefocus

对于初学者而言,时钟是一个很重要很深的概念,对于STM32芯片来讲,为了实现低功耗,设计了一个功能完善但是却很复杂的时钟系统,使得外围功能的时钟可配置,相对应的,单片机的时钟基本上固定的几种,简单配置后就能使用,而STM32的外围功能不仅要配置,还需要在最开始就要设置这些外设时钟,只有使能这些外设时钟后,这些外设才能够使用。


STM32的时钟树,如下图所示:

STM32有一下4个时钟源:


(1)高速外部时钟(HSE):以外部晶振作时钟源,晶振频率可取范围为4~16MHz,我们一般采用8MHz的晶振,开发板上的8MHz时钟就是指的这个。


(2)高速内部时钟(HSI): 由内部RC振荡器产生,频率为8MHz,但不稳定。


(3)低速外部时钟(LSE):以外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。STM32F103CBT6开发板上用的是32.768KHz规格的晶振。


 (4)低速内部时钟(LSI):由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40KHz。


接下来以最常用的高速外部时钟(HSE)为例进行分析:


    

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


2)      8MHz的时钟遇到了第一个分频器PLLXTPRE(HSE divider for PLL entry),在这个分频器中,可以通过寄存器配置,选择它的输出。它的输出时钟可以是对输入时钟的二分频或不分频。本例子中,我们选择不分频,所以经过PLLXTPRE后,还是8MHz的时钟。


3)      8MHz的时钟遇到开关PLLSRC(PLL entry clock source),我们可以选择其输出,输出为外部高速时钟(HSE)或是内部高速时钟(HSI)。这里选择输出为HSE,接着遇到锁相环PLL,具有倍频作用,在这里我们可以输入倍频因子PLLMUL(PLL multiplication factor),要是想超频,就得在这个寄存器上做手脚。经过PLL的时钟称为PLLCLK。倍频因子我们设定为9倍频,也就是说,经过PLL之后,我们的时钟从原来8MHz的 HSE变为72MHz的PLLCLK。


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


5)      PLLCLK在输入到SW前,还流向了USB预分频器,这个分频器输出为USB外设的时钟(USBCLK)。


6)      回到SYSCLK,SYSCLK经过AHB预分频器,分频后再输入到其它外设。如输出到称为HCLK、FCLK的时钟,还直接输出到SDIO外设的SDIOCLK时钟、存储器控制器FSMC的FSMCCLK时钟,和作为APB1、APB2的预分频器的输入端。本例子设置AHB预分频器不分频,即输出的频率为72MHz。


从时钟树的分析,看到经过一系列的倍频、分频后得到了几个与我们开发密切相关的时钟。

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

HCLK:由AHB预分频器直接输出得到,它是高速总线AHB的时钟信号,提供给存储器,DMA及cortex内核,是cortex内核运行的时钟,cpu主频就是这个信号,它的大小与STM32运算速度,数据存取速度密切相关。

FCLK:同样由AHB预分频器输出得到,是内核的“自由运行时钟”。“自由”表现在它不来自时钟 HCLK,因此在HCLK时钟停止时 FCLK 也继续运行。它的存在,可以保证在处理器休眠时,也能够采样和到中断和跟踪休眠事件 ,它与HCLK互相同步。

PCLK1:外设时钟,由APB1预分频器输出得到,最大频率为36MHz,提供给挂载在APB1总线上的外设。

PCLK2:外设时钟,由APB2预分频器输出得到,最大频率可为72MHz,提供给挂载在APB2总线上的外设。


为什么STM32的时钟系统如此复杂,有倍频、分频及一系列的外设时钟的开关。需要倍频是考虑到电磁兼容性,如外部直接提供一个72MHz的晶振,太高的振荡频率可能会给制作电路板带来一定的难度。分频是因为STM32既有高速外设又有低速外设,各种外设的工作频率不尽相同,如同pc机上的南北桥,把高速的和低速的设备分开来管理。最后,每个外设都配备了外设时钟的开关,当我们不使用某个外设时,可以把这个外设时钟关闭,从而降低STM32的整体功耗。所以,当我们使用外设时,一定要记得先开启外设的时钟。


对于STM32的默认启动文件"startup_stm32f10x_hd.s",对于时钟的初始化函数,追踪到最后,会跳转到如下的程序:

static void SetSysClock(void)  

{  

#ifdef SYSCLK_FREQ_HSE  

  SetSysClockToHSE();  

#elif defined SYSCLK_FREQ_24MHz  

  SetSysClockTo24();  

#elif defined SYSCLK_FREQ_36MHz  

  SetSysClockTo36();  

#elif defined SYSCLK_FREQ_48MHz  

  SetSysClockTo48();  

#elif defined SYSCLK_FREQ_56MHz  

  SetSysClockTo56();    

#elif defined SYSCLK_FREQ_72MHz  

  SetSysClockTo72();  

#endif  

   

 /* If none of the define above is enabled, the HSI is used as System clock 

    source (default after reset) */   

}  

查看宏定义,发现,会设定系统时钟为72MHz,这也不难理解,先把系统时钟倍频到最大,然后外围时钟就可以分频到需要的了,这样就能发挥CPU的最大性能。

推荐阅读

史海拾趣

CET Technology公司的发展小趣事

在数字化转型的大背景下,CET Technology积极探索数字孪生技术在园区管理中的应用。公司提供的数字孪生与3D可视化服务,通过创建园区的虚拟实体,模拟、验证、预测和控制园区的运营状态,帮助园区实现智慧化管理、优化服务和提高生产效率。此外,CET的数字孪生服务还能监控园区内人员和车辆的通行情况,提升园区内部的交通效率,为园区的可持续发展提供了有力支持。

AEM [ American Electronic Materials]公司的发展小趣事

在电子行业的发展过程中,AEM始终保持着对技术创新的追求。公司不断投入巨资进行技术研发,引进先进的生产设备和制造工艺,致力于提升产品的性能和品质。通过多年的努力,AEM成功突破了多项技术难题,取得了一系列重要的技术成果。

此外,AEM还积极与产业上下游的企业进行合作,共同推动电子行业的发展。通过与供应商和客户的紧密合作,AEM不断优化供应链和销售渠道,提高了公司的运营效率和市场竞争力。

Advanced Semiconductor, Inc.公司的发展小趣事

随着科技的快速发展,ASI不断加大对研发的投入,努力突破技术瓶颈。在某一时期,公司成功研发出一款具有划时代意义的半导体芯片,这款芯片不仅性能卓越,而且功耗更低,极大地提升了电子设备的性能和使用体验。这一技术突破使得ASI在市场上获得了更多的份额,并奠定了公司在半导体行业的领先地位。

AVAGO公司的发展小趣事

AVAGO公司(现更名为Broadcom)的创业故事始于上世纪八十年代。当时,几位工程师看到半导体行业的巨大潜力,决定创立一家公司来专注于高性能模拟半导体的研发。初始阶段,公司面临着资金短缺、市场竞争激烈等挑战,但凭借团队的技术实力和对市场的敏锐洞察,他们成功开发出了几款性能卓越的半导体产品,并逐渐在市场上获得了认可。

光磊(GL)公司的发展小趣事

随着公司规模的扩大和技术的不断积累,AVAGO公司开始寻求多元化的发展道路。除了继续深耕半导体领域外,公司还积极拓展其他相关领域,如传感器、无线通信等。同时,公司还与其他行业的领军企业建立了紧密的战略合作关系,共同推动技术创新和市场拓展。

CHERRY公司的发展小趣事

随着业务的不断发展,Cherry将目光投向了更广阔的市场。1967年,随着个人计算机的普及,Cherry看到了键盘市场的巨大潜力,于是决定引进键盘生产线。不久之后,Cherry建造了世界上第一个键盘工厂,开始生产高质量的键盘产品。这一决策为Cherry公司后来的发展奠定了坚实的基础。

问答坊 | AI 解惑

开关电源设计知识介绍

开关电源设计1 电子产品,特别是军用稳压电源的设计是一个系统工程,不但要考虑电源本身参数设计,还要考虑电气设计、电磁兼容设计、热设计、安全性设计、三防设计等方面。因为任何方面那怕是最微小的疏忽,都可能导致整个电源的崩溃,所以我们应充分认 ...…

查看全部问答>

基于虹膜的人体特征识别方法研究

  人体特征识别方法,也叫生物特征识别方法,是指利用人的独特的生理及行为特征进行鉴别的身份验证的技术手段。它的产生及发展源于人们在迈进数字时代的过程中对身份验证方法的准确性与便捷性不断提高的需求。传统的身份验证方法主要包括身份标志 ...…

查看全部问答>

消费电子领域十大技术趋势

replyreload += \',\' + 373726;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

2440 + CE5.0下的中断驱动问题

小弟做过4.2下的中断驱动,不知道5.0下的中断驱动怎么着手做啊?哪位大哥给点指导啊?…

查看全部问答>

什么书适合VHDL初学者

想买本书看看,书太多不知道选哪本,请教各位啦。 还有谁看过《基于Quartus2的FPGA/CPLD数字系统设计实例》,谈谈感受吧。…

查看全部问答>

SCCB 总线 PK I2C总线

SCCB总线  SCCB是简化的I2C协议,SIO-l是串行时钟输入线,SIO-O是串行双向数据线,分别相当于I2C协议的SCL和SDA。SCCB的总线时序与I2C基本相同,它的响应信号ACK被称为一个传输单元的第9位,分为Don’t care和NA。Don’t care位由从机产 ...…

查看全部问答>

关于红外中断问题

最近在做一个红外调节的时钟  被卡住了  调试了好久就是没做出来  有谁做过能发程序来拜读一下吗 谢谢   由于本人是菜鸟 希望发过来的程序 能修改一下吗  我希望 用ds12c887来做时钟芯片  它的定时中断接 ...…

查看全部问答>

请问怎样利用M3中的ADC,同时实现数据采集和触摸屏控制

背景:已经有很多例程实现了ADC数据采集,TI也提供了基于M3片内ADC的触摸屏驱动,但同时实现数据采集和触摸屏控制的例程并没有想法:由于M3只有一颗或两颗ADC集成在内,如果尽量保证数据采集,触摸屏只能在一轮数据采集完成间隙,通过轮询方式,使 ...…

查看全部问答>

高交会直播贴

其实很多东西都已经在心里了,还是有点担心现场见那么多人会忘了要说什么,呵呵。所以最近我也在努力背书。咱论坛有去做技术讲解的吗?能分享分享经验就再好不过了。     高交会时间从11月16日-21日,没几天了。好在深圳现在气温让人舒 ...…

查看全部问答>