WinAVR使用指南

本頁面介紹的是WinAVR的使用方法。

在Windows平台上,免費的AVR編程軟件主要有兩個:AVR Studio和WinAVR。他們都使用GCC作為編譯器。前者具有一個完整的IDE和軟件硬件,但體積臃腫;後者簡單高效,但操作較為複雜。

選擇WinAVR的理由有以下幾個:

  1. 完全免費。WinAVR基於GCC和其他自由軟件,因此它也是自由的。
  2. 簡單高效。占用很小的硬盤空間和內存,無論安裝和使用都很快捷。
  3. 功能強勁。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],打開程序。

 
Programmer's Notepad界面

新建項目 編輯

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毫秒
    }
}

輸入代碼之後,編輯器能夠自動識別代碼,並以不同顏色標記。

 
C代碼

如此,代碼便編輯完畢了。但現在還不能直接開始編譯,因為還沒有配置makefile。

Makefile 編輯

在開始菜單中打開WinAVR > MFile [WinAVR]

 
MFile

在程序菜單打開Makefile,在菜單中選擇各個選項。

首先是Main file name,即包含main函數的C文件。只需要輸入文件名即可,不需要後綴(.c)。

 
Main文件選項
 
輸入Main文件名

下面是MCU type,也就是單片機的型號,這裡使用的是ATmega系列的atmega128。

 
MCU選項

當你選擇了選項之後,會發現Makefile文件多了一行「MCU = atmega128」。這個小程序的作用就是在你通過菜單修改選項時,同步修改makefile文件。

然後是Output format,即編譯輸出的文件類型。這裡我們選擇ihex(十六進制文件),這種文件可被下載程序下載到單片機中。

 
Output選項

接下來是Optimization level選項,選擇默認的s即可。

 
Optimization選項

之後是Debug format選項,這裡我們使用GDB和Insight調試工具,因此要選擇第一個「ELF/stabs」。

 
Debug選項

C standard level,即C語言標準。C99和GNU99是不同的,這裡我們選擇GNU99。

 
C標準選項

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單片機。