STC Uart1,Uart2 关联 printf 函数

本文介绍如何在嵌入式系统中重写putchar函数以实现通过UART接口进行字符输出的方法。主要内容包括UART1和UART2的putchar函数实现,解决printf函数调用冲突的问题,并提供keil编译器下具体的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

printf 调用的应该是putchar来打印的函数。
所以应该是需要重写putchar函数。初始化与uart1/2一致。
找到的其他的类似与置 TI=0; 好像是不行

在uart.c 中添加如下片段。
【引用自http://bbs.elecfans.com/jishu_405035_1_1.html

//uart1
void putchar(char c){
    ES = 0;
    SBUF = c;
    while(TI==0);
    TI = 0;
    ES = 1;
}

//uart2
void putchar(char c){
    IE2 &= 0xfe;
    S2BUF = c;
    while((S2CON & S2TI) == 0);
    S2CON &= ~S2TI;
    IE2 |= 0x01;
}

添加完putchar函数后,keil 编译时提示
【C:\KEIL C51\C51\INC\STDIO.H(30): error C231: ‘_putchar’: redefinition】
函数重复定义,此时可以打开stdio.h头文件,注释掉“extern char putchar (char);”
然后再次编译,通过,此时可在任意位置调用printf(“%x, %s, %d,…”, hex, str, int);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值