使用HSE配置时钟
bsp_rccclkconfig.c文件
#include "bsp_rccclkconfig.h"
void HSE_SetSysClock(uint32_t RCC_PLLMul)
{
ErrorStatus HSEStatus;
/*将RCC外设初始化成默认状态*/
RCC_DeInit();
/*使能HSE*/
RCC_HSEConfig( RCC_HSE_ON);
/*等待稳定*/
HSEStatus=RCC_WaitForHSEStartUp();
if(HSEStatus== SUCCESS)
{
//使能预取值
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
//设置两个等待周期
FLASH_SetLatency(FLASH_Latency_2);
//AHB预分频1
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//APB2预分频1
RCC_PCLK2Config( RCC_HCLK_Div1);
//HPB1预分频2
RCC_PCLK1Config( RCC_HCLK_Div2);
//在这里可以根据不同的 RCC_PLLMu设置PLL
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul);
//使能PLL
RCC_PLLCmd(ENABLE);
//等待PLL稳定
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET){}
//选择PLL时钟作为系统时钟来源
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//选择HSE时钟作为系统时钟来源
//RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
while(RCC_GetSYSCLKSource()!=(uint8_t)0x08){}
}
else
{
while(1){}
}
}
bsp_rccclkconfig.h文件
#ifndef __BSP_RCCCLKCONFIG_H
#define __BSP_RCCCLKCONFIG_H
#include "stm32f10x.h"
void HSE_SetSysClock(uint32_t RCC_PLLMul);
#endif /*__BSP_RCCCLKCONFIG_H*/