新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)學(xué)習(xí)活動(dòng)之帶你學(xué)會(huì)WinAVR

AVR單片機(jī)學(xué)習(xí)活動(dòng)之帶你學(xué)會(huì)WinAVR

作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò) 收藏
對(duì)于GCC(注:本文中所說(shuō)GCC與WINAVR是同一個(gè)概念)的介紹這里不做贅述,對(duì)于學(xué)習(xí)AVR單片機(jī)的朋友相信都聽(tīng)說(shuō)過(guò)這款編譯軟件。AVR的開(kāi)發(fā)軟件很很多,下面是本人在網(wǎng)上搜索到的對(duì)于幾個(gè)編譯軟件的一點(diǎn)比較,僅供參考:


相信對(duì)于每個(gè)已經(jīng)在學(xué)習(xí)AVR的朋友都有一款自己喜歡使用的編譯軟件,我們推薦使用GCC,原因是它是真正的免費(fèi)的,對(duì)C語(yǔ)言的支持是很好的??赡芎芏嗯笥褜?duì)于使用匯編編程還是使用C語(yǔ)言編程都有不同的見(jiàn)解,在這里我們推薦使用相對(duì)高級(jí)的C語(yǔ)言進(jìn)行編程,現(xiàn)在一個(gè)好的編譯軟件對(duì)于程序的優(yōu)化是可以讓人接受的,其編譯出的程序效率足以滿足我們的要求,并且其良好的可移植性為不同平臺(tái)下的程序編寫(xiě)提供了方便。

這里是GCC的下載頁(yè)面: http://sourceforge.net/projects/winavr/files/

GCC對(duì)于初學(xué)者可能不是太容易入門(mén),我在這里做這個(gè)簡(jiǎn)單的教程,希望對(duì)于初學(xué)AVR并且想以GCC為開(kāi)發(fā)軟件的朋友有所幫助。本教程將以如下幾個(gè)部分進(jìn)行:

* GCC軟件的安裝

* 建立并編譯第一個(gè)GCC工程文件

* 配置Makefile文件



1、GCC軟件的安裝

如果你按照上面所說(shuō)的鏈接下載到最新版的GCC安裝軟件,請(qǐng)找到安裝軟件的位置,文件名為WinAVR-20090313-install.exe。

雙擊運(yùn)行,進(jìn)行安裝。在安裝步驟上與在WINDOWS下安裝其他軟件沒(méi)有很大的區(qū)別,大致步驟如下:

選擇安裝語(yǔ)言,這里選擇簡(jiǎn)體中文。

一直點(diǎn)下一步,然后選擇安裝位置。

這里選擇要安裝的組件,如果電腦空間不是很擁擠的話建議完全安裝。

點(diǎn)擊安裝進(jìn)行GCC的安裝。

完成安裝。

安裝完成之后會(huì)彈出一個(gè),WINAVR USER MANUAL,這個(gè)關(guān)掉即可,這是一個(gè)不錯(cuò)的參考資料,有興趣的朋友可以仔細(xì)看一看。

完成之后在開(kāi)始->程序->WINAVR-20090313里面可以找到安裝的GCC軟件。

2、建立并編譯第一個(gè)GCC工程文件

這一部分我說(shuō)一下AVR GCC中如何建立工程并編輯程序代碼。

點(diǎn)擊上圖中的Programmers Notepad[WinAVR],啟動(dòng)我們的 AVR GCC主程序。如圖:

其界面跟常用的WINDOWS下的程序是一樣的,沒(méi)有特別的地方,在這里不做詳細(xì)的說(shuō)明,用到的時(shí)候我們?cè)龠M(jìn)行說(shuō)明。

點(diǎn)擊File->New->Project,建立一個(gè)新的工程,如下圖:

輸入工程的名字,選擇工程的存放路徑,可以有中文路徑。然后點(diǎn)擊OK按鈕。

在界面中間的文本編輯窗口中,敲一個(gè)空格,或者鍵入任何內(nèi)容,在工具欄上的保存按鈕將變成有效的狀態(tài)(默認(rèn)保存按鈕是無(wú)效的?。?。點(diǎn)擊保存,在彈出的“另存為”對(duì)話框中,將文件保存為main.c文件,然后放到工程目錄下(剛才建立的test工程目錄)。如果不小心把這個(gè)空白的默認(rèn)為new的編輯窗口關(guān)掉或者開(kāi)始的時(shí)候就沒(méi)有,可以點(diǎn)擊file菜單下面的

按鈕新建一個(gè),保存方法同上。

在左側(cè)的工程欄窗口中,右鍵點(diǎn)擊工程名test,選擇Add Files。

將剛保存的main.c文件添加進(jìn)工程。

在左側(cè)的工程中可以看到目錄結(jié)構(gòu):

至此,我們就建立好了一個(gè)新的工程,我們?cè)谶@里添加簡(jiǎn)單的代碼測(cè)試。如下:



