这儿有必要说明体系时钟的简历关于体系运转的重要性。体系一切的运转都是树立在时钟的正常运转上的,没有稳健的体系时钟,就不可能有安稳的体系。
在体系中,复位后首要的使命是树立体系时钟,以下是树立体系时钟的根本过程:
1. 将一切的RCC外设存放器重设为默认值;
2.启用外部高速晶振;
3.等候,知道外部高速晶振安稳;
4.设置欲取指缓存使能和代码延时值;
5.设置AHB(HCLK)等于体系时钟;
6.设置高速APB2(PCLK2)为体系时钟;
7.设置低速APB1(PCLK1)为体系时钟的1/2,APB2最高是38MHz;
8.设置PLL时钟源及倍频系数,使能PLL,经过PLL被频后最高时钟只能72MHz;
9.等候PLL初始化;
10.设置PLL为体系时钟;
11.等候PLL成功作为体系时钟源。
以下经过实例代码表征上述的使用方法。首要便是依据以上的体系时钟装备的次序来做代码处理:
ErrorStatus HSEStatusUpStatus;
//将外设RCC存放器重设为默认值
RCC_DeInit();
//设置外部高速晶振
RCC_HSEConfig(RCC_HSE_ON);
//等候HSE起振
HSEStatusUpStatus = RCC_WaitForHSEStatusUp();
if(HSEStatusUpStatus == SUCESS)
{
//预取指缓存使能
FLASH_PrefetchBufferCmd(FLASH_PertchBuffer_Enable);
//设置代码延时值,FLASH_Latency_2,2 延时周期
FLASH_SetLatency(FLASH_Latency_2);
//设置AHB时钟(HCLK)
//RCC_SYSCLK_Div1 AHB 时钟 = 体系时钟
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//设置高速AHB2为体系时钟
RCC_PCLK2Config(RCC_HCLK_Div1);
//设置低速AHB时钟
RCC_PCLK2Config(RCC_HCLK_Div2);
//设置PLL时钟
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
//使能PLL
RCC_PLLCmd(enable);
// 等候指定RCC标志位设置成功,等候PLL初始化成功
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
//设置PLL为体系时钟
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK)
//0x00 HSI,0X04 HSE,0X08 PLL
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
来历;21ic