金牌会员
 
- 积分
- 1522
- 金钱
- 1522
- 注册时间
- 2014-5-16
- 在线时间
- 217 小时
|
发表于 2016-6-11 00:21:03
|
显示全部楼层
这个函数是KEIL重定向输入输出IO接口时写的,应该是只有在KEIL编译器下能这么用.
首先这是个函数,所以当然要定义函数类型,可能是KEIL5的编译级别和KEIL4的不一样了,所以编译不过.
其实KEIL已经给我们提供了重定向IO的例子,在Keil5\ARM\Startup目录下,就有个Retarget.c,完整代码如下:
[mw_shl_code=c,true]/******************************************************************************/
/* RETARGET.C: 'Retarget' layer for target-dependent low level functions */
/******************************************************************************/
/* This file is part of the uVision/ARM development tools. */
/* Copyright (c) 2005 Keil Software. All rights reserved. */
/* This software may only be used under the terms of a valid, current, */
/* end user licence from KEIL for a compatible version of KEIL software */
/* development tools. Nothing else gives you the right to use this software. */
/******************************************************************************/
#include <stdio.h>
#include <time.h>
#include <rt_misc.h>
#pragma import(__use_no_semihosting_swi)
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 */
}
[/mw_shl_code]
|
|