printf调试到串口信息输出,是程序调试的重要方法之一。
51单片机自带串口资源, 需要提前配置好。基本原理:对printf调用的putchar函数重新定向。也就是自定义一个putchar函数
**********************首先需要知道的几个要点:***************************
printf调用前需要加入标准库头文件 #include"stdio.h"
printf原理:根据用户提供的格式化的字符串,可变参数,构造出一个最终输出字符串。之后再调用标准库的putchar函数打印输出信息。
既然是输出到串口, 那么, 至少需要配置最基本的串口功能
**************************************************************************
正文:
配置UART.C和头文件.h 并在这两个文件中实现putchar的重新定向。
#ifndef _UART_H
#define _UART_H
void UartDriver(); //串口调用,需要在主循环中调用。负责读写数据,并调用其他函数中的UartAction
void ConfigUART(uint16_t baud); //调用T1 配置波特率的起始重载值TH1,TL1
void UartRxMonitor(uint8_t ms); //ms 时间间隔, 大于该时间认为是数据结束。并将flagFram置一表示帧接收完成。
void UartWrite(uint8_t *buf, uint8_t len); //串口数据写入, buf待发数据,len发送长度,依次发送buf[] 标志位TI = flagTxd
uint8_t UartRead(uint8_t *buf, uint8_t len); //串口数据读取, buf接收指针,设定的len读取长度(可大于接收到的长度),依次写入buf[](interrupt4)并返回更新后的len(接收到的字符长度)
/**printf输出到串口数据部分*************************************
uart.c文件的最后附带了重新定向的putchar函数, 一般是被注释掉的,
如果需要printf输出到串口数据, 则恢复该段代码即可。
*/
char putchar(char c); //重新定向putchar
#endif
/*=======================
适用于51单片机的UART串口文件
1.使用前需要配置波特率,在configUart中传递波特率形参, 串口模式只能用8位数据位1位起始

文章详细介绍了如何在51单片机上使用UART串口进行printf调试,包括配置UART、重定向putchar函数以输出到串口,以及串口的发送和接收函数的实现。通过配置串口参数和自定义putchar,可以将printf的输出信息通过串口发送,实现程序的串口调试。
最低0.47元/天 解锁文章
1100

被折叠的 条评论
为什么被折叠?



