【原创】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={……};
还在用4的飘过。 也在用AS6, 支持楼主共享。同时把《从ICC AVR 到 Atmel Studio 6》上传, 给需要的人。 Mark 做个小小记号. 不知道为啥要基于VS做个IDE,又大又卡,还不如eclipse,还开源 安装个VS10 就可以使中文版的了······
这软件是有些大,喜欢用IAR,有无更好的推荐? 安装的时候总是提示少了一个或多个组件 ??敢问是怎么回事 男小北 发表于 2013-11-3 23:56 static/image/common/back.gif
安装的时候总是提示少了一个或多个组件 ??敢问是怎么回事
我win7安装没有这个问题它附带的那些东西都要装才行 謝謝樓主的共享! rantingting 发表于 2013-11-4 09:01 static/image/common/back.gif
我win7安装没有这个问题它附带的那些东西都要装才行
win732位的安装没有出现问题 64位的一直出现这个问题 男小北 发表于 2013-11-6 10:44 static/image/common/back.gif
win732位的安装没有出现问题 64位的一直出现这个问题
我的就是64位的 rantingting 发表于 2013-11-6 11:10 static/image/common/back.gif
我的就是64位的
可能是我系统 的问题 谢谢楼主,收藏了 好帖。。。 mark,可以多多讨论下。 最近一直在AV6挺好用的 在用,挺好的!大家一起来用吧 不是说AVR已死吗? meirenai 发表于 2013-11-9 09:00 static/image/common/back.gif
不是说AVR已死吗?
死也没那么快吧况且死不死谁能说定 4.13很稳地的说 cpu100 发表于 2013-11-9 09:11 static/image/common/back.gif
4.13很稳地的说
如果你用了6,你会说6.0很稳定且超好用的说{:lol:} rantingting 发表于 2013-11-9 09:15 static/image/common/back.gif
如果你用了6,你会说6.0很稳定且超好用的说
现在avr用的很少了 xlwq 发表于 2013-11-1 21:11 static/image/common/back.gif
安装个VS10 就可以使中文版的了······
vs10怎么还要产品序列码啊,这个怎么获得呢 我的是中文版的,楼主,怎么下载你怎么没讲呢,我用的是ISP烧录模式,给我讲讲啊 ljbskx 发表于 2013-11-13 09:52 static/image/common/back.gif
vs10怎么还要产品序列码啊,这个怎么获得呢
我的VS2010没有要求输入 序列号!! xlwq 发表于 2013-11-13 11:04 static/image/common/back.gif
我的VS2010没有要求输入 序列号!!
没有啊,你别自己单独安装,studio 6 会自动安装不要序列号 ljbskx 发表于 2013-11-13 10:00 static/image/common/back.gif
我的是中文版的,楼主,怎么下载你怎么没讲呢,我用的是ISP烧录模式,给我讲讲啊 ...
下载我是用的那种跟优盘一样大小的isp下载器,官方的下载器相当贵的,600多吧好像,而且盗版的根本不支持,就直接用avr isp模块把hex文件烧录进去就行 这个编译器好用吗? ljt80158015 发表于 2013-11-13 13:52 static/image/common/back.gif
这个编译器好用吗?
跟人任务,超好用,尤其码字写代码方面 下载Atmel Studio 6,太大了,网速慢,花了一天时间~{:sad:} dela2000 发表于 2014-2-10 21:28
下载Atmel Studio 6,太大了,网速慢,花了一天时间~
是你家的网速不行 rantingting 发表于 2014-2-10 22:21
是你家的网速不行
有可能~{:smile:} mark 众里寻他千百度 AtmelStudio的确是Atmel不遗余力推出的好作品
就是安装太大了。关键是免费的啊
做个小小记号. mark留名备用 正在迷糊不知怎么弄时,看到了楼主的帖子,给力 谢谢楼主分享,只用过AVR stuido 4,打算了解一下6. onece 发表于 2013-11-1 15:14
还在用4的飘过。
恩,+1{:lol:} 以前一直ICC,GCC,然后下了AVRstudio没用,现在这个看来不错啊 不调试用VS6实在没有必要,代码补全有很多工具
小且打开快速 minier 发表于 2014-3-2 20:26
不调试用VS6实在没有必要,代码补全有很多工具
小且打开快速
还请赐教,代码补全的工具?VS6会自动识别你所选芯片型号的rom等还有一些很好的设别功能 AS6 不好用。上手要花很多时间。ICC AVR, CrossStudio 很好。 qwang 发表于 2014-3-4 12:20
AS6 不好用。上手要花很多时间。ICC AVR, CrossStudio 很好。
上手及其简单………… 很好!刚好,可以改用AS6 hyghyg1234 发表于 2013-11-8 13:59
最近一直在AV6挺好用的
如何汉化? zhcj66 发表于 2014-6-21 13:10
如何汉化?
我直接用的英文版本的。 hyghyg1234 发表于 2014-6-21 14:09
我直接用的英文版本的。
那 我也用英文的 ,现在所用的IDE都是英文的,突然改成中文的还真怕不习惯{:lol:} 本帖最后由 zhcj66 于 2014-7-9 16:32 编辑
我第一次用AS6怎么修改成atmega128后然后 初始化管脚后,管脚就不停的高低电平轮询,在初始化后没有操作IO口
用AVR ICC就没有这样的问题 spy2008 发表于 2013-11-1 15:36
也在用AS6, 支持楼主共享。同时把《从ICC AVR 到 Atmel Studio 6》上传, 给需要的人。 ...
请问用AS6初始化IO口后为什么 在高低电平统一变化呢? 没有操作IO口 zhcj66 发表于 2014-7-9 16:47
请问用AS6初始化IO口后为什么 在高低电平统一变化呢? 没有操作IO口
没遇到这种情况,可能是你程序有写问题吧 rantingting 发表于 2014-7-9 19:48
没遇到这种情况,可能是你程序有写问题吧
今天早上终于搞明白了,是在熔丝里面使能了看门狗,在程序里面没有初始化看门狗,也没有喂狗,造成mcu不停的复位 rantingting 发表于 2014-7-9 19:48
没遇到这种情况,可能是你程序有写问题吧
现在新的问题来了,如何喂狗呢,以前用的是WDR();还有开关全局中断 以前用的是SEI();和CLI(); 现在不知道如何使用了,用AS6.2不能用这个 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));
mark 新手!外部中断ISR(XXXXX)括号里面怎么写啊? Zenmvol 发表于 2014-8-13 16:01
新手!外部中断ISR(XXXXX)括号里面怎么写啊?
还想弄对了…… 不错不错,帮大家入门了…… 准备回归ATMEL, 学习。 细心的网友,收藏了 谢谢楼主分享,好久之前就十分想用6.0版本,这次终于又看到教程了 AS6 软件太大,启动太慢,不喜欢这个软件,还是IAR用起来爽得多 谢谢啦,试一下 装了WIN8.1, 64位,没办法,也升级到 AS6 吧。还有LGT 也推荐 6..... thank !还好有你这个文档,不然我又得瞎折腾一天咯 好资料,对我这样想用AVR的人来说很有用、 新手,谢谢分享! 多谢了啊,非常的不错啊,不过没有JTAG是非常的不爽的,程序写大了就知道了!{:lol:} mark 一直用的ICCAVR。感觉界面简洁好用 AS6.2用着不错,就是没有ICE,烦恼哎. 好东西呀
针对自己芯片设计的IDE,按说应该更简洁,但是做得非常大,电脑慢的话使用起来也慢,不过功能确实强大 简直就是VS2010 正在学习AVR中,多谢楼主分享 正需要还不错的,谢谢 一直用ICCAVR{:lol:} IAR用的多,强大 支持AVR,早日换发新生! 感謝樓主,收藏! MCHP这家黑寡妇风格,搞封闭生态的,都在诱导客户,去用它那异常臃肿的MPLAB……
页:
[1]