01前言
STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善中的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32 工具还在更新中。具体到 Keil 用户,用户有可能可以使用 STM32CubeProgrammer 进行下载,但是 Keil 编译器中支持该产品系列的软件 Pack 还需要一些时间才会被更新。从而,用户能够使用 Keil 编译器进行编译甚至调试,但没法直接在 Keil 环境中对新产品进行下载。对此,用户可以选择等待,也可以自行扩展 Keil 的 FLM 来支持该产品。但考虑到用户产品开发的时间限制以及新的STM32 正式 Pack 很快就会发布,更简单快速的一种解决方案是在 Keil 中直接使用STM32CubeProgammer 在进行调试前下载。
02步骤
这里以一个 NUCLEO-H723ZG 的 CRC_Example 为例。它是 STM32Cube 包中的一个完善的工程,可以正常使用配套的 Pack 进行编译下载调试。我们只是使用这个工程说明如何直接使用 STM32CubeProgrammer 进行 Flash 下载,没有其他特别的含义。首先,在 Keil 工程界面里,选择[Flash]->[Configure Flash Tools]菜单。

图1.配置菜单
或者在工程浏览器的工程名字上点击右键,选择[Options]然后选择[Utilities]

图2.工程选项
你可以看到如下菜单,说明该工程默认使用 Pack 中的 FLM 进行下载。

图3.配置工具选项
我们将其切换成[Use External Tool for Flash Programming]。
在[Command]中选择 STM32_Programmer_CLI.exe,它会自动填上所在的全路径,例如:
C:ProgramFilesSTMicroelectronicsSTM32CubeSTM32CubeProgrammerinSTM32_Programmer_CLI.exe
在[Agruments]中输入使用 ST-Link 以及文件名参数,如下:
-c port=swd -w #L
STM32_Programmer_CLI 的更多用法,例如,在调试前修改某个特定选项字节,可以参考STM32CubeProgrammer 用户手册 UM2237。
这里值得一提的是 Keil #L 参数的使用。为了该命令行的通用性,我们应该使用编译器工具提供的一些参数间接指向所需要烧录的路径及文件,而不是硬编码。这样,工程选项的改动,不影响该命令行;而且该命令行也可以在多个工程中复制使用。#L 以及其他类似参数的含义可以在 Keil 联机帮助中搜索 “ Key Sequence for Tool Parameters ”。设置界面如下:

图4.配置烧写指令
其中[Run Independent]的含义是,是否让 Keil 不需要等待该命令行执行完毕。我们希望按顺序执行,所以该选项没有勾上。用户可以切换此选项观察效果。
03效果
这时候如果直接选择[Debug]

图5. 调试
则会发现 Flash 下载并没有发生。确实,这是其中不够完美的地方。但是如果选择[Download]

图6.下载
则会发现 Keil 调用 STM32CubeProgrammer 命令行进行当前工程的下载,如下所示:

