STM32学习总结之时钟

发布者:独行侠客最新更新时间:2022-10-25 来源: csdn关键字:STM32  学习总结  时钟 手机看文章 扫描二维码
随时随地手机看文章

学习内容:

在这里插入图片描述

这个图说明了STM32的时钟走向,从图的左边开始,从时钟源一步步分配到外设时钟。从时钟频率来说,又分为高速时钟和低速时钟,高速时钟是提供给芯片主体的主时钟,而低速时钟只是提供给芯片中的RTC(实时时钟)及独立看门狗使用。

从芯片角度来说,时钟源分为内部时钟与外部时钟源 ,内部时钟是在芯片内部RC振荡器产生的,起振较快,所以时钟在芯片刚上电的时候,默认使用内部高速时钟。而外部时钟信号是由外部的晶振输入的,在精度和稳定性上都有很大优势,所以上电之后我们再通过软件配置,转而采用外部时钟信号。

所以,STM32有以下4个时钟源:

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

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

低速外部时钟(LSE):以外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。野火M3实验板上用的是32.768KHz,6p负载规格的晶振。

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


我们以最常用的高速外部时钟为例分析,首先假定我们在外部提供的晶振的频率为8MHz的。

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。

7、GPIO外设是挂载在APB2总线上的, APB2的时钟是APB2预分频器的输出,而APB2预分频器的时钟来源是AHB预分频器。因此,把APB2预分频器设置为不分频,那么我们就可以得到GPIO外设的时钟也等于HCLK,为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总线上的外设。


学习总结:

单片机的时钟就是单片机工作所需要的节拍,实际上就是时钟源产生的方波信号,单片机的取指令,译指令等工作过程都要以时钟的一个周期为最小周期。


单片机工作时,会一条一条地从ROM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。一个机器周期包括12个时钟周期。如果一个单片机选择了12MHz晶振,它的时钟周期是1/12us, 它的一个机器周期是12X (1/12)us,也就是1us。


STM32的时钟系统如此复杂,有倍频、分频及一系列的外设时钟的开关。


需要倍频是考虑到电磁兼容性,如外部直接提供一个72MHz的晶振,太高的振荡频率可能会给制作电路板带来一定的难度。


分频是因为STM32既有高速外设又有低速外设,各种外设的工作频率不尽相同,如同pc机上的南北桥,把高速的和低速的设备分开来管理。


最后,每个外设都配备了外设时钟的开关,当我们不使用某个外设时,可以把这个外设时钟关闭,从而降低STM32的整体功耗。所以,当我们使用外设时,开启外设的时钟。

关键字:STM32  学习总结  时钟 引用地址:STM32学习总结之时钟

上一篇:STM学习总结之点灯
下一篇:STM32学习总结之不同文件的作用

推荐阅读最新更新时间:2024-11-07 19:41

