rantingting 发表于 2013-11-1 15:00:09

【原创】AtmelStudio-6.0简易入门教程

本帖最后由 rantingting 于 2013-11-1 15:05 编辑

    我使用AVR系列单片机比较晚,也就是近半年开始接触使用的,之前一直使用的STC的,不过STC经常会出现些莫名其妙的问题,反正就是感觉稳定性上还不是那么好吧(或者只是借口,嘿)。
最开始接触其实是因为买了块ARDUINOMEGA2560的板子,发现AVR还是更牛的,不过后来发现ARDUINO不适合电子专业人士,非电子的玩起来可能更有价值吧,后来就买了AVR的简易开发板。
不过玩的早不如玩得巧,正在我为AVR众多编译软件的选择而不爽的时候,AtmelStudio6.0出世了,我就毫不犹豫的开始试用了。
    开始的时候还是很不顺利的,AtmelStudi6.0这个全新的环境使用起来极其不顺手,因为首先我对AtmelStudio以前的版本也根本没有使用经验,就根据很陌生,其次,这个新版本软件还根本
没有人用,根本没有任何的相关教程资料,唯一可以参考的只是官网的比较简单的视频教程,还是英文讲解,反正没怎么搞透。不过还是硬着头皮用下去,因为软件是免费的,而且当后来我知
道代码编辑环境其实就是微软VS环境的时候,我就更不犹豫了,大家应该都了解VS的代码编写环境是很智能的,尤其自动补全功能。
    现在,我已经能很熟练的使用AtmelStudio6.0软件了,随着使用我也更加喜欢玩AVR单片机做一些小作品了,而不再用普通51和STC了。 当使用熟练以后也就感觉到其实这个免费智能的编译环
境其实是很简单的,那现在我就帮助更多喜欢使用AVR而没用使用AtmelStudio软件的同学们轻松越过这一个门槛,进入一个美好的编程世界。
    该软件的不足之处:一是软件相对较大,打开比较慢,但是运行还是比较顺利的;二是       不支持山寨仿真器,这可苦了没钱的劳苦电工们了。(不过我都是用ISP烧录调试,一般不用仿真)

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

下面开始介绍的软件工程的建立。
1.        软件总界面
总体界面还是比较简洁的,和其他编译软件都是差不多的,而且和KEIL软件的界面是很相似的,使用很方便。



2.        新建工程
新建工程很简单:
FILE->NEW->Project然后就看到下面的新建工程界面了,选择第一个 GCC C Executable工程就可以,第二个GCC C static Library 是用来新建 .h文件的。
然后下面蓝圈1是C文件的名称,蓝圈2Solution Name 是工程的文件,中间的Location是文件存放位置,自己选择合适的位置即可。
点击下面的OK



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



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




5.        大家可能看到上面中文注释部分由让人不喜欢的下划波浪线,下面告诉你怎么除掉它。
VAssistX –> Visual Assist X options   然后underlines 选择min即可,如下图



6.        对于软件环境的工具栏常用按键下面简单说一下,如下图。
(1)        圈1:就是编译按钮 和 KEIL的按键是一样的
(2)        圈2:是单片机型号选择,这个不同平台之间移植要首先修改单片机型号,不然会出错,这个也是本软件的一个优点,这样就AVR所有的单片机系列之间可以轻松的移植,如果遇到寄存器变化,编译的时候就会出错,提示你修改
(3)        圈3:就是注释和缩进快捷按钮 也是编写代码比较常用的



7.        下面介绍一些使用atmelstudio6.0需要注意的一下事项。这些事项很重要,不然会导致你无法编译成功,这些事项其实是从网上一篇文章《从ICC AVR 到 Atmel Studio 6》中摘录的,
一直不知道这位大侠是谁,在这里先向这位无私的大侠致敬,如果该大侠看到该我的文章,如果有不同意还请告诉我。

注意事项整理如下:

1)        MCU必须的头文件   
Atmel Studio 6 (以下简称AS6)中统一用#include <avr/io.h>。这点很重要,AS6把atmel所有的单片机头文件全都集成在一起了,以后不必再去分具体的每种芯片的头文件了
2)        汇编嵌入   
在AS6 中,你可以直接使用asm("xxx")格式.或者用小写的sei();这个其实是很爽的,最常用的就是中断控制,使用比较方便。

3)        延时函数   
在AS6中,只需要加载一个头文件#include <util/delay.h>,就可以使用两个标准的延时函数,分别是_delay_ms(double__ms)和_delay_us(double __us),虽然参数为double型,
但可赋整型值。注意在调用前定义#define F_CPU 8000000UL,如下图,这样延时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 。
举例说明:   
PROGMEM const unsigned char flash;
在flash区声明一个unsiged char型的数组,成员个数10。

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

