keil中勾选microlib使用printf
标签:
stm32keilprintf |
分类: STM32 |
memcpy()。microlib 与缺省 C 库之间的主要差异是:
-
microlib 不符合 ISO C 库标准。 不支持某些 ISO 特性,并且其他特性具有的功能也较少。
-
microlib 不符合 IEEE 754 二进制浮点算法标准。
-
microlib 进行了高度优化以使代码变得很小。
-
无法对区域设置进行配置。 缺省 C 区域设置是唯一可用的区域设置。
-
不能将
main()声明为使用参数,并且不能返回内容。 -
不支持
stdio,但未缓冲的stdin、stdout和 stderr除外。 -
microlib 对 C99 函数提供有限的支持。
-
microlib 不支持操作系统函数。
-
microlib 不支持与位置无关的代码。
-
microlib 不提供互斥锁来防止非线程安全的代码。
-
microlib 不支持宽字符或多字节字符串。
-
与 stdlib 不同,microlib 不支持可选择的单或双区内存模型。 microlib 只提供双区内存模型,即单独的堆栈和堆区。
-
可以合理地将 microlib 与
--fpmode=std或 --fpmode=fast配合使用。
microlib 中的函数负责:
-
创建一个可在其中执行 C 程序的环境。 这包括:
-
创建一个堆栈
-
创建一个堆(如果需要)
-
初始化程序所用的库的部分组成内容。
-
-
调用
main()以开始执行程序。
要使用 microlib 构建程序,必须使用命令行选项 ??library_type=microlib。
根据需要,编译器、汇编程序或链接器可使用此选项处理不同的文件。 将此选项与链接器配合使用时,将覆盖所有其他选项。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
加入下列代码,再勾选USE_MIcro LIB,使用printf
#ifdef __GNUC__
#else
#endif
PUTCHAR_PROTOTYPE
{
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
加入下列代码,不用勾选USEmicrolib,使用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)
{
while((USART1->SR&0X40)==0);//Ñ»··¢ËÍ,Ö±µ½·¢ËÍÍê±Ï
return ch;
}
#endif

加载中…