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

发布者:MindfulYogi最新更新时间:2023-02-06 来源: zhihu关键字:STM32CubeIDE  SWV  功能简介 手机看文章 扫描二维码
随时随地手机看文章

01 引言


STM32CubeIDE是ST官方推出的集成开发环境,集成了很多STM32的调试与开发工具。本文主要介绍如何使用SWV功能来打印输出。


02 问题描述


客户使用STM32CubeIDE开发环境,将Printf定位到串口上是正常的,但是在重定位到SWO上却出现了无法打印的问题。客户也参考了网上的教程,仍然无法实现,不知道是什么原因。


STM32CubeIDE 版本:V1.6.1

硬件环境:Nucleo-G431RB


图片1 STM32CubeIDE版本信息


03 问题分析与定位


首先,我们需要查找资料,在《UM2609 STM32CubeIDE user guide》的第4章中,对SWV有比较详细的介绍。此处推荐先查看官网文档,这个文档本身是非常权威的。可能你在网上也会找到关于SWV功能的介绍,但是这个文档还是必须要看的,因为这个是源头。


通过查看这个文档,知道了实现SWV的简单步骤如下:


第一步:在Pinout & Configuration选项中打开SWO的功能,此步骤是必须的。

图片2 STM32CubeIDE中使能SWO功能


第二步:重定位printf的接口函数。

这里有个简单的方法,直接在syscalls.c文件中,改写_write()函数的内容,代码如下所示。再在此文件中包含ITM_SendChar 实现的头文件core_cmX.h,此文件一般都是已经被包含在你所选择的器件型号的头文件中。


此处我们选择的是stm32g431xx.h,直接放在此文件的开始处即可。


第三步:在main.c文件中包含stdio.h这个头文件,并尝试打印printf,此处注意,打印不能很频繁,所以需要增加延时。


全局编译一下,查看是否有错误,如果有错误,请对应提示信息修改。编译没有错误之后,我们就可以进行下一步了。


图片3 编译成功正确界面


第四步:配置仿真调试参数。打开SWV的调试功能。此处注意:Core Clock必须与你配置的时钟是一致的。此处我配置是170MHz,与我的系统时钟一致。


图片4 仿真调试配置界面


第五步:开始进入调试界面,并在调试界面中打开Windows-->Show;View-->SWV的ITM data Console窗口。注意,整个SWV其实是共用一个配置文件的,所以,当你打开SWV内的任意一个窗口都可以进行SWV 的配置。在这里我们只是为了查看Printf的内容,所以就选择了SWV ITM Data Console窗口。关于这里边其他几个部分的详细说明参考UM2609的4.3章节的内容。


图片5 开启SWV ITM数据窗口


此窗口打开后,需要新增一个Port端口。默认TIM中使用的就是0端口,所以我们直接选0即可。

图片6 增加输出端口


选择点击配置按钮对参数进行配置。配置情况如下:


图片7 SWV窗口配置界面


推荐先复位一下工程(可选项),然后“启动跟踪/start trace”。注意:此处是先启动跟踪,之后再让程序运行起来,不能反序。

图片8 启动跟踪和开始运行


此时即可看到打印出来的内容了。


图片9 最后打印输出的状态


04 小结

其实很多的内容都已经在手册中有详细的描述,但是因为英文或者是时间的问题,我们大部分人没有时间和精力阅读完所有的文档的。所以在遇到问题时候,会阻塞你比较长时间。希望本文在你遇到困难的时候能够给你一点启示,帮你快速解决手中的问题。


关键字:STM32CubeIDE  SWV  功能简介 引用地址:工程师笔记 | STM32CubeIDE SWV功能简介

上一篇:一文了解STM32G0的生态圈
下一篇:工程师笔记 | 使用UART IDLE中断接收不定长数据

推荐阅读最新更新时间:2024-11-13 10:18

三总线的定义与功能简介
总线: 指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通信。 地址总线(AB):地址总线是单向的,用于传送地址信息。地址总线的宽度为16位,因此基外部存储器直接寻址64K,16位地址总线由P0口经地址锁存器提供低8位地址(A0~A7),P2口直接提供高8位地址(A8~A15)。 数据总线(DB):一般为双向,用于CPU与存储器,CPU与外设、或外设与外设之间传送数据信息(包括实际意义的数据和指令码)。数据总线宽度为8位,由P0口提供。 控制总线(CB):是计算机系统中所有控制信号的总称,在控制总线中传送的是控制信息。由P3口的第二功能状态和4根独立的控制总线,RESET、EA、ALE、PSEN组成。
[单片机]
STM32CubeIDE 的应用: 重定向printf 到stm32串口
一、导入stdio.h库文件 /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include stdio.h /* USER CODE END Includes */ 二、重写函数 /* USER CODE BEGIN 4 */ #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #define GETCHAR_PROTOTYPE int __io_getcha
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved