STM32时钟总结剖析_第1页
STM32时钟总结剖析_第2页
STM32时钟总结剖析_第3页
STM32时钟总结剖析_第4页
STM32时钟总结剖析_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、STM32时钟总结 TOC o 1-5 h z HYPERLINK l bookmark2 o Current Document 一、时钟基本概念2二、时钟树7 HYPERLINK l bookmark10 o Current Document 三、STM32上电后时钟的过程 7 HYPERLINK l bookmark12 o Current Document 执行 Systemlnit ()函数7 HYPERLINK l bookmark14 o Current Document 执行 SetSysClock()函数8执行 SetSysClockTo72 ()函数8判断外部高速时钟源是否稳

2、定8 HYPERLINK l bookmark18 o Current Document FLASH 配置9系统时钟配置是 HCLK,PCLK2 为 HCLK,PCLK1 为 HCLK的一半9配置PLL在这里修改倍频值。RCC_CFGR_PLLMULL99失能PLL;判断PLL是否Readay;选择PLL为系统时钟,一直等到时钟稳定9 HYPERLINK l bookmark28 o Current Document 四、时钟源的选择10 HYPERLINK l bookmark30 o Current Document 系统默认配置时钟8*9=72M 10配置HSI (高速内部时钟)为系统主

3、时钟(永远不变8M)10配置HSE为系统主时钟。8M (和外部晶振有关).11配置PLLCLK为系统主时钟11程序11五、配置 HCLK,PCLK1,PCLK2 11、时钟基本概念LSE时钟RCC_BDCR (备 份与寄存器控 制)32.768kHz 的 低速外部晶体 或陶瓷谐振器外部时钟源 (LSE旁路)必须提高一个 32.768kHz 频 率的外部时钟 源,设置 (RCC_(RCC_BD CR)里的 LSEB 和LSEON位来 选择这个模式)LSI低功耗时钟源 的角色,它可 以在停机和待 机模式下保持 运行.为独立 看门狗和自动 唤醒单元提供 时钟LSI RC可以通 过控制/状态 寄存器

4、(RCC_CSR)里 的LSION位来 启动或关闭。LSI校准HSE时钟高速外部时钟 信号(HSE)由 以下两种时钟 源产生:HSE 外部晶体/陶 瓷谐振器HSE用户 外部时钟.外部时钟源 (HSE旁路)在 这个模式里, 必须提供外部 时钟。它的频 率最高可达 25MHz。用户可 通过设置在时 钟控制寄存器 中的HSEBYP 和HSEON位来 选择这一模 式。外部晶体/陶 瓷谐振器(HSE 晶体 ); 416Mz外部振 荡器可为系统 提供更为精确 的主时钟在时钟控制寄 存器RCC_CR 中的HSERDY 位用来指示高 速外部振荡器 是否稳定。在 启动时,直到 这一位被硬件 置 1 ,时钟 才被

5、释放出 来。如果在时 钟中断寄存器 RCC_CIR 中允 许产生中断, 将会产生相应 中断。系统时钟 (SYSCLK)选择系统复位后, HSI振荡器被 选为系统时只有当目标时 钟源准备就绪 了(经过启动2钟。当时钟源 被直接或通过 PLL间接作为 系统时钟时, 它将不能被停 止。稳定阶段的延 迟或PLL稳 定),从一个时 钟源到另一个 时钟源的切换 才会发生。在 被选择时钟源 没有就绪时, 系统时钟的切 换不会发生。 直至目标时钟 源就绪,枚 生切换。时钟安全系统 (CSS)时钟安全系统 可以通过软件 被激活。一旦 其被激活,时 钟监测器将在 HSE振荡器启 动延迟后被使 能,并在HSE 时钟

