历史上的今天
返回首页

历史上的今天

今天是:2025年02月15日(星期六)

2020年02月15日 | 单片机STM32时钟图文理解

2020-02-15 来源:elecfans

其中,高速时钟(HSE和HSI)提供给芯片主体的主时钟.低速时钟(LSE和LSI)只是提供给芯片中的RTC(实时时钟)及独立看门狗使用,图中可以看出高速时钟也可以提供给RTC。内部时钟是在芯片内部RC振荡器产生的,起振较快,所以时钟在芯片刚上电的时候,默认使用内部高速时钟。而外部时钟信号是由外部的晶振输入的,在精度和稳定性上都有很大优势,所以上电之后我们再通过软件配置,转而采用外部时钟信号.


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


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


低速外部时钟(LSE):以外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。


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

OSC_OUT和OSC_IN开始,这两个引脚分别接到外部晶振8MHz,第一个分频器PLLXTPRE,遇到开关PLLSRC(PLL entry clock source),我们可以选择其输出,输出为外部高速时钟(HSE)或是内部高速时钟(HSI)。这里选择输出为HSE,接着遇到锁相环PLL,具有倍频作用,在这里我们可以输入倍频因子PLLMUL,要是想超频,就得在这个寄存器上做手脚啦。经过PLL的时钟称为PLLCLK。倍频因子我们设定为9倍频,也就是说,经过PLL之后,我们的时钟从原来8MHz的 HSE变为72MHz的PLLCLK。紧接着又遇到了一个开关SW,经过这个开关之后就是STM32的系统时钟(SYSCLK)了。通过这个开关,可以切换SYSCLK的时钟源,可以选择为HSI、PLLCLK、HSE。我们选择为PLLCLK时钟,所以SYSCLK就为72MHz了。PLLCLK在输入到SW前,还流向了USB预分频器,这个分频器输出为USB外设的时钟(USBCLK)。回到SYSCLK,SYSCLK经过AHB预分频器,分频后再输入到其它外设。如输出到称为HCLK、FCLK的时钟,还直接输出到SDIO外设的SDIOCLK时钟、存储器控制器FSMC的FSMCCLK时钟,和作为APB1、APB2的预分频器的输入端。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总线上的外设,APB1总线上的外设如下:

RCC_APB1Periph_TIM2 TIM2时钟

RCC_APB1Periph_TIM3 TIM3时钟

RCC_APB1Periph_TIM4 TIM4时钟

RCC_APB1Periph_WWDG WWDG时钟

RCC_APB1Periph_SPI2 SPI2时钟

RCC_APB1Periph_USART2 USART2时钟

RCC_APB1Periph_USART3 USART3时钟

RCC_APB1Periph_I2C1 I2C1时钟

RCC_APB1Periph_I2C2 I2C2时钟

RCC_APB1Periph_USB USB时钟

RCC_APB1Periph_CAN CAN时钟

RCC_APB1Periph_BKP BKP时钟

RCC_APB1Periph_PWR PWR时钟

RCC_APB1Periph_ALL 全部APB1外设时钟


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

RCC_APB2Periph_AFIO 功能复用IO时钟

RCC_APB2Periph_GPIOA GPIOA时钟

RCC_APB2Periph_GPIOB GPIOB时钟

RCC_APB2Periph_GPIOC GPIOC时钟

RCC_APB2Periph_GPIOD GPIOD时钟

RCC_APB2Periph_GPIOE GPIOE时钟

RCC_APB2Periph_ADC1 ADC1时钟

RCC_APB2Periph_ADC2 ADC2时钟

RCC_APB2Periph_TIM1 TIM1时钟

RCC_APB2Periph_SPI1 SPI1时钟

RCC_APB2Periph_USART1 USART1时钟

RCC_APB2Periph_ALL 全部APB2外设时钟

推荐阅读

史海拾趣

Flambeau公司的发展小趣事

为了进一步扩大市场份额和提升品牌影响力,Flambeau公司积极实施市场拓展战略。公司不仅在北美市场深耕细作,还逐步将业务拓展到欧洲、亚洲等国际市场。通过参加国际展会、建立海外销售渠道、与当地企业建立合作关系等方式,Flambeau成功地将自己的品牌和产品推向全球。同时,公司还注重品牌建设和客户服务,通过提供优质的售前咨询、售中支持和售后服务,赢得了广大客户的信赖和好评。

Eagle Plastic Devices公司的发展小趣事

