目标:验证 STM32F411RE 的时钟配置是否正确
方法:通过 1 秒闪烁一次的 LED 观察是否节拍正常
1、硬件连接:
NUCLEO-F411RE 自带 LED( LED2,连接在 GPIOA5),无需外接。
图1 NUCLEO-F411RE LED2 Top Layout
2、STM32CubeMX 配置:
① 新建项目
选择 NUCLEO-F411RE
② Pinout 设置:
确保 PA5 设置为 GPIO_Output(默认已配置)。
③ 设置系统时钟:
点进 Clock Configuration,确保 SYSCLK 为 84MHz(默认 HSE + PLL)。
④ 配置定时器 TIM2:
- Clock Source: Internal Clock
- Prescaler: 8399
- Counter Period: 9999
解释: Timer Clock = 84MHz / (8399 + 1) = 10kHz Period = 9999 ➜ 中断周期 = 1秒
- 启用 NVIC 中断: 勾选 TIM2 global interrupt
3、关键代码
关键代码已注释
//-------省略------- /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD * /int ledState = 0; // 定义 LED 状态 /* USER CODE END PD */ //-------省略------- /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) // 翻转 GPIO { if(htim->Instance == TIM2) { ledState = !ledState; HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, ledState ? GPIO_PIN_SET : GPIO_PIN_RESET); } } /* USER CODE END 0 */ //-------省略------- int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM2_Init(); HAL_TIM_Base_Start_IT(&htim2); // 启动带中断的定时器 while (1) { // 主循环中不需要任何操作 } } //-------省略-------
4、实现效果