STM32 PCM1770调试
本文初步介绍了PCM1770配置方法与调试过程,希望能起到抛砖引玉的作用。 PCM1770是24位的DAC,支持I2S信号输入,可直接驱动耳机,也可加后级功放来驱动喇叭,应用电压范围为-0.3V至4V,普通的3V3就可以。 如图1所示,该DAC对22KHZ以上频率有60dB的衰减,相当于自带一个低通滤波,减少了后级的干扰。 如图2所示,该DAC在3V3电压条件下有100dB的信噪比,72dB的分离度确实低了点,用来玩玩还行。 图1
[单片机]
stm32的五个时钟源参数设置经验
一、在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 二、在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法:如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理:
[单片机]
<font color='red'>stm32</font>的五个<font color='red'>时钟</font>源参数设置经验
如何理解STM32引脚中的GPIO,AFIO时钟分配策略和管脚复用
适用COTEX-M3系列的MCU也有两三年的时间了,一直用的是ST的产品,由于开发紧张,时间紧迫,整个过程不求甚解,只要东西能够做出来,也就不关心到底是怎么回事。最近刚好有点时间,在整理之前的软件设计时发现了一些疑惑: 使用过STM32系列产品的开发人员都知道,在该款芯片上凡是要使用某一个功能,必须给该功能分配相应的时钟,如何来分配这个时钟资源就成了一个问题:举个具体的例子,以STM32F103X8为例,假设需要使用PA9进行串口正常输出,时钟应该如何配置??数据手册管脚定义如下: 参考给出的时钟分配策略是这样: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Per
[单片机]
如何理解<font color='red'>STM32</font>引脚中的GPIO,AFIO<font color='red'>时钟</font>分配策略和管脚复用
基于ARM-WinCE平台的时钟同步设计
随着计算机技术、网络通信技术的进步,组建分布式网络化测试系统,提高测试效率、共享信息资源,已成为现代测试系统发展的方向。分布式测试系统通过网络等通信媒介把分布于各测试点、独立完成特定功能的测试设备连接起来,以达到测试资源共享和协同工作等目的。时钟同步是分布式系统的核心技术之一,其目的是维护一个全局一致的物理或逻辑时钟,使得系统内各个节点中与时间有关的信息、事件及行为有一个全局一致的解释。IEEE1588精确时钟协议是当前分布式测试系统中时钟同步研究的热点。采用硬件支持的IEEE1588协议能够在以太网中不同结点之间实现纳秒级的时钟同步,为工厂自动化、测试和测量以及通信等领域需要高精度时钟同步的应用提供了一种有效的解决方案。本文采
[单片机]
基于ARM-WinCE平台的<font color='red'>时钟</font>同步设计
基于 PIC18F8520 的 GPS 精准时钟实现(图)
GPS(Global Positioning System,全球定位系统)是世界上最完善的卫星导航系统。它不仅有覆盖全球的实时、连续的高精度的三维定位能力,同时也有精准的授时功能。利用高度稳定、精确的星载原子钟作为信号源进行时间传输和比对,已成为众多领域获取时间的重要手段。基于此,本文利用GPS所提供的精确授时功能,采用单片机技术,实现了一种GPS时钟,并将时间信息通过LCD进行显示。 系统构成及硬件实现 1 系统构成 GPS时钟系统主要由GPS接收机、单片机、LCD显示器三部分组成,如图1所示。 图1 GPS时钟系统构成框图 GPS接收机 在本系统中,GPS接收机采用Garmin公司的GPS15XL,它是12通道的GP
[单片机]
基于 PIC18F8520 的 GPS 精准<font color='red'>时钟</font>实现(图)
STM32 Timer PWM_Output
脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。 下面是一个PWM模式1的例子。当TIMx_CNT TIMx_CCRx时PWM信号参考OCxREF为高,否则为低。如果TIMx_CCRx中的比较值大于自动重装载值(TIMx_ARR),则OCxREF保持为 1 。如果比较值为0,则OCxREF保持为 0 。 下图为TIMx_ARR=8时边沿对齐的PWM波形实例。 图128 边沿对齐的PWM波形(ARR=8) 库函数 STM32F10x_StdPeriph_Lib_V3.3.0\Project\STM32F10x_StdPeriph_Examples\TIM\PWM_Out
[单片机]
<font color='red'>STM32</font> Timer PWM_Output
Keil5.15使用GCC编译器编译STM32工程
我们使用Keil一般使用ARMCC编译MCU工程代码.其实,Keil也是支持内嵌GCC编译器的.我们可以使用GCC来编译我们的工程代码. 一、下载GCC编译器 GCC编译器下载地址 二、安装GCC 我们可以把GCC解压到keil的安装目录下面.如下图 三、配置Keil使用GCC编译器 1、配置CC编译规则,Misc Controls 填写 -mcpu=cortex-m4 -mthumb -fdata-sections -ffunction-sections 2、Assembler中规则,Misc Controls 填写 -mcpu=cortex-m4 -mthumb 3、Linker中填写,Mi
[单片机]
Keil5.15使用GCC编译器编译<font color='red'>STM32</font>工程
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved