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下载线及其目标板的连接正确无误,程序正在下到目标芯片当中,完成之后会有声音提示,至此整个过程完成。