历史上的今天
返回首页

历史上的今天

今天是:2025年01月09日(星期四)

正在发生

2019年01月09日 | STM32学习笔记一一时钟系统

2019-01-09 来源:eefocus

一、系统架构:


这里写图片描述


二、时钟树:


这里写图片描述

这里写图片描述


STM32 有5个时钟源: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。


2. 系统时钟SYSCLK可来源于三个时钟源:  


①、HSI振荡器时钟


②、HSE振荡器时钟


③、PLL时钟


3.STM32可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL 输出的2分频、HSI、HSE、或者系统时钟。这个时钟可以用来给外部其他系统提供时钟源。


用户可通过多个预分频器配置AHB总线、高速APB2总线和低速APB1总线的频率。AHB和APB2域的最大频率是72MHZ。APB1域的最大允许频率是36MHZ。SDIO接口的时钟频率固定为HCLK/2。


4.系统时钟SYSCLK


它是供STM32中绝大部分部件工作的时钟源,它可选择为PLL输出、HSI或者HSE,(一般程序中采用PLL倍频到72Mhz)在选择时钟源前注意要判断目标时钟源是否已经稳定振荡。Max=72MHz,它分为2路,1路送给I2S2、I2S3使用的I2S2CLK,I2S3CLK;另外1路通过AHB分频器分频(1/2/4/8/16/64/128/256/512)分频后送给以下8大模块使用:


①送给SDIO使用的SDIOCLK时钟。


②送给FSMC使用的FSMCCLK时钟。


③送给AHB总线、内核、内存和DMA使用的HCLK时钟。


④通过8分频后送给Cortex的系统定时器时钟(SysTick)。


⑤直接送给Cortex的空闲运行时钟FCLK。


⑥送给APB1分频器。APB1分频器可选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给定时器(Timer2-7)2、3、4倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器2、3、4、5、6、7使用。


⑦送给APB2分频器。APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给定时器(Timer1、Timer8)1、2倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器1和定时器8使用。另外,APB2分频器还有一路输出供ADC分频器使用,分频后得到ADCCLK时钟送给ADC模块使用。ADC分频器可选择为2、4、6、8分频。


⑧2分频后送给SDIO AHB接口使用(HCLK/2)。


5.时钟输出的使能控制


在以上的时钟输出中有很多是带使能控制的,如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等。当需要使用某模块时,必需先使能对应的时钟。需要注意的是定时器的倍频器,当APB的分频为1时,它的倍频值为1,否则它的倍频值就为2。


连接在APB1(低速外设)上的设备有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看门狗、 Timer2、Timer3、Timer4。注意USB模块虽然需要一个单独的48MHz时钟信号,但它应该不是供USB模块工作的时钟,而只是提供给串行接口引擎(SIE)使用的时钟。USB模块工作的时钟应该是由APB1提供的。


连接在APB2(高速外设)上的设备有:GPIO_A-E、USART1、ADC1、ADC2、ADC3、TIM1、TIM8、SPI1、AFIO;


6.重新配置系统时钟源以及时钟


 void RCC_PLL_Configuration(void)

{

   RCC_DeInit(); /*将外设RCC寄存器重设为缺省值 */

   RCC_HSEConfig(RCC_HSE_ON);    /*设置外部高速晶振(HSE) HSE晶振打开(ON)*/


   if(RCC_WaitForHSEStartUp() == SUCCESS) {  /*等待HSE起振,  SUCCESS:HSE晶振稳定且就绪*/ 

   RCC_HCLKConfig(RCC_SYSCLK_Div1);   /*设置AHB时钟(HCLK) RCC_SYSCLK_Div1——AHB时钟 = 系统时*/ 

   RCC_PCLK2Config(RCC_HCLK_Div1);   /* 设置高速AHB时钟(PCLK2)RCC_HCLK_Div1——APB2时钟 = HCLK*/    

   RCC_PCLK1Config(RCC_HCLK_Div2); /*设置低速AHB时钟(PCLK1)RCC_HCLK_Div2——APB1时钟 = HCLK / 2*/     

   FLASH_SetLatency(FLASH_Latency_2);   /*设置FLASH存储器延时时钟周期数FLASH_Latency_2  2延时周期*/  

   FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  /*选择FLASH预取指缓存的模,预取指缓存使能*/

   RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_3);/*设置PLL时钟源及倍频系数*/   

   RCC_PLLCmd(ENABLE);   /*使能PLL */

   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ; /*检查指定的RCC标志位(PLL准备好标志)设置与否*/   

   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  /*设置系统时钟(SYSCLK) */ 

   while(RCC_GetSYSCLKSource() != 0x08);     /*0x08:PLL作为系统时钟 */       

 }

}


参考:


1.STM32中文参考手册_V10


2.STM32的时钟系统


3.关于STM32时钟系统


4. STM32 时钟系统



推荐阅读

史海拾趣

Arcolectric公司的发展小趣事

Arcolectric始终坚持品质至上的原则,对产品的每一个环节都进行严格的质量控制。公司不仅通过国际制造架构的合作来确保产品的高品质,还积极引进先进的生产设备和技术人才,不断提升产品的性能和可靠性。这种对品质的执着追求使得Arcolectric的产品在全球范围内得到了广泛的认可和赞誉。

AEMC Instruments公司的发展小趣事