6、关闭后关 闭。如果HSE时钟 发生故障,HSE 振荡器被自动 关闭,时钟失 效事件将被送 到高级定时器 TIM1的刹车输 入端,并产生 时钟安全中断 CSSI,允许软 件完成营救操 作。此CSSI中 断连接到 CortexM3 的 NMI中断。一旦CSS被激 活,并且HSE 时钟出现故 障,CSS中断 就产生,并且 NMI也自动产 生。NMI将被 不断执行,直 到CSS中断挂 起位被清除。因此,在NMI 的处理程序中 必须通过设置 时钟中断寄存 器(RCC_CIR) 里的CSSC位 来清除CSS中 断。如果HSE振荡 器被直间或间 接地作为系统 时钟,(间接的 意思是:它被 作为PLL输入 时

7、钟,并且PLL 时钟被作为系 统时钟),时钟 故障将导致系 统时钟自动切 换到HSI振荡 器,同时外部 HSE振荡器被 关闭。在时钟 失效时,如果 HSE振荡器时 钟(被分频或 未被分频)是 用作系统时钟 的PLL的输入 时钟,PLL也 将被关闭。RTC时钟RTCCLK时钟源 可 以 由 HSE/128、 LSE 或LSI时钟提 供。除非备份 域复位,此选 择不能被改除非备份域复 位,此选择不 能被改变。3变。看门狗时钟如果独立看门 狗已经由硬件 选项或软件启 动,LSI振荡器 将被强制在打 开状态,并且 不能被关闭。在LSI振荡器 稳定后,时钟 供应给IWDG。时钟输出微控制器允许 输出时钟

8、信号 至U夕卜部MCO管 脚。相应的GPIO端 口寄存器必须 被配置为相应 功能四个时钟信号 可被选作MCO 时钟:SYSCLKHSIHSE除2的PLL 时钟HSI时钟HSI时钟信号 由内部8MHz的 RC振荡器产 生,可直接作 为系统时钟或 在2分频后作 为PLL输入。HSI RC振荡器 能够在不需要 任何外部器件 的条件下提供 系统时钟校准.在时钟 控制寄存器里 的 HSITRIM4:0 位来调整HSI 频率。当HSI被用于 作为PLL时钟 的输入时,系 统时钟的最大 频率不得超过 64MHz。PLL内部PLL可以 用来倍频HSI RC的输出时钟 或HSE晶体输 出时钟。PLL的设置(选

9、择HIS振荡器 除2或HSE振荡 器为PLL的输 入时钟,和选 择倍频因子) 必须在其被激 活前完成。一 旦PLL被激活, 这些参数就不 能被改动。如果需要在应 用中使用USB 接口,PLL必须 被设置为输出 48 或 72MHz 时 钟,用于提供 48MHz的USBCLK 时钟。4APB2 APB1 AHBAPB(APB2)和APB(APB1)域 的频率用户可通过多 个预分频器配 置AHB、高速 APB(APB2)和 低速APB(APB1)域 的频率。AHB 和APB2域的 最大频率是 72MHZ。APB1 域的最大允许 频率是36MHZ。SDIO接口的时 钟频率固定为 HCLK/2。Sys

10、Tick 时钟 与ADC时钟RCC通过AHB 时钟8分频后 供给Cortex 系统定时器的 (SysTick)外 部时钟通过对 SysTick 控制 与状态寄存器 的设置,可选 择上述时钟或 Cortex AHB 时 钟作为 SysTick 时钟 AHB不分频ADC时钟由高 速APB2时钟 经2、 4、 6或 8分频后获得。定时器时钟定时器时钟频 率分配由硬件 按以下2种情 况自动设置:1.如果相应 的APB预分 频系数是 1,定时器 的时钟频 率与所在 APB总线频 率一致。2.否则,定时 器的时钟 频率被设 为与其相 连的APB总 线频率的2 倍。Legend:HSE = Speed Ex

