回答

收藏

使用Atmel Sudio6和ASF创建项目

#其他 #其他 1975 人阅读 | 0 人回复 | 2015-01-06

AS6的一个特色是比较慢,这是因为它集成了太多功能,特别是ASF(Atmel Software Framework)。前面介绍过在AS4中使用传统的方法开发ATmega328p,所以这一篇就介绍使用ASF的方法。
首先,在AS6中创建一个新项目。创建时,选择GCC C Executable Project或者GCC C++ Executable Project。如果直接选择Atmel Studio Solution,那么还需要在添加项目文件,麻烦了一些。


选择好项目文件的位置后,就是选择芯片的型号,这里当然选择ATmega328P。选择芯片时有个小技巧,在右上角的过滤栏输入芯片型号的几个字符,就能快速过滤,比从列表中慢慢找要方便多了。


选择芯片并确定后,就会自动创建项目,并打开主程序文件。这时项目中只有一个程序源文件,其它都是项目配置文件。


如果直接在这里开始写代码,就和AS4中差不多。除了编辑器功能强了,速度却慢了很多,这样是不能发挥出AS6的优势的。所以下面就是使用ASF了。先按下快捷键Alt+W选择ASF Wizard(ASF向导),这时会提示需要先选择板卡。


确定选择后,选择User Board Template - megaAVR,因为也只有这一个选择。


再就是一路next,最后Apply。


到这里,就会生成基本的ASF框架,下一步就是选择需要的模块了。


我们先做一个延时加LED闪烁的简单程序,正好和AS4下的程序做个对比。因此选择了Delay routnes和GPIO - General purpose Input/Output两个模块。


点击Apply,确定选择的模块。这时会先提示将添加的模块和文件,然后就会自动添加选择的文件。同时会在项目目录下添加src目录,src目录中还有ASF目录,里面就包含了ASF库文件。



到了这里,就需要将原来项目文件中的主程序给删除,因为ASF在src中又自动添加了一个main.c。如果不删除原来的主程序,就会有两个main函数了。删除后,所有的程序文件就都在src目录下。src目录下有ASF目录,存放系统文件,不要随意添加删除文件;还有一个config目录,通常存放系统配置文件;用户文件可以存放在src下和另外的子目录中。


然后就是写代码了。下面是简单的测试程序:
#include <asf.h>#define LED    IOPORT_CREATE_PIN(PORTB, 5)int main (void){        // Insert system clock initialization code here (sysclk_init()).        board_init();                delay_init();        ioport_init();                ioport_set_pin_dir(LED, IOPORT_DIR_OUTPUT);        // Insert application code here, after the board has been initialized.        while(1)        {                ioport_toggle_pin_level(LED);                delay_ms(500);        }}为了使用Delay函数,需要先调用delay_init()。同样使用GPIO也需要先调用ioport_init()。然后就是设置IO的输入输出,最后就是翻转LED和延时了。这些函数看起来还是很直观的,看函数名就知道大概的功能了。
使用ASF后,对程序的效率影响有多大?会不会浪费很多程序空间。先看看编译的结果:


AS4下编译结果是占用Flash空间164字节,AS6加ASF的结果是168字节,比想象中要小。虽然可以想象到随着更多ASF模块的添加和用户程序复杂度的增加,这个差距还会增大,但是ASF的效率还是不错的。
关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

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

本版积分规则

关闭

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