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;
}
相关推荐
炸膛坦客10 小时前
单片机开发工具篇:(十四)配置输出 .map 文件及其本地路径
c语言·单片机·嵌入式硬件
Ivanqhz10 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
笨笨饿11 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
我叫洋洋13 小时前
Cadence CIS 元器件库合并实战:3000+ 焊盘、156 个符号零冲突并入自有库
数据库·单片机·嵌入式硬件·oracle·电路
殷色玫瑰13 小时前
C/C++ 内存管理详解:从内存分布到 new/delete 底层原理
java·linux·c语言·c++
꯭自꯭闭꯭14 小时前
DM7主备升级方案
linux·服务器·数据库
用户41071920132514 小时前
VMware 虚拟机Ubuntu 环境linux远程连接失败
linux
ebiobiz14 小时前
极海 APM32 使用 Nimmake 编译指南
c++·python·单片机·嵌入式硬件·mcu
lisanmengmeng15 小时前
Nagios邮件报警的配置
linux·运维·服务器
Ruiery15 小时前
Linux 6.6内核 CPU 深度解析(六):cpufreq
linux·运维·服务器