CCS 20.5.0的printf重定向串口怎么实现?

摘要:本文介绍了在不同嵌入式平台上重定向printf输出到串口的实现方法。重点说明了三步操作:1.初始化串口;2.添加fputc重定向函数,将字符发送至UART;3.包含stdio.h头文件即可使用printf。同时提供了三种常见平台(TI CCS、GCC+Newlib、IAR)的具体实现代码示例,帮助开发者在不同环境下快速实现串口调试输出功能。

三步即可

一、初始化串口

依次点击串口初始化配置

二、重定向

添加重定向函数,放哪里都可以

复制代码
/**
 * @brief  重定向 printf 底层输出到 UART
 *
 *         标准库 printf 最终会调用 fputc 输出每个字符,
 *         重写此函数即可让 printf 直接通过串口打印,
 *         无需任何包装函数。
 */
int fputc(int ch, FILE *f)
{
    DL_UART_Main_transmitDataBlocking(debug_INST, (uint8_t)ch);
    return ch;
}

三、包含头文件

在要使用printf的文件下,添加头文件包含#include <stdio.h>,即可使用和c语言几乎一样的printf函数

四、其他厂商单片机方法

各平台的写法不太一样

复制代码
各平台参考写法

// === TI CCS (你当前用的) ===
int fputc(int ch, FILE *f)
{
    DL_UART_Main_transmitDataBlocking(debug_INST, (uint8_t)ch);
    return ch;
}

// === GCC + Newlib (STM32/GD32/大多数 ARM) ===
int _write(int fd, char *ptr, int len)
{
    for (int i = 0; i < len; i++)
        HAL_UART_Transmit(&huart1, (uint8_t *)&ptr[i], 1, HAL_MAX_DELAY);
    return len;
}

// === IAR ===
size_t __write(int handle, const unsigned char *buf, size_t size)
{
    for (size_t i = 0; i < size; i++)
        UART_SendByte(buf[i]);
    return size;
}
相关推荐
Android系统攻城狮20 分钟前
Linux FFmpeg深度解析之avformat_open_input调用流程与实战(一)
linux·运维·ffmpeg·车载音视频·ffmpeg音视频·音视频进阶手册
吹什么轩1 小时前
linux系统复习:Ext 文件系统(一个文件在磁盘上到底长什么样)
linux·运维·服务器
吹什么轩1 小时前
linux系统复习:全景串联
linux·运维·服务器
m0_547486661 小时前
《Ubuntu Linux操作系统与实验教程》全套PPT课件2026
linux·ubuntu·操作系统
John_Hui1 小时前
第 1 篇:VMware 安装 Ubuntu 24.04.3 Server
linux·运维·ubuntu
kyle~2 小时前
C++ 原子操作、内存模型与无锁并发编程
linux·开发语言·c++·操作系统
2401_869769592 小时前
gdb_进程概念
linux
小猪佩奇TONY2 小时前
Linux 内核学习(19) --- linux swap 机制
linux·学习·swap·kswapd
创界工坊工作室3 小时前
50-基AT89C51的自动窗帘控制系统的设计
stm32·单片机·嵌入式硬件·51单片机·proteus
第404号工位3 小时前
浏览器的“无痕模式”是当代最大安慰剂?我用 30 行 JS 提取硬件指纹,跨网络换代理照样精准锁定你
linux·人工智能·python