这个控制系统时钟(SYSCLK)利用的是的HSE(外部高速时钟8M)来做为时钟源fetch
首先HSE通过PLLXTPRE(选择分频)时选择不分频ui
到了PLLSRC(选择锁相环时钟源)时选择HSEcode
在通过PLLMUL(选择倍频数)选择9倍频 8*9=72Mblog
注意:这里能够选择16倍频,达到816=144可是不够稳定*flash
代码实现it
bsp_rccclkconfig.c变量
void HSE_SetSysClk(uint32_t RCC_PLLMul_x)//这里的入口参数是选择倍频的数目(2-16) { ErrorStatus HSEStatus;//建立时钟状态变量sed
//使能外部高速时钟 RCC_HSEConfig(RCC_HSE_ON); HSEStatus = RCC_WaitForHSEStartUp();//等待外部时钟的开启 if( HSEStatus = SUCCESS) { //使能预取址 **注意**这是flash里面的操做 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH_Latency_2); //配置分频因子 RCC_HCLKConfig(RCC_SYSCLK_Div1);//AHB和系统时钟(72M)相等 RCC_PCLK1Config(RCC_HCLK_Div2);//APB1为系统时钟(72M)的一半36M 注意当APB1为ADC模式时系统时钟比36M大 RCC_PCLK2Config(RCC_HCLK_Div1);//APB2和系统时钟(72M)相等 //设置锁相环的参数设置 外部高速时钟 选择9倍频 8*9=72M RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_x); //使能PLL RCC_PLLCmd(ENABLE); //等待PLL时钟稳定 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //选择系统时钟 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //查看是否系统时钟源是否为PLL锁相环时钟 //- 0x00: HSI used as system clock //- 0x04: HSE used as system clock //- 0x08: PLL used as system clock while( RCC_GetSYSCLKSource() != 0x08 ); } else { //外部时钟开启失败操做 }
}配置