微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Atmel studio注意事项

注意事项整理如下: 
  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[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]={„„}; 

EmbededDriver 发布了128 篇原创文章 · 获赞 58 · 访问量 12万+ 私信 关注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