stm32到入土(一)RCC 配置 包含代码demo

stm RCC demo

void Rcc_Init(void)
{
  RCC_ClocksTypeDef RCC_Clocks;
  ErrorStatus       HSEStartUpStatus;

  RCC_ClockSecuritySystemCmd(ENABLE);
                  
  RCC_HSEConfig(RCC_HSE_ON); 
  HSEStartUpStatus = RCC_WaitForHSEStartUp();  

  if(HSEStartUpStatus == SUCCESS)  
  {
    FLASH_PrefetchBufferCmd(ENABLE);          
    RCC_HCLKConfig(RCC_SYSCLK_Div1);                                    
    RCC_PCLKConfig(RCC_HCLK_Div1);
    RCC_PLLConfig(RCC_PLLSource_HSE,RCC_PLLMul_6);   
    RCC_PLLCmd(ENABLE);
                    
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)      
    {
    }
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    RCC_GetClocksFreq(&RCC_Clocks);     
    while(RCC_GetSYSCLKSource() != 0x08)                  
    {
    }
  } 
}

在这里插入图片描述

RCC_ClocksTypeDef RCC_Clocks;:定义了一个结构体变量RCC_Clocks,用于存储时钟配置信息。
ErrorStatus HSEStartUpStatus;:定义了一个变量HSEStartUpStatus,用于存储HSE(高速外部时钟)启动状态。
RCC_ClockSecuritySystemCmd(ENABLE);:启用时钟安全系统。
RCC_HSEConfig(RCC_HSE_ON);:配置外部高速时钟(HSE)为开启状态。
HSEStartUpStatus = RCC_WaitForHSEStartUp();:等待外部高速时钟启动完成,并将启动状态保存到HSEStartUpStatus中。
if(HSEStartUpStatus == SUCCESS):检查外部高速时钟启动是否成功。
如果外部高速时钟启动成功:
FLASH_PrefetchBufferCmd(ENABLE);:使能闪存预取缓冲。
RCC_HCLKConfig(RCC_SYSCLK_Div1);:配置AHB总线时钟(HCLK)为系统时钟(SYSCLK)不分频。
RCC_PCLKConfig(RCC_HCLK_Div1);:配置APB总线时钟(PCLK)为AHB总线时钟(HCLK)不分频。
RCC_PLLConfig(RCC_PLLSource_HSE,RCC_PLLMul_6);:配置PLL时钟源为HSE,倍频系数为6。
RCC_PLLCmd(ENABLE);:使能PLL。
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET):等待PLL稳定。
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);:配置系统时钟源为PLL时钟。
RCC_GetClocksFreq(&RCC_Clocks);:获取时钟频率信息并保存到RCC_Clocks中。
while(RCC_GetSYSCLKSource() != 0x08):等待系统时钟源切换到PLL时钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值