news 2026/9/22 18:16:05

【动手学STM32G4】(1)STM32G431之导入和创建项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【动手学STM32G4】(1)STM32G431之导入和创建项目

【动手学STM32G4】(1)STM32G431之导入和创建项目
【动手学STM32G4】(2)STM32G431之外部中断
【动手学STM32G4】(3)STM32G431之PWM
【动手学STM32G4】(4)STM32G431之ADC/DAC
【动手学STM32G4】(5)STM32G431之UART 串口通信
【动手学STM32G4】(6)STM32G431之USB 虚拟串口通信
【动手学STM32G4】(7)STM32G431之上位机波形显示

【动手学STM32G4】(1)STM32G431之导入和创建项目

    • 1. 使用 CubeIDE 导入 LED 闪灯例程
    • 2. 使用 CubeMX 导入和生成 LED 闪灯程序
    • 3. 使用 CubeMX 创建和编写 LED 闪灯程序

本节内容:
本节通过 NUCLEO-G431RB 开发板, 以 LED 点灯实验为例,介绍 STM32G4 的编程和调试。这是 STM32G4 学习的第一个实验。

  • 以 LED 点灯实验为例,学习使用 STM32CubeIDE 开发工具导入项目,编译、烧录和运行程序。
  • 以 LED 点灯实验为例,学习使用 STM32CubeMX 开发工具创建、配置新项目,导入例程生成代码,编译与调试程序。
  • 以 LED 点灯实验为例,学习使用 STM32CubeMX 开发工具创建、配置新项目,编写程序代码,编译与调试程序。

实验条件:
① 硬件平台:NUCLEO-G431RB 开发板
② 软件平台:STM32CubeMX, STM32CubeIDE


1. 使用 CubeIDE 导入 LED 闪灯例程

导入已有的例程项目,以LED 闪灯程序(GPIO_IOToggle 项目)为例,具体操作步骤如下:

  1. 打开 STM32CubeIDE。

  2. 打开已有的例程项目 GPIO_IOToggle。

    选择 Import STM32Cube example 导入 STM32Cube 例程:

  • 弹出 STM32 Project from STM32Cube examples 窗口;
  • 在例程选择器(Example Selector)-- 开发板选择(Board)选择使用的 MCU开发板为 “NUCLEO-G431RB” ;
  • 在例程列表(Examples List)中选择 GPIO_IOToggle,如下图所示。
  • 点击 “Next” 导入例程,在 “CubeFW G4 License Agreement” 时要选择接受版权协议。
  1. 打开例程文件 main.c。
    导入 GPIO_IOToggle 项目后,自动转换到 STM32CubeIDE 的主界面
    从 Application - User 目录下打开程序文件 main.c,如下图所示。

  2. 打开例程文件 main.c。

轮询程序 while(1) 的代码如下,通过延时 100ms 翻转 LED2_PIN,来实现 LED2 以 100ms 进行闪烁。

/* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_GPIO_TogglePin(LED2_GPIO_PORT,LED2_PIN);/* Insert delay 100 ms */HAL_Delay(100);}/* USER CODE END 3 */
  1. 点击工具栏中 “Build Debug” 按键对程序代码进行编译。

  1. 用 USB连接线,连接 PC 与 NUCLEO-G431RB 开发板。

  2. 点击工具栏中 “Debug” 按键,将程序下载烧录到目标板 NUCLEO-G431RB 。

  1. 点击工具栏中 “Resume” 按键 或 F8 快捷键,运行程序。NUCLEO-G431RB 开发板上的 LD2 指示灯以 100ms 开始闪烁。

  1. 修改延时时间,重新编译、烧录和运行程序。

将轮询程序 while(1) 中的延时时间修改为 1000ms,来实现 LED2 以 1s 进行闪烁。

/* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_GPIO_TogglePin(LED2_GPIO_PORT,LED2_PIN);/* Insert delay 1000 ms */HAL_Delay(1000);}/* USER CODE END 3 */