二维数组:PROGMEM const unsigned char flash={……};   
指针数组:PROGMEM const unsigned char* const flash={……};




onece 发表于 2013-11-1 15:14:23

还在用4的飘过。

spy2008 发表于 2013-11-1 15:36:26

也在用AS6, 支持楼主共享。同时把《从ICC AVR 到 Atmel Studio 6》上传, 给需要的人。

xckhmf 发表于 2013-11-1 18:36:34

Mark

huaxingniu 发表于 2013-11-1 20:01:01

做个小小记号.

NEWT 发表于 2013-11-1 20:23:17

不知道为啥要基于VS做个IDE,又大又卡,还不如eclipse,还开源

xlwq 发表于 2013-11-1 21:11:28

安装个VS10 就可以使中文版的了······

yyt1372 发表于 2013-11-2 23:26:35

这软件是有些大,喜欢用IAR,有无更好的推荐?

男小北 发表于 2013-11-3 23:56:25

安装的时候总是提示少了一个或多个组件 ??敢问是怎么回事

rantingting 发表于 2013-11-4 09:01:39

男小北 发表于 2013-11-3 23:56 static/image/common/back.gif
安装的时候总是提示少了一个或多个组件 ??敢问是怎么回事

我win7安装没有这个问题它附带的那些东西都要装才行

jjj206 发表于 2013-11-5 00:37:03

謝謝樓主的共享!

男小北 发表于 2013-11-6 10:44:08

rantingting 发表于 2013-11-4 09:01 static/image/common/back.gif
我win7安装没有这个问题它附带的那些东西都要装才行

win732位的安装没有出现问题 64位的一直出现这个问题

rantingting 发表于 2013-11-6 11:10:46

男小北 发表于 2013-11-6 10:44 static/image/common/back.gif
win732位的安装没有出现问题 64位的一直出现这个问题

我的就是64位的

男小北 发表于 2013-11-6 11:25:02

rantingting 发表于 2013-11-6 11:10 static/image/common/back.gif
我的就是64位的

可能是我系统 的问题   

ljbskx 发表于 2013-11-6 16:40:19

谢谢楼主,收藏了

cai_mouse 发表于 2013-11-8 10:50:28

好帖。。。

liu252799093 发表于 2013-11-8 13:56:45

mark,可以多多讨论下。

hyghyg1234 发表于 2013-11-8 13:59:22

最近一直在AV6挺好用的

pangbin4 发表于 2013-11-9 07:35:50

在用,挺好的!大家一起来用吧

meirenai 发表于 2013-11-9 09:00:23

不是说AVR已死吗?

rantingting 发表于 2013-11-9 09:09:12

meirenai 发表于 2013-11-9 09:00 static/image/common/back.gif
不是说AVR已死吗?

死也没那么快吧况且死不死谁能说定

cpu100 发表于 2013-11-9 09:11:58

4.13很稳地的说

rantingting 发表于 2013-11-9 09:15:34

cpu100 发表于 2013-11-9 09:11 static/image/common/back.gif
4.13很稳地的说

如果你用了6,你会说6.0很稳定且超好用的说{:lol:}

cpu100 发表于 2013-11-9 09:19:15

rantingting 发表于 2013-11-9 09:15 static/image/common/back.gif
如果你用了6,你会说6.0很稳定且超好用的说

现在avr用的很少了

ljbskx 发表于 2013-11-13 09:52:27

xlwq 发表于 2013-11-1 21:11 static/image/common/back.gif
安装个VS10 就可以使中文版的了······

vs10怎么还要产品序列码啊,这个怎么获得呢

ljbskx 发表于 2013-11-13 10:00:09

我的是中文版的,楼主,怎么下载你怎么没讲呢,我用的是ISP烧录模式,给我讲讲啊

xlwq 发表于 2013-11-13 11:04:37

ljbskx 发表于 2013-11-13 09:52 static/image/common/back.gif
vs10怎么还要产品序列码啊,这个怎么获得呢

我的VS2010没有要求输入 序列号!!

rantingting 发表于 2013-11-13 13:00:45

xlwq 发表于 2013-11-13 11:04 static/image/common/back.gif
我的VS2010没有要求输入 序列号!!

没有啊,你别自己单独安装,studio 6 会自动安装不要序列号

rantingting 发表于 2013-11-13 13:02:36

ljbskx 发表于 2013-11-13 10:00 static/image/common/back.gif
我的是中文版的,楼主,怎么下载你怎么没讲呢,我用的是ISP烧录模式,给我讲讲啊 ...

