在keil (我用的是realview mdk3.11)建立ARM的工程时
其中有一项是选 use MicroLIB
由于对KEIL不是很熟悉,于是就查了查,得到了以下信息:
microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。
microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运行速度也比较慢,例如,memcpy()
与缺省 C 库之间的差异

microlib 与缺省 C 库之间的主要差异是:

  • microlib 不符合 ISO C 库标准。 不支持某些 ISO 特性,并且其他特性具有的功能也较少。

  • microlib 不符合 IEEE 754 二进制浮点算法标准。

  • microlib 进行了高度优化以使代码变得很小。

  • 无法对区域设置进行配置。 缺省 C 区域设置是唯一可用的区域设置。

  • 不能将 main() 声明为使用参数,并且不能返回内容。

  • 不支持 stdio,但未缓冲的 stdinstdout 和 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

/* Private function prototypes -----------------------------------------------*/
#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */  
/* Private functions ---------------------------------------------------------*/

/**
  * @brief  Retargets the C library printf function to the USART.
  * @param  None
  * @retval None
  */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the USART */
  USART_SendData(EVAL_COM1, (uint8_t) ch);
  /* Loop until the end of transmission */
  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)
  {
  }
  return ch;
}

//

//

加入下列代码,不用勾选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);//Ñ­»··¢ËÍ,Ö±µ½·¢ËÍÍê±Ï   
    USART1->DR = (u8) ch;      
return ch;
}
#endif

keil中micro lib相关推荐

  1. keil中创建lib库,使用lib库

    在keil5 MDK 中,为一段代码封装LIB库 首先,创建一个工程,该工程选的芯片型号和原先的工程保持一致. 然后,导入源码,导入的源码不需要添加main.c 或者main()函数入口 lib库的名 ...

  2. keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...

    Keil软件"C语言"与"汇编"混编 相关知识整理 用Keil在C中嵌入汇编1 在Keil中嵌入汇编2 介绍直接嵌入汇编代码的方法4 采用汇编可能会有的好处5 ...

  3. 辅助开发: Keil中使用Aystyle 快速格式化所有代码

    辅助开发: Keil中使用Aystyle 快速格式化所有代码 开始 添加菜单到KEIL 我使用的参数 部分参数定义参考 官方参数参考 Usage: Options: Option Files: Dis ...

  4. KEIL中STM32F4系列使能FPU

    操作步骤 1.在KEIL使能FPU,参考下图 2.在KEIL添加FPU的宏定义 3.一些配置宏说明 __TARGET_FPU_VFP       // FPU的条件编译配置宏(开和关) -> 配 ...

  5. 【LVGL】学习笔记--(1)Keil中嵌入式系统移植LVGL

    一 LVGL简介 最近emwin用的比较烦躁,同时被LVGL酷炫的界面吸引到了,所以准备换用LVGL试试水. LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切 ...

  6. 转载:keil中使用Astyle格式化你的代码的方法2篇合

    转自:https://blog.csdn.net/STM32F4/article/details/46649353 关于Astyle Astyle 的全称是Artistic Style的简称,是一个开 ...

  7. Keil中找不到芯片,往Keil中添加不存在的芯片,Keil安装pack文件

    Keil中如果找不到自己要使用的芯片,可以使用Keil的"Pack installer"找到目标芯片进行下载安装,但是会很慢,因为有些芯片的Pack本来就很大,可以到几百MB. 所 ...

  8. Keil C 里面Lib库文件的生成与调用

    附件里是制作方法介绍,还有LCD1602的例子,有视频教程,呵呵,自己做的. Keil C里面 lib文件生成方法 包含关系 LCD1602.C里面包含LCD1602.H LCD1602.H的文件格式 ...

  9. VS2010中添加lib库引用

     一.VS2010中添加lib库引用: 1 菜单  项目---> 属性--->配置属性-->链接器---->输入---附加依赖项,  加入库名,如: my_API.lib; ...

最新文章

  1. Hibernatediscriminator-value用法
  2. idea springboot热部署无效问题
  3. android小程序下线,关闭小程序
  4. jsp内置对象的提交方式
  5. OpenStack Keystone架构
  6. Windows 10 Creators Update隐私策略变动一览
  7. iOS 使用脚本自动化复制target
  8. java j2se下载_安装JDK(J2SE)
  9. CVE-2019-11477漏洞详解详玩
  10. c语言鸽笼原理,技巧丨弄懂抽屉原理
  11. Vue路由导航报错:NavigationDuplicated: Avoided redundant navigation to current location解决方法
  12. 抢先入驻皮皮虾APP社区 红利初期第一批操作者绝对有肉吃
  13. 电大形考作业c语言答案,题目精编国家开放大学电大《管理信息系统》形考网络课作业1-4试题及答案...
  14. 腾讯云API接口鉴权v3 鉴权失败问题 AuthFailure.SignatureFailure
  15. 项目经理培训后的一点感概
  16. 基于FPGA的ASCII码日期转时间戳算法实现
  17. 【人脸识别】LPP人脸特征提取【含GUI Matlab源码 1491期】
  18. gazebo的bumper使用
  19. 设计模式 工厂模式 从卖肉夹馍说起
  20. 向公司爱康宣传栏投稿:回顾过去,展望未来

热门文章

  1. Java二手交易平台
  2. 我所经历的Android面试
  3. 乔布斯斯坦福大学演讲---活出你自己
  4. 从一个技术人的炫酷简历,聊聊我公司的技术栈
  5. 应广单片机的建表方式
  6. PP-YOLOE实现自动驾驶场景检测
  7. 转载PLMN ISDN PSTN
  8. 初学者一学就会的小程序开发——推箱子
  9. 【VIS】Classifying,Segmenting,and Tracking Object Instances in Video with Mask Propagation
  10. 计算机图形学(1)地图绘制