STM32CubeMX系列之GPIO教程

STM32CubeMX系列之GPIO教程
2025年06月12日 10:38 电子产品世界
  • 使用 STM32CubeMX 配置 STM32F407ZGT6 的 GPIO 引脚为输入和输出模式。

    本文引用地址:
  • 实现 LED 闪烁程序。

  • 通过按键控制 LED 的开关状态。

  • 使用 STM32CubeIDE 编写和调试代码。

  1. 硬件: STM32F407ZGT6开发板(如STM32F4野火霸天虎开发板)。 LED和按键, J-Link 调试器。 USB 数据线(用于供电和调试)。

  2. 软件: STM32CubeMX(最新版本,ST 官网下载)。 STM32CubeIDE(最新版本,ST 官网下载)。 STM32CubeF4 固件包(在 STM32CubeMX 中自动下载或从 ST 官网获取)。

  3. 硬件连接: LED:负极接电阻连接引脚 PF6,PF7,PF8,正极接3.3V。 按键:一端接 PA0,PC13,另一端接 3.3V。

LED设计

按键设计

  1. 打开 STM32CubeMX: 启动 STM32CubeMX,点击 File > New Project。 在 MCU Selector 中搜索并选择 STM32F407ZGT6。 点击 OK 创建项目。

  2. 选择外部高速晶振(HSE)

  1. 选择按键和LED引脚,PA0,PC13为按键输入管脚,选择GPIO_INPUT模式。PF6,PF7,PF8为LED输出控制管脚,选择GPIO_OUTPUT模式。配置 LED 引脚(输出): 在 Pinout View 中,找到 PF6,PF7,PF8。 左键点击 PF6,PF7,PF8,选择 GPIO_Output。 在 Configuration > GPIO 中,选择 PF6,PF7,PF8,设置: GPIO mode: Output Push Pull(推挽输出)。 GPIO Pull-up/Pull-down: pull-down。 Maximum output speed: Low(低速,适合 LED)。 User Label: 输入 LED_R、LED_G、LED_B(方便代码识别)。 点击 Apply。

  1. 点击Clock Configuration配置系统时钟为168M最高速度。在 Pinout & Configuration 选项卡,点击 System Core > RCC。设置 High Speed Clock (HSE) 为 Crystal/Ceramic Resonator(STM32F4野火霸天虎开发板使用25MHz 外部晶振)。切换到 Clock Configuration 选项卡: 设置 HCLK 为 168 MHz(STM32F407 的最大主频)。 配置 PLL:输入 25 MHz(HSE),设置 PLL_M = 25,PLL_N = 336,PLL_P = 2,得到 168 MHz。 确认后按 Enter 保存。

  1. 项目设置: 点击 Project Manager 选项卡。 设置项目名称(KEY_LED)和保存路径。 选择 Toolchain/IDE 为 STM32CubeIDE。 勾选 Generated peripheral initialization as a pair of '.c/.h' files per IP。

  2. 生成代码: 点击 Generate Code。 STM32CubeMX 生成项目文件后,点击 Yes 打开 STM32CubeIDE。

  1. 打开 STM32CubeIDE: 项目自动加载,打开 Core > Src > main.c。

  2. 实现 LED 闪烁: 在 main.c 的 /* USER CODE BEGIN 3 */ 和 /* USER CODE END 3 */ 之间的 while(1) 循环中添加:

3.实现按键控制 LED: 替换 while(1) 循环中的代码为:

  1. 编译项目: 在 STM32CubeIDE 中点击 Build(锤子图标)。

  2. 连接硬件: 使用 USB 线连接STM32F4野火霸天虎开发板(或 J-Link 连接自定义板)。 确保设备被识别。

  3. 烧录程序: 点击 Run > Run 或调试按钮(绿色播放图标)。 程序烧录后,LED 将根据按键状态点亮/熄灭,或以 500ms 间隔闪烁(取决于代码)。

  4. 测试: 按下 PA0 按键,LED 应点亮;松开后熄灭。 若实现闪烁功能,LED 每 500ms 切换状态。

  1. 多 LED 配置: STM32F4野火霸天虎开发板板有3个 LED(PD12 绿色,PD13 橙色,PD14 红色,PD15 蓝色)。 在 STM32CubeMX 中将 PF6、PF7、PF8配置为 GPIO_Output,并命名为 LED_R、LED_G、LED_B。 修改代码实现多 LED 流水灯效果:

  1. 外部中断(按键触发): 在 STM32CubeMX 中,将 PA0 配置为 GPIO_EXTI0。 在 NVIC 选项卡启用 EXTI line 0 interrupt。 在 main.c 中实现中断回调:

  1. 移除 while(1) 循环中的按键检测代码,中断将自动处理。

  2. GPIO 模式选择: 推挽输出:适合驱动 LED。 开漏输出:适合 I2C 或需要外部上拉的场景。 输入上拉/下拉:根据按键电路选择,避免浮空状态。

  • 引脚冲突:确保所选引脚未被其他外设占用(查看 STM32F407ZGT6 数据手册或 CubeMX 的引脚视图)。

  • 电源:STM32F4野火霸天虎开发板通过 USB 供电,若使用外部 LED,确保电流不超过引脚限制(通常 20mA)。

  • 调试:使用 STM32CubeIDE 的调试模式,设置断点观察 GPIO 状态。

霸天虎
新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

科学大家

苹果汇

众测

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片