printf函数是标准的库函数,定义在stdio.h文件中。
printf函数在keil的底层:
在keil中的标准C库中,printf、scanf等输入输出数据流函数是通过fputc、fgetc来实现最底层操作的,所以我们只需要在我们的工程中重定义这两个函数的功能就可以实现printf、scanf等数据流函数的重映射。因此看到通过printf函数向串口输出字节,一般会有如下fputc函数的重定义。
// 加入以下代码支持printf函数
#if 1
#pragma import(__use_no_semihosting)
struct __FILE
{
int handle;
};
FILE __stdout;
_sys_exit(int x)
{
x = x;
}
int fputc(int ch, FILE *f) // 重新定义fputc函数
{
while((USART1->SR&0X40)==0);//
USART1->DR = (u8) ch;
return ch;
}
#endif