AtmelStudio-6.0简易入门教程(精炼实用)
更新时间:2024-01-19 21:51:01 阅读量: 教育文库 文档下载
一、建议工程文件
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文件的名称,蓝圈2 Solution 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 。这点很重要,AS6把atmel所有的单片机头文件全都集成在一起了,以后不必再去分具体的每种芯片的头文件了 2) 汇编嵌入
在AS6 中,你可以直接使用asm(\格式.或者用小写的sei();这个其实是很爽的,最常用的就是中断控制,使用比较方便。
3) 延时函数
在AS6中,只需要加载一个头文件#include
但可赋整型值。注意在调用前定义#define F_CPU 8000000UL,如下图,这样延时10ms的函数写为_delay_ms(10),经过试用,只要晶振填写准确,这两个延时函数很准确。
4) 中断函数
在AS6中,需加载头文件#include ,并且函数名为ISR,不可自定义函数名,格式如下: ISR( TIMER0_OVF_vect ) {?}
TIMER0_OVF_vect 含义同iv_TIMER0_OVF ,是T0溢出中断号。不同型号mcu的中断向量号的名称不同,A6的中断向量号请从avr/iomXXX.h中查找。
5) EEPROM操作函数
在ICC中加载头文件#include
6) 定义数据在flash区
主要用于在字符点阵或图形点阵数据存放在flash区,这样可以减少data区的使用,不至于使data区溢出。 在AS6中,需加载头文件#include ,然后用 PROGMEM 。 举例说明:
PROGMEM const unsigned char flash[10];
在flash区声明一个unsiged char型的数组,成员个数10。
unsigned char a;
a = pgm_read_byte(flash[0]);
把flash [0]值赋给变量a。而a = flash[0]是不会从flash区读数据的,而是读data区的数据。
二维数组: PROGMEM const unsigned char flash[3][10]={??}; 指针数组: PROGMEM const unsigned char* const flash[3]={??};
二、工程文件的优化设置
点击工程项目,properties 进行设置
定位代码地址,bootloader是必须的,其它程序也可能需要在“属性”里
设置晶振频率(这也是预设计的#define...)
设置头文件路径
设置需要生成的文件(设置生成文件hex)
设置优化率
添加自定义库
更换为WinaAvr 编译条件的设置
设置芯片
设置仿真器(我没有使用仿真器,设置为Simulator)
三、从ICC_AVR_到_Atmel_Studio_6
以前一直在用ICCAVR 感觉生成文档方便,现在发现了Atmel Studio 6, 因为偶尔会用C#(VS2010)所以一下子就喜欢上了这个编译器,我只用8bit 的AVR 另外也是刚刚接触,所以在移植过程中会遇到各种问题,以下是自己的一些问题写出来共大家参考;
1. MCU必须的头文件
例如在ICC AVR(以下简称ICC)中使用 #include
在ICC 中,头文件
#define WDR() asm(\ #define SEI() asm(\ #define CLI() asm(\
3.
4.
5.
6.
#define NOP() asm(\ #define SLEEP() asm(\ #define _WDR() asm(\ #define _SEI() asm(\ #define _CLI() asm(\ #define _NOP() asm(\ #define _SLEEP() asm (\ #define BIT(x) (1 << (x)); 在AS6 中,你可以直接使用asm(\格式.或者用小写的sei();(当然要包含相应的头文件);
Ps:如果移植ICC的代码比较麻烦,可以将这些宏命令添加到一个总的头文件(include.h) 中,所有c 文件都引用include.h,那么在移植过程中,将不需要修改代码。 延时函数
在ICC中,delay延时函数,需要自己写,往往不准。而在AS中,只需要加载一个头文件#include
例如T0 溢出中断,在ICC 中如下定义:
#pragma interrupt_handler timer0_ovf_isr:iv_TIMER0_OVF void timer0_ovf_isr(void) {?}
timer0_ovf_isr 这个函数名是自定义的。
而在A6中,需加载头文件#include ,并且函数名为ISR,不可自定义函数名,格式如下: ISR( TIMER0_OVF_vect ) {?}
TIMER0_OVF_vect 含义同iv_TIMER0_OVF ,是T0溢出中断号。不同型号mcu的中断向量号的名称不同,A6的中断向量号请从avr/iomXXX.h中查找。 EEPROM操作函数
在ICC中加载头文件#include
在AS6中,加载头文件#include 后,可以使用如下两个读写函数: _EEGET(var, addr) ; //读EEPROM中的一个字节 _EEPUT(addr, var) ; //向EEPROM中写入一个字节
Ps:为了移植时不修改代码,我的做法是在总的头文件(include.h)中添加以下宏定义: #define EEPROM_read(addr, var) _EEGET(var, addr) #define EEPROM_write (addr, var) _EEPUT(addr, var) 定义数据在flash区
主要用于在字符点阵或图形点阵数据存放在flash区,这样可以减少data区的使用,不 至于使data区溢出.在ICC中,用const关键字定义变量,并在ICC软件设置项中,勾选treat \ __flash即可。
在AS6中,需加载头文件#include ,然后用 PROGMEM 举例说明:
PROGMEM const unsigned char flash[10];在flash区声明一个unsiged char型的数组,成员个数10。 unsigned char a;
a = pgm_read_byte(flash[0]); 把flash [0]值赋给变量a。而a = flash[0]是不会从flash区读数据的,而是读data区的数据。
二维数组:
PROGMEM const unsigned char flash[3][10]={……};
指针数组:
PROGMEM const unsigned char* const flash[3]={……};
正在阅读:
AtmelStudio-6.0简易入门教程(精炼实用)01-19
第一、二章 复习题06-04
高三英语核心词汇复习第13、14课时12-14
江苏省南京市鼓楼区2018-2019学年度上学期九年级物理期中试卷(word版及 答案09-02
生命渴望自由作文500字07-09
医院转科、转院、转诊制度10-17
E型热电偶分度表05-17
系统工程 汪应洛主编课后题答案 - 图文12-23
冀教版六年级下册数学单元测试-第三单元达标测试卷 - 冀教版含06-29
核电站用大型板式换热器的制造06-04
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 入门教程
- 精炼
- AtmelStudio
- 简易
- 实用
- 6.0
- 神经系统护理评估
- 走美杯五年级易错题解题思路与易错点总结
- 心率变异性HRV信号提取及时频域分析(包含程序)概要 - 图文
- 幼儿合作游戏个案分析
- 《5月35日》阅读测试答案
- 语文版八年级上教案2
- 2014年广西高考满分作文:没有一种帮助是理所当然
- 养殖场饲料成品和原料的采购及验收管理规定
- 火工品考核办法
- 小学生常见病防治方案
- 年产130万平米玻化砖天然气辊道窑设计指导书-精品
- 人教版必修二 受精作用 教案
- 交通运输部关于废止一批政策性文件的决定交办发〔2016〕95号
- 橱柜橱电品牌调研报告 - 图文
- 公路路面基层施工技术细则 JTG T F20-20153配合比设计说明(3.0%水稳底基层)
- 成都指南针职业技术学校举行校卫队成立暨宣誓仪式 - 图文
- 新能源动力电池与电源管理课程标准
- 国防科技工业社会投资项目核准和备案管理暂行办法
- 老虎板王总结-胡金洲
- 农产品代理经销合同书