文档库 最新最全的文档下载
当前位置:文档库 › AVR教程

AVR教程

AVR教程
AVR教程

https://www.wendangku.net/doc/ab7252701.html,/%E8%F7%C1%D6%CE%ED%F6%B0/blog/item/e0e7260d57f58e3c6059f3b 5.html

肖哥前几天拿给我一块atmega168开发板,让我写个跑马灯玩玩,开始都不知道那啥玩意,经过最近几天断断续续的磨合,今儿总算把整个流程给搞定了,当我看到那个灯忽闪忽闪的时候,貌似又重温了大学刚开始学单片机做的第一个跑马灯实验那种心情,呵呵,,,

以下是我在这几天断断续续摸索过程中写的一个总结,贴出来,也算是回报“百度老师”给我的帮助吧,希望对那些跟我一样开始不知道atmega168是啥玩意但是又想学习的人有一点点帮助吧,呵呵,,,

建立项目,如下图:

输入工程名:led_1,放在目录D:\exp下

在右边出现的界面中输入以下程序,

保存到项目目录D:\exp中,文件名定位led_1.c

在led_1项目上点右键,

选择存盘后,项目已经建成。但是编译还要配置Makefile文件。请继续看下面的编译调试步骤。

(待续。。。)

三、编译调试

点击运行菜单中的Mfile项

在打开的窗口中,点击Makefile,选择Main file name…这一项

我们在上面保存的文件名是led_1.c,这里填入led_1

设定MCU型号。这里我们用的是MEGA168

其它各项,我们都使用默认设置。选择另存为把这个配置文件保存到

刚才的项目目录中。

还有一个问题。就是默认的配置是8M晶振,我使用的是7.3728M。

这样在使用延时函数的时候就不准确了。

在PN(Programmers Notepad)中打开D:\exp\Makefile文件

把F_CPU=8000000改为F_CPU=7372800就是7.3728M

选择保存,就完成了Makefile文件的配置。

配置或者改动Makefile文件后,要执行一次Make Clean选项

再选择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: led_1.c

avr-gcc -c -mmcu=atmega168 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./led_1.lst -std=gnu99 -MMD -MP -MF .dep/led_1.o.d led_1.c -o led_1.o

Linking: led_1.elf

avr-gcc -mmcu=atmega168 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=led_1.o -std=gnu99 -MMD

-MP -MF .dep/led_1.elf.d led_1.o --output led_1.elf -Wl,-Map=led_1.map,--cref -lm

Creating load file for Flash: led_1.hex

avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock led_1.elf led_1.hex Creating load file for EEPROM: led_1.eep

avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \ --change-section-lma .eeprom=0 --no-change-warnings -O ihex led_1.elf led_1.eep || exit 0

Creating Extended Listing: led_1.lss

avr-objdump -h -S -z led_1.elf > led_1.lss

Creating Symbol Table: led_1.sym

avr-nm -n led_1.elf > led_1.sym

Size after:

AVR Memory Usage

----------------

Device: atmega168

Program: 178 bytes (1.1% Full)

(.text + .data + .bootloader)

Data: 0 bytes (0.0% Full)

(.data + .bss + .noinit)

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

> Process Exit Code: 0

在工作目录D:\exp中生成了.hex文件led_1.hex

(待续。。。)

四、AVR-fighter软件驱动安装以及程序下载

AVR-fighter是一款针对AVR单片机下载程序的软件,首先我们必须安装驱动。

出现安装新硬件向导的时候我们选择“否,暂时不”,因为我们要手动安装驱动

然后点击下一步,在下个窗口中我们选择“从列表或指定位置安装”

再点击下一步,选中“在搜索中包括这个位置”,点击浏览

找到AVR_fhghter下载包的文件地址

然后点击确定,再点击下一步,看到文件复制的进度了吧^_^

接下来我们就完成了驱动的安装了

在设备管理器上应该能看到如下图所示的USBasp设备就OK啦

至此,整个驱动安装完成,接下来我们看看如何使用它,将下载线跟目标板连接,

打开软件AVR_fighter,在“芯片选择”框选择跟目标板一样的MCU型号,这里我们用的是ATmega168,因此在下拉框中选中所选芯片型号

再点击“装载flash”,我们要把自己的烧录文件加载到软件上,以上步led_1.hex为例

装入flash以后可以在软甲界面中看到flash大小,最下面状态栏有的flash的绝对路径

接下来的事情就简单了,只要点击“编程”按钮

如果看到以下进度条移动,那么说明USB下载线及其目标板的连接正确无误,程序正在下到目标芯片当中,完成之后会有声音提示,至此整个过程完成。

相关文档