Micro.lib MDK/KEILL
来源:互联网 发布:绝地网络延迟检测 编辑:程序博客网 时间:2024/06/05 10:32
一、简介
microlib中是用C写的时候相比,包括ARM编译器工具链的标准C库的基于ARM的嵌入式应用提供了高度优化的库,microlib中提供所需的许多嵌入式系统显著代码大小的优点。
二 、microlib中和标准C库之间的主要区别是:
microlib中是专为深度嵌入式应用。
microlib中被优化使用比使用ARM标准库更少的代码和数据存储器。
microlib中已经设计没有操作系统的工作,但是这并不妨碍它被与任何操作系统或RTOS如Keil RTX一起使用。
microlib中不包含任何文件I/ O或宽字符支持。
由于microlib中进行了优化,以尽量减少代码大小,一些功能将会比ARM编译工具提供了标准C库函数更慢执行。
microlib中双方和ARM标准库都包含在Keil MDK-ARM。
三、 存在问题
本人有过经历在做串口 接收大量数据时,选择微型库,接收到几百K的数据,就会出现问题,仿真时发现,程序跑飞了,但是一样的代码 ,在不选择微型库时,又完好,能接收7,8百K 的字节数据,所以个人感觉,这个库因为是进行了优化,而引发的错误。
四 、编译出现问题。
首先 use microlib,使用printf的时候不需要重映像使用。不选 use microlib 时,需要重映射
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
如果在不选 use microlib 时,出现了某个错误时,
首先添加 #include <stdlib.h> 和 include "string.h",如果还不能解决 ,把下面的注销掉就好,这在 原子 历程里面经常用(如红色字体部分)
#if 1
// #pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
#endif
// #pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
#endif
0 0
- Micro.lib MDK/KEILL
- keil中micro lib
- KEIL mdk LIB 使用总结
- MDK生成lib文件,有助于加密文件
- KEIL MDK LIB库文件的制作
- KEIL MDK LIB库文件的制作
- zeit/micro Error -- Cannot find module '../lib/help'
- 【物联网智能网关-17】.NET Micro Framework之MDK C++二次开发
- mdk
- MDK
- keil&MDK封装函数到lib中,并在程序中调用lib
- 第一个遇到的问题,关于KEILL
- 在KEIL realview MDK下为单一C文件生成.LIB文件
- KEIL MDK 下为单一C文件生成.LIB文件以及注意事项
- 在KEIL realview MDK下为单一C文件生成.LIB文件
- 在KEIL realview MDK下为单一C文件生成.LIB文件
- Trend Micro
- Caliburn.Micro
- 上海松江网络公司
- Ubuntu安装Dropbox客户端
- linux 使用bash 快捷键
- 生产者与消费者模型
- Lifecycle(生命周期)
- Micro.lib MDK/KEILL
- MongoDB常用操作
- ZXing修改为竖屏的具体操作方法
- duilib 使用图片素材或者算法给窗体增加阴影(源码和demo)
- c++中const
- Scala List的几种常见方法梳理汇总
- HTTP协议详解
- 文本编辑器
- 微信JS-SDK说明,充满想象空间