重定向printf

重定向printf

可以用于iar,keil等编译器

  1. 在工程中任意源文件中定义fputc
    1
    2
    3
    4
    5
    6
    7
    8

    #include <stdio.h>

    int fputc(int ch, FILE *f)
    {
    //这里改成向串口输出的函数
    return ch;
    }

之后可以用printf fprintf putchar等所有stdio的输出函数

原理

iar keil等编译器自己实现了printf等函数,最后都是调用fputc输出
fputc也可以根据穿进来的FILE* 参数自己定义向哪里输出

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
extern FILE screen;
int fputc(int ch, FILE *f)
{
if(f==stdout){
//这里改成向串口输出的函数
} else if(f==&screen){
//这里改成向显示屏输出的函数
} else {
//...
}
return ch;
}
printf会向stdout输出,向其他地方输出用fprintf第一个参数指定向哪个设备输出

0%