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;
}
相关推荐
左手厨刀右手茼蒿2 小时前
PCIe设备驱动开发:从枚举到DMA传输的完整链路
linux·嵌入式·系统内核
济6172 小时前
I.MX6U Linux 驱动开发篇---零基础必看!中断实验(按键中断 + 定时器消抖 + 设备树配置实战教程)--- Ubuntu20.04
linux·驱动开发·嵌入式·嵌入式linux驱动开发
seven_stars_2 小时前
CVE-2018-19518PHP漏洞
linux·浏览器·kali
浅止菌3 小时前
嵌入式设备ping不通?tcpdump 5分钟找到凶手,比加printf快10倍
linux
巴啦啦小魔仙变身3 小时前
SIGINT = Signal Interrupte
linux·服务器·python
謓泽3 小时前
【6.26】芯片测试入门 从零搭自动化测试框架|PyVISA+OOP 保姆级教程
stm32·单片机·fpga开发·雷达·tr
RisunJan3 小时前
Linux命令-route(查看/修改 IP 路由表)
linux·运维
凉、介4 小时前
Linux 设备驱动匹配机制
linux·笔记·单片机·学习·操作系统·嵌入式
卵男(章鱼)4 小时前
第4章:软件架构与SOA
linux·车载系统·汽车