11、terra I clock $词HSI = High Speed Internal clock signalLSI= Low Speed Interna) clock signalLSE = Low Speed External clock sWI注意1: LSI校准:校准可以通过使用TIM5的输入时钟(TIM5_CLK)测量LSI时钟频率实现。测 量以HSE的精度为保证,软件可以通过调整RTC的20位预分频器来获得精确的 RTC时钟基数,以及通过计算得到精确的独立看门狗(IWDG)的超时时间。LSI校准步骤如下:.打开TIM5,设置通道4为输入捕获模式;.设置AFIO_MAPR的TIM5_C

12、H4_IREMAP位为 1,在内部把LSI连接到TIM5的通道 4;.通过TIM5的捕获/比较4事件或者中断来测量LSI时钟频率;.根据测量结果和期望的RTC时间基数和独立看门狗的超时时间,设置20位预分 频器。注意2: AHB,APB2,APB1复位和时钟控制用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频 率。AHB和APB2域的最大频率是72MHZ。APB1域的最大允许频率是36MHZ。SDIO 接口的时钟频率固定为HCLK/2。注意3:MCO:微控制器时钟输出由软件置 1或清零。0 xx:没有时钟输出;100:系统时钟(SYSCLK)输出;101:

13、内部8MHz的RC振荡器时钟输出;110:外部4-25MHz振荡器时钟输出;111: PLL时钟2分频后输出。注意:-该时钟输出在启动和切换MCO时钟源时可能会被截断。-在系统时钟作为输出至MCO管脚时,请保证输出时钟频率不超过50MHz (IO口最高频 率)时钟树48 MHzUSBCLK48 MHzUSBCLK to USB interfaceUSBPrescaler/1S 1.5OSC OUTOSC INOSC32 INOSC32 OUTfl8 MHzHSI RCHSI/2PLLGRC 叫yIUL,x1 6 x3s x4 PLL4-16 MHzHSE OSCLSE OSC32.768 kH

14、zSWSY-CLK:PLLXTPRE/2/1I28 LSEPLLCLK72MHZmaxCSStoRTCRTCCLKRTCSEL1-0Peripheral clockenable:AHBPrescaler1252to Independent Watchdog (IWDG)LSI RCLSIIWDGCLKHSIHSESYSCLKMCOMainClack Output .12 -PLLCLKl2S3CLK to I2S3Peripheral clock enableI2S2CLK to I2S2Peripheral elexk L enable皿 clKisdP加冷h呀田田Bek enableFSM

15、CCLK tQ FSMC72 MHz max/8JldX 、Clock - Enable刊画HCLK to AHB bus. core, memary and DMAAPB1Prescaler12 4 a 16* to Cortex System time rA FGLKCgtQfree running clock36 MHz maxPC ILK 1 toAPBl r 用ri ph 9kl Clock peri pherals Enable (20 bits)TIM2:34,5S7If (APB1 prescaler =1) stAPB2Prescaler/1S2S 4 8, 16IM乙34名

16、 J TIMXCLKPeripheral Clock Enable (6 bits)72 MHz maxPeripherh Clock8 and 7、PCLK2 .-peripherals to APB2Enable (15 bits)TlM1 & 8 timersi l If (APB2 prescaler =1)x1 else x2toTIMl and TIMiADCPrescaler 4, 0 8/2匚U TIMxCLK 必riph口ral门小之k Enable (2 bii)to ADC1, 2 or 3ADCCLKHCLK,2ITo SDIO AHB interface Periph

17、eral clock enableLegend;HSE = High Speed External dock signal HSI = High Speed Internal deck signsl LSI = Low Speed Internal clock signal LSE - Low Speed External clock signal三、STM32上电后时钟的过程执行 Systemlnit ()函数。复位RCC寄存器的有关时钟的位和失能时钟。执行$小丫8。00鼠)函数。L * Istatic void SetSysClock(void)|#ifdef SYSCLK_FR.E(LH

18、SESetSysCloclkToHSE( ) elif defined SYGCLK_FREQ_24MHz SetSysCloclkTo24();elif defined SYGCLK_FREQ_36MHzSetSysCloclkTo36( ) jelif defined SYSCLK_FREQl_4SMHzSetSysClockTo48()jelif defined 0YGCLK_FREQ5吕MHzSetSysCloclkTo56( ) elif defined SYSCLK_FREQ72MHz SetSysCloclkTo72();#endif3 /* If none of the def

