注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

深海精灵

水里的一滴油,透明地飘零在空气中。。。

 
 
 

日志

 
 
关于我

神秘诡谲,令人费解。可以很执着,也可以很破坏。冰冷,沉默。渴望单纯,渴望自由。躲在文字的背后,用心聆听世界,用直觉洞察世情。

网易考拉推荐

STM32时钟控制RCC  

2011-03-11 10:43:59|  分类: Cortex-M3 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

三种不同的时钟源可被用来驱动系统时钟:
1、HSI振荡时钟
2、HSE振荡时钟
3、PLL时钟

HSE:外部时钟源,频率最高可达25MHz。4~16MHz外部振荡器可为系统提供更为精确的主时钟。经PLL后系统时钟最大72MHz。
HSI: 内部8MHz的RC振荡器产生,启动时间比HSE短,但精度较差。经PLL后系统时钟最大64MHz。
LSI: 32.768Hz,为实时时钟或其它定时功能提供时钟,低功耗且精确。


void RCC_Configuration_HSI(void)  // 使用内部振荡器
{
   RCC_DeInit();
   RCC_HSICmd(ENABLE);                        // internal HSI RC (8 MHz)
   RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
 
   RCC_HSEConfig(RCC_HSE_OFF);
   RCC_LSEConfig(RCC_LSE_OFF);
   RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_8); //  32HMz
   RCC_PLLCmd(ENABLE);
   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
 
   FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
   FLASH_SetLatency(FLASH_Latency_0);
 
   RCC_PCLK2Config(RCC_HCLK_Div1);
   RCC_PCLK1Config(RCC_HCLK_Div2);
   RCC_HCLKConfig(RCC_SYSCLK_Div1);   
   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
 
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB
                                  | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD
                                  | RCC_APB2Periph_AFIO, ENABLE);
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 , ENABLE);
}

void RCC_Configuration_HSE(void)  // 使用外部时钟源
{
   ErrorStatus HSEStartUpStatus;
   RCC_DeInit(); 
   RCC_HSEConfig(RCC_HSE_ON);                   // 8MHz
   RCC_LSEConfig(RCC_LSE_OFF);
   HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待时钟稳定
 
   if(HSEStartUpStatus == SUCCESS)
   {
      FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
      FLASH_SetLatency(FLASH_Latency_2);
      RCC_HCLKConfig(RCC_SYSCLK_Div1);          //AHB时钟
      RCC_PCLK2Config(RCC_HCLK_Div1);     //APB2时钟
      RCC_PCLK1Config(RCC_HCLK_Div2);     //ABP1时钟
  
      /* PLLCLK = 8MHz * 9 = 72 MHz */
      RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);  //PLLX9
  
      RCC_PLLCmd(ENABLE);  
      while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  
      RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  
      while(RCC_GetSYSCLKSource() != 0x08);
   }
 
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB
                                  | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD
                                  | RCC_APB2Periph_AFIO, ENABLE);
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 , ENABLE);
}

  评论这张
 
阅读(987)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017