STM32CubeProgrammer 用户手册


目录

  1. 简介
  2. 系统要求与安装
  3. 图形用户界面(GUI)使用指南
  4. 命令行界面(CLI)使用指南
  5. 连接方式详解
  6. 常见操作示例
  7. 故障排除
  8. 附录

1. 简介

STM32CubeProgrammer(简称STM32CubeProg)是意法半导体官方推出的全能型编程工具,用于在各类环境中对STM32微控制器和微处理器进行烧录。

1.1 主要特性

  • 多操作系统支持:Windows、Linux、macOS
  • 多种连接接口:JTAG、SWD、USB、UART、SPI、CAN、I2C
  • 双模式操作:图形界面(GUI)和命令行界面(CLI)
  • 脚本自动化:支持通过脚本实现自动烧录
  • 安全编程:支持SFI(安全固件安装)、SSP(安全机密供应)等
  • 多器件并行编程:可同时烧录多个STM32设备

1.2 适用器件

  • STM32 32位MCU(基于Arm Cortex-M处理器)
  • STM32 32位MPU(基于Arm Cortex-A处理器)

2. 系统要求与安装

2.1 系统要求

操作系统 支持版本
Windows Windows 10 (32/64位), Windows 11 (64位)
Linux Ubuntu LTS 22.04/24.04, Fedora 41
macOS Sonoma (14), Sequoia (15) - 支持x86_64和ARM架构

其他要求

  • 最低屏幕分辨率:1024x768
  • 从v2.6.0版本开始,无需单独安装Java环境(工具自带Liberica JRE 8.0.432)

2.2 安装步骤

Windows安装
  1. 从ST官网下载对应32位或64位的zip安装包
  2. 解压后执行 SetupSTM32CubeProgrammer-vx.y.z.exe
  3. 按向导提示完成安装
Linux安装
bash 复制代码
# 安装libusb依赖(USB连接必需)
sudo apt-get install libusb-1.0.0-dev

# 复制udev规则文件
cd <安装目录>/Drivers/rules
sudo cp *.* /etc/udev/rules.d/

# 执行安装程序
./SetupSTM32CubeProgrammer-vx.y.z.linux
macOS安装
bash 复制代码
# 双击运行安装程序
SetupSTM32CubeProgrammer-vx.y.z.app

# 如安装失败,尝试命令行启动
./SetupSTM32CubeProgrammer-x.y.z.app/Contents/MacOs/SetupSTM32CubeProgrammer-x_y_z_macos

2.3 DFU驱动安装(Windows)

如需使用USB DFU模式,需安装DFU驱动:

  1. 进入安装目录的 Drivers/DFU_Driver 文件夹
  2. 右键以管理员身份运行 STM32 Bootloader.bat
  3. 如之前安装过DfuSe驱动,需先卸载并重启

2.4 环境变量配置(Linux)

将STM32CubeProgrammer添加到PATH:

bash 复制代码
export PATH=<安装目录>/bin:$PATH

或创建软链接:

bash 复制代码
ln -s <安装目录>/bin/STM32_Programmer_CLI /home/bin/STM32_Programmer_CLI

3. 图形用户界面(GUI)使用指南

3.1 主窗口布局

GUI主窗口包含以下主要区域:

  • 主菜单栏:文件、编辑、视图、帮助等
  • 日志面板:显示操作信息和状态
  • 进度条:显示当前操作进度
  • 目标配置面板:配置连接参数

3.2 连接配置

ST-LINK连接
  1. 选择连接类型为"ST-LINK"
  2. 设置SWD/JTAG接口参数
  3. 点击"Connect"按钮
UART连接
  1. 选择连接类型为"UART"
  2. 配置串口参数(波特率、数据位、停止位、校验位)
  3. 点击"Connect"按钮

典型UART配置:

  • 波特率:115200
  • 数据位:8
  • 停止位:1.0
  • 校验位:Even
  • 流控:Off

3.3 烧录操作流程

  1. 连接目标:选择正确的接口并连接
  2. 加载文件:点击"Browse"选择固件文件(支持.bin、.hex、.elf)
  3. 配置地址:确认起始地址(STM32 MCU通常为0x08000000)
  4. 选择擦除选项:全片擦除或扇区擦除
  5. 开始烧录:点击"Start Programming"或"Download"

3.4 高级功能

选项字节配置
  • 可修改RDP(读保护)级别
  • 配置看门狗、BOR等选项
外部存储器编程
  • 支持通过外部加载器编程SPI Flash、NAND等
  • 需提供.stldr格式的外部加载器文件
无线协议栈烧录(STM32WB系列)
  • 支持FUS/协议栈升级
  • 密钥配置功能
寄存器查看器
  • 实时查看和修改MCU寄存器
  • 支持Cortex-M内核寄存器访问

4. 命令行界面(CLI)使用指南

4.1 基本语法

bash 复制代码
STM32_Programmer_CLI [选项] [命令]

