博主从很久以前就想把工作环境彻底换成Linux了。本来前阵子装了Arch,并玩了一小段时间。奈何实验室突然接了个指定使用STC32G的项目,又用了半年Windows……
现在总算是回到了其他平台的开发。先简单配置了STM32的编译环境。
前期准备
编译、调试工具
Debian/Ubuntu:
sudo apt install -y gcc-arm-none-eabi stlink-tools gdb-multiarch make cmake
Arch:
sudo pacman -S --noconfirm arm-none-eabi-gcc stlink gdb make cmake
| 包名 | 用途 |
|---|---|
gcc-arm-none-eabi / arm-none-eabi-gcc |
ARM 交叉编译工具链 |
stlink-tools / stlink |
ST-Link 烧录工具 |
gdb-multiarch / gdb |
调试器 |
make |
构建工具 |
cmake |
构建系统(可选,我使用的项目使用 Makefile) |
STM32CubeMX
从官网上获取软件:下载链接
解压后直接有一个可执行文件,打开安装即可。
CubeMX配置
GUI操作和Windows上的CubeMX几乎没任何区别,就不展开说明了。
需要注意的是Project Manager的Toolchain / IDE选项,其中的MDK-ARM是Keil的编译器,Linux需要使用的话还需要Windows兼容层,最好别选。可以选择Makefile或CMake

后续内容以Makefile为例。
代码编辑
使用自己习惯的Text Editor即可。博主习惯VS Code,也可以试试比较次世代的neovim之类的体验。
Makefile配置
在项目根目录下生成的Makefile文件并不包含你写代码时自己加的文件。需要在根目录下Makefile的如下地方补上:
.c文件
######################################
# source
######################################
# C sources
C_SOURCES = \
Core/Src/main.c \
Core/Src/gpio.c \
Core/Src/dac.c \
Core/Src/usart.c \
Core/Src/stm32f4xx_it.c \
Core/Src/stm32f4xx_hal_msp.c \
Drivers/STM32F4xx_HAL_Driver/省略了\
Core/Src/system_stm32f4xx.c \
Core/Src/sysmem.c \
Core/Src/syscalls.c \
从这里开始仿照上方格式加上你的.c文件
.h文件
# C includes
C_INCLUDES = \
-ICore/Inc \
-IDrivers/STM32F4xx_HAL_Driver/Inc \
-IDrivers/STM32F4xx_HAL_Driver/Inc/Legacy \
-IDrivers/CMSIS/Device/ST/STM32F4xx/Include \
-IDrivers/CMSIS/Include \
仿照上方格式加入头文件引用文件夹
自动化编译、烧录
到此为止便可以通过bash命令编译烧录了。但是每次都手动敲命令未免太繁琐。我们可以写一个简单的构建脚本 build.sh(当然,连这都嫌麻烦直接让你的AI agent去编译烧录也可以):
#!/bin/bash
set -e
BUILD_DIR="build"
PROJECT_NAME="你的项目名"
# 解析参数
CLEAN=0
FLASH=0
for arg in "$@"; do
case $arg in
-c|--clean) CLEAN=1 ;;
-f|--flash) FLASH=1 ;;
-h|--help)
echo "Usage: $0 [-c|--clean] [-f|--flash] [-h|--help]"
exit 0 ;;
esac
done
# 清理
[ $CLEAN -eq 1 ] && make clean
# 编译
make -j$(nproc)
# 烧录
if [ $FLASH -eq 1 ]; then
st-flash write ${BUILD_DIR}/${PROJECT_NAME}.bin 0x08000000
fi
使用方式:
./build.sh # 编译
./build.sh -c # 清理后编译
./build.sh -f # 编译并烧录
./build.sh -c -f # 清理 + 编译 + 烧录
这样就能一键完成编译烧录了,省时省力。

调试
待后续更新…