基于STM32的多种printf用法 你都知道吗?

描述

在调试代码的时候,最常用的就是使用printf函数来输出一些打印信息,提示自己代码的执行情况。

如果你的UART串口不够用,还要用printf,此时该怎么办?

方法其实是有的,那就是:使用SWO/SWV。

SWO:Serial Wire Output,串行线输出

SWD:Serial Wire Viewer,串行线查看器

一、常见printf输出

1.UART打印

Printf

这种使用UART串口输出,需要占用一个硬件串口。

2.Keil MDK-ARM Viewer输出

Printf

3.IAR EWARM终端输出

Printf

4.ST-LINK Utility SWV输出

Printf

这后面三种不占用硬件UART,使用ITM机制。

二、UART映射printf

这种方法应该很多人都知道,就是使用硬件UART串口映射,实现printf打印输出。

对于Keil、 IAR,只需要添加如下代码,就可以使用printf函数:

#include "stdio.h"int fputc(int ch, FILE *f){  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF); return ch;}

意思就是将UART输出(串口输出一个字符)进行映射。

三、Keil MDK-ARM Viewer输出

针对2、3、4输出:

Printf

添加代码:

#include "stdio.h"int fputc(int ch, FILE *f){ ITM_SendChar(ch); return ch;}

在Keil的Options中设置:

Printf

提示:Core Clock内核时钟要和你实际时钟对应。

四、IAR EWARM终端输出

1.Oprtins设置:

Printf

Printf

2.SWO配置

Printf

Printf

Printf

五、ST-LINK Utility SWV输出

工具在线查看输出信息,需要上面配置代码,通过ST-Link链接即可。

Printf

Printf

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分