1. voidRCC_Configuration(void)// RCC是STM32的时钟控制器,可开启或关闭各总线的时钟,在使用各外设功能必须先开启其对应的时钟,没有这个时钟内部的各器件就不能运行。而RTC是STM32内部集成的一个简单的时钟(计时用),如果不用就关闭,用的话先要通过RCC配置其时钟源,可看作是一个外设器件。
  2. {
  3. RCC_DeInit();//初始化RCC。
  4. RCC_HSEConfig(RCC_HSE_ON);//开启HSE时钟,用HSE的时钟作为PLL的时钟源。HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
  5. HSEStartUpStatus=RCC_WaitForHSEStartUp();//获取HSE启动状态
  6. if(HSEStartUpStatus==SUCCESS)//如果HSE启动成功,进入下一步。
  7. {
  8. RCC_HCLKConfig(RCC_SYSCLK_Div1);//配置HCLK。
  9. RCC_PCLK2Config(RCC_HCLK_Div1);//配置PCLK2。
  10. RCC_PCLK1Config(RCC_HCLK_Div2);//配置PCLK1。
  11. FLASH_SetLatency(FLASH_Latency_2);// RCC初始化子函数里面,时钟起振之后。开启FLASH预读缓冲功能,加速FLASH的读取。
  12. FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//RCC初始化子函数里面,时钟起振之后。
  13. RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);//配置PLL。
  14. RCC_PLLCmd(ENABLE);//PLL设置成功。
  15. while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)//系统时钟SYSCLK来自PLL输出
  16. {
  17. }
  18. RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//配置系统时钟。
  19. while(RCC_GetSYSCLKSource()!=0x08)//检查是否将HSE 9倍频后作为系统时钟。
  20. {
  21. }
  22. }
  23. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE);//使能APB2外部时钟。
  24. }
  25. 至此我们就将STM32的系统时钟配置好了,系统时钟72MHz,APH 72MHz,APB2 72MHz,APB1 32MHz,USB 48MHz。