STM32使用HSE/HSI配置时钟

https://blog.csdn.net/weixin_44861344/article/details/122391838?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-122391838-blog-88366253.235%5Ev39%5Epc_relevant_anti_t3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-122391838-blog-88366253.235%5Ev39%5Epc_relevant_anti_t3&utm_relevant_index=2

 

 

复制代码
void HSE_SetSysClock(uint32_t pllmul)
{
    __IO uint32_t StartUpCounter = 0, HSEStartUpStatus = 0;
    
    //把RCC外设初始化成复位状态
    RCC_DeInit();
    
    //使能HSE,开启外部晶振,
    RCC_HSEConfig(RCC_HSE_ON);
    
    //等待SHE启动稳定
    HSEStartUpStatus = RCC_WaitForHSEStartUp();
    
    //当HSE稳定之后继续往下执行
    if(HSEStartUpStatus == SUCCESS)
    {
        //使能Flash预存取缓存区
        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
        
        //设置SYSCLK周期与Flash访问时间的比例,这里统一设置成2
        //0: 0<SYSCLK<24M   1:  24M<SYSCLK<48M    2:   48M<SYSCLK<72M
        FLASH_SetLatency(FLASH_Latency_2);
        
        //AHB预分频因子设置为1,HCLK = SYSCLK
        RCC_HCLKConfig(RCC_SYSCLK_Div1);
        
        //APB2预分频因子设置为1,PCLK2 = HCLK
        RCC_PCLK2Config(RCC_HCLK_Div1); 
        
        //APB1预分频因子设置为2,PCLK1 = HCLK/2
        RCC_PCLK1Config(RCC_HCLK_Div2);
        
        RCC_PLLConfig(RCC_PLLSource_HSI_Div2,pllmul);
        
        //开启PLL
        RCC_PLLCmd(ENABLE);
        
        //等待PLL稳定
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
            {
                
            }
        
        //当PLL稳定之后,把PLL时钟切换为系统时钟SYSCLK
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
        
        //读取时钟切换状态位,确保PLLCLK被选为系统时钟
        while (RCC_GetSYSCLKSource()!=0x08)
            {
        
            }
    }
        else
            {
                while(1)
                    {
                    
                    }
            }
}
复制代码

HSE_SetSysClock(RCC_PLLMul_9);

posted @   不折不扣  阅读(92)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示