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

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

[复制链接]
STMCU小助手 发布时间:2021-9-14 13:32
01引言
( ?& a  w7 E+ T0 Z$ U# E- J+ l3 n5 G% l7 _& S' T
STM32CubeIDE是ST官方推出的集成开发环境,集成了很多STM32的调试与开发工具。本文主要介绍如何使用SWV功能来打印输出。 + `% [6 f) o+ F6 n+ q
2 d& O! N2 L1 v
02问题描述
5 y- M# w7 }" i) O' f/ N" t% U( F! K7 P  \3 P7 _+ ]1 b- _
客户使用STM32CubeIDE开发环境,将Printf定位到串口上是正常的,但是在重定位到SWO上却出现了无法打印的问题。客户也参考了网上的教程,仍然无法实现,不知道是什么原因。
+ [+ `0 w' R6 e7 V( z
STM32CubeIDE 版本:V1.6.1, N5 N( ~8 X1 f8 s6 x
硬件环境:Nucleo-G431RB
) N- O2 g% f6 R' B8 U
14.png
* [+ H9 t9 J5 c2 s
03问题分析与定位
$ O4 \: N2 m1 `" Z. `7 ^' A' o. B) f8 p. J9 Z' n: `+ Y
首先,我们需要查找资料,在《UM2609 STM32CubeIDE user guide》的第4章中,对SWV有比较详细的介绍。此处推荐先查看官网文档,这个文档本身是非常权威的。可能你在网上也会找到关于SWV功能的介绍,但是这个文档还是必须要看的,因为这个是源头。
) y+ v7 f" l! d/ ], q( ^1 j/ Y% w/ o% `! q1 Z# Q
通过查看这个文档,知道了实现SWV的简单步骤如下: % F3 j. u) \  k. t( T$ n

' G+ K$ N- R0 _( |, a- y第一步:在Pinout & Configuration选项中打开SWO的功能,此步骤是必须的。
! r  M  F0 P; K9 W% f3 A( P. W+ h4 k/ B
15.png

) a& M' ~- G- {第二步:重定位printf的接口函数。9 d/ w# ]& A: N1 y
' V9 {5 X( P1 R; n7 h: M

' D7 M; b; `4 F" q这里有个简单的方法,直接在syscalls.c文件中,改写_write()函数的内容,代码如下所示。再在此文件中包含ITM_SendChar 实现的头文件core_cmX.h,此文件一般都是已经被包含在你所选择的器件型号的头文件中。6 ]# [" S0 Q! s9 g% F( ~3 G) h3 k

2 M6 l  S1 c" K$ Q- q0 i( }) y此处我们选择的是stm32g431xx.h,直接放在此文件的开始处即可。 ; u2 O7 k. [* O3 ]( U' F
16.png
第三步:在main.c文件中包含stdio.h这个头文件,并尝试打印printf,此处注意,打印不能很频繁,所以需要增加延时。% G% y7 j5 W' `( A. \1 \
17.png
全局编译一下,查看是否有错误,如果有错误,请对应提示信息修改。编译没有错误之后,我们就可以进行下一步了。
+ N  O( P4 R6 Y* [7 w8 n" Y
1 Q  G* E# ?- O# ~

  P% T4 \- O" |5 K5 u
18.png
第四步:配置仿真调试参数。打开SWV的调试功能。此处注意:Core Clock必须与你配置的时钟是一致的。此处我配置是170MHz,与我的系统时钟一致。  ; O. Q" u; G( n# l4 M; n, r& z

& a& l2 Y$ E3 h& f

, ?8 d! c9 N2 [' U$ p/ X( X
19.png
第五步:开始进入调试界面,并在调试界面中打开Windows-->Show;View-->SWV的ITM data Console窗口。注意,整个SWV其实是共用一个配置文件的,所以,当你打开SWV内的任意一个窗口都可以进行SWV 的配置。在这里我们只是为了查看Printf的内容,所以就选择了SWV ITM Data Console窗口。关于这里边其他几个部分的详细说明参考UM2609的4.3章节的内容。& o8 [  H7 |) j+ y
20.png
此窗口打开后,需要新增一个Port端口。默认TIM中使用的就是0端口,所以我们直接选0即可。 : g- {0 w( s0 \1 V# J
: ]  m! O) }( b

* c# n/ z2 m. T5 l
21.png
选择点击配置按钮对参数进行配置。配置情况如下:
" K2 F' m. a  L* O0 Q
22.png

0 A! J/ j9 D: p& ~, g; ?推荐先复位一下工程(可选项),然后“启动跟踪/start trace”。注意:此处是先启动跟踪,之后再让程序运行起来,不能反序。
; J. Q2 G# S" K0 T) F1 O
23.png
此时即可看到打印出来的内容了。 . g. w( ~8 X7 O* y7 g
24.png
最后打印输出的状态
4 _2 b5 z/ B9 E+ o9 R# \, x
' N0 p7 l) s+ \3 y3 v( [9 p6 a
* \. ]. f* \' q  a. C9 M
04小结
, T& S! ~. M% _2 `* r: R1 d5 B8 X9 \$ `

. j; M- t1 V+ {. i1 r$ M  ?1 b其实很多的内容都已经在手册中有详细的描述,但是因为英文或者是时间的问题,我们大部分人没有时间和精力阅读完所有的文档的。所以在遇到问题时候,会阻塞你比较长时间。希望本文在你遇到困难的时候能够给你一点启示,帮你快速解决手中的问题。
1 q% U$ Q1 M6 q* R8 w$ E- w. T* B* y) l% `  F+ p9 h
收藏 2 评论0 发布时间:2021-9-14 13:32

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版