STM32F407 时钟源:
| 时钟源 | 频率 | 特点 |
|---|---|---|
| HSE 外部晶振 | 4~26 MHz(开发板 8 MHz) | 精准,推荐用 |
| HSI 内部 RC | 16 MHz | 上电默认,省晶振时用 |
| LSE 外部 | 32.768 kHz | RTC 专用 |
| LSI 内部 | 约 32 kHz | 独立看门狗 |
| PLL | HSE/HSI 倍频 | 主时钟源 |

主时钟路径:
HSE 8MHz → /M (÷4) → ×N (×168) → /P (÷2) → SYSCLK 168MHz
→ /Q (÷7) → 48MHz (USB/SDIO/RNG)
SYSCLK → AHB prescaler (÷1) → HCLK = 168 MHz → APB1 prescaler (÷4) → PCLK1 = 42 MHz(外设时钟,但定时器时钟仍为 84 MHz)→ APB2 prescaler (÷2) → PCLK2 = 84 MHz。

Clock Configuration 标签页直接拖,蓝色字警告越界。
关键函数 HAL_RCC_OscConfig() 配置 HSE/HSI/PLL,HAL_RCC_ClockConfig() 配置 SYSCLK/AHB/APBx:
RCC_OscInitTypeDef osc = {0};
osc.OscillatorType = RCC_OSCILLATORTYPE_HSE;
osc.HSEState = RCC_HSE_ON;
osc.PLL.PLLState = RCC_PLL_ON;
osc.PLL.PLLSource = RCC_PLLSOURCE_HSE;
osc.PLL.PLLM = 4;
osc.PLL.PLLN = 168;
osc.PLL.PLLP = RCC_PLLP_DIV2;
osc.PLL.PLLQ = 7;
HAL_RCC_OscConfig(&osc);
RCC_ClkInitTypeDef clk = {0};
clk.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |
RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
clk.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
clk.AHBCLKDivider = RCC_SYSCLK_DIV1;
clk.APB1CLKDivider = RCC_HCLK_DIV4;
clk.APB2CLKDivider = RCC_HCLK_DIV2;
HAL_RCC_ClockConfig(&clk, FLASH_LATENCY_5);
