1. 创建项目
动机
在本节中,我们将使用STM32CubeMX生成特定MCU的工程项目。 该项目将作为本使用指南中的其余步骤的基础。
我们将在接下来的步骤中使用STM32CubeMX完善项目,并编写和整合代码,以使所有必需的外设都正常工作。
本项目将长期存在以供反复使用。 您现在应确定一种策略,使得不同的版本保持可用,以便可以返回并再次运行。 或者在新硬件上进行,或者只是重新检查硬件。
也许您需要许多小型测试程序。 在这种情况下,该项目是一个很好的起点。
目标
其目标是在STM32CubeMX中创建一个可烧录到您的板上并执行的项目。 如果您有带调试器的IDE (如STM32CubeIDE或IAR Embedded Workbench) ,则还应检查是否可以调试并逐步完成MCU上的项目。
如果您没有调试器,则应找到一种从项目的各个位置打印出调试语句的方法。 如 串行端口。
验证
以下是本节的验证点:
验证点 | 基本原理 |
---|---|
在IDE中打开项目 | 项目由STM32CubeMX正确生成,并可以用作后续板卡启动开发的起点。 |
项目编译 | 对项目进行驱动程序及包含类路径的正确设置。 我们可以编写更多代码并重复编译该项目。 |
命中断点 | 项目可以调试运行并在断点处停止。 我们可以检查项目状态并调查错误。 |
先决条件
以下是此步骤的先决条件:
- 基于STM32开发板
- 编程/调试接口 - ST-LINK、JLINK或类似接口
- STM32CubeMX已安装
- 已安装IDE - STM32CubeIDE、IAR Embedded Workbench、Keil uVision或类似软件
执行
现在,我们将在STM32CubeMX中完成创建新项目的所有步骤。 在该示例中,我们将使用STM32F429 MCU。 当然,您应在硬件上选择MCU。
在STM32CubeMX中,单击“从MCU启动我的项目”中的“访问MCU选择器”:
也可以基于STM32评估套件启动一个新项目,如STM32F429探索板。 如果您的硬件设计基于评估套件,您可以或说应当执行该操作。
然后,我们选择相关MCU。 在这里我们选择STM32F429ZIT6U:
转到“项目管理器”选项,并为项目命名。 当然,您也可以选择新的项目存储位置。 在“应用结构”下,选择“高级”。 在“工具链/IDE”下,您必须选择IDE。 在该示例中,我们选择IAR:
现在,点击右上角的“生成代码”按钮。 如果这是您所选MCU系列(F4/F7/H7)中的首个项目,则STM32CubeMX自动建议下载相关STM32Cube固件包。 接受该选项,以获取供以后使用的最新版本。
单击“打开项目”,以打开IDE中的项目:
STM32CubeMX生成的项目包含特定MCU启动代码、中断矢量表、系统初始化代码以及MCU中所有外设的HAL驱动程序。
现在可通过IDE编译和调试项目。 在IAR中,点击“项目”->来编译项目,点击“项目”->来调试项目:
设置IAR项目,使用STLink调试器。 如果您使用其他调试器,请在IDE中更改项目的“调试器”属性。
在无操作系统的情况下运行的项目,main的while循环通常很重要。 通过设置断点来检查是否执行到某个位置,也可以在循环中添加一些代码。
建议浏览IDE中的项目,以熟悉代码结构。 另外也可以尝试一下从SystemInit到main的操作步骤。
用户代码段
在这一步,重要的是先理解STM32CubeMX所用的“用户代码段”这一概念,然后再开始编辑自己的项目。 项目中Core/Src文件夹中的所有源文件都是由STM32CubeMX生成的。 在您以后更改STM32CubeMX中的项目配置时(如使能UART),将重新生成其中的一些文件。 您可能也在其中的一些文件中插入代码。 除非遵循下面的规则,否则在利用STM32CubeMX重新生成项目时,您的用户代码将丢失:
- 仅在用户代码区写入代码
写在用户代码区以外的任何代码都将被STM32CubeMX删除。
作为一个示例,让我们看一下Core/Src/main.c中的前几行:
main.c
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
...
}
如果您希望在main函数的开头插入代码,必须将其放在用户代码开始1与用户代码结束1之间。 如果将代码放在此区之外,它将被STM32CubeMX删除。
Caution
更多读物
此处的链接文档包含有关CubeMX的更多信息: