AVR单片机学习活动之带你学会WinAVR

相信对于每个已经在学习AVR的朋友都有一款自己喜欢使用的编译软件,我们推荐使用GCC,原因是它是真正的免费的,对C语言的支持是很好的。可能很多朋友对于使用汇编编程还是使用C语言编程都有不同的见解,在这里我们推荐使用相对高级的C语言进行编程,现在一个好的编译软件对于程序的优化是可以让人接受的,其编译出的程序效率足以满足我们的要求,并且其良好的可移植性为不同平台下的程序编写提供了方便。
这里是GCC的下载页面: http://sourceforge.net/projects/winavr/files/
GCC对于初学者可能不是太容易入门,我在这里做这个简单的教程,希望对于初学AVR并且想以GCC为开发软件的朋友有所帮助。本教程将以如下几个部分进行:
*
*
*
1、GCC软件的安装
如果你按照上面所说的链接下载到最新版的GCC安装软件,请找到安装软件的位置,文件名为WinAVR-20090313-install.exe。
双击运行,进行安装。在安装步骤上与在WINDOWS下安装其他软件没有很大的区别,大致步骤如下:
选择安装语言,这里选择简体中文。
一直点下一步,然后选择安装位置。
这里选择要安装的组件,如果电脑空间不是很拥挤的话建议完全安装。
点击安装进行GCC的安装。
完成安装。
安装完成之后会弹出一个,WINAVR USER MANUAL,这个关掉即可,这是一个不错的参考资料,有兴趣的朋友可以仔细看一看。
完成之后在开始->程序->WINAVR-20090313里面可以找到安装的GCC软件。
2、建立并编译第一个GCC工程文件
这一部分我说一下AVR GCC中如何建立工程并编辑程序代码。
点击上图中的Programmers Notepad[WinAVR],启动我们的 AVR GCC主程序。如图:
其界面跟常用的WINDOWS下的程序是一样的,没有特别的地方,在这里不做详细的说明,用到的时候我们再进行说明。
点击File->New->Project,建立一个新的工程,如下图:
输入工程的名字,选择工程的存放路径,可以有中文路径。然后点击OK按钮。
在界面中间的文本编辑窗口中,敲一个空格,或者键入任何内容,在工具栏上的保存按钮将变成有效的状态(默认保存按钮是无效的!)。点击保存,在弹出的“另存为”对话框中,将文件保存为main.c文件,然后放到工程目录下(刚才建立的test工程目录)。如果不小心把这个空白的默认为new的编辑窗口关掉或者开始的时候就没有,可以点击file菜单下面的
按钮新建一个,保存方法同上。
在左侧的工程栏窗口中,右键点击工程名test,选择Add Files。
将刚保存的main.c文件添加进工程。
在左侧的工程中可以看到目录结构:
至此,我们就建立好了一个新的工程,我们在这里添加简单的代码测试。如下:
#include
#include
//PB口接8个LED,PB口为低时LED亮,高时灭,
//本程序实现8个LED以1HZ的频率闪烁
int main(void)
{
}
点击保存。
这样我们的第一个测试程序就编辑完毕了。有兴趣的朋友可以现在点击Tools->[WinAVR]Make All编译一下试试,看看能不能编译通过?答案是:不能通过!!提示:
> "make.exe" all
make.exe: *** No rule to make target `all.
> Process Exit Code: 2
> Time Taken: 00:00
原因是MakeFile尚未编写。在GCC进行编译的时候找不到Makefile文件就会出错。下面Makefile文件的配置方法.
3、配置Makefile文件
开始->程序->WinAVR-20090313->MFile[WinAVR],打开Makefile的配置窗口。
点击Makefile菜单,常用的选项有:
Main file name…
MCU type
其他的可以先保持默认。
先点击Makefile->Main file name…在弹出的对话框中输入刚才我们建立的c文件的文件名,不包括“.c”!!!只输入main即可。(必须跟源文件名一致!!!!!)
然后,Makefile-> MCU type,选择MCU的类型,我们使用的是atmega16。
然后点击File->Save As,在弹出的对话框中选择保存到我们上一节建立的工程目录下(或者先保存到别的地方然后拷贝过去)!!!
双击得到的Makefile文件(不要改文件名!!!!),在打开方式中选择,记事本。确定。
将F_CPU = 8000000,改成你需要的晶振频率,我的板子是7.3728MHZ,那么就改成F_CPU = 7372800,保存退出。
这样,Makefile基本的配置就完成了,然后回到WinAVR的界面中,点击Tools->[WinAVR]Make All编译,在下面的Output窗口中提示:
> "make.exe" all
-------- begin --------
avr-gcc (WinAVR 20090313) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiling C: main.c
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst
Linking: main.elf
avr-gcc -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o
Creating load file for Flash: main.hex
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock main.elf main.hex
Creating load file for EEPROM: main.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load"
Creating Extended Listing: main.lss
avr-objdump -h -S -z main.elf > main.lss
Creating Symbol Table: main.sym
avr-nm -n main.elf > main.sym
Size after:
AVR Memory Usage
----------------
Device: atmega16
Program:
(.text + .data + .bootloader)
Data:
(.data + .bss + .noinit)
-------- end --------
> Process Exit Code: 0
> Time Taken: 00:07
编译通过!!!在工程目录中可以看到编程之后生成的HEX文件。
到这里AVR GCC基本使用大致就可以掌握了,其他的一些功能比如和AVR Studio配合使用等在熟悉了之后慢慢就可以摸索了,我们后面也考虑出相应教程,欢迎大家到时候关注http://bbs.cepark.com/index.php
这里只给大家简单的介绍了AVR GCC的使用,尽量以图形的方式方便大家的学习,后面紧跟的将是下载软件的使用,我们推荐双龙的下载软件。
评论