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

工程师笔记 | STM32CubeIDE SWV功能简介

[复制链接]
STMCU小助手 发布时间:2021-9-14 13:32
01引言
. {' `% U4 }$ D% y( k! U
& b' X# g3 T6 J1 YSTM32CubeIDE是ST官方推出的集成开发环境,集成了很多STM32的调试与开发工具。本文主要介绍如何使用SWV功能来打印输出。 5 n( I' b+ o4 v! W

, Z5 \- l) G" m0 t- l+ l02问题描述/ ?% \- O! o$ ^* k( V

2 P4 a( l7 z. r2 a6 n客户使用STM32CubeIDE开发环境,将Printf定位到串口上是正常的,但是在重定位到SWO上却出现了无法打印的问题。客户也参考了网上的教程,仍然无法实现,不知道是什么原因。
% j4 m9 L# y& @! q5 K6 i
STM32CubeIDE 版本:V1.6.1
. T+ a9 r3 q& @硬件环境:Nucleo-G431RB
& H/ _6 y7 y: [6 q, |" I
14.png
  t& V8 T/ N/ n! a7 \
03问题分析与定位8 c8 S! Q  p. K3 s9 j! R4 a

4 V. Y$ J$ ?/ R* P$ o首先,我们需要查找资料,在《UM2609 STM32CubeIDE user guide》的第4章中,对SWV有比较详细的介绍。此处推荐先查看官网文档,这个文档本身是非常权威的。可能你在网上也会找到关于SWV功能的介绍,但是这个文档还是必须要看的,因为这个是源头。 9 O* b. v7 J: ?0 L
5 s3 N& b" F. w1 ~  c# J$ _
通过查看这个文档,知道了实现SWV的简单步骤如下: : N. ]; s' a3 p7 |# D  ^
) B+ B& m9 h* _- E6 O) {$ {
第一步:在Pinout & Configuration选项中打开SWO的功能,此步骤是必须的。
- E' U; g1 \' D3 X% ?1 [  Q+ {
9 X: L. W7 n/ X9 o  }# D
15.png

& U' d2 x6 ~2 ~# d# N第二步:重定位printf的接口函数。
4 i5 S$ `+ r) w% U: f+ |9 u  U0 R" q: k" Y8 D

9 O3 Q: ?! w/ q& E! t9 v7 v这里有个简单的方法,直接在syscalls.c文件中,改写_write()函数的内容,代码如下所示。再在此文件中包含ITM_SendChar 实现的头文件core_cmX.h,此文件一般都是已经被包含在你所选择的器件型号的头文件中。
) j& \$ K( M% S$ F' z1 z$ O/ W4 t, b( O8 e
此处我们选择的是stm32g431xx.h,直接放在此文件的开始处即可。 & {! o$ `; |3 m4 z* _
16.png
第三步:在main.c文件中包含stdio.h这个头文件,并尝试打印printf,此处注意,打印不能很频繁,所以需要增加延时。8 I9 Q. H3 ]; h, M" A' b* q0 H
17.png
全局编译一下,查看是否有错误,如果有错误,请对应提示信息修改。编译没有错误之后,我们就可以进行下一步了。
( y) U7 J' z8 S% U$ _5 B+ [& |4 f8 t& K  X
9 Z. X) R- h0 Y( o; \( `
18.png
第四步:配置仿真调试参数。打开SWV的调试功能。此处注意:Core Clock必须与你配置的时钟是一致的。此处我配置是170MHz,与我的系统时钟一致。  4 o. _4 s& x. X0 X2 f
+ ~' D! ^. W# i/ ~
( `6 D8 ^0 }3 j& ]. F  \
19.png
第五步:开始进入调试界面,并在调试界面中打开Windows-->Show;View-->SWV的ITM data Console窗口。注意,整个SWV其实是共用一个配置文件的,所以,当你打开SWV内的任意一个窗口都可以进行SWV 的配置。在这里我们只是为了查看Printf的内容,所以就选择了SWV ITM Data Console窗口。关于这里边其他几个部分的详细说明参考UM2609的4.3章节的内容。0 K6 W4 w- J( J) |  @* K5 I2 p& N
20.png
此窗口打开后,需要新增一个Port端口。默认TIM中使用的就是0端口,所以我们直接选0即可。 , i/ V3 E! |7 g
, }( [; h6 K& M* @7 o$ X- X9 V
6 f1 s& {0 ?% \( N% A+ }
21.png
选择点击配置按钮对参数进行配置。配置情况如下: & M) l$ s3 _, K; ^" b7 H
22.png

# Q- S, t2 X3 P( }* A推荐先复位一下工程(可选项),然后“启动跟踪/start trace”。注意:此处是先启动跟踪,之后再让程序运行起来,不能反序。 4 T  ^( |% g- m
23.png
此时即可看到打印出来的内容了。 . I: x, |% J6 p; u4 [! S
24.png
最后打印输出的状态
, V9 O* g5 P! q0 H
2 w4 {% d- A$ F1 j0 B: G% p- ~$ U. v/ R

# y- n( T! ~, e: g* N4 r/ [04小结
/ T5 Q' ]& e; O. M' P+ ?7 t2 m' C6 T) C# o6 C

! ^# y) t6 i- @$ r6 D' P其实很多的内容都已经在手册中有详细的描述,但是因为英文或者是时间的问题,我们大部分人没有时间和精力阅读完所有的文档的。所以在遇到问题时候,会阻塞你比较长时间。希望本文在你遇到困难的时候能够给你一点启示,帮你快速解决手中的问题。" P- v- n% y0 }  M

( [2 E, o: o7 k, z: g% Z4 T' e
收藏 2 评论0 发布时间:2021-9-14 13:32

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版