您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机winavr gcc快速入门 正文
winavr gcc快速入门

winavr gcc快速入门

点击数:7764 次   录入时间:03-04 12:03:00   整理:http://www.55dianzi.com   AVR单片机

winavr gCC快速入门

导读:WinAVR 的配置与 makefile 一直是新手入门的两个难点。我们经过详细的测试,推荐大家不需要作任何的配置, 并且介绍了如何用最简单的方法创建自己的 makefile 文件。利用本文,十来分钟你就能入门 WinAVR /GCC.  

我们网站的研发部统一使用 WinAVR(即GCC)。我们会在所有的新手入门范例、应用范例中使用GCC开发代码。详细原因、软件下载及安装方法请参考:AVR开发软件的选择与安装。

软件安装好后,你就能在电脑上看到如下的功能菜单:

 

说明如下:

名称说明Programmers Notepad GCC语言编辑器。可提供应用程序接口。Mfile

GCC需要一个叫 makefile 的参数文件才能进行编译。Mfile 是一个工具,可以让用户方便地修改 makefile 上的参数。不过我们不推荐使用它。我们推荐直接用记事本打开 makefile 进行编辑。

AVR Insight 仿真调试工具TkInfoGNU的超文本浏览器Uninstall WinAVR卸载 WinAVR 软件 WinAVR User Manual WinAVR 用户手册GNU Maunals Online GNU的在线帮助AVR-libc Manual AVR GCC的C语言函数库帮助手册

从上表可见,WinAVR 的功能看来很多。但我们只推荐使用PN (Programmers Notepad )。

让我们演示如何使用PN进行GCC代码的编辑、编译。

步骤一:打开 PN 工具

步骤二: 编写C源代码

菜单 File --> Open 打开预先放在 C:\avr_test 目录下的C源文件。这个源文件来自我们的新手入门的第一个范例,文件名叫 main.c 。你可以点击此处下载这个C文件压缩包(需要解压后才能使用,不要改名)。为了方便阅读,我们将这个main.c 排版成彩色的网页格式,你也可以直接点击这里查看main.c 的具体内容。

打开main.c 后,看到如下的界面

你可以直接编辑 main.c 。

编辑完成,保存后,我们就可以进行下面的编译工作。

步骤三: 准备 Makefile 文件

编译能生成可供AVR执行的代码、仿真调试文件等。

可能大家会奇怪,上面的main.c 代码,没有告诉电脑AVR芯片的型号、工作频率等,电脑如何知道这些数据?

WinAVR/GCC 使用一个叫 Makefile 的文件,存放这些参数。在WinAVR上也有一个叫mfile的应用程序去处理这个Makefile 文件。但我们测试时发现,mfile 的缺陷很多,不好用,并且容易弄错。我们推荐大家直接用记事本等,直接编译这个文件。为了方便阅读与修改,我们将最常用的内容,放到Makefile的最前面,并且作了中文注解。

你可以点击此处下载这个makefile文件的压缩包((需要解压后才能使用,不要改名))。为了方便阅读,我们将这个Makefile排版成彩色的网页格式,你也可以直接点击这里查看makefile的具体内容。

在我们的示范Makefile,会看到以下的内容。建议大家只修改:单片机的类型、系统时钟频率、目标文件名及C源文件名这四项。大家可参考我们的示范修改:

#这是一个简单makefile,仅用于初学者使用
#修改于WINAVR20050214所生成的makefile
#简单实验只需更改 [单片机类型][目标文件名][C源文件名][系统时钟频率]即可
#修改好参数后另存到单片机程序所在目录,然后执行[make all]命令
#生成 烧录FLASH的*.hex,烧录EEPROM的*.eep,调试用的*.elf 文件
#
# www.55dianzi.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 ,只有一个文件。

步骤四:编译 (Make All)

按下图操作。

编译成功后,会有如下的 Process Exit Code: 0 的信息。

如果结果不是0,表明编译有问题,请检查你的 c:\avr_test 目录是否有main.c 与 Makefile 两个文件。

编译成功后,原来只有2个文件的目录,现在变成了如下图的文件清单:

重要说明:如果你需要重新编译一次,最好先运行一下 Make Clean ,以保证编译不受干扰。比如你修改了 Makefile 的MCU类型,如果你不使用 Make Clean, 就会得出错误的结果。

步骤五: 完成。

烧录(ISP下载)、运行,与JTAG调试方法,请参考我们的新手入门中的有关范例。




本文关键字:暂无联系方式AVR单片机单片机-工控设备 - AVR单片机