在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,但未缓冲的 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__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
USART_SendData(EVAL_COM1, (uint8_t) ch);
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
上一篇:单片机中Delay延时函数的缺点与改善
下一篇:keil编译时出现错误和警告总结
推荐阅读
史海拾趣
Holtek(合泰)公司电子行业的五个发展故事
故事一:初创与台湾半导体产业的崛起
1983年,合德集成电路的成立标志着Holtek(合泰)的前身正式踏入半导体行业,为台湾半导体产业开启了新篇章。随着技术的不断积累和市场需求的增长,1988年,合泰半导体在新竹科学园区的建立,成为公司在晶圆制造领域的重要里程碑。这一时期,合泰半导体专注于技术创新与品质提升,逐步在竞争激烈的半导体市场中站稳脚跟,为后续的快速发展奠定了坚实基础。
故事二:晶圆制造与全球市场的拓展
进入90年代,合泰半导体迎来了快速发展期。1990年,五英寸VLSI晶圆厂的完工并开始生产,标志着公司在晶圆制造方面迈出了坚实的一步。随着生产能力的提升,合泰半导体开始积极拓展全球市场。2000年,公司股票公开发行,并通过国际ISO9001质量系统认证,进一步巩固了其在行业内的地位。同年,香港分公司的成立,以及随后在美国和上海设立的子公司,使得合泰半导体的业务版图迅速扩展至全球,加强了其在北美和大陆地区的销售与技术服务能力。
故事三:技术创新与产品研发
合泰半导体始终将技术创新视为企业发展的核心动力。进入21世纪后,公司不断推出具有竞争力的新产品,以满足市场的多样化需求。例如,在MCU(微控制器)领域,合泰半导体凭借其在低功耗、高性能方面的技术优势,成功开发出多款适用于触控、健康量测、工业控制等多个领域的MCU产品。这些产品的推出不仅丰富了公司的产品线,也进一步提升了公司在全球市场的竞争力。
故事四:物联网市场的布局与深耕
随着物联网市场的兴起,合泰半导体敏锐地捕捉到了这一新兴市场的巨大潜力。公司开始积极布局物联网领域,致力于为客户提供从硬件到软件、从芯片到解决方案的一站式服务。在智能家居、健康医疗、智慧城市等物联网应用场景中,合泰半导体凭借其专业的MCU产品和强大的技术服务能力,赢得了众多客户的信赖与合作。通过不断的技术创新和产品优化,合泰半导体在物联网市场中占据了重要地位。
故事五:人才培养与校企合作
人才是企业发展的根本。合泰半导体深知这一点,因此一直将人才培养视为企业发展的重要战略之一。公司不仅为员工提供丰富的在职培训计划和职涯提升管道,还积极与高校开展校企合作,共同培养具有创新精神和实践能力的专业人才。例如,与某高校共建单片机应用开发联合实验室,不仅为学生提供了实践锻炼的平台,也为企业输送了大量优秀人才。这种校企合作模式不仅促进了企业的技术创新和产品研发,也为行业培养了大量高素质的专业人才。
巨盛电子(Chesen)自创立之初,就坚持将技术创新作为公司的核心竞争力。在电子行业迅速发展的背景下,公司投入大量资源进行研发,成功推出了一系列具有领先技术水平的电子产品。这些产品不仅满足了市场对于高品质、高性能电子产品的需求,还通过创新功能赢得了消费者的青睐。巨盛电子凭借技术创新,逐渐在电子行业中崭露头角,成为市场的领导者。
启攀微电子(Chiphomer)公司成立于2003年,当时正值中国集成电路产业快速发展的初期。创始人张杨带领着一支由英美归国的留学精英和国内资深管理与技术人员组成的团队,立志要在这一领域闯出一片天地。然而,初创时期的资金短缺、技术壁垒和市场认可度低等问题,让公司面临着巨大的挑战。然而,他们凭借着对技术的执着追求和对市场的敏锐洞察,成功推出了首款SDH通信芯片,为公司的后续发展奠定了坚实的基础。
在国内市场取得成功后,Datalinear公司开始寻求国际化的发展。公司派遣团队前往欧美等发达国家进行市场调研,并根据当地市场需求进行产品定制。通过不懈的努力,Datalinear公司的产品在海外市场取得了良好的销售业绩,并逐步建立了全球化的销售网络。
随着技术的不断进步,AIRPAX在传感器和电气保护领域取得了重大突破。其研发的全新传感器技术大大提高了测量精度和响应速度,为汽车、家电等行业提供了更高效、更安全的解决方案。这一技术突破使得AIRPAX的产品开始在更广泛的行业中得到应用,公司也逐渐发展成为电气保护领域的领军企业。
面对国内市场的饱和,AEC决定实施国际化战略,拓展海外市场。公司首先在欧洲设立了研发中心,随后在北美和亚洲等地建立了销售网络和生产基地。通过不断优化产品结构和提升服务质量,AEC逐渐在国际市场上树立起了良好的品牌形象,成为一家具有全球影响力的电子企业。
来源:http://www.ramtron-online.cn/user109685/blog/09-04/169227_6912c.html STM32确实强大,前些时间说的那个小板就是做来试试看STM32的外部总线是否能直接挂3.5寸的RGB数字屏的; 得益于它灵活而还算实用的DMA,呵呵,如下图: RGB总线的数字屏 ...… 查看全部问答∨ |
|
分布式算法作了一个滤波器,系数字长是21位,前面有一个cic的前置滤波器,但是我看有的文章说需要一个去直流滤波器,用以消去cic中遗留的直流分量。这个问题我在matlab的时候发现了,加了去直流后就好了,但是我用verilog代码写的去仿的时候就不存 ...… 查看全部问答∨ |
我在YL270的扩展槽上通过排针(母排)引出nCS5,DATA[0:8],ADDR[1:5],nWE,nOE,nRESET_out至 FPGA(XC2Sxxx); 总线是经过16245芯片至扩展槽,从扩展槽到FPGA是用超小型安装线飞线连接的,245至FPGA的距离大概有7-12cm, 不论是否给FPGA供电,排针的 ...… 查看全部问答∨ |
我用查询的方式获取串口数据不成功是怎么回事,代码如下: void GetStr(void) { UART3_CR2 &=~ MASK_UART3_CR2_RIEN; //关中断 while(UART_Time) { & ...… 查看全部问答∨ |
|
LSD-S2E21-01 嵌入式串口转以太网控制器入手,求一起研究 如题,最近淘宝上买了块: 串口转网络模块LSD-S2E21-01,刚开始捣鼓,寻找朋友一起研究,交流。 PS:我用的硬件是利尔达给的串口转以太网模块 1、 ...… 查看全部问答∨ |
诉苦篇:同一个大学,同一个痛(与全国千百万曾在大学里的游民同样的经历) 07年在一个二线城市的二流大学读一个二本(几个月才明白选择大学时的选择有多二。。。)。读书的时候一直觉得学校太破,专业太边缘(学校是老牌的石油 ...… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- STM32H7R/S 高性能MCU 开启全新的创新机遇!答题好礼~还有开发板等你拿!
- 以旧换新!100套TI MSPM0整装待发,升级你的装备!
- TI教室全新导航让查看更简单!填问卷送好礼啦!
- TE助力数据中心设计,缩短你与奥运的距离,猜猜它属于哪个“奥运场馆”赢大礼!
- 三人行必有我师——EEworld网友原创教程隆重登场!
- 《射频技术 For Dummies系列》书籍读后感征集
- 有奖问答:基于A2B的音频信号解决方案
- 了解泰克新品P7700探头,答题赢好礼!
- 有奖活动“庖丁”解智能睡眠监测仪,一波“水军”来围观
- NXP微控制器电路板,针对USB Type C接口设计,评测创意有奖征集,晒心得更有多重好礼!