原文地址:RCC配置
作者:liuzhangchao
这时一张借鉴的STM32的时钟框图,简单明了。
为了方便和容易理解,自己做的一个RCC的配置流程,右边是对应的STM32库函数。
配置时钟:APB2(72MHZ) APB1(36MHZ)
void RCC_CONFIG(void)
{
//将RCC寄存器重新设置为默认值
RCC_DeInit();
//打开外部高速时钟晶振HSE
RCC_HSEConfig(RCC_HSE_ON);
//等待外部高速时钟晶振工作
while( ERROR == RCC_WaitForHSEStartUp());
//设置AHB时钟AHB clock = SYSCLK
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//设置高速AHB时钟 APB2 clock = HCLK
RCC_PCLK2Config(RCC_HCLK_Div1);
//设置低速AHB时钟 APB1 clock = HCLK/2
RCC_PCLK1Config(RCC_HCLK_Div2);
// 设置PLL 时钟源为HSE 倍频系数为9
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
// 打开PLL
RCC_PLLCmd(ENABLE);
// 等待PLL工作
while(RESET == RCC_GetFlagStatus(RCC_FLAG_PLLRDY) );
// 设置系统时钟 RCC_SYSCLKSource_XX 可选( PLLCLK HSI HSE )
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
// 判断是否PLL是系统时钟
while(RCC_GetSYSCLKSource() != 0x08);
}