这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » DIY功率监测与控制系统-过程贴——任务一、定时器实现1s翻转LED

共4条 1/1 1 跳转至

DIY功率监测与控制系统-过程贴——任务一、定时器实现1s翻转LED

菜鸟
2025-06-18 19:25:55     打赏

✅ 基础任务 1:使用定时器实现  1s  翻转 LED


目标:验证 STM32F411RE 的时钟配置是否正确

方法:通过 1 秒闪烁一次的 LED 观察是否节拍正常


1、硬件连接:

NUCLEO-F411RE 自带 LED( LED2,连接在 GPIOA5),无需外接。img

图1 NUCLEO-F411RE LED2 Top Layout


2、STM32CubeMX  配置:

① 新建项目

选择 NUCLEO-F411RE

img

② Pinout 设置:

确保 PA5 设置为 GPIO_Output(默认已配置)。

img

③ 设置系统时钟:

点进 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


img


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、实现效果

https://i.imgur.com/Q8kiKRT.gif

! 每隔 1 秒,板载 LED 闪烁一次。说明我们的时钟配置是正确的!如果频率明显不对,说明时钟配置有误,重新检查 Clock Configuration





关键词: 定时器;STM32CubeIDE    

专家
2025-06-18 20:39:37     打赏
2楼

感谢分享


专家
2025-06-18 20:40:52     打赏
3楼

感谢分享


专家
2025-06-18 20:46:55     打赏
4楼

感谢分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]