配置系统时钟(stm32)

一、使用HSE配置系统时钟的过程

1.开启HSE,并等待HSE稳定

__IO uint32_t HSEStartUpStatus = 0;
// 使能HSE,开启外部晶振
RCC_HSEConfig(RCC_HSE_ON);  
//等待HSE启动稳定
HSEStatus = RCC_WaitForHSEStartUp();

注:在判断是否HSE启动的时候,不用函数RCC_GetFlagStatus()获取状态位来判断,是因为RCC_WaitForHSEStartUp()函数不仅包含了RCC_GetFlagStatus(),即要检测状态位,也要做超时处理HSE_STARTUP_TIMEOUT

2.设置AHB、APB2、APB1的预分频因子

// AHB预分频因子设置为1分频,HCLK = SYSCLK 
RCC_HCLKConfig(RCC_SYSCLK_Div1); 
  
// APB2预分频因子设置为1分频,PCLK2 = HCLK
RCC_PCLK2Config(RCC_HCLK_Div1); 

// APB1预分频因子设置为1分频,PCLK1 = HCLK/2 
RCC_PCLK1Config(RCC_HCLK_Div2);
// PLLCLK稳定之后,将PLL时钟设置为系统时钟,系统时钟可以来自于
// HSI,PLLCLK,HSE
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
// 读取时钟切换状态位,确保PLLCLK为系统时钟
 while (RCC_GetSYSCLKSource() != 0x08)
    {
          
   
    }

二、代码

经验分享 程序员 微信小程序 职场和发展