CLI可执行文件位置:

  • Windows: <安装目录>/bin/STM32_Programmer_CLI.exe
  • Linux/macOS: <安装目录>/bin/STM32_Programmer_CLI

4.2 核心命令参考

命令 说明 示例
-c, --connect 连接设备 -c port=SWD
-w, --write 下载文件到存储器 -w firmware.bin 0x08000000
-r, --read 读取存储器到文件 -r 0x08000000 0x4000 read.bin
-e, --erase 擦除Flash -e all-e 0 1 2
-g, --go 启动程序执行 -g 0x08000000
-rst 软件复位 -rst
-hardRst 硬件复位 -hardRst
-v, --verify 验证烧录内容 -v
-l, --list 列出可用设备 -l usb

4.3 连接命令详解

bash 复制代码
# ST-LINK/SWD连接
STM32_Programmer_CLI -c port=SWD

# UART连接
STM32_Programmer_CLI -c port=COM4 br=115200

# USB DFU连接
STM32_Programmer_CLI -c port=usb1

# 指定设备序列号(多设备并行)
STM32_Programmer_CLI -c port=SWD sn=<serial_number>

4.4 完整操作示例

bash 复制代码
# 完整烧录流程
STM32_Programmer_CLI -c port=SWD -e all -w firmware.bin 0x08000000 -v -rst

# 仅烧录不擦除
STM32_Programmer_CLI -c port=SWD -w firmware.bin 0x08000000 -skipErase

# 读取并保存Flash内容
STM32_Programmer_CLI -c port=SWD -r 0x08000000 0x10000 dump.bin

# 烧录特定扇区
STM32_Programmer_CLI -c port=SWD -e 2 4 -w firmware.bin 0x08008000

# 选项字节配置
STM32_Programmer_CLI -c port=SWD -ob rdp=0xBB -ob displ

4.5 高级命令

读取32位数据
bash 复制代码
-r32 <start_address> <size>
# 示例:从0x08000000读取256个32位数据
STM32_Programmer_CLI -c port=SWD -r32 0x08000000 0x100
写入32/64位数据
bash 复制代码
# 写入32位数据
-w32 <start_address> <data1> <data2> ...
# 示例
STM32_Programmer_CLI -c port=SWD -w32 0x08000000 0x12345678 0xAABBCCDD

# 写入64位数据
-w64 <start_address> <data>
# 示例
STM32_Programmer_CLI -c port=SWD -w64 0x08000000 0x12345678AABBCCFF
内核调试命令
bash 复制代码
-halt      # 停止内核
-step      # 单步执行
-coreReg   # 读取/写入内核寄存器
-cstate    # 显示内核状态(运行/暂停/锁定等)
外部存储器操作
bash 复制代码
# 使用外部加载器烧录
STM32_Programmer_CLI -c port=SWD -el /path/to/loader.stldr -w ext_firmware.bin 0x90000000

4.6 日志和调试选项

bash 复制代码
# 设置详细级别(1-3)
-vb 3

# 保存日志文件
-log trace.log

# 静默模式(减少输出)
-q

5. 连接方式详解

5.1 连接方式对比

接口 适用场景 速度 是否需要额外硬件
ST-LINK/SWD 开发调试 ST-LINK调试器
USB DFU 量产/现场升级 否(仅USB线)
UART 通用 USB转串口模块
I2C/SPI/CAN 特定应用 STLINK-V3SET等

5.2 UART Bootloader连接

进入系统Bootloader模式的方法:

  1. 按住BOOT0按钮
  2. 按下并松开RESET按钮
  3. 松开BOOT0按钮

连接参数

  • 波特率:115200(典型值,可调整)
  • 校验:Even
  • 数据位:8
  • 停止位:1.0

5.3 USB DFU连接

前提条件

  • Windows系统需安装DFU驱动
  • Linux需配置udev规则

验证DFU连接

bash 复制代码
STM32_Programmer_CLI -l usb

正常输出应显示设备信息,包括Device Index、USB Bus Number等。

对于I2C、SPI、CAN接口的Bootloader连接,必须使用STLINK-V3SET/V3MOD/V3PWR。

连接示例:

bash 复制代码
# I2C Bootloader连接
STM32_Programmer_CLI -c port=I2C

# SPI Bootloader连接  
STM32_Programmer_CLI -c port=SPI

# CAN Bootloader连接
STM32_Programmer_CLI -c port=CAN

5.5 多设备并行编程

使用设备序列号区分多台设备:

bash 复制代码
# 实例1
STM32_Programmer_CLI -c port=SWD sn=SN1 -w firmware1.bin 0x08000000

# 实例2(需另开终端)
STM32_Programmer_CLI -c port=SWD sn=SN2 -w firmware2.bin 0x08000000

6. 常见操作示例

6.1 基本烧录脚本(Windows批处理)

batch 复制代码
@echo off
echo ========================================
echo STM32 Firmware Programming Script
echo ========================================

set PROG="C:\Program Files\STMicroelectronics\STM32CubeProgrammer\bin\STM32_Programmer_CLI.exe"
set FIRMWARE="firmware.bin"
set ADDRESS=0x08000000

