1、 请问 库函数版本 里面的SystemInit()函数 跟 void RCC_Configuration(void) 功能是一样的吗?
2、感觉设置时钟的时候没有RCC_Configuration(void)清晰明了呢、
3、下面函数里面的时钟都是默认的吗?
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
//将外设RCC寄存器重设为缺省值
RCC_DeInit();
//设置外部高速晶振(HSE)
RCC->CR |= 0x00010000;
//等待HSE起振
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
//设置AHB时钟(HCLK),AHB时钟 = 系统时钟
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//设置高速AHB时钟(PCLK2),APB2时钟 = HCLK
RCC_PCLK2Config(RCC_HCLK_Div1);
//设置低速AHB时钟(PCLK1),APB1时钟 = HCLK / 2
RCC_PCLK1Config(RCC_HCLK_Div2);
//设置ADC时钟(ADCCLK),ADC时钟 = PCLK2 / 4
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
//PLL的输入时钟 = HSE时钟频率,PLL输入时钟 x 4
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_4);
// Enable PLL
RCC_PLLCmd(ENABLE);
//用来设置FLASH存储器延时时钟周期数,2延时周期
FLASH_SetLatency(FLASH_Latency_2);
//预取指缓存使能
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
//检查指定的RCC标志位设置与否,PLL就绪
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
//设置系统时钟(SYSCLK),选择PLL作为系统时钟
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//返回用作系统时钟的时钟源,PLL作为系统时钟
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG|RCC_APB1Periph_TIM2|RCC_APB1Periph_I2C1|RCC_APB1Periph_TIM3|RCC_APB1Periph_TIM4, ENABLE);
// Enable GPIOA, GPIOB and AFIO clocks
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO|RCC_APB2Periph_TIM1, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 | RCC_AHBPeriph_DMA2, ENABLE);
/* Enable ADC1, ADC2, ADC3 and GPIOC clocks */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC3, ENABLE);
}
|