目标
1.制作一个库文件libGetMax.a ,其中包含一个外部函数GetMax 。 函数GetMax的作用是判断两个输入参数(int型)中的最大值,并返回最大值。
2.制作一个应用范例,使用库libGetMax.a中包含的GetMax函数。
库文件的生成
为叙述方便,请在C盘根目录中新建一目录,并将其命名为libtest。以下将C:\libtest简称为工作目录。
在ICCAVRIDE环境中新建两个文件,分别命名为 GetMax.c 和 GetMax.h,并保存至工作目录中。两文件内容如下所示:
//------GetMax.h的内容如下:------
#ifndef__GETMAX_LIB
#define__GETMAX_LIB
externintGetMax(inta,intb);
#endif
//------GetMax.c的内容如下:------
#include"GetMax.h"
intGettMax(inta,intb)
{
return((a>b)?a:b);
}
执行File菜单下的 CompileFile... 项下的 ToObject 项,将 GetMax.c 编译生成相应的目标文件GetMax.o 。
执行命令ilibw-alibGetMax.aGetMax.o生成库文件。可执行文件ilibw.exe位于icc安装完后的系统目录(默认安装时在C:\icc)的子目录bin中。为使用方便可将ilibw.exe拷贝至工作目录中使用。至此库文件libGetMax.a已生成,其对应的头文件为GetMax.h 。注意库文件的命名必须以“lib”字样开头,否则在IDE中编译下面的应用范例过程中自动链接时会报错(手动链接除外)。
应用范例的编写和编译
在工作目录中建立一个工程Test.prj。工程Test.prj中包含一个C源程序文件Test.c。Test.C的源代码如下所示:
//------Test.c的源代码如下:------
#include"GetMax.h"
voidmain(void)
{
intResult,Value1,Value2;
Value1=0x10FF;
Value2=0x0FFF;
Result=GetMax(Value1,Value2);
}
然后,将前一步骤生成的库文件libGetMax.a拷贝至icc安装完后的系统目录(默认安装时在C:\icc)的子目录lib中。再执行Project菜单下的Option项,修改Target表单中的AdditionalLib项,在文本框中输入GetMax(注意不能写成libGetMax.a)。
完成上述步骤后,就以编译和调试test.prj。
如果在其它工程中需要使用上述库函数GetMax,只需拷贝所需的GetMax.h和libGetMax.a,并进行相应配置就可以了。
也可以在已有的库中增加一些自定义的函数。详细参考ICCAVRIDE中的在线帮助。
关键字:ICC 自定义 C库文件
引用地址:
在ICC中制作和使用自定义C库文件
推荐阅读最新更新时间:2024-03-16 13:52
华虹NEC、深圳ICC携手共推多项目晶圆业务
2009年6月25日,“2009(第七届)泛珠三角集成电路创新应用展示暨高峰论坛”在深圳大学举行,在此会议上深圳集成电路设计产业化基地管理中心(以下简称深圳ICC)与上海华虹NEC电子有限公司(以下简称华虹NEC)举行了签约仪式。华虹NEC在此次签约仪式上与深圳ICC签署了为期两年的多项目晶圆 (以下简称MPW)推广合作协议,以期更好地服务珠三角地区的IC设计公司,华虹NEC市场副总裁高峰先生出席并签署了合作协议。通过此协议,深圳ICC作为珠三角设计公司与Foundry之间交流的平台,为华虹NEC引入新的客户,而华虹NEC也将一如既往地支持各设计公司的MPW流片业务,并与深圳ICC保持紧密合作,达到三方共赢。 上海华
[半导体设计/制造]
LCD1602自定义字符的方法
LCD1602内含有八个自定义的字符空间,用户可以根据需要设置自定义字符,不过字符的像素通常是5X7。如果需要更大像素的字符,就只能用多个5X7的字符拼合。每个自定义字符的字节有8个,最后一个是0x00;每个字节的高3位为0,即000? ????。自定义字符设置与应用步骤如下: 1、设置自定义字符的代码并存入数组。每个字符分7行,每行有5个像素,如果需要显示,此位设定为1,否则为0。本人用VBA制作了《LCD1602自定义字符生成器》,使用简单,需要可函索。联系:51hei.com 2、按常规方法初始化LCD1602。 3、写命令:40H。 4、写数据:将代码数组写入LCD1602中的CGRAM中。 5、按常
[单片机]
STM32 USB HID 自定义设备 bulk 传输
ST(意法半导体公司)为STM32系列处理器编写了外设USB的库,并提供了很好的参考例程,本文就是参考ST提供的例程,在STM32F4 discovery板子上实现usb bulk传输。Host端是在linux平台上利用libusb库函数写的读写USB应用。 本次实现在STM32 USB例程中的Device HID 鼠标例程基础上添加bulk传输端点修改而来。 usb_conf.h 文件中添加 bulk传输端点 /* * endpoint 0x80 and 0x00 are used for enumerating device. * endpoint 0x81 and 0x80 are used for cont
[单片机]
MSP430使用指南5 -> ICC中断控制器
ICC,即Interrupt Compare Controller,中断比较控制器,作用便是设定中断优先级,同时通过比较中断优先级等实现中断的硬件嵌套。 首先普及一下MSP430的中断系统,大部分的MSP430 MCU中断优先级是不能设置的,也就是说对于每一个中断源的优先级是体现设定好的,不支持后期用户自动设置,因此可以说如果正在执行低优先级的程序,突然来了一个高的优先级中断,是可以打断低优先级的服务程序的,但是前提是进入低优先级中断服务程序时开启了全局中断即GIE。但是如果高优先级中断正在执行服务程序,来了一个低优先级的中断,那么只能等待高优先级中断服务程序执行完之后,才可以去执行低优先级的中断服务程序,这样也就是说不能灵活
[单片机]
NI 已推出100多款C系列模块用于各种自定义应用
美国国家仪器有限公司(National Instruments,简称NI)近日宣布已新增100多种C系列插入式模块,其中50多种来自NI公司,另外50种来自第三方公司,此外还包括各种机箱产品。如此多的配置选择帮助工程师们解决各种测量与嵌入式控制需求。工程师和科学家们可将NI C系列模块插入任何C系列机箱,包括NI CompactDAQ、NI CompactRIO和NI R系列扩展机箱,从而构建各种混合测量系统。此外,他们还可以将第三方模块用于任何基于FPGA的机箱,包括NI CompactRIO和R系列扩展机箱等。 “C系列模块达到100种是一个巨大的里程碑,有力证明了C系列平台的流行性和灵活性,” NI工业和
[测试测量]
Google新专利曝光:自定义手势操作、有望取代触屏
本周曝光的一项专利表明,Google 似乎对设备的各种手势控制有着很深的理解。 与在空中挥手的方式不同,本周提交的这项名为《通过空间感知手势与设备交互》的专利,已经扩展到了超越预先配置和 DIY 控制的范畴,描述中称其可以“直观地执行用户的手势操作”。 普通操作包含了按压、推拉和轻触,但 Google 还提出了两项重要的概念。 首先是“相当于自然语言的手势”:在文件中,描述了这样一款设备,它能够对用户的手势作出解释。 举例说,用户可以用独特的双拇指朝下的手势,表达想要关闭一台设备的意思。设置完操作请求之后,设备会要求用户动手示意,然后在识别后触发对应的操作。 其次,Google 还在专利中展示了“多设备手势识别与命令”的潜力
[家用电子]
STM32 自定义HID USB设备的实现
最近需要使用STM32开发一个设备通过HID协议与主机通信,于是开始学习USB,发现USB这个体系实在太庞大了,直接看USB的例程根本看不懂,完全找不到突破口,最后在网上找到一本不错的书《圈圈教你玩USB》,这本书能够很好地带你入门。枚举过程,请求,令牌,数据包,端点,描述符,这些知识都讲的很清楚,只有清楚了这些,再去看代码就能明白是怎么回事了。 接下来总结一个我个人的理解:对于HID设备,STM32有例程,但是怎么修改成符合自己要求的HID设备呢?首先,HID设备必需有报告描述符,报告描述符描述的是数据的长度以及用途,所以最重要的就是修改报告描述符,如我现在只是需要用来传数据,一次最大16字节长度;修改后的报告描述符如下:
[单片机]