声明
本文内容转载至https://www.mculover666.cn/posts/2251182441/
1.printf与fputc
printf
定义在 <stdio.h>
头文件中,如下:
int printf(const char *format, ...);
printf
函数根据 format
字符串给出的格式打印输出到 stdout
(标准输出)中,当然,printf
函数是不会一个字符一个字符去输出,它会调用更底层的 I/O 函数:fputc
去逐个字符打印。
fputc
也定义于头文件 <stdio.h>
中,如下:
int fputc(int ch, FILE *stream);
fputc
函数写入字符 ch
到给定输出流 stream
,printf
函数在调用该函数时,会向stream
参数传入stdout
从而打印数据到标准输出。
那么,要实现printf
打印到串口就变得非常简单了,只需要重新定义fputc
函数,在fputc
的函数中将数据通过串口发送,称之为:fputc
重定向或者printf
重定向。
2.在MDK中使用MicroLib重定向printf
勾选Use MicroLib
MicroLib是对标准C库进行了高度优化之后的库,供MDK默认使用,相比之下,MicroLIB的代码更少,资源占用更少: