STM32时钟总结剖析.docx

上传人:b****7 文档编号:9729490 上传时间:2023-02-06 格式:DOCX 页数:13 大小:217.35KB
下载 相关 举报
STM32时钟总结剖析.docx_第1页
第1页 / 共13页
STM32时钟总结剖析.docx_第2页
第2页 / 共13页
STM32时钟总结剖析.docx_第3页
第3页 / 共13页
STM32时钟总结剖析.docx_第4页
第4页 / 共13页
STM32时钟总结剖析.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

STM32时钟总结剖析.docx

《STM32时钟总结剖析.docx》由会员分享,可在线阅读,更多相关《STM32时钟总结剖析.docx(13页珍藏版)》请在冰豆网上搜索。

STM32时钟总结剖析.docx

STM32时钟总结剖析

STM32时钟总结

一、时钟基本概念1

二、时钟树6

三、STM32上电后时钟的过程7

3.1执行SystemInit()函数7

3.2执行SetSysClock()函数8

3.3执行SetSysClockTo72()函数8

3.3.2判断外部高速时钟源是否稳定8

3.3.4FLASH配置9

3.3.5系统时钟配置是HCLK,PCLK2为HCLK,PCLK1为HCLK的一半9

3.3.6配置PLL在这里修改倍频值。

RCC_CFGR_PLLMULL99

3.3.7失能PLL;判断PLL是否Readay;选择PLL为系统时钟,一直等到时钟稳定9

四、时钟源的选择10

4.1系统默认配置时钟8*9=72M10

4.2配置HSI(高速内部时钟)为系统主时钟(永远不变8M)10

4.3配置HSE为系统主时钟。

8M(和外部晶振有关)11

4.4配置PLLCLK为系统主时钟11

4.5程序11

五、配置HCLK,PCLK1,PCLK211

 

一、时钟基本概念

LSE时钟

RCC_BDCR(备份与寄存器控制)

32.768kHz的低速外部晶体或陶瓷谐振器

外部时钟源(LSE旁路)

必须提高一个32.768kHz频率的外部时钟源,设置(RCC_(RCC_BDCR)里的LSEB和LSEON位来选择这个模式

LSI

低功耗时钟源的角色,它可以在停机和待机模式下保持运行.为独立看门狗和自动唤醒单元提供时钟

 

LSIRC可以通过控制/状态寄存器(RCC_CSR)里的LSION位来启动或关闭。

LSI校准

HSE时钟

高速外部时钟信号(HSE)由以下两种时钟源产生:

HSE外部晶体/陶瓷谐振器

HSE用户外部时钟.

 

外部时钟源(HSE旁路)在这个模式里,必须提供外部时钟。

它的频率最高可达25MHz。

用户可通过设置在时钟控制寄存器中的HSEBYP和HSEON位来选择这一模式。

外部晶体/陶瓷谐振器(HSE晶体);4~16Mz外部振荡器可为系统提供更为精确的主时钟

在时钟控制寄存器RCC_CR中的HSERDY位用来指示高速外部振荡器是否稳定。

在启动时,直到这一位被硬件置’1’,时钟才被释放出来。

如果在时钟中断寄存器RCC_CIR中允许产生中断,将会产生相应中断。

系统时钟(SYSCLK)选择

 

系统复位后,HSI振荡器被选为系统时钟。

当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。

只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟或PLL稳定),从一个时钟源到另一个时钟源的切换才会发生。

在被选择时钟源没有就绪时,系统时钟的切换不会发生。

直至目标时钟源就绪,才发生切换。

时钟安全系统(CSS)

时钟安全系统可以通过软件被激活。

一旦其被激活,时钟监测器将在HSE振荡器启动延迟后被使能,并在HSE时钟关闭后关闭。

如果HSE时钟发生故障,HSE振荡器被自动关闭,时钟失效事件将被送到高级定时器TIM1的刹车输入端,并产生时钟安全中断CSSI,允许软件完成营救操作。

此CSSI中断连接到Cortex™M3的NMI中断。

一旦CSS被激活,并且HSE时钟出现故障,CSS中断就产生,并且NMI也自动产生。

NMI将被不断执行,直到CSS中断挂起位被清除。

因此,在NMI的处理程序中必须通过设置时钟中断寄存器(RCC_CIR)里的CSSC位来清除CSS中断。

如果HSE振荡器被直间或间接地作为系统时钟,(间接的意思是:

它被作为PLL输入时钟,并且PLL时钟被作为系统时钟),时钟故障将导致系统时钟自动切换到HSI振荡器,同时外部HSE振荡器被关闭。

在时钟失效时,如果HSE振荡器时钟(被分频或未被分频)是用作系统时钟的PLL的输入时钟,PLL也将被关闭。

RTC时钟

RTCCLK时钟源可以由HSE/128、LSE或LSI时钟提供。

除非备份域复位,此选择不能被改变。

除非备份域复位,此选择不能被改变。

看门狗时钟

如果独立看门狗已经由硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关闭。

在LSI振荡器稳定后,时钟供应给IWDG。

时钟输出

微控制器允许输出时钟信号到外部MCO管脚。

相应的GPIO端口寄存器必须被配置为相应功能

四个时钟信号可被选作MCO时钟:

SYSCLK

HSI

HSE

