第一次写,也不知道写些啥,就copy一个STM32 系统时钟初始化模板函数吧,以来分享给新手参考,而来自己当做备份一下。
有大神看到觉不妥之处请指出,勿喷!谢谢!
void SYS_Init(void)
{
uint8_t HSEStartUpStatus;
RCC_DeInit(); //将RCC设置为默认的重置状态
RCC_HSEConfig(RCC_HSE_ON); //配置外部高速晶振 (HSE - ON)
HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待外部时钟就绪
if(HSEStartUpStatus == SUCCESS) //SUCCESS:外部时钟(HSE)稳定就绪
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); // 设置 (AHB)时钟:RCC_SYSCLK_Div1 -不分频(AHB时钟 = 系统时钟)
RCC_PCLK2Config(RCC_HCLK_Div1); //时钟APB时钟(PCLK2) :RCC_HCLK_Div1: APB2 clock = HCLK
RCC_PCLK1Config(RCC_HCLK_Div2); //时钟APB时钟(PCLK1) :RCC_HCLK_Div2: APB1 clock = HCLK/2
FLASH_SetLatency(FLASH_Latency_2); //设置FLASH 存储器延时时钟周期
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //预区缓存器使能
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //设置PLL时钟源为HSE,倍频系数为 9
RCC_PLLCmd(ENABLE); //使能PLL
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ; //等待PLL就绪
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //设置PLL时钟为系统时钟
while(RCC_GetSYSCLKSource() != 0x08) ; //等待PLL时钟成为系统时钟
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』