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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了