除2的PLL时钟

HSI时钟

HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。

HSIRC振荡器能够在不需要任何外部器件的条件下提供系统时钟

校准.在时钟控制寄存器里的HSITRIM[4:

0]位来调整HSI频率。

 

当HSI被用于作为PLL时钟的输入时,系统时钟的最大频率不得超过64MHz。

PLL

内部PLL可以用来倍频HSIRC的输出时钟或HSE晶体输出时钟。

PLL的设置(选择HIS振荡器除2或HSE振荡器为PLL的输入时钟,和选择倍频因子)必须在其被激活前完成。

一旦PLL被激活,这些参数就不能被改动。

如果需要在应用中使用USB接口,PLL必须被设置为输出48或72MHZ时钟,用于提供48MHz的USBCLK时钟。

APB2APB1AHB

高速APB(APB2)和低速APB(APB1)域的频率

用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。

AHB和APB2域的最大频率是72MHZ。

APB1域的最大允许频率是36MHZ。

SDIO接口的时钟频率固定为HCLK/2。

SysTick时钟与ADC时钟

RCC通过AHB时钟8分频后供给Cortex系统定时器的(SysTick)外部时钟

通过对SysTick控制与状态寄存器的设置,可选择上述时钟或CortexAHB时钟作为SysTick时钟AHB不分频

ADC时钟由高速APB2时钟经2、4、6或8分频后获得。

定时器时钟

定时器时钟频率分配由硬件按以下2种情况自动设置:

1.如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线频率一致。

2.否则,定时器的时钟频率被设为与其相连的APB总线频率的2倍。

注意1:

LSI校准:

校准可以通过使用TIM5的输入时钟(TIM5_CLK)测量LSI时钟频率实现。

测量以HSE的精度为保证,软件可以通过调整RTC的20位预分频器来获得精确的RTC时钟基数,以及通过计算得到精确的独立看门狗(IWDG)的超时时间。

LSI校准步骤如下:

1.打开TIM5,设置通道4为输入捕获模式;

2.设置AFIO_MAPR的TIM5_CH4_IREMAP位为’1’,在内部把LSI连接到TIM5的通道4;

3.通过TIM5的捕获/比较4事件或者中断来测量LSI时钟频率;

4.根据测量结果和期望的RTC时间基数和独立看门狗的超时时间,设置20位预分频器。

注意2:

AHB,APB2,APB1复位和时钟控制

用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。

AHB和APB2域的最大频率是72MHZ。

APB1域的最大允许频率是36MHZ。

SDIO接口的时钟频率固定为HCLK/2。

注意3:

MCO:

微控制器时钟输出

由软件置’1’或清零。

0xx:

没有时钟输出;

100:

系统时钟(SYSCLK)输出;

101:

内部8MHz的RC振荡器时钟输出;

110:

外部4-25MHz振荡器时钟输出;

111:

PLL时钟2分频后输出。

注意:

-该时钟输出在启动和切换MCO时钟源时可能会被截断。

-在系统时钟作为输出至MCO管脚时,请保证输出时钟频率不超过50MHz(IO口最高频率)

 

二、时钟树

3、STM32上电后时钟的过程

3.1执行SystemInit()函数。

复位RCC寄存器的有关时钟的位和失能时钟。

3.2执行SetSysClock()函数。

宏定义SYSCLK_FREQ_72MHz

3.3执行SetSysClockTo72()函数。

3.3.1失能HSE(高速外部时钟)

3.3.2判断外部高速时钟源是否稳定。

3.3.3稳定后将HSEStatus置为1.

3.3.4FLASH配置

3.3.5系统时钟配置是HCLK,PCLK2为HCLK,PCLK1为HCLK的一半。

3.3.6配置PLL。

在这里修改倍频值。

RCC_CFGR_PLLMULL9

在这里可以修改成16M,24M,32M,48,56M,64M,72M.

RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_3);

RCC_PLLConfig(RCC_PLLSource_HSE_Div2,RCC_PLLMul_2);

4*[2,16]范围为[8M,64M]。

3.3.7失能PLL;判断PLL是否Readay;选择PLL为系统时钟,一直等到时钟稳定。

四、时钟源的选择

初始化后为72M选择外部高速时钟做为时钟源,8M晶振倍频9倍为72M,如果外部晶振是12M,那么主时钟频率为12*9108M。

4.1系统默认配置时钟8*9=72M

4.2配置HSI(高速内部时钟)为系统主时钟(永远不变8M)

RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);

4.3配置HSE为系统主时钟。

8M(和外部晶振有关)

RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);

4.4配置PLLCLK为系统主时钟

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK)

4.5程序

RCC_ClocksTypeDefRCC_InitStructure;

RCC_GetClocksFreq(&RCC_InitStructure);//72

RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);//8

RCC_GetClocksFreq(&RCC_InitStructure);//

RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);//8

RCC_GetClocksFreq(&RCC_InitStructure);//

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//72M

RCC_GetClocksFreq(&RCC_InitStructure);//

五、配置HCLK,PCLK1,PCLK2

配置HCLK为18M(其他的PCLK1,PCLK2与这个配置类似)

RCC_HCLKConfig(RCC_SYSCLK_Div4);//18M

RCC_GetClocksFreq(&RCC_InitStructure);//

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1