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

640?wx_fmt=jpeg

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


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


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


SWO:Serial Wire Output,串行线输出


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


一、常见printf输出

1.UART打印

640?wx_fmt=png

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


2.Keil MDK-ARM Viewer输出

640?wx_fmt=png


3.IAR EWARM终端输出

640?wx_fmt=png


4.ST-LINK Utility SWV输出

640?wx_fmt=png


这后面三种不占用硬件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输出:

640?wx_fmt=png


添加代码:

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


在Keil的Options中设置:

640?wx_fmt=png


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


四、IAR EWARM终端输出

1.Oprtins设置:

640?wx_fmt=png


640?wx_fmt=png


2.SWO配置

640?wx_fmt=png


640?wx_fmt=png

640?wx_fmt=png


五、ST-LINK Utility SWV输出

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

640?wx_fmt=png


640?wx_fmt=png

640?

1.在你正觉得STM32F3还缺点儿啥时,STM32G4来了!

2.戏说二十余国产操作系统之天理命数

3.在做5G项目的嵌入式工程师,请留意META-DX1!

4.LabVIEW这么“反人类”的东西,到底哪些人在用?月薪2万+的人,笑笑不说话...

5.鸿蒙将至,安卓安否?

6.5G基站为何建得比4G多?

640?wx_fmt=gif

本文来自个人微信公众号「ID:strongerHuang」,经原作者授权发布。原文公众号由嵌入式工程师「strongerHuang」在精心整理并维护。专注分享的内容包含:Keil、IAR、STM8、STM32、μC/OS、FreeRTOS、CANOpen、ModBus...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值