ARM时钟配置
- 格式:doc
- 大小:34.50 KB
- 文档页数:2
Void RCC_Configuration(void) /*配置时钟函数*/
{
/*定义外部高速晶振启动状态枚举变量*/
ErrorStatus HSEStartUpStatus ;
/将RCC寄存器重新设置为默认值/
RCC_DeInit;
/设置外部高速晶振//
RCC_HSEConfig(RCC_HSE_ON); /RCC_HSE_ON—HSE晶振打开/
/等待HSE起振/
HSEStartUpStatus = RCC_WaitForHSEStartUp();
/ SUCCESS:HSE晶振稳定且就绪/
if(HSEStartUpStatus == SUCCESS);
{
/配置AHB时钟(HCLK)/ RCC_SYSCLK_Div1—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);
/用来选择FLASH预取指缓存的模式: 使能预取指缓存/
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/*设置FLASH存储器延时时钟周期数*FLASH_Latency_2 :2延时周期FLASH_SetLatency(FLASH_SetLatency_2);
/设置PLL时钟源以及倍频系数/
// PLL的输入时钟= HSE时钟频率;
RCC_PLLMul_9——PLL输入时钟x 9
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
使能PLL
RCC_PLLCmd(Enable);
/*检查指定的RCC标志位(PLL准备好标志)设置与否*/
While(RCC_GetFlagStatus (RCC_FLAG_PLLRDY)==RESET);
{
/*设置系统时钟(SYSCLK)*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//RCC_SYSCLKSource_PLLCLK——选择PLL作为系统时钟
/* PLL返回用作系统时钟的时钟源*/
while(RCC_GetSYSCLKSource() != 0x08) //0x08:PLL作为系统时钟
}
/使能外设时钟/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB
2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABLE);
//RCC_APB2Periph_GPIOA GPIOA时钟
//RCC_APB2Periph_GPIOB GPIOB时钟
//RCC_APB2Periph_GPIOC GPIOC时钟
//RCC_APB2Periph_GPIOD GPIOD时钟
}。