×
嵌入式 > 嵌入式开发 > 详情

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

发布时间:2020-08-18 发布时间:
|
对于GCC(注:本文中所说GCC与WINAVR是同一个概念)的介绍这里不做赘述,对于学习AVR单片机的朋友相信都听说过这款编译软件。AVR的开发软件很很多,下面是本人在网上搜索到的对于几个编译软件的一点比较,仅供参考:


相信对于每个已经在学习AVR的朋友都有一款自己喜欢使用的编译软件,我们推荐使用GCC,原因是它是真正的免费的,对C语言的支持是很好的。可能很多朋友对于使用汇编编程还是使用C语言编程都有不同的见解,在这里我们推荐使用相对高级的C语言进行编程,现在一个好的编译软件对于程序的优化是可以让人接受的,其编译出的程序效率足以满足我们的要求,并且其良好的可移植性为不同平台下的程序编写提供了方便。

这里是GCC的下载页面: /zixunimg/eepwimg/sourceforge.net/projects/winavr/files/

GCC对于初学者可能不是太容易入门,我在这里做这个简单的教程,希望对于初学AVR并且想以GCC为开发软件的朋友有所帮助。本教程将以如下几个部分进行:

* GCC软件的安装

* 建立并编译第一个GCC工程文件

* 配置Makefile文件



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 //AVR头文件

#include //内部函数头文件



//PB口接8个LED,PB口为低时LED亮,高时灭,

//本程序实现8个LED以1HZ的频率闪烁



int main(void)

{

PORTB = 0xff;//初始化PB口

DDRB = 0xff;//设置PB口为输出

while(1)

{

PORTB = 0xff;

_delay_ms(500);//延时500毫秒

PORTB = 0x00;

_delay_ms(500);//延时500毫秒

}

}

点击保存。

这样我们的第一个测试程序就编辑完毕了。有兴趣的朋友可以现在点击Tools->[WinAVR]Make All编译一下试试,看看能不能编译通过?答案是:不能通过!!提示:

> "make.exe" all

make.exe: *** No rule to make target `all. Stop.



> 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. There is NO

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 -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o



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 -std=gnu99 -MMD -MP -MF .dep/main.elf.d main.o --output main.elf -Wl,-Map=main.map,--cref -lm



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" \

--change-section-lma .eeprom=0 --no-change-warnings -O ihex main.elf main.eep || exit 0



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: 158 bytes (1.0% Full)

(.text + .data + .bootloader)



Data: 0 bytes (0.0% Full)

(.data + .bss + .noinit)







-------- end --------





> Process Exit Code: 0

> Time Taken: 00:07

编译通过!!!在工程目录中可以看到编程之后生成的HEX文件。

到这里AVR GCC基本使用大致就可以掌握了,其他的一些功能比如和AVR Studio配合使用等在熟悉了之后慢慢就可以摸索了,我们后面也考虑出相应教程,欢迎大家到时候关注/zixunimg/eepwimg/bbs.cepark.com/index.php ,我们会第一时间把教程发布在论坛提供给大家下载。

这里只给大家简单的介绍了AVR GCC的使用,尽量以图形的方式方便大家的学习,后面紧跟的将是下载软件的使用,我们推荐双龙的下载软件。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
一只老鸟的嵌入式ARM学习心得