历史上的今天
今天是:2024年10月18日(星期五)
2021年10月18日 | STM32时钟树详解
2021-10-18 来源:eefocus
对STM32的时钟树,可以从两个方面来思考

下面是STM32的时钟树

时钟源包括哪些:
1)高速内部时钟(HSI):HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。
HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差 。
2)高速外部时钟(HSE):以外部晶振作为时钟源,频率范围为4~16M,一般采用8MHZ晶振
3)低速内部时钟(LSI): LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。 LSI时钟频率大约40kHz(在30kHz和60kHz之间)。
4)低速外部时钟(LSE): LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。
1:高速内部时钟HSI(4-16M),作为主时钟的输入信号源,可以在芯片外部接有源晶振或者无源晶振,我的开发板上使用的是8MHz的无源晶振作为外部时钟信号的来源。PLL通过时钟配置寄存器RCC_CFGR的第17位PLLXTPRE来控制HSI是否2分频后进入PLL时钟。

从(1)中经过选择出来的时钟信号,紧接着被传递到(2)部分中
2:第(2)部份PLLSRC,PLL输入时钟源选择。一是HSE就是上述第(1)部分过来的时钟。二是HSI/2. PLL通过时钟配置寄存器
RCC_CFGR的第16位PLLSRC来选择PLL时钟源的输入。

从(2)中经过选择出来的时钟信号,紧接着被传递到(3)部分中 PLLMUL
3:第(3)部份PLLMUL是设置PLL的倍频系数,最大输出不超过72M,最大16倍频。可通过RCC_CFGR的21:18来设置倍频系数。
我们PLL的时钟来源为HSE 8MHZ,经过倍频为72M=8M*9,72M是ST官方推荐的稳定运行时钟.

从(3)中经过选择出来的时钟信号,紧接着被传递到(4)部分中 SYSCLK
4:SYSCLK是系统时钟源选择。从图中我们可以看出SYSCLK的时钟来源可以是:HSI, PLLMUL,HSE,可以通过RCC_CFGR的1:0位来选择时钟源的输入。

5:AHB分频器,AHB总线时钟HCLK,也就是所有外围设备的时钟信号的总集了.
系统时钟 SYSCLK 经过(5)中的 AHB 预分频器分频之后得到时钟叫 APB 总线时钟,即 HCLK,分频因子可以是:[1, 2, 4, 8, 16, 64, 128, 256, 512],具体的由时钟配置寄存器 CFGR的位 7-4 :HPRE[3:0]设置。片上大部分外设的时钟都是经过 HCLK 分频得到,至于 AHB总线上的外设的时钟设置为多少,得等到我们使用该外设的时候才设置,我们这里只需粗线条的设置好 APB 的时钟即可。 我们这里设置为 1 分频,即 HCLK=SYSCLK=72M。
到这里,从(5)中出来的HCLK信号就会被送往各外设中去了。这里我选择了两条较为主要的线路进行说明,一条通往(6)APB1总线时钟HCLK1,另一条通往(7) APB2总线时钟HCLK2。
上一篇:看懂时钟树——掌握系统时钟配置
下一篇:STM32时钟体系结构
史海拾趣
|
IMSResearch最近发布了一份名为《中国安防产业IP趋势》的研究,目的是希望了解IP相关技术如何在安防领域应用以及发展前景等问题。该研究针对中国本土提供电子物理安防产品的系统集成商和工程商,根据他们对IP安防产品的经验,对市场进行了分析。这 ...… 查看全部问答> |
|
如题,急需Tornado 2.2.1 for PowerPC,请问什么途径可以得到?欢迎来电13971652738,王先生。… 查看全部问答> |
|
winpcap在evc下怎么使用? D:\\PROGRAM FILES\\INCLUDE\\packet32.h(53): Could not find the file airpcap.h. D:\\PROGRAM FILES\\INCLUDE\\packet32.h(62): Could not find the file dagc.h. 有这样的提示。。。找不到系统的头文件 可有谁在E ...… 查看全部问答> |
|
各位大虾: 目前正在搞WinCE下LCD驱动, 在一个现有模板的基础上,进行了简单的修改。 引脚配置 跟 LCD控制器部分的设置应该是没有什么问题的。也将屏幕的一些配置参数进行了修改,原来的是320*240,现在我用的是800 ...… 查看全部问答> |
|
我在程序中 { ...... malloc 400K字节的缓冲区 ...... free ~ } 请问如果频繁的反复以上操作会导致异常或者死机吗 我的程序 疯狂进行30次会出现异常 不知道是不是这个原因引起的… 查看全部问答> |
|
driver中调用MmAllocateNonCachedMemory向系统申请1MB空间,请问各位,怎么才能验证,申请到的空间是连续的? 我在driverentry中直接调用的MmAllocateNonCachedMemory函数,想要申请1MB空间,但不知道怎么用最简单的方式,得知空间是否连续?我是想申请1MB连续空间. … 查看全部问答> |
|
最近找工作,请问大家“IC封装测试”是干什么的呢? 主要是以下几个问题,谢谢了哈 1.工作的主要内容是什么的呢? 2.工作的前景如何,以后发展方向主要是怎样的呢? 3.行业的待遇具体怎么样呢? … 查看全部问答> |
|
请教一个关于ATmega64串口和LCD显示的问题。。。。急!!! 芯片是ATmega64,LCD(12864)接PD口,串口通信用的PE口(usart0 RXD0 TXD0)。。。单独调试串口通信,LCD显示完全正常。。。只是要把两个程序合在一起时LCD显示就出问题,原本可以显示出的字符现实不出来。串口通讯没有问题。观察板子上的发光二极 ...… 查看全部问答> |




