查看: 5987|回复: 4

[CodeWarrior] CW中如何使用自定义库

[复制链接]

该用户从未签到

715

主题

6374

帖子

0

超级版主

Rank: 8Rank: 8

积分
25233
最后登录
2025-8-20
发表于 2016-10-9 15:27:16 | 显示全部楼层 |阅读模式
原文作者:FSL_FAE_River
熟悉了CodeWarrior的使用者都会觉得ProcessorExpert是一个很好的辅助工具,生成的驱动及初始化代码十分可靠,尽管会有些冗余,但是用来初始化模块,不失为一个很好的参考手段。这些驱动函数,我们信手一拖,改个参数,用起来就妥妥的。
    在很多时候,在开发的过程中,往往程序都是分割成不同模块,由各个部门的工程师去完成一个大项目,通常只是定义好标准的输入输出接口,部门间都看不到对方的核心代码,可以很好的保护知识产权,这时候,“库”就诞生了。通常我们会把核心的算法代码放在库里面,这里有一个使用技巧:编译器优化选项——库工程和主工程可以有不同的优化选择,使用time optimize去优化库函数,而主函数就使用size optimize特别在中断函数资源紧张时能起到一定的帮助。
     好了,长话短说,下面将介绍如何在CW中创建并使用自己的库工程。这是一个非常简单的教程,使用环境:CW10.5+ FRDM-KL25
Step 1:新建一个工程,类型选择library,其他选项保持默认。这实验定义的工程名为Get_Mcg
1.png
Step 2:为工程新建头文件what_mcg_mode.h
2.png
Step 3:为头文件添加需要的宏定义及函数声明
3.png
Step 4:从例程包的mcg.c里复制函数what_mcg_mode()mylibrary.c中,并将刚刚声明的what_mcg_mode.h及寄存器定义IO_Map.hincludemylibrary.c中。
13.png
Step 5:设置输出库文件,打开工程的properties->C build->Setting菜单,按下图进行需要的设置
//默认不优化
14.png
下图是关于库工程的重要设置,虽然CW已经为用户填好,但是有必要进行解释说明。
15.png
Step 6:编译工程,此时工程文件多出了libGet_Mcg.a,这就是我们在主工程里将会用到的库。
16.png
Step 7:新建一个application的工程,注意库工程和主工程所选的芯片要对应,将what_mcg_mode.h复制到Project_Headers文件夹下。新建文件夹Lib,并将libGet_Mcg.a复制到该目录下。
17.png
打开主工程的Properties菜单,C build->Setting->C Linker下将库的路径添加到工程中如下图。
18.png
Step 8:验证库的使用,按下图添加头文件及使用函数,新工程不作任何修改默认时钟将为FEI模式,debug时发现temp读回来为3,正是我们宏定义的FEI

19.png
//是不是so easy
总结:上面介绍了如何在CW环境下进行自定义库函数的应用。不同的库函数可以使用不同的优化等级。

我知道答案 目前已有4人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-12-19 14:46
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    4

    主题

    101

    帖子

    0

    注册会员

    Rank: 2

    积分
    179
    最后登录
    2018-9-19
    发表于 2016-11-2 16:01:48 | 显示全部楼层
    不错, 不错!很好的帖子!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25

    主题

    112

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    385
    最后登录
    2019-8-21
    发表于 2017-9-22 09:43:12 | 显示全部楼层
    请问下这个里面的IO_map.H文件怎么生成的?假如我 Step 3:为头文件添加需要的宏定义及函数声明  这个里面有调用到其他.H文件可以吗?可以的话怎么添加封装?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    83
    最后登录
    2018-4-2
    发表于 2017-11-13 18:46:08 | 显示全部楼层
    在填相对路径的时候发现不能把前缀的lib和后缀的.a去掉,用的CW10.6
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    6
    最后登录
    2018-7-4
    发表于 2018-7-3 15:37:17 | 显示全部楼层
    按照上面的步骤是可以生成.o库文件,但是在添加到工程师后,编译会出错。提示是:file not recognized:file format not  recognized, 怎么解决???
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-21 11:38 , Processed in 0.099079 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表