全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

WinAVR(GCC)快速入门

[复制链接]
6380 4

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 慧龙 于 2010-5-9 23:44 编辑

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

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

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

bda7ddf8b9c3da7cd6aadbe15adb4922.gif

说明如下:

名称

说明

Programmers Notepad

GCC语言编辑器。可提供应用程序接口。

Mfile


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

AVR Insight

仿真调试工具

TkInfo

GNU的超文本浏览器

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 后,看到如下的界面

8c2d12258ee8d78ffddd4128fdcf1778.gif

你可以直接编辑 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 文件
#

# 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)

按下图操作。

692fbe276eab3bff90a30efac0c0e33d.gif

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

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

78799d960ae88d9a8aa0d55d981abdd1.gif

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

a17b2d20b226b47c2b354f08ac72f60d.gif

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

步骤五: 完成。

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

举报

回复

4 个评论

hc***  中级会员  发表于 2013-10-4 12:57:36  | 显示全部楼层
not bad !!!
zi***  新手上路  发表于 2014-2-15 22:40:07  | 显示全部楼层
学到了,谢谢楼主!!!
仓海***  新手上路  发表于 2015-1-4 20:48:18  | 显示全部楼层
谢谢楼主,学习了。
x***  新手上路  发表于 2015-2-23 08:44:24  | 显示全部楼层
果然看的明白,难得的教程,非常感谢!
而在此之前一直以为winrar非常难用,令人望而却步,如今才有了要用的念头。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表