#include <stdio.h> 头文件
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
USART_SendData(EVAL_COM1, (uint8_t) ch);
while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)
{}
return ch;
}
定义了以上的
然后就可以调用 printf("\n\rPlease enter valid number between 0
and 9");
===============================================================
C库函数重定向
用户能定义自己的C语言库函数,连接器在连接时自动使用这些新的功能函
数。这个过程叫做重定向C语言库函数,如下图所示。
举例来说,用户有一个I/O设备(如UART)。本来库函数fputc()是把字符输出
到调试器控制窗口中去的,但用户把输出设备改成了UART端口,这样一来,
所有基于fputc()函数的printf()系列函数输出都被重定向到UART端口上去
了。
下面是实现fputc()重定向的一个例子:
extern void sendchar(char*ch);
int fputc(intch,FILE*f)
{
char tempch=ch;
sendchar(&tempch);
return ch;
}
这个例子简单地将输入字符重新定向到另一个函数sendchar(),sendchar()
假定是个另外定义的串口输出函数。在这里,fputc()就似乎目标硬件和标
准C库函数之间的一个抽象层。
这里是用来进行printf的重定向的,就是我们像用我们C语言标准库的的printf一样来适用prinf来作为串口的输出。
来源:https://www.cnblogs.com/itloverhpu/archive/2013/06/01/3111857.html