您的位置 首页 报告

STM32再学习——时钟初始化

STM32F系列微处理器,或者说是Cortex-M3内核的MCU内,都集成了一个叫PLL的东西。PLL就是锁相回路或锁相环(Phase Locked Loop),用来统一整合时脉讯号,使内存能正确的存

  STM32F系列微处理器,或许说是Cortex-M3内核的MCU内,都集成了一个叫PLL的东西。PLL便是锁相回路或锁相环(Phase Locked Loop),用来一致整合时脉信号,使内存能正确的存取材料。PLL用于振动器中的反应技能,将外部的输入信号与内部的振动信号同步,锁相环路的根本方框图如下图所示。一句话,PLL用来操控STM32F时钟频率的。总而言之,STM32F系列MCU运用了这个东西,而咱们在MCU上电之后,也就要对其正确的初始化,这样,咱们才干得到咱们需求的时钟装备。

  在ST公司的外设固件库的示例里,关于工程项目文件,ST并没有在发动函数main()里初始化PLL,由于其已经在硬件初始化阶段完成对体系时钟的装备。这样也就带了一个问题,ST库里的均运用了外设8MHz的晶振,而咱们平常的项目就必定选用的是这个频率,实践装备的低于8MHz,MCU不能全速运转,高于8MHz,外设时钟即装备失利,乃至无法运转。那么怎么从头装备时钟就需求咱们一线的工程师们从头规划了。

  ST库里的硬件初始化阶段的代码是用寄存器方法编写的,不利于咱们阅览与参阅。也正是出于这个原因,小编运用库函数从头编写了STM32F体系时钟PLL初始化进程,与我们共享,等候共同提高与前进。

  /*********************************************************************************************************

  ** Function name: static void SysClockInit(void)

  ** Descriptions: 装备SYSCLK, HCLK, PCLK2与PCLK1

  ** Created by: Jobs Zheng

  ** Created Date: 2013-03-06 09:35

  *********************************************************************************************************/

  static void SysClockInit(void)

  {

  RCC_DeInit();/* RCC重置 */

  RCC_HSEConfig(RCC_HSE_ON); /*(使能HSE)*/

  HSEStartUpStatus = RCC_WaitForHSEStartUp();/*(等候HSE使能完毕)*/

  if (HSEStartUpStatus == SUCCESS)

  {

  FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

  FLASH_SetLatency(FLASH_Latency_2);

  RCC_HCLKConfig(RCC_SYSCLK_Div1); /* 装备HCLK = SYSCLK */

  RCC_PCLK2Config(RCC_HCLK_Div1); /* 装备PCLK2 = HCLK */

  RCC_PCLK1Config(RCC_HCLK_Div2); /* 装备PCLK1 = HCLK/2 */

  /* 超级重要的、需求装备的当地在这里 */

  /* PLLCLK = 8MHz * 9 = 72 MHz */

  RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /* RCC_PLLSource_HSE_Div1为外置晶振的分频系数;RCC_PLLMul_9为倍频数 */

  RCC_PLLCmd(ENABLE);

  while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)

  {

  }

  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* 选定PLL为体系主时钟 */

  while(RCC_GetSYSCLKSource() != 0x08)

  {

  }

  }

  else

  { /* 装备失利将程序逗留在这里 */

  while (1)

  {

  }

  }

  }

  上述C言语的文件仍需求#include "stm32f10x.h"的头文件来调用ST固件库。

  就像ST官方阐明文档所说,STM32F系列MCU支撑4M-16MHz的外置晶振,因而,我们在没有官方默许的8Mhz晶振下,大可不必苦恼,只需求增加上面的这个初始化函数,你就可以恣意运用外置晶振了。

  祝我们工作顺利,编程高兴 ^_^

 

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/118403.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部