编译能生成可供AVR执行的代码、仿真调试文件等。
可能大家会奇怪,上面的Main.C 代码,没有告诉电脑AVR芯片的型号、工作频率等,电脑如何知道这些数据?
WinAVR/GCC 使用一个叫 Makefile 的文件,存放这些参数。在WinAVR上也有一个叫Mfile的应用程序去处理这个Makefile 文件。但我们测试时发现,Mfile 的缺陷很多,不好用,并且容易弄错。我们推荐大家直接用记事本等,直接编译这个文件。为了方便阅读与修改,我们将最常用的内容,放到Makefile的最前面,并且作了中文注解。
直接点击这里查看Makefile的具体内容。你可以 复制到本地电脑另存为Makefile,不要改名。
在我们的示范Makefile,会看到以下的内容。建议大家只修改:单片机的类型、系统时钟频率、目标文件名及C源文件名这四项。大家可参考我们的示范修改:
#这是一个简单Makefile,仅用于初学者使用
#修改于WINAVR20050214所生成的Makefile
#简单实验只需更改 [单片机类型][目标文件名][C源文件名][系统时钟频率]即可
#修改好参数后另存到单片机程序所在目录,然后执行[Make All]命令
#生成 烧录FLASH的*.Hex,烧录EEPROM的*.Eep,调试用的*.Elf 文件
#
# Www.OurAVR.Com
# MCU Name
# 单片机类型 参考格式是:Atmega8 / At90s2313 / Attiny15
MCU = Atmega16
# Processor Frequency.
# 系统时钟频率(Hz),用于生成延时 _delay_us() _delay_ms() 见Delay.H
# 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.
F_CPU = 1000000
# Target File Name (Without Extension).
# 目标文件名(即生成的.Hex/.Eep/.Elf的文件名)
TARGET = Main
# List C Source Files Here. (C Dependencies Are Automatically Generated.)
# C源文件名(不带路径)
# 多个文件名间用空格隔开 例如 SRC = File1.C File2.C File3.C
# 不需要加上 H头文件
SRC = $(TARGET).C
#**************后面内容基本不需要修改,除非你是老手*****************************#
# Output Format. (Can Be Srec, Ihex, Binary)
# 输出烧录文件格式
FORMAT = Ihex
# Optimization Level, Can Be [0, 1, 2, 3, S].
# 优化级别
# ...... 下面的内容此处省略 ....
将我们这个示范的 Makefile 文件,下载后拷贝到 C:avr_test 目录中。上面我们已经设置了ATmega16芯片,工作在1M的频率里,主文件名叫 Main.C ,只有一个文件。 |