程序烧录后,点击工具栏中 “Resume” 按键 或 F8 快捷键,运行程序。此时 NUCLEO-G431RB 开发板上的 LD2 指示灯以 1000ms 开始闪烁。

  1. 关闭项目,关闭 STM32CubeIDE 。

  2. NUCLEO-G431RB 开发板重新上电(只要用 USB 为开发板供电即可,并不需要连接 PC)。按下黑色按键 B2,MCU 重启(Reset),开发板上的 LD2 指示灯以 1000ms 开始闪烁。


2. 使用 CubeMX 导入和生成 LED 闪灯程序

用户创建新的项目,以 创建 LED 闪灯程序项目为例,具体操作步骤如下:

  1. 打开 STM32CubeMX。

  2. 选择 New Project(或Ctrl-N快捷键)新建工程,进入 New Project 界面。

  • 选择MCU为 STM32G431RBT6(参考开发板的 MCU 型号选择)。

  • 选择开发板为 NUCLEO-G431RB 开发板。

  • 如果要直接导入STM32Cube 例程,可以继续从 Example Selector 选择所需的例程,然后点击 “Start Project” 建立项目。

  1. 点击 “Start Project” 建立项目。弹出项目信息确认窗口如下,点击 “Install” 安装选择的例程项目。

  1. 例程项目安装完成后,自动转入 CubeMX 的 Pinout Configuration 视图。
    如下图所示,在右下角的搜索栏中搜索 PA5 管脚,将其设置为 GPIO_Output。

  1. 代码生成。
    点击菜单 “Project Manager” 按钮,进入工程配置界面,如下图所示。

  • 输入项目名称,选择项目的保存路径。
  • 将Toolchain / IDE 设定为 STM32CubeIDE(根据用户安装和使用的 IDE 选择,也可以选择 EWARM、MDK-ARM、MakeFile、CMake 等IDE工具)
  • 点击右上角 “GENERATE CODE” 生成代码
  • 加载完毕后,弹出代码生成提示窗口,点击“ OPEN PROJECT”,进入 STM32CubeIDE。
  1. 在 STM32CubeIDE 打开例程文件 main.c。
    代码生成后,已经自动进入 STM32CubeIDE,并打开 GPIO_IOToggle 项目。注意这个 GPIO_IOToggle 项目,不是系统提供的例程项目,而是我们刚刚创建新项目,其文件目录结构也与上节例程项目不同。但本项目中的程序内容仍是从例程项目下载安装的,详见前文 “继续从 Example Selector 选择所需的例程”。
    从 Scr 目录打开程序文件 main.c,如下图所示。

  2. 打开例程文件 main.c。

轮询程序 while(1) 的代码如下,通过延时 100ms 翻转 LED2_PIN,来实现 LED2 以 100ms 进行闪烁。

/* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_GPIO_TogglePin(LED2_GPIO_PORT,LED2_PIN);/* Insert delay 100 ms */HAL_Delay(100);}/* USER CODE END 3 */
  1. 程序编辑、编译与调试
  • 用 USB连接线,连接 PC 与 NUCLEO-G431RB 开发板。
  • 点击工具栏中 “Build Debug” 按键对程序代码进行编译。
  • 点击工具栏中 “Debug” 按键,将程序下载烧录到目标板 NUCLEO-G431RB 。
  • 点击工具栏中 “Resume” 按键 或 F8 快捷键,运行程序。NUCLEO-G431RB 开发板上的 LD2 指示灯以 100ms 开始闪烁。
  1. 修改延时时间,重新编译、烧录和运行程序。

将轮询程序 while(1) 中的延时时间修改为 1000ms,来实现 LED2 以 1s 进行闪烁。

/* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_GPIO_TogglePin(LED2_GPIO_PORT,LED2_PIN);/* Insert delay 1000 ms */HAL_Delay(1000);}

程序烧录后,点击工具栏中 “Resume” 按键 或 F8 快捷键,运行程序。此时 NUCLEO-G431RB 开发板上的 LD2 指示灯以 1000ms 开始闪烁。

  1. 关闭项目,关闭 STM32CubeIDE 。

  2. NUCLEO-G431RB 开发板重新上电(只要用 USB 为开发板供电即可,并不需要连接 PC)。按下黑色按键 B2,MCU 重启(Reset),开发板上的 LD2 指示灯以 1000ms 开始闪烁。


3. 使用 CubeMX 创建和编写 LED 闪灯程序

