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;
}
相关推荐
无奈笑天下16 小时前
银河麒麟上nproc命令教程详解
linux·运维·服务器
Rabitebla20 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
坤坤子吖1 天前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
AI_Gump1 天前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
星恒随风1 天前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
少司府1 天前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
无足鸟ICT1 天前
【RHCA+】IO调度算法
linux·服务器
wacsii1 天前
【Linux进程(四)】命令行参数与环境变量
linux·服务器
无奈笑天下1 天前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
科研邪修法1 天前
培训PDF保护配置:把需求转换成可验收权限
linux·服务器·网络