STMCU小助手
发布时间:2021-9-14 13:32
|
01引言( h& B5 L3 _# E/ S) Y 9 ]/ h$ D# y& z8 N+ ]' p STM32CubeIDE是ST官方推出的集成开发环境,集成了很多STM32的调试与开发工具。本文主要介绍如何使用SWV功能来打印输出。 8 i. X* g7 X6 y 3 B* B3 K, Z4 w6 a( U; z 02问题描述4 `; |+ E6 b# `( O& J 客户使用STM32CubeIDE开发环境,将Printf定位到串口上是正常的,但是在重定位到SWO上却出现了无法打印的问题。客户也参考了网上的教程,仍然无法实现,不知道是什么原因。 STM32CubeIDE 版本:V1.6.1* F" c2 O$ b- g# k9 i0 g
03问题分析与定位$ U% ]7 {4 }( y$ N0 N' O% H & p, O& N3 {& }6 Q7 Z* }% Y 首先,我们需要查找资料,在《UM2609 STM32CubeIDE user guide》的第4章中,对SWV有比较详细的介绍。此处推荐先查看官网文档,这个文档本身是非常权威的。可能你在网上也会找到关于SWV功能的介绍,但是这个文档还是必须要看的,因为这个是源头。 ) l6 }( s# T: O& X: g0 w8 l 通过查看这个文档,知道了实现SWV的简单步骤如下: 5 ~, x/ u- ~- b; F# i6 l O" i+ h 9 ?& x* ^/ n8 ?3 s* h+ } H7 c4 k 第一步:在Pinout & Configuration选项中打开SWO的功能,此步骤是必须的。 8 {. M& F" ?5 o: i * F; @$ o& M% I l* I
第二步:重定位printf的接口函数。+ F" c8 D% T% Y. ] : |# Z2 Q+ Y) x 这里有个简单的方法,直接在syscalls.c文件中,改写_write()函数的内容,代码如下所示。再在此文件中包含ITM_SendChar 实现的头文件core_cmX.h,此文件一般都是已经被包含在你所选择的器件型号的头文件中。 此处我们选择的是stm32g431xx.h,直接放在此文件的开始处即可。
9 L8 V& P. I. Y* B# M# C/ R6 P
- X" B6 T! @$ Q6 ` 8 y* z6 T! ~( o' O4 J T& ^ { W
推荐先复位一下工程(可选项),然后“启动跟踪/start trace”。注意:此处是先启动跟踪,之后再让程序运行起来,不能反序。
- J: t$ ^. [* g+ c - p: _' ]1 M- ]9 x 04小结 8 Q8 p3 U6 _: ?; ^9 U9 o 其实很多的内容都已经在手册中有详细的描述,但是因为英文或者是时间的问题,我们大部分人没有时间和精力阅读完所有的文档的。所以在遇到问题时候,会阻塞你比较长时间。希望本文在你遇到困难的时候能够给你一点启示,帮你快速解决手中的问题。5 |3 @ D( }/ G9 _6 V/ U + X/ {) r( f- h c |
【STM32H5 评测】基础硬件加密与随机数性能 - STM32H5E5实测硬件AES加解密、HASH运算、TRNG真随机数输出速率与稳定性
【STM32H5 评测】NUCLEO-H5E5ZJ 使用 TrustZone 安全分区系统实践测试
【STM32H5 评测】CPU核心性能 - STM32H5E5跑 RTOS,观察任务切换速度、中断响应快慢
【STM32H5 评测】内存读写性能 - STM32H5E5实测Flash,SRAM读写速度,用DMA搬运大块数据
【NUCLEO-C562RE】OLED 显示
保姆级教程:CMake 工程导入 STM32CubeIDE 步骤
STM32CubeCLT 1.22.0新版本发布
【下载问题解决】关于ST官网下载软件问题解决
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
微信公众号
手机版