随着电子行业的不断发展,AEMC Instruments公司不断追求技术创新和产品升级。公司投入大量资源进行研发,成功推出了接地电阻测试仪(包括新型革命性塔测试系统)和绝缘电阻测试仪等新型产品。这些产品不仅提高了测试的准确性和效率,还满足了市场对高品质电气测试仪器的需求。同时,公司还不断完善现有产品线,推出了钳形表、变压器变比计、谐波功率计等一系列电气测试仪器,进一步巩固了其在行业内的领先地位。

极海半导体(Geehy)公司的发展小趣事

除了提供优质的产品外,AEMC Instruments公司还注重服务升级和客户关怀。公司建立了完善的客户服务体系,提供售前咨询、售后技术支持等全方位服务。同时,公司还定期举办技术培训和交流活动,帮助客户更好地使用和维护产品。这些举措不仅提高了客户的满意度和忠诚度,也促进了公司与客户的长期合作关系。

以上五个故事是基于AEMC Instruments公司的发展情况所做出的概括性描述,旨在展示公司在电子行业中的成长历程和取得的成就。当然,具体的发展故事还需要根据公司的实际情况和历史记录来深入挖掘和呈现。

展恒电子(Broadic)公司的发展小趣事

自2010年起,展恒电子专注于智能仪表行业,凭借其核心技术和横向联合多家关键器件供应商的策略,为水、电、气、热四表市场提供整套解决方案。随着业务的不断拓展,公司逐渐积累了大量的行业知名客户,进一步巩固了其在智能仪表领域的领先地位。同时,公司还积极向新能源、物联网、安防家居等多个领域拓展,以实现业务的多元化发展。

FINDER公司的发展小趣事

2012年,展恒电子与FANSO(孚安特)签订战略合作协议,共同向智能电表厂家提供配套销售服务。这一合作不仅拓宽了展恒电子的销售渠道,也提升了公司在智能电表市场的影响力。此后,展恒电子继续与多家知名企业建立战略合作关系,通过资源共享和优势互补,实现了共赢发展。

Etco Inc公司的发展小趣事

进入21世纪后,Etco Inc公司意识到全球化趋势的不可逆转。为了拓展国际市场,公司决定实施全球化战略。首先,公司在美国本土之外建立了多个生产基地和研发中心,以便更好地满足全球客户的需求。其次,Etco加强了与国际客户的合作与交流,积极参与国际展览和研讨会,提高了品牌知名度和影响力。这些举措使Etco在全球电子连接器市场中的份额不断攀升。

问答坊 | AI 解惑

DIY雕刻机开工啦!

今天刚买回来的东东。 THK十字滑台 1000 THK Z轴滑块 100 Z轴丝杆 50 ta8435h 8X3 sanyo 57电机 30X3 连轴器 15X3 bosch 680W 2800r/min电磨 80 电路板 热转印 …

查看全部问答>

触摸屏采样问题(每次启动后,同一个点的采样值相差较大)

  在2416上运行裸机程序,同样一套硬件和软件。现在发现的问题是:启动运行程序,触摸屏上同一个点上点击多次,每次的采样值相差不大;但是重新启动程序后(掉电后启动或者ReLoad都是同样情况),该点的采样值相对上一次运行变动较大。也 ...…

查看全部问答>

我的STM8S103K怎么进不去time4中断啊

                                 我的程序已经使能TIM4,也允许了总中断,并使能TI4,但为什么就是进不去呢…

查看全部问答>

430可以和8255连接吗?

由于键盘和LED显示比较多,所以想用8255进行扩展,以前只在51上扩展过8255,但是430的电压为3。3V,不知道可不可以扩展8255 …

查看全部问答>

为什么晶振还是不稳定呢?

现在板子上只上了一个晶振,xt2接的是1.8432m的晶振。32k的没有接。下面是我的程序,不知道为什么,程序下载都没有问题,但是do while那个地方时而能过时而不能过,总的来说能过的机会要少一些。(dco状态是正常的) 大家帮忙分析下子? #include ...…

查看全部问答>

有关PCB板设计的几点事项

1.PCB走线的电感是1mm长度1nH,在高频时注意不要忽略这个电感量 2.反馈走线越短越好,注意不能收到干扰,沿路不能有开关(或高频)的走线,若有条件,把它夹在两个地之间 3.靠近IC的正负极放一个100nF的滤波电容 4.大电流的走线尽量短 5.控制电 ...…

查看全部问答>

ADC12采样保持时间

ADC12中ADC12SHT0是设置采样时间间隔的,请问这个时间间隔的大小是根据什么来设置的?它最大为1024个ADC12CLK,最小为4个ADC12CLK,能随便设置吗? [ 本帖最后由 wstt 于 2013-1-4 14:56 编辑 ]…

查看全部问答>

关于单片机的串口通信有必要深入吗?

所处的工作一般不会涉及到PC与单片机的通信,故而觉得单片机与单片机之间的通信没有必要深入去学?MCU之间用高低电平控制就可以了,一般会应用到哪些实用方面啊??…

查看全部问答>

分享《C陷阱与缺陷》

内容提要 作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程序员具有珍贵价值的经典著作。写作本书的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程中的陷阱和障碍。 全书分为8章,分别从词法分 ...…

查看全部问答>