软件平台:Keil4.7.4
在VC平台下编程时包含stdio.h函数再调用printf函数即可将想要打印的内容输出到控制台上(stdout),但在Keil开发环境下并没有控制台,所以想要调用printf函数需要将printf函数的输出重新定向到UART上,在UART上使用串口调试助手接收打印信息。
Keil中是通过fpuc()和fgetc()两个函数来建立printf函数和硬件平台之间的链接的,所以我们只需要填充这两个函数就可以实现基本的printf和scanf函数功能。
Retartget.c
#include #include #include #pragma import(__use_no_semihosting_swi)//¸ÃÎļþÊÇΪÁËʹÓÃprintfÎļþºÍscanfÎļþextern int sendchar(int ch); /* in Serial.c */extern int getkey(void); /* in Serial.c */extern long timeval; /* in Time.c */struct __FILE { int handle; /* Add whatever you need here */ };FILE __stdout;FILE __stdin;int fputc(int ch, FILE *f) { return (sendchar(ch));}int fgetc(FILE *f) { return (sendchar(getkey()));}int ferror(FILE *f) { /* Your implementation of ferror */ return EOF;}void _ttywrch(int ch) { sendchar (ch);}void _sys_exit(int return_code) { while (1); /* endless loop */}
同时将串口的输出连接到这两个函数,这里使用UART0
int sendchar(int ch){ UART0_SendByte(ch); return(ch);}int getkey(void){ return (int)UART0_GetChar();}
至此printf函数和scanf函数基本功能可以使用,在实际调试过程中将UART0通过串口线与电脑的串口调试助手连接即可看见打印信息。