免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1813 | 回复: 0

使用IAR创建库以及如何使用库(转) [复制链接]

论坛徽章:
0
发表于 2011-12-23 01:46 |显示全部楼层

在使用STM32的固件库的时候,需要往工程中添加使用到的功能的对应源文件,比如:stm32f10x_gpio.c等等,一个个添加很麻烦不说,每次在rebuild的时候都要编译这些基本不变的文件.

而通过使用库则可以解决这些问题,首先只需添加一次库文件,第二Rebuild的时候只编译我们自己写的源文件

 

创建库的过程(IAR中):

新建一个DLib工程,把stm32f10x_xxx.c这样的文件和对应头文件全部复制到工程文件夹下(不复制也可以),然后添加进去,还有 core_cm3.c, misc.c, system_stm32f10x.c, 这些都添加进去.(注意:不要添加.h头文件,这和KEIL是不一样的,IAR里不用添加头文件,只需要源文件里#include就行了.)

.s启动文件则可以根据实际需要添加,当然你也可以每种型号都分别创建一个对应的库.然后在实际工程中根据不同的片子选择不同的库.

 

添加进去后,打开工程属性设置.

general option:

         target属性框里选择芯片;

         output属性框里的Output file里选择Library(如果新建的工程是DLib的话,这里默认已经是了);

         Library Configuration属性框里的Library选项选择None;   (这里注意哦)

 

C/C++ compile:

      

         optimizations里可以选择优化等级.

          Preprocessor里,additional include directories栏里添加包含文件的路径.如同一般工程一样把头文件的路径添加进去.

 

OK,设置如上.编译后,将会后成一个.a文件.

以上是Debug模式下生成的库文件,Release下的设置同上.两者间的不同的是Debug选项中默认输出调试信息,而Release中默认没有.同时时我们可以在Release中根据需要把优化等级调高一点.最后,Release模式下生成的库文件小一点.

 

 

如何使用库:

 

和平时一样建一个工程,或者随便打开一个你自己的STM32工程.然后添加库,两种方法可以添加库:

1.可以直接像添加源文件一样,在工程中右键->add files,然后添加.a文件.

2.右键属性,在Linker选项中的Library选项卡中的additional libraries:中添加.而且可以在Debug属性中添加Debug模式产生的库,release中添加release模式生成的库.需要注意的是不 能只添加路径,文件名也要写上. 比如:E:/IAR_LIB/Stm32/stm32_d.a

 

OK,这时你就可以把像stm32f10x_gpio.c这样的文件从工程中Remove了.

(使用库)和(不使用库手动添加stm32f10x_gpio.c)之间,在实际工程中,最终生成的可执行文件的大小是一样的.

 

最后,在实际工程中:

只需将stm32f10x_conf.h, stm32f10x_it.h, stm32f10x_it.c复制到工程文件夹,然后把stm32f10x_it.c添加进工程就行了 (当然,前面已经说过,无论是在ARM工程,还是 库工程中,IAR都不需要添加头文件,添加了反而会编译出错,只需要源文件中#include) 

另外上述三文件最好不要创建成库,因为它们在不同的工程下都是不一样的,这个就不用我说了吧. :)

上述三文件在STM32库中的STM32F10x_StdPeriph_Lib_V3.3.0/Project/STM32F10x_StdPeriph_Template中有,当然例子中也有,经常有人找不到这三个文件在哪....

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP