基于 STM 32 建立时钟方案

出处:互联网 发布于:2019-10-31 13:50:41 | 182 次阅读

  基于 STM 32 建立时钟方案
  2019-10-30 15:48 预计 4 分钟读完
  这里必须阐明系统时钟的简历对于系统运行的重要性。系统所有的运行都是建立在时钟的正常运行上的,没有稳健的系统时钟,就不可能有稳定的系统。
  在系统中,复位后首要的任务是建立系统时钟,以下是建立系统时钟的基本步骤:


  1. 将所有的 RCC 外设寄存器重设为默认值;
  2. 启用外部高速晶振
  3. 等待,知道外部高速晶振稳定;
  4. 设置欲取指缓存使能和代码延时值;
  5. 设置 AHB(HCLK)等于系统时钟;
  6. 设置高速 APB2(PCLK2)为系统时钟;
  7. 设置低速 APB1(PCLK1)为系统时钟的 1/2,APB2 最高是 38MHz;
  8. 设置 PLL 时钟源及倍频系数,使能 PLL,经过 PLL 被频后最高时钟只能 72MHz;
  9. 等待 PLL 初始化;
  10. 设置 PLL 为系统时钟;
  11. 等待 PLL 成功作为系统时钟源。
  以下通过实例代码表征上述的使用方法。主要就是根据以上的系统时钟配置的顺序来做代码处理:
  ErrorStatus HSEStatusUpStatus;
  // 将外设 RCC 寄存器重设为默认值
  RCC_DeInit();
  // 设置外部高速晶振
  RCC_HSECONfig(RCC_HSE_ON);
  // 等待 HSE 起振
  HSEStatusUpStatus = RCC_WaitForHSEStatusUp();
  if(HSEStatusUpStatus == SUCESS
  {
  // 预取指缓存使能
  FLASH_PrefetchBufferCmd(FLASH_PertchBuffer_Enable);
  // 设置代码延时值,FLASH_Latency_2,2 延时周期
  FLASH_SetLatency(FLASH_Latency_2);
  // 设置 AHB 时钟(HCLK)
  //RCC_SYSCLK_Div1 AHB 时钟 = 系统时钟
  RCC_HCLKConfig(RCC_SYSCLK_Div1);
  // 设置高速 AHB2 为系统时钟
  RCC_PCLK2Config(RCC_HCLK_Div1);
  // 设置低速 AHB 时钟
  RCC_PCLK2Config(RCC_HCLK_Div2);
  // 设置 PLL 时钟
  RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
  // 使能 PLL
  RCC_PLLCmd(enable);
  // 等待指定 RCC 标志位设置成功,等待 PLL 初始化成功
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
  {
  }
  // 设置 PLL 为系统时钟
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK)
  //0x00 HSI,0X04 HSE,0X08 PLL
  while(RCC_GetSYSCLKSource() != 0x08)

0次
关键词:STM_32_

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,http://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。