为什么printf可以直接uart输出_Keil调用printf函数

软件平台: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 */}
6a167ebf33a85d2c72b41aaea60f8586.gif

同时将串口的输出连接到这两个函数,这里使用UART0

int sendchar(int ch){ UART0_SendByte(ch); return(ch);}int getkey(void){ return (int)UART0_GetChar();}
6a167ebf33a85d2c72b41aaea60f8586.gif

至此printf函数和scanf函数基本功能可以使用,在实际调试过程中将UART0通过串口线与电脑的串口调试助手连接即可看见打印信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值