找回密码
 立即注册
查看: 102|回复: 2

8h8k64u串口使用printf问题

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2025-04-12 15:59:55

10

主题

17

回帖

74

积分

注册会员

积分
74
发表于 2025-2-11 18:08:43 | 显示全部楼层 |阅读模式

程序:

#include <stdio.h>

#include <STC8H.H>

int MY_putchar(int c) {
while (!TI);
TI = 0;
SBUF = c;
return c;
}

使用串口1:
void Uart1_Init(void) //2000000bps@40MHz
{
P3M0 = 0x00; P3M1 = 0x00;
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x01; //串口1选择定时器2为波特率发生器
AUXR |= 0x04; //定时器时钟1T模式
T2L = 0xFB; //设置定时初始值
T2H = 0xFF; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
TI = 1;
}

void main(void)

{

Uart1_Init();

while(1)

{

printf("AA"r\n);

}

}

这程序串口printf可以正常输出AA字符,

注释掉:
//int MY_putchar(int c) {
//while (!TI); // 等待发送完成
//TI = 0; // 清除发送标志
//SBUF = c; // 将字符写入串口缓冲区
//return c; // 返回字符
//}

后串口printf不输出,为什么??

我其他地方没有任何改动,也没有定义putchar(定义会报错),而是定义的MY_putchar,,,为什么串口可以正常输出???

这是如何关联到我定义的MY_putchar的?

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2025-04-12 15:59:55

10

主题

17

回帖

74

积分

注册会员

积分
74
发表于 2025-2-11 22:07:50 来自手机 | 显示全部楼层
wnagming 发表于 2025-2-11 20:38
MY_putchar是你随便写的?这不可能啊

MY_putchar原先是putchar但是使用会报错,我就改了一下,结果反而能用?
怎么可能关联到我写的函数上呢?
但确实可以用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 14:37:11
已绑定手机

77

主题

4849

回帖

8382

积分

超级版主

DebugLab

积分
8382
发表于 2025-2-11 22:13:46 | 显示全部楼层
DebugLab
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 17:52 , Processed in 0.147590 second(s), 58 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表