单片机技术应用 外围电路设计 3.STM32F1系列时钟与中断系统.pptxVIP

单片机技术应用 外围电路设计 3.STM32F1系列时钟与中断系统.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
  时钟系统是CPU的脉搏,所以说要想深入理解STM32的外设,学习时钟系统是非常有必要的。在STM32中,有5个时钟源,为HSI、HSE、LSI、LSE和PLL。从时钟频率来分可以分为高速时钟源和低速时钟源,在这5个中HSI、HSE以及PLL是高速时钟,LSI和LSE是低速时钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时钟源,其中HSE和LSE是外部时钟源,其他的是内部时钟源。下面我们来看看时钟框图: SYSTEM CLOCK SOURCE 下面我们具体分析这5个时钟源: HSI:是高速内部时钟,RC振荡器,频率为8MHz。 HSE:是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 LSI:是低速内部时钟,RC振荡器,频率为40KHz。独立看门狗的时钟源只能是LSI,同时LSI还可以作为RTC的时钟源。 LSE:是低速外部时钟,接频率为32.768KHz的石英晶体。这个主要用于作为内部RTC的时钟源。 PLL:为锁相环倍频输出,其时钟输入源可以选择HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 A:MCO是STM32的一个时钟输出IO,它可以选择一个时钟信号输出,可以选择为PLL输出的2分频、HSI、HSE 或者系统时钟。这个时钟可以用来给外部其他系统提供时钟源。 B:这里是RTC时钟源,从图上可以看出,RTC的时钟源可以选择LSI,LSE以及HSE的128分频。 C:这里是USB的时钟源,STM32可以作为一个全速的USB设备,其串行接口引擎需要一个频率为48MHz的时钟源。该时钟源只能从PLL输出端获取,可以选择1.5分频或者1分频,也就是说使用USB模块时,需要开启PLL时钟,并将时钟频率配置成48MHz或者72MHz。 D:这里是STM32的系统时钟SYSCLK,它是供STM32中绝大部分部件工作的时钟源。系统时钟可以选择为PLL输出、HSI或者HSE,系统时钟最大频率为72MHz。 E:这里就是其他所有外设的时钟源了。从时钟图上可以看出,其他所有外设的时钟最终来源都是SYSCLK。SYSCLK通过 AHB分频器分频后送给各模块使用。 void RCC_Configuration(void) { RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); //RCC_HSE_ON——HSE晶振打开(ON) HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) //SUCCESS:HSE晶振稳定且就绪 { RCC_HCLKConfig(RCC_SYSCLK_Div1); //RCC_SYSCLK_Div1——AHB时钟 = 系统时钟 RCC_PCLK2Config(RCC_HCLK_Div1); //RCC_HCLK_Div1——APB2时钟 = HCLK RCC_PCLK1Config(RCC_HCLK_Div2); //RCC_HCLK_Div2——APB1时钟 = HCLK / 2 FLASH_SetLatency(FLASH_Latency_2); //FLASH_Latency_2 2延时周期 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); // 预取指缓存使能 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); // PLL的输入时钟 = HSE时钟频率;RCC_PLLMul_9——PLL输入时钟x 9 RCC_PLLCmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ; RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //RCC_SYSCLKSource_PLLCLK——选择PLL作为系统时钟 while(RCC_GetSYSCLKSource() != 0x08); //0x08:PLL作为系统时钟 } RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABL

您可能关注的文档

文档评论(0)

WanDocx + 关注
实名认证
文档贡献者

大部分文档都有全套资料,如需打包优惠下载,请留言联系。 所有资料均来源于互联网公开下载资源,如有侵权,请联系管理员及时删除。

1亿VIP精品文档

相关文档