新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > winavr gcc快速入門

winavr gcc快速入門

作者: 時間:2011-11-08 來源:網(wǎng)絡 收藏

我們網(wǎng)站的研發(fā)部統(tǒng)一使用 WinAVR(即GCC)。我們會在所有的新手入門范例、應用范例中使用GCC開發(fā)代碼。詳細原因、軟件下載及安裝方法請參考:AVR開發(fā)軟件的選擇與安裝。

軟件安裝好后,你就能在電腦上看到如下的功能菜單:

說明如下:

名稱
說明
Programmers Notepad
GCC語言編輯器。可提供應用程序接口。
Mfile

GCC需要一個叫 makefile 的參數(shù)文件才能進行編譯。Mfile 是一個工具,可以讓用戶方便地修改 makefile 上的參數(shù)。不過我們不推薦使用它。我們推薦直接用記事本打開 makefile 進行編輯。

AVR Insight
仿真調試工具
TkInfo
GNU的超文本瀏覽器
Uninstall WinAVR
卸載 WinAVR 軟件
WinAVR User Manual
WinAVR 用戶手冊
GNU Maunals Online
GNU的在線幫助
AVR-libc Manual
AVR GCC的C語言函數(shù)庫幫助手冊

從上表可見,WinAVR 的功能看來很多。但我們只推薦使用PN (Programmers Notepad )。

讓我們演示如何使用PN進行GCC代碼的編輯、編譯。

步驟一:打開 PN 工具

步驟二: 編寫C源代碼

菜單 File --> Open 打開預先放在 C:avr_test 目錄下的C源文件。這個源文件來自我們的新手入門的第一個范例,文件名叫 main.c 。你可以點擊此處下載這個C文件壓縮包(需要解壓后才能使用,不要改名)。為了方便閱讀,我們將這個main.c 排版成彩色的網(wǎng)頁格式,你也可以直接點擊這里查看main.c 的具體內容。

打開main.c 后,看到如下的界面

你可以直接編輯 main.c 。

編輯完成,保存后,我們就可以進行下面的編譯工作。

步驟三: 準備 Makefile 文件

編譯能生成可供AVR執(zhí)行的代碼、仿真調試文件等。

可能大家會奇怪,上面的main.c 代碼,沒有告訴電腦AVR芯片的型號、工作頻率等,電腦如何知道這些數(shù)據(jù)?

WinAVR/GCC 使用一個叫 Makefile 的文件,存放這些參數(shù)。在WinAVR上也有一個叫mfile的應用程序去處理這個Makefile 文件。但我們測試時發(fā)現(xiàn),mfile 的缺陷很多,不好用,并且容易弄錯。我們推薦大家直接用記事本等,直接編譯這個文件。為了方便閱讀與修改,我們將最常用的內容,放到Makefile的最前面,并且作了中文注解。

你可以點擊此處下載這個makefile文件的壓縮包((需要解壓后才能使用,不要改名))。為了方便閱讀,我們將這個Makefile排版成彩色的網(wǎng)頁格式,你也可以直接點擊這里查看makefile的具體內容。

在我們的示范Makefile,會看到以下的內容。建議大家只修改:單片機的類型、系統(tǒng)時鐘頻率、目標文件名及C源文件名這四項。大家可參考我們的示范修改:

#這是一個簡單makefile,僅用于初學者使用
#修改于WINAVR20050214所生成的makefile
#簡單實驗只需更改 [單片機類型][目標文件名][C源文件名][系統(tǒng)時鐘頻率]即可
#修改好參數(shù)后另存到單片機程序所在目錄,然后執(zhí)行[make all]命令
#生成 燒錄FLASH的*.hex,燒錄EEPROM的*.eep,調試用的*.elf 文件
#
# www.OurAVR.com

# MCU name
# 單片機類型 參考格式是:atmega8 / at90s2313 / attiny15
MCU = atmega16

# Processor frequency.
# 系統(tǒng)時鐘頻率(Hz),用于生成延時 _delay_us() _delay_ms() 見delay.h
# 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.
F_CPU = 1000000

# Target file name (without extension).
# 目標文件名(即生成的.hex/.eep/.elf的文件名)
TARGET = main

# List C source files here. (C dependencies are automatically generated.)
# C源文件名(不帶路徑)
# 多個文件名間用空格隔開 例如 SRC = file1.c file2.c file3.c
# 不需要加上 h頭文件
SRC = $(TARGET).c

#**************后面內容基本不需要修改,除非你是老手*****************************#

# Output format. (can be srec, ihex, binary)
# 輸出燒錄文件格式
FORMAT = ihex

# Optimization level, can be [0, 1, 2, 3, s].
# 優(yōu)化級別
# ...... 下面的內容此處省略 ....

將我們這個示范的 Makefile 文件,下載后拷貝到 c:avr_test 目錄中。上面我們已經(jīng)設置了ATmega16芯片,工作在1M的頻率里,主文件名叫 main.c ,只有一個文件。

步驟四:編譯 (Make All)

按下圖操作。

編譯成功后,會有如下的 Process Exit Code: 0 的信息。

如果結果不是0,表明編譯有問題,請檢查你的 c:avr_test 目錄是否有main.c 與 Makefile 兩個文件。

編譯成功后,原來只有2個文件的目錄,現(xiàn)在變成了如下圖的文件清單:

重要說明:如果你需要重新編譯一次,最好先運行一下 Make Clean ,以保證編譯不受干擾。比如你修改了 Makefile 的MCU類型,如果你不使用 Make Clean, 就會得出錯誤的結果。

步驟五: 完成。

燒錄(ISP下載)、運行,與JTAG調試方法,請參考我們的新手入門中的有關范例。



關鍵詞: winavr gcc

評論


相關推薦

技術專區(qū)

關閉