初级会员

- 积分
- 130
- 金钱
- 130
- 注册时间
- 2015-4-21
- 在线时间
- 8 小时
|
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
GPIO_InitTypeDef GPIO_InitStructure;
uint8_t hse_fail_counter = 0;
RCC_DeInit(); //清到复位值
RCC_HSEConfig(RCC_HSE_ON); //选择外部晶体作为时钟源 8MHz
RCC_ClockSecuritySystemCmd(ENABLE); //启用时钟安全检测
Wait_HSE_SUCCESS:
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS) //等待外部时钟稳定
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); //HCLK = SYSCLK 8MHz
RCC_PCLK2Config(RCC_HCLK_Div1); //PCLK2 = HCLK 8MHz
RCC_PCLK1Config(RCC_HCLK_Div1); //PCLK1 = HCLK 8MHz
FLASH_SetLatency(FLASH_Latency_0); //FLASH等待周期为1
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //开启预取模式
RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE, RCC_PREDIV1_Div2);
RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_6); //PLLCLK = 4MHz*6 = 24 MHz
RCC_PLLCmd(ENABLE); //使能PLL
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //等待PLL稳定
{}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选择PLL时钟为系统时钟
while(RCC_GetSYSCLKSource() != 0x08) //等待系统时钟稳定
{}
}
RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE, RCC_PREDIV1_Div2);这个函数是做什么用的?求详细解答。
|
|