注:本文章修改了F407的系统时钟,默认情况下使用外部输入HSE25MHz 主频168MHz,本文章修改为了和F103一样的频率(因为楼主试了好多方法说在OLED里加延时函数的没有成功,所以修改了主频)
这样也可以用(如果各位看官大人有不降主频的方法,下方评论区留言告知)
ps:大佬别嘲讽我
时钟配置如下
HAL库
标准库
// 时钟配置(需根据 HSE 频率调整)
void SystemClock_Config(void) {
RCC_DeInit(); // 复位 RCC 配置
RCC_HSEConfig(RCC_HSE_ON); // 启用外部高速晶体 (HSE)
while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); // 等待 HSE 就绪
RCC_PLLConfig(RCC_PLLSource_HSE, 8, 144, 2, 4); //72MHz
// RCC_PLLConfig(RCC_PLLSource_HSE, 4, 168, 2, 4);//168MHz
RCC_PLLCmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // 等待 PLL 就绪
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // 系统时钟源 = PLL
while (RCC_GetSYSCLKSource() != RCC_CFGR_SWS_PLL); // 等待切换完成
RCC_HCLKConfig(RCC_SYSCLK_Div1); // AHB 时钟 = SYSCLK
RCC_PCLK1Config(RCC_HCLK_Div2); // APB1 时钟 = HCLK/2 (36MHz) 主频72MHz
RCC_PCLK2Config(RCC_HCLK_Div2); // APB2 时钟 = HCLK/2 (72MHz) 主频72MHz
// RCC_PCLK1Config(RCC_HCLK_Div4);//APB1 时钟 = HCLK / 4 (42MHz) 主频168MHz
// RCC_PCLK2Config(RCC_HCLK_Div2); // APB2 时钟 = HCLK/2 (84MHz) 主频168MHz
}