方法
1.
使用微库
,
因为使用微库的话
,
不会使用半主机模式
.
如果使用的是
MDK
,
请在工程属性的
“Target“-
》
”Code Generation“
中勾选
”Use MicroLIB“
这样以后就可以
使用
printf
,
sprintf
函数了
方法
2.
仍然使用标准库
,
在主程序添加下面代码
:
/*
为确保没有从
C
库链接使用半主机的函数,因为不使用半主机,标准
C
库
stdio.h
中有些使用半主机的
函数要重新写
,
您必须为这些函数提供自己的实现
*/
#pragma import(__use_no_semihosting)
//
确保没有从
C
库链接使用半主机的函数
_sys_exit(int
x)
//
定义
_sys_exit()
以避免使用半主机模式
{
x = x;
}
struct __FILE
//
标准库需要的支持函数
{
int handle;
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;
在独立应用程序中,您不太可能支持半主机操作。
因此,必须确保您的应用程序中没有链接
C
库半主机
函数。
为确保没有从
C
库链接使用半主机的函数,
必须导入符号
__use_no_semihosting
。
可在您工程的
任何
C
或汇编语言源文件中执行此操作,如下所示:
•
在
C
模块中,使用
#pragma
指令:
#pragma import(__use_no_semihosting)
•
在汇编语言模块中,使用
IMPORT
指令:
IMPORT __use_no_semihosting
如果仍然链接了使用半主机的函数,则链接器会报告错误。
