01引言 STM32CubeIDE是ST官方推出的集成开发环境,集成了很多STM32的调试与开发工具。本文主要介绍如何使用SWV功能来打印输出。 5 n( I' b+ o4 v! W 02问题描述/ ?% \- O! o$ ^* k( V 客户使用STM32CubeIDE开发环境,将Printf定位到串口上是正常的,但是在重定位到SWO上却出现了无法打印的问题。客户也参考了网上的教程,仍然无法实现,不知道是什么原因。 STM32CubeIDE 版本:V1.6.1 03问题分析与定位8 c8 S! Q p. K3 s9 j! R4 a 首先,我们需要查找资料,在《UM2609 STM32CubeIDE user guide》的第4章中,对SWV有比较详细的介绍。此处推荐先查看官网文档,这个文档本身是非常权威的。可能你在网上也会找到关于SWV功能的介绍,但是这个文档还是必须要看的,因为这个是源头。 9 O* b. v7 J: ?0 L 5 s3 N& b" F. w1 ~ c# J$ _ 通过查看这个文档,知道了实现SWV的简单步骤如下: : N. ]; s' a3 p7 |# D ^ ) B+ B& m9 h* _- E6 O) {$ { 第一步:在Pinout & Configuration选项中打开SWO的功能,此步骤是必须的。 第二步:重定位printf的接口函数。 0 R" q: k" Y8 D 这里有个简单的方法,直接在syscalls.c文件中,改写_write()函数的内容,代码如下所示。再在此文件中包含ITM_SendChar 实现的头文件core_cmX.h,此文件一般都是已经被包含在你所选择的器件型号的头文件中。 $ F' z1 z$ O/ W4 t, b( O8 e 此处我们选择的是stm32g431xx.h,直接放在此文件的开始处即可。 & {! o$ `; |3 m4 z* _ + [& |4 f8 t& K X 9 Z. X) R- h0 Y( o; \( ` + ~' D! ^. W# i/ ~ ( `6 D8 ^0 }3 j& ]. F \ , }( [; h6 K& M* @7 o$ X- X9 V 6 f1 s& {0 ?% \( N% A+ } 推荐先复位一下工程(可选项),然后“启动跟踪/start trace”。注意:此处是先启动跟踪,之后再让程序运行起来,不能反序。 4 T ^( |% g- m 04小结 + ?7 t2 m' C6 T) C# o6 C 其实很多的内容都已经在手册中有详细的描述,但是因为英文或者是时间的问题,我们大部分人没有时间和精力阅读完所有的文档的。所以在遇到问题时候,会阻塞你比较长时间。希望本文在你遇到困难的时候能够给你一点启示,帮你快速解决手中的问题。" P- v- n% y0 } M |
STM32CubeIDE 快速入门指南
【STM32C0评测】5、娱乐一下,分享2048游戏
【STM32C0评测】4、SPI亮屏及GUILite移植
【STM32C0评测】3、I2C使用
【STM32C0评测】1、开箱、环境搭建、按键点灯
【STM32C0评测】2、PWM实现呼吸灯
[STM32MP125-DK] 裸机开发
STM32CubeMX STM32F4 HAL库 工程建立
【NUCLEO-U545RE-Q评测】5. 基本计时器
【STM32U545试用】SHT30+OLED湿湿度