STM32umicrolib是⼲什么的2016-04-2523:131298⼈阅读评
论。。。
2016-04-25 23:131298⼈阅读(0)
STM32(15)
分类:
版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。
1.选上”U MicroLIB”这是KEIL⾃带的⼀个简易的库,例如你⽤printf函数的时候,就会从串⼝1 输出字符串,直接默认定向到串⼝1
2.microlib 是缺省 C 库的备选库。它⽤于必须在极少量内存环境下运⾏的深层应⽤程序。这些应⽤程序不在中运⾏。microlib 不会尝试成为符合标准的 ISO C 库。
microlib 进⾏了⾼度优化以使代码变得很⼩。它的功能⽐缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运⾏速度也⽐较慢,例如,memcpy()。
3.
查找小米手机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。根据需要,编译器、汇编程序或链接器可使⽤此选项处理不同的⽂件。将此选项与链接器配合使⽤时,将覆盖所有其他选项。
4.
//加⼊以下代码,⽀持printf函数,⽽不需要选择u MicroLIB
#if 1
#pragma import(__u_no_mihosting)
//标准库需要的⽀持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使⽤半主机模式
_sys_exit(int x)
{
原来我和你
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
湘菜
{
#ifdef COM_EX
com_snd(COM2, 1, (unsigned char*)&ch);
#el
拜年话不吃早餐的好处com_snd(COM1, 1, (unsigned char*)&ch);
#endif
return ch;
}
word个人简历
#endif
/*使⽤microLib的⽅法,在keil⾥⾯要勾选“U MicroLIB”*/
// 以便使⽤ printf 函数
// #define UTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
// UTCHAR_PROTOTYPE
// {
// #ifdef COM_EX
/
/ com_snd(COM2, 1, (unsigned char*)&ch);
// #el
// com_snd(COM1, 1, (unsigned char*)&ch);
// #endif
//
// return ch;
// }
我试了试确实是可以,不知道,如果不⽤U MicroLIB,prinft 和sprintf 其他影响不,我去验证⼀下