硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3612|回复: 7
收起左侧

[Embedded Studio] 使用Embedded Studio,如何将printf重映射到USART1?

[复制链接]

25

主题

300

回帖

380

积分

高级会员

积分
380
发表于 2018-11-28 16:55:04 | 显示全部楼层 |阅读模式
使用Embedded Studio,printf默认是输出到Debug Terminal窗口,如何将printf重映射到USART1?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115679
QQ
发表于 2018-11-29 00:34:08 | 显示全部楼层
没测过,我现在是直接重定向SEGGER RTT。
回复

使用道具 举报

25

主题

300

回帖

380

积分

高级会员

积分
380
 楼主| 发表于 2018-12-3 16:37:20 | 显示全部楼层
重定向SEGGER RTT,怎么样设置才能在J-Link RTT Viewer的Terminals显示出来?搞了半天搞不出来
回复

使用道具 举报

5

主题

85

回帖

100

积分

初级会员

积分
100
发表于 2018-12-3 16:45:00 | 显示全部楼层
可以自己创建一个自定义printf函数,函数中调用vsnprintf,然后用USART1输出就行了
回复

使用道具 举报

25

主题

300

回帖

380

积分

高级会员

积分
380
 楼主| 发表于 2018-12-3 16:46:57 | 显示全部楼层
怎么自定义printf函数?
回复

使用道具 举报

25

主题

300

回帖

380

积分

高级会员

积分
380
 楼主| 发表于 2018-12-3 16:50:20 | 显示全部楼层
  1. int printf_USART(const char *fmt,...) {
  2.   char buffer[128];
  3.   va_list args;
  4.   va_start (args, fmt);
  5.   int n = vsnprintf(buffer, sizeof(buffer), fmt, args);
  6.   //SEGGER_RTT_Write(0, buffer, n);
  7.         USART1_SendData(buffer,n);

  8.   va_end(args);
  9.   return n;
  10. }
复制代码
回复

使用道具 举报

25

主题

300

回帖

380

积分

高级会员

积分
380
 楼主| 发表于 2018-12-3 16:51:36 | 显示全部楼层
这样貌似就可以了
回复

使用道具 举报

5

主题

85

回帖

100

积分

初级会员

积分
100
发表于 2018-12-3 16:55:22 | 显示全部楼层
爱恋之燕 发表于 2018-12-3 16:46
怎么自定义printf函数?

直接上代码:
#include <stdarg.h>
#define UART_IF_BUFFER            63
static unsigned char usTxConsoleBuff[UART_IF_BUFFER+1];

void ConsoleReport(const char *format, ...)

        int iRet = 0;
        va_list ap;
        va_start(ap,format);
        iRet = vsnprintf((char*)usTxConsoleBuff,UART_IF_BUFFER,format,ap);
        va_end(ap);
        if(iRet > 0){
             usart1_put(usTxConsoleBuff, iRet);  //串口输出函数,自己定义啦
        }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-11 18:25 , Processed in 0.239996 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表