下载我是用的那种跟优盘一样大小的isp下载器,官方的下载器相当贵的,600多吧好像,而且盗版的根本不支持,就直接用avr isp模块把hex文件烧录进去就行

ljt80158015 发表于 2013-11-13 13:52:26

这个编译器好用吗?

rantingting 发表于 2013-11-13 15:51:28

ljt80158015 发表于 2013-11-13 13:52 static/image/common/back.gif
这个编译器好用吗?

跟人任务,超好用,尤其码字写代码方面

dela2000 发表于 2014-2-10 21:28:02

下载Atmel Studio 6,太大了,网速慢,花了一天时间~{:sad:}

rantingting 发表于 2014-2-10 22:21:45

dela2000 发表于 2014-2-10 21:28
下载Atmel Studio 6,太大了,网速慢,花了一天时间~

是你家的网速不行

dela2000 发表于 2014-2-13 17:38:43

rantingting 发表于 2014-2-10 22:21
是你家的网速不行

有可能~{:smile:}

busterace 发表于 2014-2-14 22:16:29

mark            

圣骑士by 发表于 2014-2-20 16:44:29

众里寻他千百度

sgweilong 发表于 2014-2-20 17:00:12

AtmelStudio的确是Atmel不遗余力推出的好作品
就是安装太大了。关键是免费的啊

laoqi777 发表于 2014-2-20 19:05:22


做个小小记号.

linforoung 发表于 2014-2-20 19:53:10

mark留名备用

xizoukou 发表于 2014-3-2 09:02:13

正在迷糊不知怎么弄时,看到了楼主的帖子,给力

wyw08 发表于 2014-3-2 10:15:20

谢谢楼主分享,只用过AVR stuido 4,打算了解一下6.

duxingkei 发表于 2014-3-2 11:35:09

onece 发表于 2013-11-1 15:14
还在用4的飘过。

恩,+1{:lol:}

liuchuanxhu 发表于 2014-3-2 20:14:06

以前一直ICC,GCC,然后下了AVRstudio没用,现在这个看来不错啊

minier 发表于 2014-3-2 20:26:32

不调试用VS6实在没有必要,代码补全有很多工具
小且打开快速

rantingting 发表于 2014-3-2 20:35:51

minier 发表于 2014-3-2 20:26
不调试用VS6实在没有必要,代码补全有很多工具
小且打开快速

还请赐教,代码补全的工具?VS6会自动识别你所选芯片型号的rom等还有一些很好的设别功能

qwang 发表于 2014-3-4 12:20:44

AS6 不好用。上手要花很多时间。ICC AVR, CrossStudio 很好。

rantingting 发表于 2014-3-4 13:15:55

qwang 发表于 2014-3-4 12:20
AS6 不好用。上手要花很多时间。ICC AVR, CrossStudio 很好。

上手及其简单…………

ainiyifei 发表于 2014-3-5 09:52:01

很好!刚好,可以改用AS6

zhcj66 发表于 2014-6-21 13:10:56

hyghyg1234 发表于 2013-11-8 13:59
最近一直在AV6挺好用的

如何汉化?

hyghyg1234 发表于 2014-6-21 14:09:50

zhcj66 发表于 2014-6-21 13:10
如何汉化?

我直接用的英文版本的。

zhcj66 发表于 2014-6-21 16:54:42

hyghyg1234 发表于 2014-6-21 14:09
我直接用的英文版本的。

那 我也用英文的 ,现在所用的IDE都是英文的,突然改成中文的还真怕不习惯{:lol:}

zhcj66 发表于 2014-7-9 16:11:42

本帖最后由 zhcj66 于 2014-7-9 16:32 编辑

我第一次用AS6怎么修改成atmega128后然后 初始化管脚后,管脚就不停的高低电平轮询,在初始化后没有操作IO口
用AVR ICC就没有这样的问题

zhcj66 发表于 2014-7-9 16:47:56

spy2008 发表于 2013-11-1 15:36
也在用AS6, 支持楼主共享。同时把《从ICC AVR 到 Atmel Studio 6》上传, 给需要的人。 ...

请问用AS6初始化IO口后为什么 在高低电平统一变化呢? 没有操作IO口

rantingting 发表于 2014-7-9 19:48:32

zhcj66 发表于 2014-7-9 16:47
请问用AS6初始化IO口后为什么 在高低电平统一变化呢? 没有操作IO口

没遇到这种情况,可能是你程序有写问题吧

zhcj66 发表于 2014-7-10 09:47:32

