AS6的一个特色是比较慢,这是因为它集成了太多功能,特别是ASF(Atmel Software Framework)。前面介绍过在AS4中使用传统的方法开发ATmega328p,所以这一篇就介绍使用ASF的方法。
首先,在AS6中创建一个新项目。创建时,选择GCC C Executable Project或者GCC C++ Executable Project。如果直接选择Atmel Studio Solution,那么还需要在添加项目文件,麻烦了一些。
然后就是写代码了。下面是简单的测试程序:
#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后,对程序的效率影响有多大?会不会浪费很多程序空间。先看看编译的结果: