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