WinAVR是开源社区的一个用来开发AVR单片机的GCC编译器,WinAVR可运行于32位Windows操作系统中,并兼容64位Windows操作系统。WinAVR 是GNU 组织推出的AVR 单片机的gcc 编译器,该编译器的编译效率极高。gcc 编译器是开源的,是免费的。使用gcc 编译器,可以掌握标准c 的语法等,为学习Linux 等奠定基础。
winavr 编译器安装教程:
下载完成后,运行安装程序。
选择语言
你没有必要因为编程而选择英文,也可以选择你更熟悉的中文。
欢迎界面
欢迎界面将提示你安装马上开始。建议你关闭其他正在运行的程序,正在进行的系统更新。屏幕背景将变成蓝色,任务栏会消失。这只是安装程序为了让你集中注意力的做法。你依然可以通过键盘上的Windows键调出开始菜单和任务栏。
许可协议
WinAVR在GNU GPL许可协议下发布。接受许可协议,以继续安装。
选择路径
选择安装路径。最佳的做法是安装在一个不包含空格的路径下,这样会避免很多可能的问题。
选择组件
选择额外的组件。
Install Files,安装文件。它是必要的选项。
Add Directories to PATH,将程序目录添加到PATH环境变量。强烈建议的选项,添加到PATH之后,你就可以直接调用WinAVR命令,而不必切换到程序路径。
Programmers Notepad,代码编辑器,也是一个简单的IDE。建议安装,它体积小巧,却能为编程带来极大便利。
安装进度
安装过程中会显示安装进度,此过程会持续几分钟,这取决于你的计算机速度。
安装完成
若安装顺利完成,则会跳到完成界面。点击完成离开安装界面。
winavr 编译器简单使用教程:
启动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头文件 #include //内部函数头文件 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项目就已经完成了。