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

STM32CubeIDE SWV 功能简介

[复制链接]
STMCU小助手 发布时间:2022-8-4 23:29
1. 引言
STM32CubeIDE 是 ST 官方推出的集成开发环境,集成了很多 STM32 的调试与开发工具。
本文主要介绍如何使用 SWV 功能来打印输出。
2. 问题描述
客户使用 STM32CubeIDE 开发环境,将 Printf 定位到串口上是正常的,但是在重定位到SWO 上却出现了无法打印的问题。客户也参考了网上的教程,仍然无法实现,不知道是什么原因。
STM32CubeIDE 版本:V1.6.1
硬件环境:Nucleo-G431RB


EZ7L)IAA`[VX){M_NEUU1US.png

3. 问题分析与定位
首先,我们需要查找资料,在《UM2609 STM32CubeIDE user guide》的第 4 章中,对于SWV 有比较详细的介绍。此处推荐先查看官网文档,这个文档本身是非常权威的。可能你在网上也会找到关于 SWV 功能的介绍,但是这个文档还是必须要看的,因为这个是源头。
通过查看这个文档,知道了实现 SWV 的简单步骤如下:
第一步:在 Pinout & Configuration 选项中打开 SWO 的功能,此步骤是必须的。


3~C(12@%F~1QGFAIC@}YM}U.png


第二步:重定位 printf 的接口函数。
这里有个简单的方法,直接在 syscalls.c 文件中,改写_write()函数的内容,代码如下所示。再在此文件中包含 ITM_SendChar 实现的头文件 core_cmX.h,此文件一般都是已经被包含在你所选择的器件型号的头文件中。此处我们选择的是 stm32g431xx.h,直接放在此文件的开始处即可。
  1. #include "stm32g431xx.h"
  2. __attribute__((weak)) int _write(int file, char *ptr, int len)
  3. {
  4. int DataIdx;
  5. for (DataIdx = 0; DataIdx < len; DataIdx++)
  6. {
  7. //__io_putchar(*ptr++);
  8. ITM_SendChar(*ptr++);
  9. }
  10. return len;
  11. }
复制代码


第三步,在 main.c 文件中包含 stdio.h 这个头文件,并尝试打印 printf,此处注意,打印不能很频繁,所以需要增加延时。
  1. #include <stdio.h>
  2. uint8_t Count=0;
  3. /* USER CODE BEGIN WHILE */
  4. while (1)
  5. {
  6. HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
  7. HAL_Delay(1000);
  8. printf("Hello World, Count=%d\r\n", Count++);
  9. /* USER CODE END WHILE */
  10. /* USER CODE BEGIN 3 */
  11. }
  12. /* USER CODE END 3 */
复制代码


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


K)Q~IV6SX1TA[)$LK]VD(NI.png


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


5M%ID[_BDW}BY1LGG[[S{P6.png

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



完整版请查看:附件



LAT1024_STM32CubeIDE_SWV_功能简介.pdf

下载

847.96 KB, 下载次数: 13

收藏 评论0 发布时间:2022-8-4 23:29

举报

0个回答

所属标签

相似分享

官网相关资源

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