#include //AVR頭文件

#include //內(nèi)部函數(shù)頭文件



//PB口接8個(gè)LED,PB口為低時(shí)LED亮,高時(shí)滅,

//本程序?qū)崿F(xiàn)8個(gè)LED以1HZ的頻率閃爍



int main(void)

{

PORTB = 0xff;//初始化PB口

DDRB = 0xff;//設(shè)置PB口為輸出

while(1)

{

PORTB = 0xff;

_delay_ms(500);//延時(shí)500毫秒

PORTB = 0x00;

_delay_ms(500);//延時(shí)500毫秒

}

}

點(diǎn)擊保存。

這樣我們的第一個(gè)測(cè)試程序就編輯完畢了。有興趣的朋友可以現(xiàn)在點(diǎn)擊Tools->[WinAVR]Make All編譯一下試試,看看能不能編譯通過(guò)?答案是:不能通過(guò)!!提示:

> "make.exe" all

make.exe: *** No rule to make target `all. Stop.



> Process Exit Code: 2

> Time Taken: 00:00

原因是MakeFile尚未編寫(xiě)。在GCC進(jìn)行編譯的時(shí)候找不到Makefile文件就會(huì)出錯(cuò)。下面Makefile文件的配置方法.

3、配置Makefile文件

開(kāi)始->程序->WinAVR-20090313->MFile[WinAVR],打開(kāi)Makefile的配置窗口。

點(diǎn)擊Makefile菜單,常用的選項(xiàng)有:

Main file name…

MCU type

其他的可以先保持默認(rèn)。

先點(diǎn)擊Makefile->Main file name…在彈出的對(duì)話框中輸入剛才我們建立的c文件的文件名,不包括“.c”?。。≈惠斎雖ain即可。(必須跟源文件名一致!?。。。。?br />
然后,Makefile-> MCU type,選擇MCU的類型,我們使用的是atmega16。

然后點(diǎn)擊File->Save As,在彈出的對(duì)話框中選擇保存到我們上一節(jié)建立的工程目錄下(或者先保存到別的地方然后拷貝過(guò)去)!??!

雙擊得到的Makefile文件(不要改文件名?。。?!),在打開(kāi)方式中選擇,記事本。確定。

將F_CPU = 8000000,改成你需要的晶振頻率,我的板子是7.3728MHZ,那么就改成F_CPU = 7372800,保存退出。

這樣,Makefile基本的配置就完成了,然后回到WinAVR的界面中,點(diǎn)擊Tools->[WinAVR]Make All編譯,在下面的Output窗口中提示:

> "make.exe" all



-------- begin --------

avr-gcc (WinAVR 20090313) 4.3.2

Copyright (C) 2008 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.





Compiling C: main.c

avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o



Linking: main.elf

avr-gcc -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o -std=gnu99 -MMD -MP -MF .dep/main.elf.d main.o --output main.elf -Wl,-Map=main.map,--cref -lm



Creating load file for Flash: main.hex

avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock main.elf main.hex



Creating load file for EEPROM: main.eep

avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load"

--change-section-lma .eeprom=0 --no-change-warnings -O ihex main.elf main.eep || exit 0



Creating Extended Listing: main.lss

avr-objdump -h -S -z main.elf > main.lss



Creating Symbol Table: main.sym

avr-nm -n main.elf > main.sym



Size after:

AVR Memory Usage

----------------

Device: atmega16



Program: 158 bytes (1.0% Full)

(.text + .data + .bootloader)



Data: 0 bytes (0.0% Full)

(.data + .bss + .noinit)







-------- end --------





> Process Exit Code: 0

> Time Taken: 00:07

編譯通過(guò)!??!在工程目錄中可以看到編程之后生成的HEX文件。

到這里AVR GCC基本使用大致就可以掌握了,其他的一些功能比如和AVR Studio配合使用等在熟悉了之后慢慢就可以摸索了,我們后面也考慮出相應(yīng)教程,歡迎大家到時(shí)候關(guān)注http://bbs.cepark.com/index.php ,我們會(huì)第一時(shí)間把教程發(fā)布在論壇提供給大家下載。

這里只給大家簡(jiǎn)單的介紹了AVR GCC的使用,盡量以圖形的方式方便大家的學(xué)習(xí),后面緊跟的將是下載軟件的使用,我們推薦雙龍的下載軟件。


關(guān)鍵詞: AVR單片機(jī)WinAV

評(píng)論


技術(shù)專區(qū)

關(guān)閉
×

Digikey let's do
· 2025年第1期限时报名开启,5月8日截止
· Digikey助力,提供一站式免费器件支持
· 跟大佬一起 【DIY 功率监测与控制系统】