C库函数重定

 ̄綄美尐妖づ 提交于 2020-03-10 10:25:36

#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来作为串口的输出。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!