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

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

[复制链接]
STMCU小助手 发布时间:2021-9-14 13:32
01引言
* b, z: n  R+ D7 u: I) r# _8 E( R
' y1 N6 z; G4 ]" D# J$ pSTM32CubeIDE是ST官方推出的集成开发环境,集成了很多STM32的调试与开发工具。本文主要介绍如何使用SWV功能来打印输出。
! u0 ]0 `  H  O, ]) U2 d0 q
* t& O+ T+ k7 @8 `02问题描述
) ]5 H/ B* v+ n! U7 c
* {  p. N: C: z1 K& _9 B9 X6 m客户使用STM32CubeIDE开发环境,将Printf定位到串口上是正常的,但是在重定位到SWO上却出现了无法打印的问题。客户也参考了网上的教程,仍然无法实现,不知道是什么原因。
3 _! J& [9 r7 i+ j6 H- E
STM32CubeIDE 版本:V1.6.1/ P3 K( ]0 T  i6 _1 S! M2 {/ b
硬件环境:Nucleo-G431RB
+ U( F, b( v: b2 P5 N3 Z
14.png

$ i; b) h* l* B2 o" j/ ~2 Q* N, a03问题分析与定位
; U: Q3 u  {6 T+ J7 h7 X( W, Z/ g7 m: V7 s6 H3 h! S; m
首先,我们需要查找资料,在《UM2609 STM32CubeIDE user guide》的第4章中,对SWV有比较详细的介绍。此处推荐先查看官网文档,这个文档本身是非常权威的。可能你在网上也会找到关于SWV功能的介绍,但是这个文档还是必须要看的,因为这个是源头。
9 M7 _3 B$ m8 k: m+ E' F
% @3 q+ h; F9 g: B0 }0 |通过查看这个文档,知道了实现SWV的简单步骤如下:
  P" Z. P9 j; I* Z, _; l8 `3 J/ s1 w; T+ O* e
第一步:在Pinout & Configuration选项中打开SWO的功能,此步骤是必须的。 ( m% Z) o0 y3 [2 D6 V

/ M) y# S, G7 B. y
15.png

+ O! Y7 j0 m' A" A第二步:重定位printf的接口函数。
, j& l7 q$ Z9 `- _# e. `$ D0 U
/ \) _2 R8 N+ d% Y7 b0 M

1 v/ T: l% M: G/ s% P这里有个简单的方法,直接在syscalls.c文件中,改写_write()函数的内容,代码如下所示。再在此文件中包含ITM_SendChar 实现的头文件core_cmX.h,此文件一般都是已经被包含在你所选择的器件型号的头文件中。
# k( N" [; j% {; f6 M$ R5 Q
5 f' J& B% V! G3 u% H此处我们选择的是stm32g431xx.h,直接放在此文件的开始处即可。
( p$ s5 Q$ O0 S  h. d  z
16.png
第三步:在main.c文件中包含stdio.h这个头文件,并尝试打印printf,此处注意,打印不能很频繁,所以需要增加延时。
1 n) i. u2 @' t. E
17.png
全局编译一下,查看是否有错误,如果有错误,请对应提示信息修改。编译没有错误之后,我们就可以进行下一步了。 / X8 j& I" ^* }

+ J" }5 p9 S  Y6 e& L1 b
" S0 f4 Y) o3 B7 v, K
18.png
第四步:配置仿真调试参数。打开SWV的调试功能。此处注意:Core Clock必须与你配置的时钟是一致的。此处我配置是170MHz,与我的系统时钟一致。  5 s3 k7 P; d- E: I2 k
+ {) m6 i; D4 O" M5 ]0 U
. k5 n, T+ p  X$ N% P5 e
19.png
第五步:开始进入调试界面,并在调试界面中打开Windows-->Show;View-->SWV的ITM data Console窗口。注意,整个SWV其实是共用一个配置文件的,所以,当你打开SWV内的任意一个窗口都可以进行SWV 的配置。在这里我们只是为了查看Printf的内容,所以就选择了SWV ITM Data Console窗口。关于这里边其他几个部分的详细说明参考UM2609的4.3章节的内容。' D6 v6 P' l5 [' x, u9 h1 [2 d
20.png
此窗口打开后,需要新增一个Port端口。默认TIM中使用的就是0端口,所以我们直接选0即可。 3 s6 t$ _0 F; k" h
( r" B+ C4 |  H3 e' ?

, Q/ S4 X+ e8 G+ E
21.png
选择点击配置按钮对参数进行配置。配置情况如下: 0 e5 ^. N6 _0 ~8 x
22.png
" W$ M& K% g% \8 {( \9 @6 {
推荐先复位一下工程(可选项),然后“启动跟踪/start trace”。注意:此处是先启动跟踪,之后再让程序运行起来,不能反序。
/ ?) i' a  v* W
23.png
此时即可看到打印出来的内容了。 * }7 W/ E" L$ C+ e. ^; n! \) W
24.png
最后打印输出的状态; J" k  C0 j" r, J! e  \2 q

$ i0 o3 p, Q4 K: R9 @7 E, x5 H

+ \' U9 |2 T8 Y2 H04小结
, l+ b3 K$ A1 E2 j! Q4 W% x! q% F: u- t7 Y

" z9 Q+ E' K# a7 n+ m其实很多的内容都已经在手册中有详细的描述,但是因为英文或者是时间的问题,我们大部分人没有时间和精力阅读完所有的文档的。所以在遇到问题时候,会阻塞你比较长时间。希望本文在你遇到困难的时候能够给你一点启示,帮你快速解决手中的问题。0 a  G/ W( p; E' G$ b" J
$ }: d3 x5 j' S: K2 {' b& z& o
收藏 2 评论0 发布时间:2021-9-14 13:32

举报

0个回答

所属标签

相似分享

官网相关资源

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