01
引言
stm32cubeide是st官方推出的集成开发环境,集成了很多stm32的调试与开发工具。本文主要介绍如何使用swv功能来打印输出。
02
问题描述
客户使用stm32cubeide开发环境,将printf定位到串口上是正常的,但是在重定位到swo上却出现了无法打印的问题。客户也参考了网上的教程,仍然无法实现,不知道是什么原因。
stm32cubeide 版本:v1.6.1
硬件环境:nucleo-g431rb
03
问题分析与定位
首先,我们需要查找资料,在《um2609 stm32cubeide user guide》的第4章中,对swv有比较详细的介绍。此处推荐先查看官网文档,这个文档本身是非常权威的。可能你在网上也会找到关于swv功能的介绍,但是这个文档还是必须要看的,因为这个是源头。
通过查看这个文档,知道了实现swv的简单步骤如下:
第一步:在pinout & configuration选项中打开swo的功能,此步骤是必须的。
第二步:重定位printf的接口函数。
这里有个简单的方法,直接在syscalls.c文件中,改写_write()函数的内容,代码如下所示。再在此文件中包含itm_sendchar 实现的头文件core_cmx.h,此文件一般都是已经被包含在你所选择的器件型号的头文件中。
此处我们选择的是stm32g431xx.h,直接放在此文件的开始处即可。
第三步:在main.c文件中包含stdio.h这个头文件,并尝试打印printf,此处注意,打印不能很频繁,所以需要增加延时。
全局编译一下,查看是否有错误,如果有错误,请对应提示信息修改。编译没有错误之后,我们就可以进行下一步了。
编译成功正确界面
第四步:配置仿真调试参数。打开swv的调试功能。此处注意:core clock必须与你配置的时钟是一致的。此处我配置是170mhz,与我的系统时钟一致。
仿真调试配置界面
第五步:开始进入调试界面,并在调试界面中打开windows--》show;view--》swv的itm data console窗口。注意,整个swv其实是共用一个配置文件的,所以,当你打开swv内的任意一个窗口都可以进行swv 的配置。在这里我们只是为了查看printf的内容,所以就选择了swv itm data console窗口。关于这里边其他几个部分的详细说明参考um2609的4.3章节的内容。
此窗口打开后,需要新增一个port端口。默认tim中使用的就是0端口,所以我们直接选0即可。
选择点击配置按钮对参数进行配置。配置情况如下:
swv窗口配置界面
推荐先复位一下工程(可选项),然后“启动跟踪/start trace”。注意:此处是先启动跟踪,之后再让程序运行起来,不能反序。
启动跟踪和开始运行
此时即可看到打印出来的内容了。
最后打印输出的状态
04
小结
其实很多的内容都已经在手册中有详细的描述,但是因为英文或者是时间的问题,我们大部分人没有时间和精力阅读完所有的文档的。所以在遇到问题时候,会阻塞你比较长时间。希望本文在你遇到困难的时候能够给你一点启示,帮你快速解决手中的问题。
智能摄像机的应用,云存储可让数据更安全
LM358/LM393/LM324/LM339/TL431芯片资料
工业机器人的安装及调试步骤
CDMA 系统的闭环功率控制方法以及高精度RF功率检测器的应用实现介绍
关于C++模板总结
STM32CubeIDE SWV功能介绍
全球智能手机AP(应用处理器)出货量市场份额
激光打印机如何维护
富豪间的战争!比尔盖茨出手阻拦马斯克收购Twitter
比科奇在MWC 23上为全球市场带来高性能低功耗的商用5G小基站和最新技术方案
人工智能什么时候能有人类水平
OPPO与爱立信签订专利协议推动5G布局发展
力源自研芯片 成立半导体芯片业务部
关于IEC 61000-4-2下的ESD的性能分析和应用
美国对华为实施的限制禁令 给对手创造了机会?
全球IT基础设施建设规模不断扩大,IT基础云化迎来市场拐点
SMT加工时焊膏印刷时会出现哪些问题
低压电容器参数_低压电容器的特点
如何构建一款先进的数字仿真器
47家发起人共同组建中国广电网络股份有限公司