19、ine above is e source (default after reset) */)宏定义SYSCLK_FREQ_72MHz define SYSCLK_FR.EQ72MHz 720000003.3执行SetSysClockTo72 ()函数。失能HSE(高速外部时钟)产 Enable HSE 力RCC-CR |= (uint32_t)RCC_CR_HSEON)-判断外部高速时钟源是否稳定。HSEStatus = RCC-CR & RCC_CR_H0ERD;判断他是否时钟源准备好了 = StartUpCounter+H-j while(HSEStatus = 0) & (StartU

20、pCounter != H5E_STARTUP_TIMEOUT)稳定后将HSEStatus置为1.FLASH 配置FLASH-ACR |= FLASH_ACR_PRFTBE/* Flash 2 wait state */FLASH-ACR &= (uint32_t)(uint32_t)-FLASH_ACR_LATENCY)jFLASH-ACR |= (uint32_t)FLA5H_ACR_LATENCY_2j系统时钟配置是HCLK, PCLK2为HCLK, PCLK1为HCLK的一半。/* HCLK = 5YSCLK */RCC-CFGR |= (uin132_t)RCC_C FGR_HPRE

21、_DIV1j /* PCLK2 = HCLK */RCC-CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIVlj /* PCLK1 = HCLK */RCC-CFGR |=(uint32_t)RCC_CFGR_PPREl_DIV2-配置PLL。在这里修改倍频值。RCC_CFGR_PLLMULL9PLL configuration: PLLCLK = HSE * 9 = 72 MHz */RCC-CFGR &= (uint32_t)(uint32_t)-(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |RCC_CFGR_PLLMULL)jRCC-C

22、FGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE RCC_CFGR_PLLMULL9)5在这里可以修改成 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。失能PLL;判断PLL是否Readay;选择PLL为系统时钟,一直等到时钟 稳定。/* Enable PLL */RCC-CR |= RCC_CR_PLLON;/* Wai

23、t till PLL is ready */ while(RCC-CR & RCC_CR_PLLRDY) = 0)/* Select PLL as system clock source */RCC-CFGR &= (uint32_t)(uint32_t)-(RCC_CFGR_SW)jRCC-CFGR |= (uint32_t)RCC_C FGR_SW_P L L-/* Wait till PLL is used as system clock source */while (RCC-CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0 x08)四、时钟源

24、的选择初始化后为72M选择外部高速时钟做为时钟源,8M晶振倍频9倍为72M,如 果外部晶振是12M,那么主时钟频率为12*9 108M。4.1系统默认配置时钟8*9=72MRCCJnitStruct.0 x200003BO &RCC_Init.struct Q 5Y5CLK_Fr.0 xO44AA200unsigned intQ HCLK_Freq.0 xO44AA200unsigned intPCLKl_Fre.0 x02255100unsigned intQ PCLK2_Fre.0 xD44AA200unsigned intQ ADCCLK_F.0 x02255100unsigned in

25、t配置HSI(高速内部时钟)为系统主时钟(永远不变8M)RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); SYSCLK_Fr.Q HCLK_Freq.0 x007A1200unsigned int0 x007 A1200unsigned int3CLKl_Frequency .0 x003D0900unsigned intPCLK2_Fre.Q ADCCLK_F.0 x007A1200unsigned int0 x003D0900unsigned int10配置HSE为系统主时钟。8M (和外部晶振有关)Q SYSCLK_Fr.J HCLK_Freq.0 x007A1200unsigned int0 x007A1200unsigned int3CLKl_Frequency0 x003 D0900unsigned intV PCLK2_Fre.Q ADCCLKF.0 x007A1200unsigned int0 x003 D0900unsigned intRCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);配置PLL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论