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型,
  但可賦整型值。

注意在調用前在 delay.h 前面定義   #define F_CPU 8000000UL(這裏以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]={„„}; 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章