上一篇文章中,我们一起完成了 STM32CubeMX 的安装。

到这里,我们学习 STM32 开发需要的软件环境基本就搭建完成了。

回想一下,从最开始准备学习 STM32,到现在我们已经完成了几件事情:

  • 选择第一块开发板;
  • 安装 STM32CubeIDE;
  • 安装 STM32CubeMX。

可能有些刚开始学习的小伙伴会有疑问:

我不是来学习写嵌入式程序的吗?怎么折腾这么久,一行代码还没写?

其实这正是嵌入式开发和普通软件开发不太一样的地方。

在真实的嵌入式开发中,我们使用的并不是某一个单独的软件,而是一整套工具链(Toolchain)

在实际开发中,我们经常把完成软件开发过程中需要配合使用的一系列工具,统称为开发工具链。

比如:

STM32CubeMX 负责芯片配置和初始化代码生成;

STM32CubeIDE 负责代码编写、编译和调试;

ST-Link 负责程序下载和在线调试;

开发板负责运行我们的程序。

它们组合在一起,才构成了一套完整的嵌入式开发环境。

就像一个工匠开始工作之前,需要先准备好自己的工具箱一样。

嵌入式工程师开始开发之前,也需要先搭建好自己的工具链。

所以前面几篇文章,我们其实一直在做一件事情:

打造属于自己的第一套嵌入式开发工具链。

当这套工具链搭建完成以后,我们后面的重点才会逐渐转移到代码、外设和项目开发上。

那么从这篇文章开始,我们终于要让这套工具链真正运转起来。

今天我们要创建自己的第一个 STM32 工程。

一、新建工程

1、打开STM32CubeMX

首先打开STM32CubeMX,界面如下图,然后我们点击ACCESS TO MCU SELECTOR按钮,就是通过MCU型号来新建工程

有时候会弹出更新对话框,这个等待软件自己更新完成就可以,如下图

2、选择MCU

我们之前文章中选择的最小系统板的MCU型号为STM32F030F4P6,那么我们在左上角的Commercial Part Number中输入STM32F030F4P6即可,此时在界面的右下部分区域,MCUs/MPUs List中可以看到STM32F030F4P6,选择这个即可。

可能会看到带TR后缀和不带TR后缀的型号,TR表示芯片的包装方式(Tape & Reel,卷带包装),不会影响芯片功能,所以这里选择任意一个都可以。

选择完成过后点击右上角的Start Project按钮,如下图

3、Project Manager配置

点击Start Project后会弹出如下窗口,我们在界面的中间区域就可以看到这个MCU的示意图。然后选择上面的Project Manager选项卡

显示出如下的界面,在Project Name栏里输入工程名,Project Location栏里输入工程存储地址,接下来是最关键的一步:

Toolchain/IDE一定要选择STM32CubeIDE

因为我们这次整个开发都是在STM32CubeIDE中完成的。

之后点击右上角的GENERATE CODE按钮,工程就开始创建了

创建完成后弹出如下对话框

我们点击Open Project按钮就会自动跳转到STM32CubeIDE中去,STM32CubeIDE打开时会弹出如下图的对话框,直接点击Launch就可以

4、简单认识STM32CubeIDE界面

打开后界面如下图,在左侧的Project Explorer区域我们可以看到刚刚建立的工程

我们展开工程,可以看到里面的各种程序文件。

找到RGB_Led->Core->Src->main.c,双击打开,就可以在界面中部的代码编辑器中看到main.c的代码,如下图所示

5、编译工程

我们平时编写的程序通常是使用C语言或者汇编语言完成的,但是MCU内部的CPU并不能直接理解这些代码,它只能执行由0和1组成的机器指令。因此,我们需要通过编译器等工具,将我们编写的代码转换成MCU可以执行的机器码,最后下载到芯片内部运行。

在界面上边找到那个小锤子图标,即为编译(Build)按钮。如下图所示

STM32CubeIDE中的编译(Build)操作,会自动调用底层的编译工具完成代码编译和链接过程。点击编译按钮后,可以在界面下面的Console窗口中看到编译过程以及结果。如下图所示

我们可以看到编译结果会显示错误数(0 errors)和警告数(0 warnings)。

如果这里显示 0 errors,0 warnings,说明我们的第一个 STM32 工程已经成功编译通过。

相信所有写过程序的人,都喜欢看到这两个数字:

0 errors,0 warnings。

二、小结

到这里,我们终于完成了第一个 STM32 工程的创建。

虽然目前这个工程还没有实现任何具体功能,但是我们已经成功跑通了 STM32 工程从创建到编译的基本流程。

从 STM32CubeMX 配置芯片;

到生成 STM32CubeIDE 工程;

再到编译代码,生成 MCU 可以运行的程序文件。

我们前面搭建的这套 STM32 开发工具链(Toolchain),终于开始真正工作起来了。

下一篇文章,我们就正式开始控制 STM32 的 GPIO 外设,完成嵌入式开发中最经典的第一个实验:

点亮 LED。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