使用 CubeMX 创建和编写 LED 闪灯程序,前面的步骤与 上节 “使用 CubeMX导入LED 闪灯程序” 相同,但在新建工程时,只选择MCU 型号和开发板型号,不从 Example Selector 选择例程,而是自行编写相关的程序内容。

仍以 创建 LED 闪灯程序项目为例,具体操作步骤如下:

  1. 打开 STM32CubeMX。

  2. 选择 New Project(或Ctrl-N快捷键)新建工程,进入 New Project 界面。

  • 选择MCU为 STM32G431RBT6(参考开发板的 MCU 型号选择)。
  • 选择开发板为 NUCLEO-G431RB 开发板。

本节不从 Example Selector 选择例程,而是在选择 MCU 和 开发板后直接点击 “Start Project” 建立项目。弹出项目选项窗口,勾选 “Generate demonstration code”,如下图所示。

  1. 自动转入 CubeMX 的 Pinout Configuration 视图,如下图所示。

    在右下角的搜索栏中搜索 PA5 管脚,将其设置为 GPIO_Output。

  2. 代码生成。
    点击菜单 “Project Manager” 按钮,进入工程配置界面,如下图所示。

  • 输入项目名称,选择项目的保存路径。(注意不要与之前的项目名称相同)
  • 将Toolchain / IDE 设定为 STM32CubeIDE(根据用户安装和使用的 IDE 选择,也可以选择 EWARM、MDK-ARM、MakeFile、CMake 等IDE工具)
  • 点击右上角 “GENERATE CODE” 生成代码
  • 加载完毕后,弹出代码生成提示窗口,点击“ OPEN PROJECT”,进入 STM32CubeIDE。

  1. 在 STM32CubeIDE 打开例程文件 main.c。
    代码生成后,已经自动进入 STM32CubeIDE,并打开 GPIO_IOToggle 项目。注意这个 GPIO_IOToggle 项目,不是系统提供的例程项目,而是我们刚刚创建新项目,其文件目录结构也与上节例程项目不同。
    本项目中的程序内容也不是从例程项目下载安装的,而是 CubeMX 根据用户在新建项目中的配置自动生成的。
    从 Scr 目录打开程序文件 main.c,如下图所示。

  1. 打开程序文件 main.c。

本项目中的程序文件 main.c 不是从例程项目下载安装的,而是 CubeMX 根据用户在新建项目中的配置自动生成的。因此,在 轮询程序 while(1) 中,并没有延时翻转实现 LED 闪烁的程序代码。

CubeMX 生成的程序文件 main.c 中的轮询程序 while(1) 的代码如下。

/* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* -- Sample board code for User push-button in interrupt mode ---- */if(BspButtonState==BUTTON_PRESSED){/* Update button state */BspButtonState=BUTTON_RELEASED;/* -- Sample board code to toggle leds ---- */BSP_LED_Toggle(LED_GREEN);/* ..... Perform your action ..... */}/* USER CODE END WHILE */}
  1. 编写 LED 闪烁的程序代码。

在 轮询程序 while(1) 中,在 “/* … Perform your action … */” 位置,添加延时翻转实现 LED 闪烁的程序代码如下。

/* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* -- Sample board code for User push-button in interrupt mode ---- */if(BspButtonState==BUTTON_PRESSED){/* Update button state */BspButtonState=BUTTON_RELEASED;/* -- Sample board code to toggle leds ---- */BSP_LED_Toggle(LED_GREEN);}/* ..... Perform your action ..... *//* USER CODE BEGIN 3 */HAL_GPIO_TogglePin(LED2_GPIO_PORT,LED2_PIN);/* Insert delay 200 ms */HAL_Delay(200);/* USER CODE END 3 */}/* USER CODE END WHILE */
  1. 程序编辑、编译与调试
  • 用 USB连接线,连接 PC 与 NUCLEO-G431RB 开发板。
  • 点击工具栏中 “Build Debug” 按键对程序代码进行编译。
  • 点击工具栏中 “Debug” 按键,将程序下载烧录到目标板 NUCLEO-G431RB 。
  • 点击工具栏中 “Resume” 按键 或 F8 快捷键,运行程序。NUCLEO-G431RB 开发板上的 LD2 指示灯以 200ms 开始闪烁。
  1. 修改延时时间,重新编译、烧录和运行程序。

