WinAVR 的配置与 Makefile 一直是新手入门的两个难点。我们经过详细的测试,推荐大家不需要作任何的配置, 并且介绍了如何用最简单的方法创建自己的 Makefile 文件。利用本文,十来分钟你就能入门WinAVR /GCC.
我们网站的研发部统一使用 WinAVR(即GCC)。我们会在所有的新手入门范例、应用范例中使用GCC开发代码。详细原因、软件下载及安装方法请参考:AVR开发软件的选择与安装。
软件安装好后,你就能在电脑上看到如下的功能菜单:
说明如下:
名称
|
说明
|
ProgRAMmers Notepad
|
GCC语言编辑器。可提供应用程序接口。
|
Mfile
|
GCC需要一个叫 Makefile 的参数文件才能进行编译。Mfile 是一个工具,可以让用户方便地修改 Makefile 上的参数。不过我们不推荐使用它。我们推荐直接用记事本打开 Makefile 进行编辑。
|
AVR Insight
|
仿真调试工具
|
TkInfo
|
GNU的超文本浏览器
|
Uninstall WinAVR
|
卸载 WinAVR 软件
|
WinAVR User Manual
|
WinAVR 用户手册
|
GNU Maunals Online
|
GNU的在线帮助
|
AVR-Libc Manual
|
AVR GCC的C语言函数库帮助手册
|
从上表可见,WinAVR 的功能看来很多。但我们只推荐使用PN (Programmers Notepad )。
让我们演示如何使用PN进行GCC代码的编辑、编译。
步骤一:打开 PN 工具
步骤二: 编写C源代码
菜单 File --> Open 打开预先放在 C:avr_test 目录下的C源文件。这个源文件来自我们的新手入门的第一个范例,文件名叫 Main.C (需要的话复制代码另存为Main.C,不要改名)直接点击这里查看Main.C 的具体内容。
打开Main.C 后,看到如下的界面

你可以直接编辑 Main.C 。
编辑完成,保存后,我们就可以进行下面的编译工作。
步骤三: 准备 Makefile 文件
编译能生成可供AVR执行的代码、仿真调试文件等。
可能大家会奇怪,上面的Main.C 代码,没有告诉电脑AVR芯片的型号、工作频率等,电脑如何知道这些数据?
WinAVR/GCC 使用一个叫 Makefile 的文件,存放这些参数。在WinAVR上也有一个叫Mfile的应用程序去处理这个Makefile 文件。但我们测试时发现,Mfile 的缺陷很多,不好用,并且容易弄错。我们推荐大家直接用记事本等,直接编译这个文件。为了方便阅读与修改,我们将最常用的内容,放到Makefile的最前面,并且作了中文注解。
直接点击这里查看Makefile的具体内容。你可以 复制到本地电脑另存为Makefile,不要改名。
在我们的示范Makefile,会看到以下的内容。建议大家只修改:单片机的类型、系统时钟频率、目标文件名及C源文件名这四项。大家可参考我们的示范修改:
#这是一个简单Makefile,仅用于初学者使用
#修改于WINAVR20050214所生成的Makefile
#简单实验只需更改 [单片机类型][目标文件名][C源文件名][系统时钟频率]即可
#修改好参数后另存到单片机程序所在目录,然后执行[Make All]命令
#生成 烧录FLASH的*.Hex,烧录EEPROM的*.Eep,调试用的*.Elf 文件
#
# Www.OurAVR.Com
# MCU Name
# 单片机类型 参考格式是:Atmega8 / At90s2313 / Attiny15
MCU = Atmega16
# Processor Frequency.
# 系统时钟频率(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].
# 优化级别
# ...... 下面的内容此处省略 ....
将我们这个示范的 Makefile 文件,下载后拷贝到 C:avr_test 目录中。上面我们已经设置了ATmega16芯片,工作在1M的频率里,主文件名叫 Main.C ,只有一个文件。
步骤四:编译 (Make All)
按下图操作。

编译成功后,会有如下的 Process Exit Code: 0 的信息。
如果结果不是0,表明编译有问题,请检查你的 C:avr_test 目录是否有Main.C 与 Makefile 两个文件。

编译成功后,原来只有2个文件的目录,现在变成了如下图的文件清单:

重要说明:如果你需要重新编译一次,最好先运行一下 Make Clean ,以保证编译不受干扰。比如你修改了 Makefile 的MCU类型,如果你不使用 Make Clean, 就会得出错误的结果。
步骤五: 完成。
烧录(ISP下载)、运行,与JTAG调试方法,请参考我们的新手入门中的有关范例。 |