ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:217.35KB ,
资源ID:9729490      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9729490.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STM32时钟总结剖析.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STM32时钟总结剖析.docx

1、STM32时钟总结剖析STM32时钟总结一、时钟基本概念 1二、时钟树 6三、 STM32上电后时钟的过程 73.1执行SystemInit()函数 73.2 执行SetSysClock()函数 83.3执行SetSysClockTo72()函数 8 3.3.2 判断外部高速时钟源是否稳定 8 3.3.4 FLASH配置 9 3.3.5 系统时钟配置是HCLK,PCLK2为HCLK,PCLK1为HCLK的一半 9 3.3.6 配置PLL在这里修改倍频值。RCC_CFGR_PLLMULL9 9 3.3.7失能PLL;判断PLL是否Readay;选择PLL为系统时钟,一直等到时钟稳定 9四、时钟源

2、的选择 104.1系统默认配置时钟8*9=72M 104.2配置HSI(高速内部时钟)为系统主时钟(永远不变8M) 104.3配置HSE为系统主时钟。 8M(和外部晶振有关) 114.4配置PLLCLK为系统主时钟 114.5程序 11五、配置HCLK,PCLK1,PCLK2 11一、时钟基本概念LSE时钟RCC_BDCR(备份与寄存器控制)32.768kHz的低速外部晶体或陶瓷谐振器外部时钟源(LSE旁路)必须提高一个32.768kHz频率的外部时钟源,设置(RCC_(RCC_BDCR)里的LSEB和LSEON位来选择这个模式)LSI低功耗时钟源的角色,它可以在停机和待机模式下保持运行.为独

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

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

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

6、荡器时钟(被分频或未被分频)是用作系统时钟的PLL的输入时钟,PLL也将被关闭。 RTC时钟RTCCLK时钟源可以由HSE/128、LSE或LSI时钟提供。除非备份域复位,此选择不能被改变。 除非备份域复位,此选择不能被改变。 看门狗时钟 如果独立看门狗已经由硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关闭。在LSI振荡器稳定后,时钟供应给IWDG。 时钟输出 微控制器允许输出时钟信号到外部MCO管脚。 相应的GPIO端口寄存器必须被配置为相应功能四个时钟信号可被选作MCO时钟: SYSCLK HSI HSE 除2的PLL时钟 HSI时钟HSI时钟信号由内部8MHz的RC振荡

7、器产生,可直接作为系统时钟或在2分频后作为PLL输入。 HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟校准.在时钟控制寄存器里的HSITRIM4:0位来调整HSI频率。 当HSI被用于作为PLL时钟的输入时,系统时钟的最大频率不得超过64MHz。PLL 内部PLL可以用来倍频HSI RC的输出时钟或HSE晶体输出时钟。PLL的设置(选择HIS振荡器除2或HSE振荡器为PLL的输入时钟,和选择倍频因子)必须在其被激活前完成。一旦PLL被激活,这些参数就不能被改动。 如果需要在应用中使用USB接口,PLL必须被设置为输出48或72MHZ时钟,用于提供48MHz的USBCLK时钟。

8、APB2 APB1 AHB高速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控制与状态寄存器的设置,可选择上述时钟或Cortex AHB时钟作为SysTick时钟AHB不分频ADC时钟由高速APB2时钟经2、4、6或8分频后获得。 定时器时钟定时器

9、时钟频率分配由硬件按以下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连接到

10、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振荡器时钟输出;

11、 110:外部4-25MHz振荡器时钟输出; 111:PLL时钟2分频后输出。 注意:- 该时钟输出在启动和切换MCO时钟源时可能会被截断。 - 在系统时钟作为输出至MCO管脚时,请保证输出时钟频率不超过50MHz (IO口最高频率) 二、时钟树3、STM32上电后时钟的过程3.1执行SystemInit()函数。复位RCC寄存器的有关时钟的位和失能时钟。3.2 执行SetSysClock()函数。宏定义 SYSCLK_FREQ_72MHz3.3执行SetSysClockTo72()函数。3.3.1 失能HSE(高速外部时钟)3.3.2 判断外部高速时钟源是否稳定。3.3.3稳定后将HSESt

12、atus置为1.3.3.4 FLASH配置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为系统时钟,一直等到

13、时钟稳定。四、时钟源的选择初始化后为72M选择外部高速时钟做为时钟源,8M晶振倍频9倍为72M,如果外部晶振是12M,那么主时钟频率为12*9 108M。4.1系统默认配置时钟8*9=72M4.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_Cl

14、ocksTypeDef RCC_InitStructure;RCC_GetClocksFreq(&RCC_InitStructure); /72 RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); /8RCC_GetClocksFreq(&RCC_InitStructure); / RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);/8RCC_GetClocksFreq(&RCC_InitStructure); / RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/72MRCC_GetClocksFreq(&RCC_InitStructure); /五、配置HCLK,PCLK1,PCLK2 配置HCLK为18M(其他的PCLK1,PCLK2与这个配置类似)RCC_HCLKConfig(RCC_SYSCLK_Div4);/18MRCC_GetClocksFreq(&RCC_InitStructure); /

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

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