rantingting 发表于 2014-7-9 19:48
没遇到这种情况,可能是你程序有写问题吧

今天早上终于搞明白了,是在熔丝里面使能了看门狗,在程序里面没有初始化看门狗,也没有喂狗,造成mcu不停的复位

zhcj66 发表于 2014-7-10 10:13:59

rantingting 发表于 2014-7-9 19:48
没遇到这种情况,可能是你程序有写问题吧

现在新的问题来了,如何喂狗呢,以前用的是WDR();还有开关全局中断 以前用的是SEI();和CLI(); 现在不知道如何使用了,用AS6.2不能用这个

zhcj66 发表于 2014-7-10 10:46:22

zhcj66 发表于 2014-7-10 10:13
现在新的问题来了,如何喂狗呢,以前用的是WDR();还有开关全局中断 以前用的是SEI();和CLI(); 现在不知 ...

已经找到答案,顺便把楼主编辑的内容发上来
#define WDR()   asm("wdr")   
#define SEI()   asm("sei")   
#define CLI()   asm("cli")   
#define NOP()   asm("nop")   
#define SLEEP() asm("sleep");   
#define _WDR()asm("wdr")   
#define _SEI()asm("sei")   
#define _CLI()asm("cli")   
#define _NOP()asm("nop")   
#define _SLEEP() asm ("sleep");   
#define BIT(x)   (1 << (x));   

huangsiyu 发表于 2014-8-12 13:06:16

mark      

Zenmvol 发表于 2014-8-13 16:01:57

新手!外部中断ISR(XXXXX)括号里面怎么写啊?

Zenmvol 发表于 2014-8-13 16:42:32

Zenmvol 发表于 2014-8-13 16:01
新手!外部中断ISR(XXXXX)括号里面怎么写啊?

还想弄对了……

RudeBoy 发表于 2014-9-4 00:34:08

不错不错,帮大家入门了……

spy2008 发表于 2014-11-15 20:04:04

准备回归ATMEL, 学习。

麦田有怪圈 发表于 2014-11-15 20:52:59

细心的网友,收藏了

xuanwozhe 发表于 2014-11-15 21:29:33

谢谢楼主分享,好久之前就十分想用6.0版本,这次终于又看到教程了

freemanw 发表于 2014-11-16 20:17:42

AS6 软件太大,启动太慢,不喜欢这个软件,还是IAR用起来爽得多

QuadTeam_UESTC 发表于 2014-11-17 14:41:29

谢谢啦,试一下

yzz163 发表于 2014-11-17 19:53:22

装了WIN8.1, 64位,没办法,也升级到 AS6 吧。还有LGT 也推荐 6.....

潜龙探渊 发表于 2014-11-20 15:28:22

thank !还好有你这个文档,不然我又得瞎折腾一天咯

dianqi2007013 发表于 2014-11-24 00:05:51

好资料,对我这样想用AVR的人来说很有用、

翔宇 发表于 2014-12-22 10:29:05

新手,谢谢分享!

zhanghaiw 发表于 2015-1-3 13:19:13

多谢了啊,非常的不错啊,不过没有JTAG是非常的不爽的,程序写大了就知道了!{:lol:}

vikeer606 发表于 2015-1-3 13:27:51

mark                           

1139193886 发表于 2015-1-5 11:30:52

一直用的ICCAVR。感觉界面简洁好用

skefer 发表于 2015-1-17 23:03:25

AS6.2用着不错,就是没有ICE,烦恼哎.

tangwq 发表于 2015-1-17 23:17:37

好东西呀

seaso 发表于 2015-3-16 16:22:27

针对自己芯片设计的IDE,按说应该更简洁,但是做得非常大,电脑慢的话使用起来也慢,不过功能确实强大

sbk100 发表于 2015-3-16 16:39:15

简直就是VS2010

zxzy2010 发表于 2015-3-24 22:50:21

正在学习AVR中,多谢楼主分享

jesse2012 发表于 2015-7-13 14:30:36

正需要还不错的,谢谢

mikeliujia 发表于 2015-8-3 13:14:40

一直用ICCAVR{:lol:}

不曾知晓 发表于 2015-11-11 10:55:11

IAR用的多,强大

chengdakang 发表于 2021-9-26 17:51:33

支持AVR,早日换发新生!

puby 发表于 2021-12-26 10:49:49

感謝樓主,收藏!

reflecter 发表于 2021-12-26 13:51:49

MCHP这家黑寡妇风格,搞封闭生态的,都在诱导客户,去用它那异常臃肿的MPLAB……
页: [1]
查看完整版本: 【原创】AtmelStudio-6.0简易入门教程