stm32内部时钟有哪些时钟源 stm32使用内部时钟配置教程

电子说

1.2w人已加入

描述

  stm32内部时钟有哪些时钟源

  在STM32中,可以用内部时钟,也可以用外部时钟,在要求进度高的应用场合最好用外部晶体震荡器,内部时钟存在一定的精度误差。

  内部时钟有2个时钟源可以选分别是HSI、LSI、(内部高速,内部低速,),高速时钟主要用于系统内核和总线上的外设时钟。低速时钟主要用于独立看门狗IWDG、实时时钟RTC。

  1、HSI是高速内部时钟,RC振荡器,频率为8MHz,上电后默认的系统时时钟 SYSCLK = 8MHz,Flash编程时钟。

  2、LSI是低速内部时钟,RC振荡器,频率为40kHz,可用于独立看门狗IWDG、实时时钟RTC。

  使用时需要注意 注释掉这个SystemInit(); 时钟配置函数

  //配置内置振荡器 36MHz

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

  RCC_HSICmd(ENABLE); //使能内部时钟 HSI

  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);//等待HSI就绪

  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*/

  //下面这语句设置时钟频率 记住参考

  RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_9);/*设置PLL时钟源及倍频系数,频率为8/2*9=36Mhz*/

  RCC_PLLCmd(ENABLE); /*使能PLL *///这里使用的内部时钟所以不能被 失能

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

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

  //选择哪一个做为时钟

  0x00:HSI 作为系统时钟 RCC_SYSCLKSource_HSI

  // 0x04:HSE作为系统时钟 RCC_SYSCLKSource_HSE

  // 0x08:PLL作为系统时钟 RCC_SYSCLKSource_PLLCLK

  while(RCC_GetSYSCLKSource() != 0x08);//需与被选择的系统时钟对应起来,RCC_SYSCLKSource_PLL

  整合自:CSDN、博客园

  编辑:jq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分