图7.命令日志
然后,用户可以使用[Debug]启动调试,一切正常。所以,简单的方法就是,用户在调试前,按下 F8。这样比使用 Pack 的 FLM 并没有麻烦多少。
04小结
本文提供了在 Keil 中使用STM32CubeProgrammer 来进行调试前下载固件的方法,适合 STM32 MCU 新产品的早期用户在使用 Keil 时进行参考。
关键字:Keil 环境
引用地址:
在Keil中使用STM32CubeProgrammer
推荐阅读最新更新时间:2026-03-22 08:49
在Keil中使用STM32CubeProgrammer
01前言 STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善中的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32 工具还在更新中。具体到 Keil 用户,用户有可能可以使用 STM32CubeProgrammer 进行下载,但是 Keil 编译器中支持该产品系列的软件 Pack 还需要一些时间才会被更新。从而,用户能够使用 Keil 编译器进行编译甚至调试,但没法直接在 Keil 环境中对新产品进行下载。对此,用户可以选择等待,也可以自行扩展 Keil 的 FLM 来支持该产品。但考虑到用户产品开发的时间限制以及新的STM32 正式 Pack 很快就会发布,更简单快速的一种解决方案是在 Kei
[单片机]
《SLAM导航机器人基础》第三章:单片机与STM32:单片机概述和Keil开发环境配置
3.1 单片机概述 我们在第一章中了解了单片机概念,我们同学在大学中也会有单片机课程,一般选型经典的51单片机。单片机的处理器频率为8M,72M,168M等,处理器频率指的是处理器时钟频率,由此可得8M,72M,168M频率处理器的时钟周期分别为125us、13.8us、5.9us。假如我们有一条C++语句,最终需要10个时钟周期,则该语句耗时1250us、138us、59us。若我们运行1000行这样的语句,则需要1.25秒、0.138秒、0.059秒。由此可见,单片机处理速度较慢,适合处理任务负荷低的任务,同时要求我们程序尽量简洁,逻辑设计合理。除了频率,单片机的位数也不一样。有8位、16位、32位。8位指的是8个二进制位,可
[单片机]
《RT-Thread开发笔记》 第1章 RT-Thread 开发环境搭建 (Keil+env)
开发环境: RT-Thread版本:4.0.4 操作系统:Windows 10 Keil版本:V5.30 开发板:stm32f746-st-nucleo 开发板MCU:STM32F746ZG 1.1准备工作 在电脑上装好 git,软件包管理功能需要 git 的支持。git 的下载地址为https://git-scm.com/downloads,根据向导正确安装 git,并将 git 添加到系统环境变量。 注意在工作环境中,所有的路径都不可以有中文字符或者空格。 1.1.1 Env工具安装 Env 是 RT-Thread 推出的开发辅助工具,针对基于 RT-Thread 操作系统的项目工程,提供编译构建环境、图形化系统配置及
[单片机]
如何在Keil MDK环境移植ThreadX操作系统?
在threadx刚开源的时候移植体验了一波,并分享了移植文章,最近发现这一年threadx在不断的更新,目前更新至v6.1.6版本,所以更新最新版本的移植方法,顺便吐槽一下! 1. 前言 本文中使用的开发板为小熊派IoT开发板,主控为STM32L431RCT6: 请准备一份可以「正常使用printf串口输出的裸机工程」,本文中我使用cubemx生成。 2. 复制ThreadX源码 ThreadX源码请访问开源仓库获取: https://github.com/azure-rtos/threadx 3. 添加源码到MDK工程 新建threadX/common分组,添加threadX/common/src下的所有c文件:「新建thr
[单片机]
在Keil环境编程中发现STM32内存管理存在的问题
非常简单的一个工程,没有用到任何IO操作,与STM32有关的仅仅只有芯片的选择,即其SRAM大小有区别。图1是工程示意图,从图中可以看出,除了自己编写的代码外,仅仅增加了2个文件,即system_stm32f10x.c和startup_stm32f10x_hd.s,其中为了对startup_stm32f10x_hd.s进行修改,将其从库文件夹复制到了项目文件夹中。 图1 代码1 int main() { int a,b,c,d; a=10;b=20; c=a+b; for(;;); } myex1.c(3): warning: #550-D: variable c was set but never used linkin
[单片机]
基于stm32的keil开发环境搭建
1 只要按照下面的一步步来,绝对能从0开始建立一个STM32工程。不仅包括工程建立过程,还有Jlink设置方法。本文使用芯片为STM32F103CB。 1 下载stm32F10x的官方库 2 新建工程 工程名设为stm32_demo,选择芯片型号为STM32F103B,如图: 因为下载的stm32库中有启动代码,所以这里选择 否 ,不拷贝启动代码。 在工程文件下,新建Startup 、Headers、User、Libraries、CMSIS、Lists、Output文件夹。 至此,stm32的工程文件结构如下 3 库文件拷贝 把下载stm32库中文件拷贝到新建工程中 文件
[单片机]
沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录
概述 CH32F103系列是沁恒生产的32位Cortex-M3 MCU, 片上集成了时钟安全机制、多级电源管理、 通用DMA控制器等. 具有 2 路 USB2.0接口、多通道 TouchKey、 12 位 DAC 转换模块, 多通道 12 位 ADC、 多组定时器、 CAN 通讯控制器、 I2C/USART/SPI 等丰富的外设资源. 与STM32F103系列芯片相比, 管脚和寄存器兼容, 增加了USB功能, 有2个USB, 一个Host, 一个Device, 增加了DAC, 供电兼容5V Flash下载算法和内部BootLoader和STM32不兼容, 需要使用沁恒提供的算法, 或者使用沁恒的下载软件通过串口和USB下载.
[单片机]
Keil MDK STM32系列(十) Ubuntu下的PlatformIO开发环境
这篇和Keil MDK没什么关系, 但是HAL库和开发方式是一样的, 也放在这个系列下吧 PlatformIO PlatformIO是VSCode的一个扩展, 主要面向的是嵌入式的开发, 因为VSCode的跨平台属性, PlatformIO也是跨平台的. 这里主要介绍在Ubuntu20.04下的PlatformIO环境. 安装, 略 PlatformIO下的STM32烧录工具 对于STM32, PlatformIO支持的烧录工具有 blackmagic, cmsis-dap, dfu, jlink, serial, stlink, 直接选stlink就可以了. PlatformIO下的STM32封装库 在Platf
[单片机]