串口利用printf函数打印信息

文章介绍了如何通过重定义putchar函数,将printf的输出从标准输出重定向到串口,以便在单片机STC15F2K60S2上实现串口打印。通过修改stdio.h中的putchar函数并配置串口初始化设置,可以实现在串口1上以9600bps发送HelloWorld!的信息。
摘要由CSDN通过智能技术生成

一、原理:

  1. 思路:

我们初学c语言时应该都用printf函数在计算机中打印过信息,而原本的printf函数是利用putchar函数向内部发送信息,如果我们修改一下putchar函数,向串口发送信息,就能实现printf函数在串口中打印信息。

  1. 为什么我们可以实现putchar函数的重定义(重映射)呢?

extern char putchar (char);

在"stdio.h"头文件中,将putchar函数用extern关键字修饰了,使它可以在其他文件被修改,即重映射

二、参考代码:(STC15F2K60S2)

#include <STC15F2K60S2.H>
#include <stdio.h> 
void UartInit(void)    ;
void main()
{
    UartInit();
    while(1)
    {
        printf("Hello World!\r\n");

    }
}

void UartInit(void)        //9600bps@12MHz
{
    SCON = 0x50;        //8位数据,可变波特率
    AUXR |= 0x40;        //定时器时钟1T模式
    AUXR &= 0xFE;        //串口1选择定时器1为波特率发生器
    TMOD &= 0x0F;        //设置定时器模式
    TL1 = 0xC7;            //设置定时初始值
    TH1 = 0xFE;            //设置定时初始值
    ET1 = 0;            //禁止定时器中断
    TR1 = 1;            //定时器1开始计时
}


/*
    重映射putchar函数
*/
char putchar (char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
    return c;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值