问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32F407 GPIO控制LED流水灯:硬件设计与软件开发详解

创作时间:
作者:
@小白创作中心

STM32F407 GPIO控制LED流水灯:硬件设计与软件开发详解

引用
CSDN
1.
https://blog.csdn.net/Feng_wwf/article/details/146309929

本文详细介绍了如何使用STM32F407微控制器通过GPIO控制LED流水灯。内容包括硬件设计、软件开发环境配置以及具体的代码实现,使用了HAL库进行开发。

功能要求:

  1. 使用8个LED组成环形流水灯
  2. 实现顺时针/逆时针点亮效果
  3. 支持速度调节(通过按键切换)
  4. 独立电源指示灯

一、硬件设计

核心元件:

  • STM32F407开发板(带ST-Link)
  • 8个LED
  • 3×Tactile Switch按钮(S1/S2/S3)
  • 1×LED电源指示灯(LD1)
  • 电阻网络(10kΩ)
  • 5V电源模块

电路原理图:

STM32F407
│
├── PA0  → S1 (顺时针)
├── PA1  → S2 (逆时针)
├── PA2  → S3 (加速)
├── PB0-PB7 → LED数据线
├── PC13 → LD1(电源指示)
├── 3.3V → LED_VCC
├── GND  → 共地

关键参数:

  • LED驱动电压:5V
  • 数据传输速率:800kbps
  • PWM频率:400Hz
  • 电阻值:470Ω(限流)

二、软件开发环境

  1. STM32CubeMX(v6.3.0)
  2. Keil uVision 5.34
  3. J-Link Debugger

三、代码实现(C语言/HAL库)

1. 工程配置(STM32CubeMX)

/* HAL GPIO Configuration */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|
                         GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号