STMCU小助手
发布时间:2021-9-14 13:32
|
01引言9 @6 D: A8 [, V" M3 ]8 \2 n5 ^" y" ^ , T* c& l+ g# \+ e3 M7 u& [. O. N STM32CubeIDE是ST官方推出的集成开发环境,集成了很多STM32的调试与开发工具。本文主要介绍如何使用SWV功能来打印输出。 / f2 N+ e, W; A& ], y& L 02问题描述 客户使用STM32CubeIDE开发环境,将Printf定位到串口上是正常的,但是在重定位到SWO上却出现了无法打印的问题。客户也参考了网上的教程,仍然无法实现,不知道是什么原因。 5 w+ j& d& D4 o' }2 h$ Z3 _5 ~ STM32CubeIDE 版本:V1.6.1+ |2 I8 e" e; k
03问题分析与定位 & o3 _% J% e' F6 a7 b 首先,我们需要查找资料,在《UM2609 STM32CubeIDE user guide》的第4章中,对SWV有比较详细的介绍。此处推荐先查看官网文档,这个文档本身是非常权威的。可能你在网上也会找到关于SWV功能的介绍,但是这个文档还是必须要看的,因为这个是源头。 . T8 T* D( }8 g% c( J ( a2 d( @1 q) F2 J* T 通过查看这个文档,知道了实现SWV的简单步骤如下: ' @; b3 P+ a- g* K |0 v 第一步:在Pinout & Configuration选项中打开SWO的功能,此步骤是必须的。 $ G- ~9 k. W4 }2 D7 b + z$ Z5 g* t$ Y. t
第二步:重定位printf的接口函数。 这里有个简单的方法,直接在syscalls.c文件中,改写_write()函数的内容,代码如下所示。再在此文件中包含ITM_SendChar 实现的头文件core_cmX.h,此文件一般都是已经被包含在你所选择的器件型号的头文件中。 4 v. R, c5 d2 g% I, I* M 此处我们选择的是stm32g431xx.h,直接放在此文件的开始处即可。
推荐先复位一下工程(可选项),然后“启动跟踪/start trace”。注意:此处是先启动跟踪,之后再让程序运行起来,不能反序。
& W: J- }1 E& K! _ 04小结9 k# G2 @7 h: L9 E$ R( k: f' ^! c7 D " r2 u; a8 S+ Q& S: r " R; U/ T6 K# n$ `8 Q4 Y" m3 q6 Y9 L5 { 其实很多的内容都已经在手册中有详细的描述,但是因为英文或者是时间的问题,我们大部分人没有时间和精力阅读完所有的文档的。所以在遇到问题时候,会阻塞你比较长时间。希望本文在你遇到困难的时候能够给你一点启示,帮你快速解决手中的问题。) \) `+ n K4 r ( N+ ]2 l: h& @ |
保姆级教程:CMake 工程导入 STM32CubeIDE 步骤
STM32CubeCLT 1.22.0新版本发布
【下载问题解决】关于ST官网下载软件问题解决
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
《MCUBoot课程》学习笔记+从信任链原理到量产实践
STM32CubeIDE 2.2.0新版本发布
CubeMX生成CubeIDE工程代码乱码
STM32CubeIDE实时时钟(RTC)经验分享
实战经验 | ClassB功能安全认证代码与应用代码分区的实现要点
微信公众号
手机版