STM32F429 基于 SWO printf打印输出配置笔记(代替物理串口)

网上大神关于基于SWO的printf打印输出4种方式,
·基于Keil的『Debug(printf)Viewer』
·基于IAR的『Terminal IO』
·基于ST-LINK Utility的『Serial Wire Viewer』
·基于J-Link的『SWO Viewer』
现在只有 基于ST-LINK Utility SWO printf打印输出测试是有效的,记录如下:
1、main.c文件中,重定向printf到ITM,实现SWO输出

#include "stdio.h"
........
/* USER CODE BEGIN 4 */
int fputc(int ch, FILE *f) 
{ 
    ITM_SendChar(ch); 
    return ch; 
}
/* USER CODE END 4 */

2、keil配置-1在这里插入图片描述
3、keil配置-2
在这里插入图片描述
4、ST-LINK Utility配置
在这里插入图片描述
5、例程

int main(void)
{
		 int TEST_num=0;
		 ........
		 //初始化
		 .......

         TEST_num=3;
         printf("cnt = %d\n", TEST_num);  
         delay_ms(1000);
         TEST_num=6;
         printf("cnt = %d\n", TEST_num);  
}

在这里插入图片描述

以上测试ok。

-------------------------分隔线-----------------------分隔线-------------------------分隔线-----------------------分隔线-----------------------

问题:
如果采用keil debug方式,Debug (printf)Viewer窗口总是不断打印出 ”e0“等乱码,不知道哪里有问题
在这里插入图片描述
不死心又试了这个大神的方法,目前有效
Keil中使用Debug (printf) Viewer显示串口信息代替物理串口
这种方式不需要重写int fputc(int ch, FILE *f) 函数,但是如果已经重新定义过fputc函数,并且不能显示打印信息,建议注释掉fputc函数试下。
实测在keil调试的过程中,使用debug printf viewer打印信息,printf函数执行时间56us。

20220511更新:
以上删除这一步
Keil工具栏的 Manage Run-Time Environment
将STDOUT,STDIN,STDERR勾选,并设置为ITM
printf函数依然可以在debug printf viewer窗口中打印出信息。

参考:

使用SWO代替UART,实现Printf打印功能
printf系列教程05_SWO打印输出配置,基于ST-LINK Utility『SWV』
printf系列教程

-------------------------分隔线-----------------------分隔线-------------------------分隔线-----------------------分隔线-----------------------
备忘录:
printf 实现多行显示:

printf("a = %d\n b = %d\n c = %d\n d= %d\n", a,b,c,d);
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值