WinAVR是開(kāi)源社區(qū)的一個(gè)用來(lái)開(kāi)發(fā)AVR單片機(jī)的GCC編譯器,WinAVR可運(yùn)行于32位Windows操作系統(tǒng)中,并兼容64位Windows操作系統(tǒng)。WinAVR 是GNU 組織推出的AVR 單片機(jī)的gcc 編譯器,該編譯器的編譯效率極高。gcc 編譯器是開(kāi)源的,是免費(fèi)的。使用gcc 編譯器,可以掌握標(biāo)準(zhǔn)c 的語(yǔ)法等,為學(xué)習(xí)Linux 等奠定基礎(chǔ)。
winavr 編譯器安裝教程:
下載完成后,運(yùn)行安裝程序。
選擇語(yǔ)言
你沒(méi)有必要因?yàn)榫幊潭x擇英文,也可以選擇你更熟悉的中文。
歡迎界面
歡迎界面將提示你安裝馬上開(kāi)始。建議你關(guān)閉其他正在運(yùn)行的程序,正在進(jìn)行的系統(tǒng)更新。屏幕背景將變成藍(lán)色,任務(wù)欄會(huì)消失。這只是安裝程序?yàn)榱俗屇慵凶⒁饬Φ淖龇?。你依然可以通過(guò)鍵盤(pán)上的Windows鍵調(diào)出開(kāi)始菜單和任務(wù)欄。
許可協(xié)議
WinAVR在GNU GPL許可協(xié)議下發(fā)布。接受許可協(xié)議,以繼續(xù)安裝。
選擇路徑
選擇安裝路徑。最佳的做法是安裝在一個(gè)不包含空格的路徑下,這樣會(huì)避免很多可能的問(wèn)題。
選擇組件
選擇額外的組件。
Install Files,安裝文件。它是必要的選項(xiàng)。
Add Directories to PATH,將程序目錄添加到PATH環(huán)境變量。強(qiáng)烈建議的選項(xiàng),添加到PATH之后,你就可以直接調(diào)用WinAVR命令,而不必切換到程序路徑。
Programmers Notepad,代碼編輯器,也是一個(gè)簡(jiǎn)單的IDE。建議安裝,它體積小巧,卻能為編程帶來(lái)極大便利。
安裝進(jìn)度
安裝過(guò)程中會(huì)顯示安裝進(jìn)度,此過(guò)程會(huì)持續(xù)幾分鐘,這取決于你的計(jì)算機(jī)速度。
安裝完成
若安裝順利完成,則會(huì)跳到完成界面。點(diǎn)擊完成離開(kāi)安裝界面。
winavr 編譯器簡(jiǎn)單使用教程:
啟動(dòng)Programmer's Notepad
在開(kāi)始菜單中尋找WinAVR 20100110(也可能是其他版本號(hào)) > Programmers Notepad [WinAVR],打開(kāi)程序。
新建項(xiàng)目
File > New > Project,新建一個(gè)項(xiàng)目。
指定項(xiàng)目的名字,并選擇項(xiàng)目路徑。項(xiàng)目路徑是存放的所有項(xiàng)目文件,最好為它選擇一個(gè)一個(gè)單獨(dú)的空目錄。
編寫(xiě)代碼
在啟動(dòng)Programmer's Notepad時(shí),已經(jīng)默認(rèn)加載了一個(gè)新建的空白文檔,這個(gè)文檔還沒(méi)有被保存,也沒(méi)有設(shè)置文件類(lèi)型,文本不會(huì)被識(shí)別為代碼。如果打開(kāi)的時(shí)候沒(méi)有文件,則可以點(diǎn)擊工具欄左側(cè)的新建文件按鈕,創(chuàng)建一個(gè)空白文件。
我們可以先隨意輸入一些文本,然后保存。保存按鈕在工具欄的左側(cè),也可以再“File”菜單里選擇“Save”。注意文件的保存的文件夾最好與前面項(xiàng)目文件夾一致。文件名以“.c”結(jié)尾可以幫助Programmer's Notepad識(shí)別代碼類(lèi)型。
然后,我們就可以將此C源代碼文件包含到項(xiàng)目中去了。右擊窗口左側(cè)項(xiàng)目面板中的我們前面新建的項(xiàng)目,在右鍵菜單中選擇“Add Files”。之所以要將C代碼文件添加到項(xiàng)目中,是為了便于項(xiàng)目的管理。
現(xiàn)在,就可以在C文件中添加代碼了。試著將下面的代碼復(fù)制到編輯器中,或者自己書(shū)寫(xiě)代碼。
//此程序?qū)崿F(xiàn)8個(gè)LED的亮與滅 //所使用的開(kāi)發(fā)板為MEGA128,PB接8個(gè)LED燈,1為亮,0為滅 //若使用不同的開(kāi)發(fā)板,則應(yīng)相應(yīng)修改 #include <avr/io.h> //AVR頭文件 #include <util/delay.h> //內(nèi)部函數(shù)頭文件 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毫秒 } }
輸入代碼之后,編輯器能夠自動(dòng)識(shí)別代碼,并以不同顏色標(biāo)記。
如此,代碼便編輯完畢了。但現(xiàn)在還不能直接開(kāi)始編譯,因?yàn)檫€沒(méi)有配置makefile。
Makefile
在開(kāi)始菜單中打開(kāi)WinAVR > MFile [WinAVR]。
在程序菜單打開(kāi)Makefile,在菜單中選擇各個(gè)選項(xiàng)。
首先是Main file name,即包含main函數(shù)的C文件。只需要輸入文件名即可,不需要后綴(.c)。
下面是MCU type,也就是單片機(jī)的型號(hào),這里使用的是ATmega系列的atmega128。
當(dāng)你選擇了選項(xiàng)之后,會(huì)發(fā)現(xiàn)Makefile文件多了一行“MCU = atmega128”。這個(gè)小程序的作用就是在你通過(guò)菜單修改選項(xiàng)時(shí),同步修改makefile文件。
然后是Output format,即編譯輸出的文件類(lèi)型。這里我們選擇ihex(十六進(jìn)制文件),這種文件可被下載程序下載到單片機(jī)中。
接下來(lái)是Optimization level選項(xiàng),選擇默認(rèn)的s即可。
之后是Debug format選項(xiàng),這里我們使用GDB和Insight調(diào)試工具,因此要選擇第一個(gè)“ELF/stabs”。
C standard level,即C語(yǔ)言標(biāo)準(zhǔn)。C99和GNU99是不同的,這里我們選擇GNU99。
C/C++ source files,C/C++源文件。如果除了main文件還有其他C/C++源代碼文件,則需要用此選項(xiàng)添加。
還有一個(gè)芯片的晶振頻率,需要手動(dòng)修改。在菜單中選擇Makefile > Enable Editing of Makefile,啟動(dòng)手動(dòng)編輯?,F(xiàn)在就可以像編輯文本一樣修改makefile文件了。找到
# Processor frequency. # This will define a symbol, F_CPU, in all source code files equal to the # processor frequency. You can then use this symbol in your source code to # calculate timings. Do NOT tack on a 'UL' at the end, this will be done # automatically to create a 32-bit value in your source code. # Typical values are: # F_CPU = 1000000 # F_CPU = 1843200 # F_CPU = 2000000 # F_CPU = 3686400 # F_CPU = 4000000 # F_CPU = 7372800 # F_CPU = 8000000 # F_CPU = 11059200 # F_CPU = 14745600 # F_CPU = 16000000 # F_CPU = 18432000 # F_CPU = 20000000 F_CPU = 8000000
將F_CPU的數(shù)值修改為與你的單片機(jī)一致。F_CPU的值也可在C代碼中用#define F_CPU設(shè)定,代碼中的定義會(huì)覆蓋makefile中的定義。
編輯好之后,F(xiàn)ile>Save as,保存此makefile文件到項(xiàng)目文件夾下,文件名為必須為Makefile。
編譯程序
有了Makefile之后,就可以編譯程序了。
回到Programmer's Notepad,確保代碼已經(jīng)保存。使用菜單欄的Tools > Make all [Win AVR],編譯程序。
若程序沒(méi)有錯(cuò)誤,編譯就能順利完成。若有錯(cuò)誤,則會(huì)在下方的結(jié)果中提示。
現(xiàn)在我們轉(zhuǎn)到項(xiàng)目所在的文件夾,就能看到WinAVR編譯輸出的文件了。
.hex后綴的文件是Flash文件,可以通過(guò)燒寫(xiě)程序下載到AVR單片機(jī)的Flash中去。
.eep后綴的文件是EEPROM文件,可以通過(guò)燒寫(xiě)程序下載到AVR單片機(jī)的EEPROM中去。
現(xiàn)在,一個(gè)AVR項(xiàng)目就已經(jīng)完成了。