AtmelStudio60简易入门教程精炼实用整理精品文档.docx

上传人:b****8 文档编号:27700170 上传时间:2023-07-04 格式:DOCX 页数:17 大小:820.71KB
下载 相关 举报
AtmelStudio60简易入门教程精炼实用整理精品文档.docx_第1页
第1页 / 共17页
AtmelStudio60简易入门教程精炼实用整理精品文档.docx_第2页
第2页 / 共17页
AtmelStudio60简易入门教程精炼实用整理精品文档.docx_第3页
第3页 / 共17页
AtmelStudio60简易入门教程精炼实用整理精品文档.docx_第4页
第4页 / 共17页
AtmelStudio60简易入门教程精炼实用整理精品文档.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

AtmelStudio60简易入门教程精炼实用整理精品文档.docx

《AtmelStudio60简易入门教程精炼实用整理精品文档.docx》由会员分享,可在线阅读,更多相关《AtmelStudio60简易入门教程精炼实用整理精品文档.docx(17页珍藏版)》请在冰豆网上搜索。

AtmelStudio60简易入门教程精炼实用整理精品文档.docx

AtmelStudio60简易入门教程精炼实用整理精品文档

(完整word版)AtmelStudio-6.0简易入门教程(精炼实用)

编辑整理:

 

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)AtmelStudio-6.0简易入门教程(精炼实用))的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)AtmelStudio-6.0简易入门教程(精炼实用)的全部内容。

一、建议工程文件

AtmelStudi6。

0这个全新的环境使用起来极其不顺手,因为首先我对AtmelStudio以前的版本也根本没有使用经验,就根据很陌生,其次,这个新版本软件还根本

没有人用,根本没有任何的相关教程资料,唯一可以参考的只是官网的比较简单的视频教程,还是英文讲解,反正没怎么搞透。

不过还是硬着头皮用下去,因为软件是免费的,而且当后来我知

道代码编辑环境其实就是微软VS环境的时候,我就更不犹豫了,大家应该都了解VS的代码编写环境是很智能的,尤其自动补全功能。

现在,我已经能很熟练的使用AtmelStudio6。

0软件了,随着使用我也更加喜欢玩AVR单片机做一些小作品了,而不再用普通51和STC了。

当使用熟练以后也就感觉到其实这个免费智能的编译环

境其实是很简单的,那现在我就帮助更多喜欢使用AVR而没用使用AtmelStudio软件的同学们轻松越过这一个门槛,进入一个美好的编程世界.

该软件的不足之处:

一是软件相对较大,打开比较慢,但是运行还是比较顺利的;二是不支持山寨仿真器,这可苦了没钱的劳苦电工们了。

(不过我都是用ISP烧录调试,一般不用仿真)

最下面附件有一个简单的LED_test工程文件,编译通过的.大家可以试用。

下面开始介绍的软件工程的建立.

1。

软件总界面

总体界面还是比较简洁的,和其他编译软件都是差不多的,而且和KEIL软件的界面是很相似的,使用很方便.

2。

新建工程

新建工程很简单:

FILE-〉NEW—>Project然后就看到下面的新建工程界面了,选择第一个GCCCExecutable工程就可以,第二个GCCCstaticLibrary是用来新建.h文件的.

然后下面蓝圈1是C文件的名称,蓝圈2SolutionName是工程的文件,中间的Location是文件存放位置,自己选择合适的位置即可。

点击下面的OK

3。

下面接着是单片机型号选择界面,选择合适的单片机就可以了。

4。

下面就看到真正的代码编辑界面了,软件会智能的添加工程文件说明信息,并提供简单的main函数代码,比较好。

在代码编辑区编写你的实现代码即可。

5.大家可能看到上面中文注释部分由让人不喜欢的下划波浪线,下面告诉你怎么除掉它。

VAssistX–〉VisualAssistXoptions然后underlines选择min即可,如下图

6。

对于软件环境的工具栏常用按键下面简单说一下,如下图。

(1)圈1:

就是编译按钮和KEIL的按键是一样的

(2)圈2:

是单片机型号选择,这个不同平台之间移植要首先修改单片机型号,不然会出错,这个也是本软件的一个优点,这样就AVR所有的单片机系列之间可以轻松的移植,如果遇到寄存器变化,编译的时候就会出错,提示你修改

(3)圈3:

就是注释和缩进快捷按钮也是编写代码比较常用的

7。

下面介绍一些使用atmelstudio6。

0需要注意的一下事项。

这些事项很重要,不然会导致你无法编译成功,这些事项其实是从网上一篇文章《从ICCAVR到AtmelStudio6》中摘录的,

一直不知道这位大侠是谁,在这里先向这位无私的大侠致敬,如果该大侠看到该我的文章,如果有不同意还请告诉我.

注意事项整理如下:

1)MCU必须的头文件

AtmelStudio6(以下简称AS6)中统一用#include.这点很重要,AS6把atmel所有的单片机头文件全都集成在一起了,以后不必再去分具体的每种芯片的头文件了

2)汇编嵌入

在AS6中,你可以直接使用asm("xxx”)格式。

或者用小写的sei();这个其实是很爽的,最常用的就是中断控制,使用比较方便。

3)延时函数

在AS6中,只需要加载一个头文件#include〈util/delay。

h〉,就可以使用两个标准的延时函数,分别是_delay_ms(double__ms)和_delay_us(double__us),虽然参数为double型,

但可赋整型值。

注意在调用前定义#defineF_CPU8000000UL,如下图,这样延时10ms的函数写为_delay_ms(10),经过试用,只要晶振填写准确,这两个延时函数很准确。

4)中断函数

在AS6中,需加载头文件#include〈avr/interrupt.h>,并且函数名为ISR,不可自定义函数名,格式如下:

