使用SWO代替UART,实现Printf打印功能

使用SWO代替UART,实现Printf打印功能JTAG 接口中 有个 SWO 引脚 一直没有在意 也没有去研究过是干嘛用的 直到发现 ST LINKV2 1 上也有个 SWO 引脚 于是去研究学习它的作用 用起来相比 UART 方得便多 1 写在前面 SWO SerialWireOu 串行线输出 SWV SerialWireVi 串行线查看器 ITM Instrumentat 仪器跟踪宏单元

1 写在前面

2 硬件平台

3 代码部分

和UART实现printf打印输出类似,UART是重定向printf到UART,而这里是重定向到ITM。只需这两行代码就能实现SWO输出,不像UART一样还要编写UART驱动。(此函数在BSP_SWO.c文件中)
在这里插入图片描述

4 Keil SWO输出配置

4.6 提供两份配置好的、完整的工程,供大家参考学习。要在您的工程中使用SWO调试,只需将BSP_SWO.cBSP_SWO.h这个两个文件添加到工程中即可。
在这里插入图片描述
下载链接:https://pan.baidu.com/s/1EhJulPbD6Cp5OohzpQY0Fg&shfl=sharepset
提取码:h43c


5 STM32 ST-LINK Utility SWO输出配置

6 写在后面

打印信息用串口也可以做到,SWO的优势是什么?

  1. 串口是MCU的片内外设,占用一个外设资源,而SWO不占用外设
  2. 使用不同的MCU需要重新编写串口的驱动,而SWO不需要写驱动
  3. 串口输出一般使用中断方式发送,调试时可能需要在中断中观察某些信息,这样中断嵌套就容易出现问题,而SWO没有中断问题
  4. SWO的速度比串口快得多,在时序要求较高的情况下对代码的影响较小。发送相同的字符串,SWO的速度是串口的8.7倍。
    在这里插入图片描述
    在这里插入图片描述
    虽然SWO不能像串口那样双向传输,而我们用串口调试很多时候也只是使用TX输出而已。这样看来,SWO引脚用更好的方式替代了串口的TX引脚。


7 联系我们

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224955.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午10:45
下一篇 2026年3月17日 上午10:46


相关推荐

  • eclipse自动提示设置方法和优化(去除空格自动补全)

    eclipse自动提示设置方法和优化(去除空格自动补全)Eclipse自动提示设置我们打开Eclipse配置自动提示,点击window–Preferences界面首先配置java文件的自动提示点击java–Editor–ContentAssist,把AutoactivationtriggersforJava里面的内容改为:.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW…

    2022年6月28日
    41
  • java 大学考试_java考试 (全部)「建议收藏」

    java 大学考试_java考试 (全部)「建议收藏」该楼层疑似违规已被系统折叠隐藏此楼查看此楼importjava.awt*;importjava.awtevent*;classABCimplementsActionListener,WindowListener{Buttonb1;Buttonb2;TextPieldshowing;publicvoidactionperformed(ActionEvente){if(e…

    2022年7月7日
    21
  • phpstorm2021.3.19 激活码破解方法

    phpstorm2021.3.19 激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    69
  • MATLAB矩阵复制及扩充

    MATLAB矩阵复制及扩充文章目录一、repmat()方法二、Kron()方法一、repmat()方法例一:(行方向和列方向分别平铺矩阵,红框2,3表示平铺倍数)TIPS:【原矩阵】处可用用户自定义的矩阵变量代替   即Mat=[123;456],可用Mat替代function中原矩阵的位置例二:(行方向和列方向分别平铺矩阵,红框2,3表示平铺倍数)例三:(列方向平铺矩阵,红框2表示平铺矩阵的倍数)例四:(行方向平铺矩阵,红框3表示平铺矩阵的倍数)二、Kron()方法kron(A,B)

    2022年6月25日
    171
  • 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)

    史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)原文地址:https://blog.csdn.net/forezp/article/details/69808079上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务。一、Feign简介Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可…

    2022年6月25日
    29
  • Mysql和redis_简述Redis和MySQL的区别[通俗易懂]

    Mysql和redis_简述Redis和MySQL的区别[通俗易懂]我们知道,mysql是持久化存储,存放在磁盘里面,检索的话,会涉及到一定的IO,为了解决这个瓶颈,于是出现了缓存,比如现在用的最多的memcached(简称mc)。首先,用户访问mc,如果未命中,就去访问mysql,之后像内存和硬盘一样,把数据复制到mc一部分。redis和mc都是缓存,并且都是驻留在内存中运行的,这大大提升了高数据量web访问的访问速度。然而mc只是提供了简单的数据结构,比如…

    2022年6月16日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号