好了,看明白上图咱就开始吧:
- void RCC_Configuration(void)
- {
- ErrorStatus HSEStartUpStatus;
- //SystemInit(); //完全可以使用此函数配置,但是为了学习咱先不用
- RCC_DeInit(); //复位RCC模块的寄存器,复位成缺省值
- RCC_HSEConfig(RCC_HSE_ON); //开启HSE时钟,咱是用HSE的时钟作为PLL的时钟源
- HSEStartUpStatus = RCC_WaitForHSEStartUp(); //获取HSE启动状态
- if(HSEStartUpStatus == SUCCESS) //如果HSE启动成功
- {
- FLASH_PrefetchBufferCmd(ENABLE); //开启FLASH的预取功能
- FLASH_SetLatency(FLASH_Latency_2); //FLASH延迟2个周期(这里我也不明白,先用吧)
-
- RCC_HCLKConfig(RCC_SYSCLK_Div1); //配置HCLK,PCLK2,PCLK1,PLL
- RCC_PCLK2Config(RCC_HCLK_Div1);
- RCC_PCLK1Config(RCC_HCLK_Div2);
- RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
- RCC_PLLCmd(ENABLE); //启动PLL
- while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
- {} //等待PLL启动完成
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //配置系统时钟
- while(RCC_GetSYSCLKSource() !=0x80) //检查是否将HSE 9倍频后作为系统时钟
- {}
- }
- }
|