ISR(TIMER0_OVF_vect)

{…}

TIMER0_OVF_vect含义同iv_TIMER0_OVF,是T0溢出中断号。

不同型号mcu的中断向量号的名称不同,A6的中断向量号请从avr/iomXXX.h中查找。

5)EEPROM操作函数

在ICC中加载头文件#include〈eeprom.h〉后,可以使用如下两个读写函数:

EEPROM_read(addr,var);//读EEPROM中的一个字节

EEPROM_write(addr,var);//向EEPROM中写入一个字节

6)定义数据在flash区

主要用于在字符点阵或图形点阵数据存放在flash区,这样可以减少data区的使用,不至于使data区溢出.

在AS6中,需加载头文件#include〈avr/pgmspace。

h〉,然后用PROGMEM。

举例说明:

PROGMEMconstunsignedcharflash[10];

在flash区声明一个unsigedchar型的数组,成员个数10。

unsignedchara;

a=pgm_read_byte(flash[0]);

把flash[0]值赋给变量a。

而a=flash[0]是不会从flash区读数据的,而是读data区的数据.

二维数组:

PROGMEMconstunsignedcharflash[3][10]={……};

指针数组:

PROGMEMconstunsignedchar*constflash[3]={……};

 

二、工程文件的优化设置

点击工程项目,properties进行设置

定位代码地址,bootloader是必须的,其它程序也可能需要在“属性”里

设置晶振频率(这也是预设计的#define.。

设置头文件路径

设置需要生成的文件(设置生成文件hex)

设置优化率

添加自定义库

更换为WinaAvr编译条件的设置

设置芯片

设置仿真器(我没有使用仿真器,设置为Simulator)

三、从ICC_AVR_到_Atmel_Studio_6

以前一直在用ICCAVR感觉生成文档方便,现在发现了AtmelStudio6,因为偶尔会用C#(VS2010)所以一下子就喜欢上了这个编译器,我只用8bit的AVR另外也是刚刚接触,所以在移植过程中会遇到各种问题,以下是自己的一些问题写出来共大家参考;

1.MCU必须的头文件

例如在ICCAVR(以下简称ICC)中使用#include

h〉。

(ICCAVR7的版本中也可以用统一的头文件了)

2.头文件

在ICC中,头文件.在AVRdef.h中,宏定义了一些常用的汇编指令和一些不常用的函数。

例如:

(详细内容请参考ICC安装程序中AVRdef。

h)

#defineWDR()asm("wdr”)

#defineSEI()asm(”sei”)

#defineCLI()asm("cli”)

#defineNOP()asm(”nop”)

#defineSLEEP()asm(”sleep");

#define_WDR()asm("wdr”)

#define_SEI()asm("sei")

#define_CLI()asm(”cli”)

#define_NOP()asm(”nop")

#define_SLEEP()asm(”sleep");

#defineBIT(x)(1<〈(x));

在AS6中,你可以直接使用asm(”xxx”)格式.或者用小写的sei();(当然要包含相应的头文件);

Ps:

如果移植ICC的代码比较麻烦,可以将这些宏命令添加到一个总的头文件(include。

h)中,所有c文件都引用include。

h,那么在移植过程中,将不需要修改代码。

3.延时函数

在ICC中,delay延时函数,需要自己写,往往不准。

而在AS中,只需要加载一个头文件#include

h>,就可以使用两个标准的延时函数,分别是_delay_ms(double__ms)和_delay_us(double__us),虽然参数为double型,但可赋整型值。

注意在调用前定义#defineF_CPU16000000UL(我也不知道为什么要加UL),这样延时10ms的函数写为_delay_ms(10)。

4.中断函数

例如T0溢出中断,在ICC中如下定义:

#pragmainterrupt_handlertimer0_ovf_isr:

iv_TIMER0_OVF

voidtimer0_ovf_isr(void){…}

timer0_ovf_isr这个函数名是自定义的。

而在A6中,需加载头文件#include〈avr/interrupt.h〉,并且函数名为ISR,不可自定义函数名,格式如下:

ISR(TIMER0_OVF_vect)

{…}

TIMER0_OVF_vect含义同iv_TIMER0_OVF,是T0溢出中断号。

不同型号mcu的中断向量号的名称不同,A6的中断向量号请从avr/iomXXX。

h中查找.

5.EEPROM操作函数

在ICC中加载头文件#include〈eeprom。

h〉后,可以使用如下两个读写函数:

EEPROM_read(addr,var);//读EEPROM中的一个字节

EEPROM_write(addr,var);//向EEPROM中写入一个字节

在AS6中,加载头文件#include

_EEGET(var,addr);//读EEPROM中的一个字节

_EEPUT(addr,var);//向EEPROM中写入一个字节

Ps:

为了移植时不修改代码,我的做法是在总的头文件(include。

h)中添加以下宏定义:

#defineEEPROM_read(addr,var)_EEGET(var,addr)

#defineEEPROM_write(addr,var)_EEPUT(addr,var)

6.定义数据在flash区

主要用于在字符点阵或图形点阵数据存放在flash区,这样可以减少data区的使用,不至于使data区溢出。

在ICC中,用const关键字定义变量,并在ICC软件设置项中,勾选treat”const”as__flash即可。

在AS6中,需加载头文件#include

h〉,然后用PROGMEM

举例说明:

PROGMEMconstunsignedcharflash[10];在flash区声明一个unsigedchar型的数组,成员个数10。

unsignedchara;

a=pgm_read_byte(flash[0]);把flash[0]值赋给变量a.而a=flash[0]是不会从flash区读数据的,而是读data区的数据。

二维数组:

PROGMEMconstunsignedcharflash[3][10]={……};

指针数组:

PROGMEMconstunsignedchar*constflash[3]={……};

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1