关注+星标公众,不错过精彩内容

作者 | strongerHuang

微信公众号 | strongerHuang

初学者使用 Keil 学习单片机,用串口printf打印输出时,通常都会使能Keil工具自带的微库(MicroLib):

最近看到有读者在讨论Keil的MicroLib微库和标准C库的话题,今天就来给大家简单分享一下相关内容。

什么是MicroLib?

MicroLib是针对以C语言编写的基于ARM嵌入式应用程序的高度优化的库

与ARM Compiler工具链附带的标准C库相比,MicroLib具有明显的代码大小优势。

上图是一个性能基准测试代码,通过上图可以发现,微库在不同内核下代码量明显少很多。

补充:

C语言标准库,我们经常都会调用,比如:<stdio.h>、 <stdlib.h>、 <string.h>、 <math.h>、 <error.h>、 <assert.h>等库文件。

在这些文件下还有很多各类库函数,比如:printf()、 malloc()、 memcpy()、 strncpy()等。

微库与标准C库区别

因为针对Arm的嵌入式系统,通常存储(代码)资源相对较小,为了使其能用上标准函数,工程师就针对Arm嵌入式系统,对标准C库进行了优化,以减小代码量。

优化标准库,肯定会带来一些差异,下面分享几点主要的差异:

1.代码(数据)量更小(对比上图)

2.缺少一些不常用标准库函数,比如:文件 I/O 的库函数。

3.微库最大程度优化代码量,可能会导致有些库代码运行速度更慢。

4.可用于RTOS这类系统中,但不支持在像Windosw这类系统中。

总结

微库函数也是一种函数,其很多库函数原型在网上都能找到,如果你有特殊需求,可以不用微库,在库函数原型的基础上进行修改。

比如:你的项目经过验证,发现微库的代码量,或者运行速度都不理想的情况下,可以自己修改原型函数。

当然,在万不得已的情况下才建议修改原型函数。通常还是建议直接使用微库,毕竟经过别人多次验证的库,出现bug的概率更小。

------------ END ------------

●专栏《嵌入式工具

●专栏《嵌入式开发》

●专栏《Keil教程》

●嵌入式专栏精选教程

关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

点击“阅读原文”查看更多分享。

Keil微库 vs 标准C库相关推荐

  1. MicroLib微库和ARM标准C库有什么区别?

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | 嵌入式专栏 我们在使用Keil MDK编程,用到printf打印输出时,通常都会使能Keil工具自带的微库(Mi ...

  2. Keil to STM32CubeIDE标准库移植

    Keil to STM32CubeIDE标准库移植 一.新建CubeIDE空白工程 这里以个人使用的STM32F407为例,新建空白工程即不使用HAL库,上图 注意选择Empty,然后Finish 建 ...

  3. keil stm32标准库放在哪里_使用Keil MDK以及标准外设库创建STM32工程

    应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板,个人录制,欢迎指正.下载地址:http://dl.dbank.com/c0w0ehqynd 2013.3补充在线视频教程 ...

  4. MicroLib微库和ARM标准C库:usart使用中printf重定向引起的问题

    方法一:使用微库(微雪) 在usart.c中添加如下代码: #ifdef __GNUC__/* With GCC/RAISONANCE, small printf (option LD Linker- ...

  5. 使用Keil MDK以及标准外设库创建STM32工程

    应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板,个人录制,欢迎指正.下载地址:http://dl.dbank.com/c0w0ehqynd 2013.3补充在线视频教程 ...

  6. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  7. 提高C++性能的编程技术笔记:标准模板库+测试代码

    标准模板库(Standard Template Library, STL)是容器和通用算法的强效组合. 渐近复杂度:算法的渐近复杂度是对算法性能的近似估计.它是算法集到特定性能标准集的映射.如果需要对 ...

  8. C++中标准模板库std::vector的实现

    以下实现了C++标准模板库std::vector的部分实现,参考了 cplusplus. 关于C++中标准模板库std::vector的介绍和用法可以参考 https://blog.csdn.net/ ...

  9. C++中标准模板库std::pair的实现

    以下用C++实现了标准模板库中的std::pair实现,参考了 cplusplus 和 vs2013中的utility文件. 关于std::pair的介绍和用法可以参考: https://blog.c ...

最新文章

  1. leetcode算法题--设计链表
  2. Spring Boot + JSP 创建web项目
  3. C语言 system相关的函数
  4. 智能家居——IoT零基础入门篇
  5. jquery怎么判断不同的字显示不同的颜色_这个双十一,摄影师的显示器该换了,优派VP2785-2K显示器评测_显示器...
  6. 如何让多文本内容只显示一行,其余用省略号来显示
  7. 前端学习(1936)vue之电商管理系统电商系统之再关闭对话框defkeys
  8. [Ajax] 实现跨域访问
  9. java课设电子门禁_中控门禁pullSdk Java demo 中控智慧门禁系统 - 下载 - 搜珍网
  10. iOS中copy,retain,strong,assign,weak的区别以及使用
  11. 江苏省计算机二级C操作题汇编
  12. RedisTemplate 概述 与 操作 Redis 5 种数据类型
  13. 使用inno setup制作安装包
  14. java蓝字代表什么_蓝是什么意思 蓝字五行属什么
  15. OpenDRIVE编辑器TruevisionDesigner
  16. matlab提取刚度矩阵,ANSYS刚度矩阵的提取与解析
  17. 我建议你自己写一个疫情数据监控
  18. 30%自媒体从业者才知道的爆款标题的专用模板,封面图的文案同样适用。
  19. Hermez官方文档翻译(二)开发者-开发指南
  20. office之PPT插入页码没有反应

热门文章

  1. 浅谈月出月落和月相的计算方法以及替代工具 - 月出月落和月相 API
  2. TouchSlide触屏滑动特效插件的使用
  3. 初中学历怎么报考计算机专业,初中学历如何自考本科
  4. Thymeleaf入门
  5. tiles 框架干货讲解
  6. 机器学习之Ensemble(Bagging、AdaBoost、GBDT、Stacking)
  7. Bagging与随机森林
  8. 一款App等保的预检测工具--ApplicationScanner
  9. Android中的Selector
  10. Qt基于tcp网络服务器的简易版多人贪吃蛇小游戏(多线程)