为了保持技术领先地位和满足不断变化的市场需求,Eagle Plastic Devices公司不断加大研发投入,引进先进的研发设备和人才。公司建立了完善的研发体系,包括新产品开发、工艺改进、性能测试等环节。通过不断的技术创新和产品升级,Eagle Plastic Devices公司成功推出了多款具有竞争力的新产品,进一步巩固了其在行业内的领先地位。

First Switchtech公司的发展小趣事

在电子行业的初期,First Switchtech公司(或类似公司)凭借其在开关技术领域的突破性创新,迅速在市场中崭露头角。公司研发出了一种新型低功耗、高可靠性的电子开关,这一创新不仅解决了当时市场上开关设备能耗高、故障率大的问题,还极大地提升了产品的整体性能。随着这一技术的广泛应用,First Switchtech公司逐渐在电子开关领域建立了领先地位,并带动了整个行业的技术进步。

Elite公司的发展小趣事

随着科技的不断进步,Elite始终将技术研发作为公司发展的核心驱动力。公司投入大量资金引进先进设备和技术人才,不断提升产品性能和质量。同时,Elite积极拓展国内外市场,通过参加各类展会、建立合作伙伴关系等方式,提高品牌知名度和市场占有率。

3M公司的发展小趣事

随着公司规模的不断扩大和市场的不断拓展,Elite开始实施全球化战略。公司积极开拓国际市场,与全球知名企业建立合作关系,共同推动行业发展。同时,Elite还注重品牌塑造和企业文化建设,通过举办各类公益活动、提升员工福利待遇等方式,增强企业凝聚力和社会影响力。

Gustav Klauke GmbH公司的发展小趣事

随着公司规模的不断扩大和市场的不断拓展,Elite开始实施全球化战略。公司积极开拓国际市场,与全球知名企业建立合作关系,共同推动行业发展。同时,Elite还注重品牌塑造和企业文化建设,通过举办各类公益活动、提升员工福利待遇等方式,增强企业凝聚力和社会影响力。

问答坊 | AI 解惑

Vishay 推出新型超薄电感器

Vishay Intertechnology宣布推出占位面积为 2525,厚度仅为 3.0 毫米并且具有 1.0μH~22 μH 电感值的新型器件,从而扩展了其超薄、高电流的 IHLP 电感器系列。    凭借在各自封装尺寸类 ...…

查看全部问答>

matlab第二课---逻辑指令的用法!

逻辑就是或与非,位运算等等看看怎么回事!…

查看全部问答>

嵌入式系统SQLite开发

嵌入式系统应用SQLite开发需要注意那些问题? 另:    招聘,我公司(www.congxing.com.cn)招聘熟悉SQLite嵌入式开发的软件工程师。…

查看全部问答>

程序员的年龄限制

参加开发将近三个月了,却越来越困惑,首先是担心自己做程序员发展,其次感觉自己做的东西真是没什么深度,自己压根没用到任何什么算法什么东西的,大牛们给我指个路,程序这个路值的走下去么?…

查看全部问答>

求助—关于将st语言转化为plcopen的xml

大家好,现在开始做一个项目,涉及到将structure text语言转化为plcopen定义的xml文件,由于之前没有这方面经验,所以不知道有没有什么工具进行此方面工作,借此宝地特向各位高手求教,谢谢了。…

查看全部问答>

设计一个产品,最花精力是哪一部分?

最好说说是哪类产品. 主要是设计阶段,比如,方案,硬件,软件,调试,测试等等,可以补充, 调研,售后,维护这些可能伸缩性太大,不好比较. …

查看全部问答>

IAR中如何在C程序中定义section,以及在icf中初始化段

AR中如何在C程序中定义section,以及在icf中初始化段 比如我想在IAR的C程序中定义一个section,这个section只有一个函数 然后我想在icf中来初始化section,再在C程序中把这个section 的程序copy到ram中运行 实现步骤是 1)在C程序中定义一 ...…

查看全部问答>

关于输入捕获模式下数脉冲的个数,请大家帮忙啊

                                 输入捕获模式下数脉冲的个数时,频率大于20khz的就出错了,试图改变捕获的预分频值,结果是一样的,不知道怎么解决 ...…

查看全部问答>

SysTickPeriodSet();函数用法

请教高手 SysTickPeriodSet(1000)是多少秒?SysTickPeriodSet()的参数跟哪些配置有关?…

查看全部问答>

web版本Quartus ii 如何新建时序仿真文件(vector waveform file )

在ALTERA官网下载的web版本Quartus ii 如何新建时序仿真文件(vector waveform file )?是不是不能生成啊?  求解答…

查看全部问答>