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;
}
相关推荐
殷忆枫14 小时前
基于STM32+OV2640+ESP8266的无线图像采集系统设计与实现
stm32·单片机·嵌入式硬件
llilian_1614 小时前
便携式相位测量模块应用方案的核心优势
网络·功能测试·单片机
无足鸟ICT14 小时前
【RHCA+】$[]
linux·运维·服务器
运维技术小记14 小时前
国产化环境配置 VNC 远程桌面:麒麟 V10 实战
linux·运维·服务器
xiaoye-duck15 小时前
《Linux系统编程》Linux 系统多线程(八): C++ 高并发线程池全链路深度解析与从零手撕实现
linux·c++·线程池
寒水馨15 小时前
Linux下载、安装protobuf-v35.1(附安装包protoc-35.1-linux-x86_64.zip)
linux·运维·服务器·google·序列化·protobuf·protoc
王琦031816 小时前
Linux的文件管理
linux·运维·服务器
Android系统攻城狮16 小时前
Linux PipeWire深度解析之pw_stream_new调用流程与实战(四十二)
linux·运维·服务器·音频进阶·pipewire音频进阶
蜉蝣fuyou16 小时前
VMware多版本安装包
linux·vmware·虚拟机
不会代码的小猴16 小时前
Linux note2
linux·笔记