将轮询程序 while(1) 中的延时时间修改为 1000ms,来实现 LED2 以 1s 进行闪烁。

/* ..... Perform your action ..... *//* USER CODE BEGIN 3 */HAL_GPIO_TogglePin(LED2_GPIO_PORT,LED2_PIN);/* Insert delay 1000 ms */HAL_Delay(1000);/* USER CODE END 3 */

程序烧录后,点击工具栏中 “Resume” 按键 或 F8 快捷键,运行程序。此时 NUCLEO-G431RB 开发板上的 LD2 指示灯以 1000ms 开始闪烁。

  1. 关闭项目,关闭 STM32CubeIDE 。

  2. NUCLEO-G431RB 开发板重新上电(只要用 USB 为开发板供电即可,并不需要连接 PC)。按下黑色按键 B2,MCU 重启(Reset),开发板上的 LD2 指示灯以 1000ms 开始闪烁。


参考资料:

  1. P-NUCLEO-IHM03 STM32电机控制套件
  2. UM2505 - STM32G4 Nucleo-64 boards (MB1367), STMicroelectronics/意法半导体, 2021
  3. UM2538 - STM32 motor-control pack using the FOC algorithm for three-phase, low-voltage, and low‑current motor evaluationl, STMicroelectronics/意法半导体, 2023
  4. 许少伦等,STM32G4入门与电机控制实战,电子工业出版社,2023

版权声明:
【动手学STM32G4】是 youcans@qq 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/143419837)
Copyright@youcans 2024
Crated:2024-12

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 2:32:08

AMD GPU终极指南:快速部署FlashAttention实现3-5倍AI加速

AMD GPU终极指南:快速部署FlashAttention实现3-5倍AI加速 【免费下载链接】flash-attention Fast and memory-efficient exact attention 项目地址: https://gitcode.com/GitHub_Trending/fl/flash-attention 在大语言模型训练中,FlashAttention技…

作者头像 李华
网站建设 2026/9/22 22:25:30

从零开始掌握Stability AI视频生成:5步解决常见问题并提升效果

从零开始掌握Stability AI视频生成:5步解决常见问题并提升效果 【免费下载链接】generative-models 是由Stability AI研发的生成模型技术 项目地址: https://gitcode.com/GitHub_Trending/ge/generative-models 还在为AI生成的视频效果不佳而烦恼吗&#xff…

作者头像 李华
网站建设 2026/9/21 23:23:42

只需3秒音频样本!EmotiVoice实现精准声音克隆

只需3秒音频样本!EmotiVoice实现精准声音克隆 在虚拟主播24小时不间断直播、AI客服能用你熟悉的声音与你对话的今天,语音合成早已不再是“把文字念出来”那么简单。用户期待的是有情感、有个性、像真人一样的声音——而传统TTS系统面对这一需求时&#…

作者头像 李华
网站建设 2026/9/23 4:59:32

EmotiVoice日志分析:定位语音生成异常原因

EmotiVoice日志分析:定位语音生成异常原因 在虚拟偶像直播中突然传出机械音,或游戏NPC本该愤怒咆哮却用平静语调说出威胁台词——这类“情感错乱”问题正成为高表现力TTS系统落地的拦路虎。当用户反馈“声音不像本人”或“完全没情绪”时,开发…

作者头像 李华
网站建设 2026/9/23 4:26:33

Nacos配置推送失败的5个致命陷阱及终极修复方案

当你在微服务架构中使用Nacos时,是否遇到过配置更新后客户端迟迟无法同步的困境?这种看似偶发的配置推送失败,背后往往隐藏着系统架构的深层缺陷。本文将通过实战案例,揭示Nacos配置推送机制中5个最容易被忽视的致命陷阱&#xff…

作者头像 李华
网站建设 2026/9/23 8:23:05

Sealos动态PVC管理终极指南:三步告别存储运维烦恼

Sealos动态PVC管理终极指南:三步告别存储运维烦恼 【免费下载链接】sealos Sealos is a production-ready Kubernetes distribution that provides a one-stop solution for both public and private cloud. https://sealos.io 项目地址: https://gitcode.com/Git…

作者头像 李华