你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在 Keil中使用STM32CubeProgrammer

[复制链接]
STMCU小助手 发布时间:2023-11-4 15:04
01前言" O  r2 |3 p, B' l! ~2 ^
STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善中的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32 工具还在更新中。具体到 Keil 用户,用户有可能可以使用 STM32CubeProgrammer 进行下载,但是 Keil 编译器中支持该产品系列的软件 Pack 还需要一些时间才会被更新。从而,用户能够使用 Keil 编译器进行编译甚至调试,但没法直接在 Keil 环境中对新产品进行下载。对此,用户可以选择等待,也可以自行扩展 Keil 的 FLM 来支持该产品。但考虑到用户产品开发的时间限制以及新的STM32 正式 Pack 很快就会发布,更简单快速的一种解决方案是在 Keil 中直接使用STM32CubeProgammer 在进行调试前下载。9 h* k7 i& n" S

  z4 {3 b5 [9 U02步骤7 V4 _! c- i& F8 Y9 d! R8 b
这里以一个 NUCLEO-H723ZG 的 CRC_Example 为例。它是 STM32Cube 包中的一个完善的工程,可以正常使用配套的 Pack 进行编译下载调试。我们只是使用这个工程说明如何直接使用 STM32CubeProgrammer 进行 Flash 下载,没有其他特别的含义。首先,在 Keil 工程界面里,选择[Flash]->[Configure Flash Tools]菜单。
: u7 ?! K0 \7 Z- b- D2 C3 Z4 a/ l4 P/ {& h9 I3 P- B! Q$ H+ ?

3 a  g$ Z4 s6 w4 ^/ H% E* L9 {
微信图片_20231104150314.png
4 l; F( L7 R  ]/ g! T7 s- O0 q
图1.配置菜单
& A- A  Y$ ?7 p1 j
& r1 _7 B. `! `( l" I+ D8 c) K& l
或者在工程浏览器的工程名字上点击右键,选择[Options]然后选择[Utilities]+ _9 V9 O# {. j+ q
& b, T2 G+ t: ^" P7 w- R5 Z9 J

6 E; M, h5 u$ l
微信图片_20231104150309.png

+ R  ~* W" h. T5 E: \+ P. k3 ^
图2.工程选项
% }( y: H% T, G
$ U! _' D2 S! w) S
你可以看到如下菜单,说明该工程默认使用 Pack 中的 FLM 进行下载。, Q) H7 y" t! r4 @+ d" p/ p

" I. K) D: k9 g6 h( w( b2 |. K
微信图片_20231104150306.png

! p, k/ {; K; w  B6 v% r
图3.配置工具选项

2 z6 G) ~9 Y/ z
! \, ~5 Z, ]4 [! j2 c
我们将其切换成[Use External Tool for Flash Programming]。0 T* c7 }9 r0 a8 I) X

$ m6 T( {% {5 q( l在[Command]中选择 STM32_Programmer_CLI.exe,它会自动填上所在的全路径,例如:! i/ l- U& b6 m6 Y4 G
2 T: k  L- L8 a' T) `# U3 X1 [
C:\ProgramFiles\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\STM32_Programmer_CLI.exe , u  C5 N, B. G( g6 f* W- Z: s& _  p

, }; v' r2 C  u" \* q8 ]6 r* y7 G在[Agruments]中输入使用 ST-Link 以及文件名参数,如下:
7 M) `$ e' Q: h5 r( x. `" {) U2 e4 ]; z
* b2 U: F! Z( v# y" Z% n-c port=swd -w #L ( r1 {% Y" z. H" g/ k3 [
$ q. s- V' f" _! j& I/ l* Y# s
STM32_Programmer_CLI 的更多用法,例如,在调试前修改某个特定选项字节,可以参考STM32CubeProgrammer 用户手册 UM2237。 4 d. r7 u$ B! W) k( T2 @& @( m

% x( S% J7 S# o5 m0 j1 g/ j这里值得一提的是 Keil #L 参数的使用。为了该命令行的通用性,我们应该使用编译器工具提供的一些参数间接指向所需要烧录的路径及文件,而不是硬编码。这样,工程选项的改动,不影响该命令行;而且该命令行也可以在多个工程中复制使用。#L 以及其他类似参数的含义可以在 Keil 联机帮助中搜索 “ Key Sequence for Tool Parameters ”。设置界面如下:/ g6 Y3 `& o( k7 y
) o7 j' L$ V( C6 |) C
微信图片_20231104150303.png

2 d7 w5 T; G) M) F$ m' s* E
图4.配置烧写指令

/ `# O- y4 s, t+ B# t
; u6 {  D: s( x+ z
其中[Run Independent]的含义是,是否让 Keil 不需要等待该命令行执行完毕。我们希望按顺序执行,所以该选项没有勾上。用户可以切换此选项观察效果。
* U* t6 S" @$ v( J9 k
$ J/ H- r0 d, I" j- _( E! j8 F
% ?+ n) H' Z6 Y* V1 q( @
03效果
; m2 z( ^2 z4 P; S$ i2 G8 F9 k这时候如果直接选择[Debug]5 Q( ~9 y; N; N! k: J  ]. \' Z+ P4 I

# A# T& t7 d) @5 Y( R* g! k+ z
微信图片_20231104150259.png
( B5 f* O8 m' {, {
图5. 调试

( {8 l2 a" f+ U. f

0 d: N) T; Z) Z7 a则会发现 Flash 下载并没有发生。确实,这是其中不够完美的地方。但是如果选择[Download]* n- e( I# e; k6 N

0 o: Z8 S, N4 h
微信图片_20231104150253.png

7 a- R8 J$ W$ l/ E1 O; M$ Y
图6.下载
; Z7 F5 R/ a4 h* E3 q# C3 v/ [: g
7 l: b' q* ]" W, N" Y$ z# `3 y
则会发现 Keil 调用 STM32CubeProgrammer 命令行进行当前工程的下载,如下所示:8 T% k4 W7 t7 ?9 \' n* |/ n# V
7 \7 Q. e$ B. K8 a. u6 F) k0 F' J# N
微信图片_20231104150249.png
- I5 }$ O4 U, o
图7.命令日志

8 F+ _& [* U: D  k0 w* z! Y+ x
) {6 _" ?# z) Q; A- F8 {# I
然后,用户可以使用[Debug]启动调试,一切正常。所以,简单的方法就是,用户在调试前,按下 F8。这样比使用 Pack 的 FLM 并没有麻烦多少。
8 Q# c+ h/ J/ u4 Q6 u4 D% @% r
* r  I& ?, i7 ]7 T2 v8 c' s" q+ F
0 E" `: ~1 O# H. a* n
04小结

% w  N, V' r7 D" b, x/ p/ a+ b1 t1 L本文提供了在 Keil 中使用STM32CubeProgrammer 来进行调试前下载固件的方法,适合 STM32 MCU 新产品的早期用户在使用 Keil 时进行参考。
; o6 n, y. Z: Y+ g

6 k8 P$ s4 \8 s3 Y. i转载自: STM32单片机
8 b) L% z+ a$ {如有侵权请联系删除4 C) j" A- d2 l+ N4 P7 c

0 n: p. ^# P& X, p
: E/ H) `7 w4 E6 |' E% N
赞 收藏 评论1 发布时间:2023-11-4 15:04

举报

1个回答
xu@xupt 回答时间:2023-11-5 10:09:54

好资料,学习了~~~

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版