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