31.7 STM32 开发环境

STM32 是意法半导体(STMicroelectronics,ST)自 2007 年起推出的 32 位微控制器(Microcontroller Unit,MCU)产品系列,该系列产品基于 ARM Cortex-M 处理器内核架构,是嵌入式开发领域的主流 MCU 平台之一。

安装 STM32CubeMX

STM32CubeMX 是意法半导体官方提供的图形化硬件配置与代码生成工具,可用于快速完成 STM32 项目的硬件初始化。

在 FreeBSD 平台开发 STM32 嵌入式系统,推荐采用 STM32CubeMX 进行初始化配置。STM32CubeMX 官方仅支持 Windows、Linux、macOS 三大平台,在 FreeBSD 上运行该软件需借助 Linux 兼容层。

关于在 FreeBSD 上安装 Linux 兼容层的详细教程,可参考本书其他章节,推荐使用 FreeBSD 官方维护的 linux-rl9 兼容层。

自 STM32CubeMX V6.2.0 起,安装包已内置 Java 运行时环境(JRE,Adoptium Temurin 21.0.3+9),无需用户自行安装 Java。若在 FreeBSD Linux 兼容层下运行安装程序时遇到问题,可尝试安装系统级 OpenJDK 作为备选方案,本节示例采用 Port java/openjdk25

配置好兼容层后,从 STM32CubeMX 官网 下载压缩包并解压。本节撰写时,下载无须注册登录,以访客身份下载。下载链接将通过邮件发送,须确保邮箱地址可正常收信。下载的文件为 stm32cubemx-lin-v6-17-0.zip

将安装包 stm32cubemx-lin-v6-17-0.zip 解压到目录 /home/ykla/stm

$ unzip stm32cubemx-lin-v6-17-0.zip -d /home/ykla/stm

技巧

本节示例中出现的 /home/ykla 为示例路径,应根据自身环境替换为实际用户主目录。

定位到解压缩文件夹并运行其中的可执行程序,本例中为 SetupSTM32CubeMX-6.17.0。启动安装程序:

$ ./SetupSTM32CubeMX-6.17.0

开始安装:

STM32CubeMX 安装程序

接受许可协议,随后点击下一步。

STM32CubeMX 安装程序

接受用户条款,随后点击下一步。

STM32CubeMX 安装程序

填写安装路径,应记录该路径,本例路径为 /home/ykla/STM32CubeMX

STM32CubeMX 安装程序

确认使用该路径:

STM32CubeMX 安装程序

确认后程序开始执行安装:

STM32CubeMX 安装程序

完成安装:

STM32CubeMX 安装程序

退出安装程序:

STM32CubeMX 安装程序

创建桌面快捷方式:

~/Desktop(或 ~/桌面)目录下创建 STM32CubeMX.desktop 文件,随后写入:

将上述路径 ExecIcon 替换为实际路径。随后授予可执行权限。

STM32CubeMX 主界面

安装其他工具

除了 STM32CubeMX 外,还需安装开发工具链和调试工具。使用 pkg 安装:

或者使用 ports 构建:

编译与烧录

使用 STM32CubeMX 创建项目,在 Project ManagerProject 里的 Toolchain/IDE 栏选择 CMake,在 Code Generator 里选择 copy all used libraries into project folderGenerate peripheral initialization as a pair of '.c/.h' files per peripheral

生成项目后修改 CMakeLists.txt 文件:

技巧

更换 STM32 型号时,CMakeLists.txt 中有多处与具体 MCU 型号绑定的占位符,必须逐一调整。建议在 STM32CubeMX 中切换目标芯片后重新生成项目,再对照修改 CMakeLists.txt 中对应位置。

链接脚本(.ld 文件)定义了 Flash 和 RAM 的起始地址与大小,不同型号的存储器布局不同,混用会导致程序无法正常运行或烧录后跑飞。STM32CubeMX 会根据所选芯片自动生成正确的链接脚本,切勿直接从其他项目复制 .ld 文件使用。

为了在终端使用 gcc-arm-embedded 系列工具,应将其二进制文件加入 PATH 中。

各 shell 的配置方法如下:

Shell
配置文件
写入内容

sh / Bash / Zsh

~/.profile

export PATH=/usr/local/gcc-arm-embedded-14.2.rel1/bin:$PATH

fish

~/.config/fish/config.fish

set -gx PATH /usr/local/gcc-arm-embedded-14.2.rel1/bin $PATH

csh / tcsh

~/.cshrc

setenv PATH /usr/local/gcc-arm-embedded-14.2.rel1/bin:$PATH

开始编译:

最后烧录到开发板:

最后更新于