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单片机。