void system_user() //HSI 倍频函数
{
RCC_DeInit(); //恢复系统默认时钟源 HSI 16M
RCC_HSICmd(ENABLE); //使能HSI 16MHZ
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) ==RESET) ; //等待 HSI稳定
// 调压器电压输出级别配置为1,以便在器件为最大频率
// 工作时使性能和功耗实现平衡
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
PWR->CR |= PWR_CR_VOS;
// HCLK = SYSCLK / 1
RCC_HCLKConfig(RCC_SYSCLK_Div1); //AHB = 系统时钟
// PCLK2 = HCLK / 2
RCC_PCLK2Config(RCC_HCLK_Div2); //高速,APB2 = AHB/2
// PCLK1 = HCLK / 4
RCC_PCLK1Config(RCC_HCLK_Div4); //低速,APB1 = AHB/4
RCC_PLLCmd(DISABLE);
// 时钟源 分频因子,倍频因子,pll
RCC_PLLConfig(RCC_PLLSource_HSI, 16, 336, 2, 7);
// 使能PLL
RCC_PLLCmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //等待pll稳定
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选择PLL作为系统时钟源
while (RCC_GetSYSCLKSource() != 0x08); //
}
///////////在主函数中打印出参数
printf("RCC_GetSYSCLKSource = %d\n",RCC_GetSYSCLKSource());
RCC_GetClocksFreq(&RCC_clock);
printf("SYSCLK = %d \n",RCC_clock.SYSCLK_Frequency);
printf("HCLK = %d \n",RCC_clock.HCLK_Frequency);
printf("PCLK2 = %d \n",RCC_clock.PCLK2_Frequency);
printf("PCLK1 = %d \n",RCC_clock.PCLK1_Frequency);