WinAVR使用指南
本頁面介紹的是WinAVR的使用方法。
在Windows平台上,免費的AVR編程軟件主要有兩個:AVR Studio和WinAVR。他們都使用GCC作為編譯器。前者具有一個完整的IDE和軟件硬件,但體積臃腫;後者簡單高效,但操作較為複雜。
選擇WinAVR的理由有以下幾個:
- 完全免費。WinAVR基於GCC和其他自由軟件,因此它也是自由的。
- 簡單高效。占用很小的硬盤空間和內存,無論安裝和使用都很快捷。
- 功能強勁。GCC的高效和穩定性有目共睹,它同時也支持最先進的C和C++標準。
此讀本中僅使用WinAVR內含的程序組件,不使用第三方的IDE和附加程序。
安裝
[編輯]首先下載最新版本的WinAVR,下載地址是http://winavr.sourceforge.net。WinAVR可運行於32位Windows操作系統中,併兼容64位Windows操作系統。
下載完成後,運行安裝程序。
選擇語言
[編輯]你沒有必要因為編程而選擇英文,也可以選擇你更熟悉的中文。
歡迎界面
[編輯]歡迎界面將提示你安裝馬上開始。建議你關閉其他正在運行的程序,正在進行的系統更新。屏幕背景將變成藍色,任務欄會消失。這只是安裝程序為了讓你集中注意力的做法。你依然可以通過鍵盤上的Windows鍵調出開始菜單和任務欄。
許可協議
[編輯]WinAVR在GNU GPL許可協議下發布。接受許可協議,以繼續安裝。
選擇路徑
[編輯]選擇安裝路徑。最佳的做法是安裝在一個不包含空格的路徑下,這樣會避免很多可能的問題。
選擇組件
[編輯]選擇額外的組件。
- Install Files,安裝文件。它是必要的選項。
- Add Directories to PATH,將程序目錄添加到PATH環境變量。強烈建議的選項,添加到PATH之後,你就可以直接調用WinAVR命令,而不必切換到程序路徑。
- Programmers Notepad,代碼編輯器,也是一個簡單的IDE。建議安裝,它體積小巧,卻能為編程帶來極大便利。
安裝進度
[編輯]安裝過程中會顯示安裝進度,此過程會持續幾分鐘,這取決於你的計算機速度。
安裝完成
[編輯]若安裝順利完成,則會跳到完成界面。點擊完成離開安裝界面。
用戶手冊
[編輯]點擊「完成」後,會在瀏覽器中自動打開英文的WinAVR用戶手冊。花一點時間閱讀它,將對你以後使用WinAVR有很大幫助。你可以隨時通過開始菜單中的「WinAVR > WinAVR User Manual」來查閱它。
創建項目(IDE)
[編輯]此節介紹使用WinAVR簡單的IDE——Programmers Notpad,來創建AVR項目,書寫代碼,編譯程序,並下載到AVR單片機。
啟動Programmer's Notepad
[編輯]在開始菜單中尋找WinAVR 20100110(也可能是其他版本號) > Programmers Notepad [WinAVR],打開程序。
新建項目
[編輯]File > New > Project,新建一個項目。
指定項目的名字,並選擇項目路徑。項目路徑是存放的所有項目文件,最好為它選擇一個一個單獨的空目錄。
編寫代碼
[編輯]在啟動Programmer's Notepad時,已經默認加載了一個新建的空白文檔,這個文檔還沒有被保存,也沒有設置文件類型,文本不會被識別為代碼。如果打開的時候沒有文件,則可以點擊工具欄左側的新建文件按鈕,創建一個空白文件。
我們可以先隨意輸入一些文本,然後保存。保存按鈕在工具欄的左側,也可以再「File」菜單裡選擇「Save」。注意文件的保存的文件夾最好與前面項目文件夾一致。文件名以「.c」結尾可以幫助Programmer's Notepad識別代碼類型。
然後,我們就可以將此C源代碼文件包含到項目中去了。右擊窗口左側項目面板中的我們前面新建的項目,在右鍵菜單中選擇「Add Files」。之所以要將C代碼文件添加到項目中,是為了便於項目的管理。
現在,就可以在C文件中添加代碼了。試着將下面的代碼複製到編輯器中,或者自己書寫代碼。
//此程序实现8个LED的亮与灭 //所使用的开发板为MEGA128,PB接8个LED灯,1为亮,0为灭 //若使用不同的开发板,则应相应修改 #include <avr/io.h> //AVR头文件 #include <util/delay.h> //内部函数头文件 int main(void) { PORTB = 0xff;//初始化PB口 DDRB = 0xff;//设置PB口为输出 while(1){ PORTB = 0xff; _delay_ms(500);//延时500毫秒 PORTB = 0x00; _delay_ms(500);//延时500毫秒 } }
輸入代碼之後,編輯器能夠自動識別代碼,並以不同顏色標記。
如此,代碼便編輯完畢了。但現在還不能直接開始編譯,因為還沒有配置makefile。
Makefile
[編輯]在開始菜單中打開WinAVR > MFile [WinAVR]。
在程序菜單打開Makefile,在菜單中選擇各個選項。
首先是Main file name,即包含main函數的C文件。只需要輸入文件名即可,不需要後綴(.c)。
下面是MCU type,也就是單片機的型號,這裡使用的是ATmega系列的atmega128。
當你選擇了選項之後,會發現Makefile文件多了一行「MCU = atmega128」。這個小程序的作用就是在你通過菜單修改選項時,同步修改makefile文件。
然後是Output format,即編譯輸出的文件類型。這裡我們選擇ihex(十六進制文件),這種文件可被下載程序下載到單片機中。
接下來是Optimization level選項,選擇默認的s即可。
之後是Debug format選項,這裡我們使用GDB和Insight調試工具,因此要選擇第一個「ELF/stabs」。
C standard level,即C語言標準。C99和GNU99是不同的,這裡我們選擇GNU99。
C/C++ source files,C/C++源文件。如果除了main文件還有其他C/C++源代碼文件,則需要用此選項添加。
還有一個芯片的晶振頻率,需要手動修改。在菜單中選擇Makefile > Enable Editing of Makefile,啟動手動編輯。現在就可以像編輯文本一樣修改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的數值修改為與你的單片機一致。F_CPU的值也可在C代碼中用#define F_CPU設定,代碼中的定義會覆蓋makefile中的定義。
編輯好之後,File>Save as,保存此makefile文件到項目文件夾下,文件名為必須為Makefile。
編譯程序
[編輯]有了Makefile之後,就可以編譯程序了。
回到Programmer's Notepad,確保代碼已經保存。使用菜單欄的Tools > Make all [Win AVR],編譯程序。
若程序沒有錯誤,編譯就能順利完成。若有錯誤,則會在下方的結果中提示。
現在我們轉到項目所在的文件夾,就能看到WinAVR編譯輸出的文件了。
- .hex後綴的文件是Flash文件,可以通過燒寫程序下載到AVR單片機的Flash中去。
- .eep後綴的文件是EEPROM文件,可以通過燒寫程序下載到AVR單片機的EEPROM中去。
現在,一個AVR項目就已經完成了。
創建項目(CLI)
[編輯]此節介紹使用命令行和文本編輯器(如Windows記事本),來書寫代碼,編譯程序,並下載到AVR單片機。