echo Connecting and programming...
%PROG% -c port=SWD -e all -w %FIRMWARE% %ADDRESS% -v -rst

if %errorlevel%==0 (
    echo Programming successful!
) else (
    echo Programming failed!
    pause
)

6.2 读取并保存Option Bytes

bash 复制代码
# 显示当前选项字节
STM32_Programmer_CLI -c port=SWD -ob displ

# 修改RDP级别
STM32_Programmer_CLI -c port=SWD -ob rdp=0xCC

6.3 批量生产烧录脚本

bash 复制代码
#!/bin/bash
# 批量烧录脚本

FIRMWARE="production_firmware.bin"
LOG_FILE="programming_log.txt"

echo "Starting batch programming at $(date)" > $LOG_FILE

for i in {1..10}; do
    echo "Programming device $i..."
    STM32_Programmer_CLI -c port=SWD sn=DEVICE$i -e all -w $FIRMWARE 0x08000000 -v -rst
    if [ $? -eq 0 ]; then
        echo "Device $i: OK" >> $LOG_FILE
    else
        echo "Device $i: FAILED" >> $LOG_FILE
    fi
done

echo "Batch programming completed at $(date)" >> $LOG_FILE

6.4 无线协议栈更新(STM32WB)

通过GUI更新无线协议栈的步骤:

  1. 使用SWD或USB Bootloader接口连接
  2. 删除当前无线协议栈
  3. 下载新版本FUS(如需要)
  4. 下载新版本无线协议栈

7. 故障排除

7.1 常见问题及解决方案

问题 可能原因 解决方法
无法连接设备 驱动未安装 安装ST-LINK或DFU驱动
连接失败 目标未进入Bootloader模式 检查BOOT引脚配置
烧录验证失败 接触不良或电源不稳 检查连接线,确保电源稳定
UART连接无响应 波特率不匹配 尝试不同波特率(如57600、115200)
Windows DFU不工作 DfuSe驱动冲突 卸载旧驱动,重装STM32 DFU驱动

7.2 连接验证方法

bash 复制代码
# 列出所有STM32设备
STM32_Programmer_CLI -l

# ST-LINK连接测试
STM32_Programmer_CLI -c port=SWD

# USB DFU连接测试
STM32_Programmer_CLI -c port=usb1

7.3 DFU驱动问题(Windows)

如果DFU驱动安装失败,请按以下步骤操作:

  1. 打开设备管理器
  2. 找到"STM Device in DFU Mode"
  3. 右键选择"卸载设备"
  4. 勾选"删除此设备的驱动程序软件"
  5. 重新运行STM32 Bootloader.bat
  6. 重新插拔USB线

7.4 Linux权限问题

在Linux下遇到权限拒绝错误时:

bash 复制代码
# 复制udev规则
sudo cp <安装目录>/Drivers/rules/*.* /etc/udev/rules.d/

# 重新加载udev规则
sudo udevadm control --reload-rules
sudo udevadm trigger

# 将用户添加到plugdev组
sudo usermod -a -G plugdev $USER

7.5 VirtualBox USB问题

在VirtualBox中使用STM32CubeProgrammer时:

  • 将USB控制器切换到USB 3.0 (xHCI)
  • 确保虚拟机已安装VirtualBox扩展包

7.6 Docker环境配置

在Docker容器中使用USB DFU:

bash 复制代码
docker run -v /dev:/dev --device /dev:/dev --net=host <image_name>

8. 附录

8.1 常用STM32 Flash地址

器件系列 Flash起始地址 Option Bytes地址
STM32F1/F4系列 0x08000000 0x1FFFF800
STM32L4系列 0x08000000 0x1FFF7800
STM32H7系列 0x08000000 0x52002000
STM32MP1系列 0xC0000000 -

8.2 选项字节常用设置

RDP级别 说明
Level 0 0xAA 无保护
Level 1 0xBB 读保护激活
Level 2 0xCC 最高级别保护(不可逆)

8.3 资源链接

  • STM32CubeProgrammer下载页面:https://www.st.com
  • 用户手册完整版(UM2237):包含在安装包/doc目录下
  • AN2606:STM32系统Bootloader说明文档
  • AN5275:USB DFU/USART协议说明

8.4 版本历史

本手册基于STM32CubeProgrammer v2.x版本编写。主要参考文档:

  • UM2237 Rev 28(2025年6月更新)
  • STM32MPU Wiki文档

声明

本文档基于ST官方用户手册UM2237和社区实践整理。使用过程中请参考官方最新文档获取最准确的信息。

相关推荐
✎ ﹏梦醒͜ღ҉繁华落℘10 小时前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u1521096484911 小时前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd84510150012 小时前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼13 小时前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
牛根生同志13 小时前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
wohoo_wangzi13 小时前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
goldenrolan15 小时前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
✎ ﹏梦醒͜ღ҉繁华落℘15 小时前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展16 小时前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
集芯微电科技有限公司16 小时前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设