1. 安装 Arduino CLI
Windows 安装
# 使用 Chocolatey
choco install arduino-cli
# 或下载二进制文件
# 从 https://arduino.github.io/arduino-cli/installation/ 下载
# 解压到 C:\arduino-cli\ 并添加到 PATH
Linux 安装
# Ubuntu/Debian
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
# 或使用包管理器
sudo apt install arduino-cli
macOS 安装
# 使用 Homebrew
brew install arduino-cli
# 或使用安装脚本
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
2. 初始化配置
# 创建配置文件
arduino-cli config init
# 查看配置
arduino-cli config dump
# 设置默认配置
arduino-cli config set board_manager.additional_urls "https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json"
3. 更新核心索引
# 更新所有平台索引
arduino-cli core update-index
# 更新特定 URL
arduino-cli core update-index --additional-urls "https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json"
STM32 平台管理
1. 安装 STM32 核心
# 搜索 STM32 平台
arduino-cli core search stm32
# 安装 STM32 核心
arduino-cli core install STMicroelectronics:stm32
# 安装特定版本
arduino-cli core install STMicroelectronics:stm32@2.11.0
# 查看已安装的核心
arduino-cli core list
2. 查看可用开发板
# 列出所有 STM32 开发板
arduino-cli board search stm32
# 列出特定平台的开发板
arduino-cli board search STMicroelectronics:stm32
# 查看开发板详细信息
arduino-cli board details STMicroelectronics:stm32:GenF1
3. 开发板配置
# 查看开发板配置选项
arduino-cli board details STMicroelectronics:stm32:GenF1
# 查看特定开发板的 FQBN
arduino-cli board search --format json | jq '.boards[] | select(.name | contains("STM32"))'
项目编译与上传
1. 基本编译
# 编译项目
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX sketch_name
# 编译并显示详细信息
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX --verbose sketch_name
# 编译到指定目录
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX --build-path ./build sketch_name
2. 上传到开发板
# 基本上传
arduino-cli upload -p COM3 --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX sketch_name
# 上传到特定端口
arduino-cli upload -p /dev/ttyUSB0 --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX sketch_name
# 上传并显示详细信息
arduino-cli upload -p COM3 --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX --verbose sketch_name
# 上传前先编译
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX sketch_name
arduino-cli upload -p COM3 --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX sketch_name
3. 编译选项配置
# 设置编译选项
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.cpp.extra_flags=-DDEBUG=1" \
--build-property "compiler.c.extra_flags=-DDEBUG=1" \
sketch_name
# 设置优化级别
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.cpp.extra_flags=-Os" \
sketch_name
# 设置自定义宏定义
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.cpp.extra_flags=-DMY_CUSTOM_DEFINE=1" \
sketch_name
库管理
1. 库搜索与安装
# 搜索库
arduino-cli lib search "STM32"
# 搜索特定库
arduino-cli lib search "FreeRTOS"
# 安装库
arduino-cli lib install "STM32duino FreeRTOS"
# 安装特定版本
arduino-cli lib install "STM32duino FreeRTOS@10.4.4"
# 查看已安装的库
arduino-cli lib list
# 查看库详细信息
arduino-cli lib show "STM32duino FreeRTOS"
2. 库更新与卸载
# 更新所有库
arduino-cli lib upgrade
# 更新特定库
arduino-cli lib upgrade "STM32duino FreeRTOS"
# 卸载库
arduino-cli lib uninstall "STM32duino FreeRTOS"
# 查看库的依赖关系
arduino-cli lib deps "STM32duino FreeRTOS"
3. 本地库管理
# 添加本地库路径
arduino-cli config set directories.user_libraries "/path/to/local/libraries"
# 查看库搜索路径
arduino-cli config dump | grep -i library
调试与监控
1. 串口监控
# 监控串口输出
arduino-cli monitor -p COM3
# 监控特定波特率
arduino-cli monitor -p COM3 --config baudrate=115200
# 监控并显示详细信息
arduino-cli monitor -p COM3 --verbose
# 监控并保存到文件
arduino-cli monitor -p COM3 --log-file output.log
2. 调试配置
# 启用调试输出
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.cpp.extra_flags=-DDEBUG=1" \
--build-property "compiler.c.extra_flags=-DDEBUG=1" \
sketch_name
# 启用详细编译信息
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.cpp.extra_flags=-v" \
sketch_name
3. 内存使用分析
# 编译并显示内存使用
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.cpp.extra_flags=-Wl,--print-memory-usage" \
sketch_name
高级用法
1. 批量操作
# 批量编译多个项目
for sketch in sketch1 sketch2 sketch3; do
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX $sketch
done
# 批量上传
for port in COM3 COM4 COM5; do
arduino-cli upload -p $port --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX sketch_name
done
2. 配置文件管理
# 使用配置文件
arduino-cli compile --config-file config.yaml --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX sketch_name
# 配置文件示例 (config.yaml)
# board_manager:
# additional_urls:
# - "https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json"
# directories:
# data: "/path/to/arduino15"
# downloads: "/path/to/downloads"
# user: "/path/to/sketches"
3. 自定义工具链
# 使用自定义编译器
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.path=/path/to/custom/gcc" \
sketch_name
# 使用自定义链接器脚本
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.ldflags=-T/path/to/custom.ld" \
sketch_name
4. 并行编译
# 启用并行编译
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.cpp.extra_flags=-j4" \
sketch_name
常见问题解决
1. 编译错误
# 清理编译缓存
arduino-cli cache clean
# 重新安装核心
arduino-cli core uninstall STMicroelectronics:stm32
arduino-cli core install STMicroelectronics:stm32
# 检查依赖
arduino-cli core search STMicroelectronics:stm32
2. 上传错误
# 检查端口
arduino-cli board list
# 检查开发板连接
arduino-cli board list --discovery
# 重置开发板
arduino-cli upload -p COM3 --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX --verify sketch_name
3. 库冲突
# 查看库依赖
arduino-cli lib deps "LibraryName"
# 检查库版本冲突
arduino-cli lib list | grep -i conflict
# 强制重新安装
arduino-cli lib uninstall "LibraryName"
arduino-cli lib install "LibraryName"
实用脚本
1. 自动编译上传脚本
#!/bin/bash
# auto_build_upload.sh
SKETCH_NAME="Blink"
FQBN="STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX"
PORT="COM3"
echo "编译项目: $SKETCH_NAME"
arduino-cli compile --fqbn $FQBN $SKETCH_NAME
if [ $? -eq 0 ]; then
echo "编译成功,开始上传..."
arduino-cli upload -p $PORT --fqbn $FQBN $SKETCH_NAME
if [ $? -eq 0 ]; then
echo "上传成功!"
echo "开始监控串口输出..."
arduino-cli monitor -p $PORT
else
echo "上传失败!"
fi
else
echo "编译失败!"
fi
2. 批量测试脚本
#!/bin/bash
# batch_test.sh
BOARDS=("STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX"
"STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103CB")
SKETCH="Blink"
for board in "${BOARDS[@]}"; do
echo "测试开发板: $board"
arduino-cli compile --fqbn $board $SKETCH
if [ $? -eq 0 ]; then
echo "✅ $board 编译成功"
else
echo "❌ $board 编译失败"
fi
echo "---"
done
3. 库管理脚本
#!/bin/bash
# library_manager.sh
case $1 in
"install")
arduino-cli lib install "$2"
;;
"uninstall")
arduino-cli lib uninstall "$2"
;;
"update")
arduino-cli lib upgrade
;;
"list")
arduino-cli lib list
;;
"search")
arduino-cli lib search "$2"
;;
*)
echo "用法: $0 {install|uninstall|update|list|search} [库名]"
;;
esac
4. 开发环境设置脚本
# setup_stm32_dev.ps1
Write-Host "设置 STM32 开发环境..." -ForegroundColor Green
# 更新核心索引
Write-Host "更新核心索引..."
arduino-cli core update-index
# 安装 STM32 核心
Write-Host "安装 STM32 核心..."
arduino-cli core install STMicroelectronics:stm32
# 安装常用库
Write-Host "安装常用库..."
$libraries = @(
"STM32duino FreeRTOS",
"STM32duino LSM6DS3",
"STM32duino STM32SD"
)
foreach ($lib in $libraries) {
Write-Host "安装库: $lib"
arduino-cli lib install $lib
}
# 验证安装
Write-Host "验证安装..."
arduino-cli core list
arduino-cli lib list
Write-Host "开发环境设置完成!" -ForegroundColor Green
性能优化
1. 编译优化
# 启用最高优化
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.cpp.extra_flags=-O3" \
--build-property "compiler.c.extra_flags=-O3" \
sketch_name
# 启用链接时优化
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.cpp.extra_flags=-flto" \
--build-property "compiler.c.extra_flags=-flto" \
sketch_name
2. 内存优化
# 启用函数段优化
arduino-cli compile --fqbn STMicroelectronics:stm32:GenF1:pnum=GENERIC_F103C8TX \
--build-property "compiler.cpp.extra_flags=-ffunction-sections -fdata-sections" \
--build-property "compiler.c.extra_flags=-ffunction-sections -fdata-sections" \
--build-property "compiler.ldflags=-Wl,--gc-sections" \
sketch_name
总结
Arduino CLI 为 STM32 开发提供了强大的命令行工具,支持:
完整的项目生命周期管理:从创建到编译、上传、监控
灵活的配置选项:支持自定义编译参数、库路径等
批量操作支持:适合 CI/CD 和自动化开发
跨平台兼容:Windows、Linux、macOS 统一体验
丰富的调试功能:串口监控、内存分析等
通过合理使用这些命令和脚本,可以大大提高 STM32 开发效率,实现真正的命令行驱动开发。
————————————————
版权声明:本文为CSDN博主「推推推特」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/grantthing/article/details/151881339
|
|