AVR Studio (Atmel Studio) 完整入门教程
第一部分:概述与环境准备
什么是 AVR Studio / Atmel Studio?
- AVR Studio: 这是早期的版本,专门用于 AVR 单片机的开发,现在基本已被 Atmel Studio 取代。
- Atmel Studio: 这是 Microchip 收购 Atmel 后推出的官方集成开发环境,它不仅支持所有 AVR 系列单片机(如 ATmega, ATtiny),还支持 SAM 系列ARM Cortex-M处理器。我们今天主要学习的就是 Atmel Studio。
Atmel Studio 是一个“一站式”开发平台,集成了以下功能:

- 代码编辑器: 带有语法高亮、自动补全等功能。
- C/C++ 编译器: 内置了业界标准的 GCC 编译器,用于将你的 C/C++ 代码转换成 AVR/ARM 能理解的机器码。
- AVR/ASM 汇编器: 用于编写汇编代码。
- 调试器: 这是它的核心功能之一,可以让你单步执行代码、查看变量值、设置断点,极大地简化了开发过程。
- 内置编程器/仿真器: 支持 JTAG、ISP、PDI、UPDI 等多种调试和烧录协议,可以直接连接你的开发板(如 Atmel ICE, JTAGICE3, 或 USBasp)。
为什么选择 Atmel Studio?
- 官方支持: 由芯片原厂提供,稳定可靠,对芯片的支持最全面。
- 强大的调试功能: 内置仿真器和硬件调试器,调试体验远胜于很多第三方工具。
- 免费: 对个人用户和许多商业应用完全免费。
- 生态系统完整: 与 Atmel 硬件(开发板、调试器)无缝集成。
环境准备
硬件:
- 一块 AVR 开发板: 推荐 Arduino UNO (基于 ATmega328P) 或 ATmega328P最小系统板,它们成本低,资料多,非常适合入门。
- 一根 USB 线: 用于给开发板供电和通信。
- 一个调试器 (可选但强烈推荐):
- Atmel ICE: 功能最全,支持所有 AVR 和 SAM,价格较贵。
- JTAGICE3: 经典调试器,支持大部分 AVR。
- USBasp: 只能用于烧录,不能进行实时调试,是最低成本的烧录工具。
- 对于初学者,可以先使用 Arduino UNO 自带的 USB-to-Serial 芯片进行烧录,后续再购买调试器。
软件:
- 下载 Atmel Studio:
- 访问 Microchip 官网: https://www.microchip.com/mplab/avr-downloads
- 下载并安装最新版的 Atmel Studio 7,目前它仍然是主流且稳定的版本。
- 安装驱动: 如果你使用的是独立的调试器(如 Atmel ICE),请根据其说明书安装相应的 USB 驱动,使用 Arduino UNO 则无需额外驱动。
第二部分:创建第一个项目 - "Blink LED"
我们将通过点亮开发板上一个 LED 的经典入门项目,熟悉 Atmel Studio 的基本操作。
步骤 1: 创建新项目
- 打开 Atmel Studio。
- 点击 Start -> New Project...。
- 在弹出的窗口中,选择 AVR C++ Project (因为我们用 C 语言编程)。
- 为项目命名,
Blink_LED,并选择一个存放位置。 - 点击 OK。
步骤 2: 选择器件
- 接下来会弹出 Device Selection 窗口。
- 在左侧的搜索框中输入
ATmega328P,然后从列表中选择它。 - 点击 OK。
Atmel Studio 会为你生成一个基本的项目结构,包含一个 main.cpp 文件和一些默认代码。

步骤 3: 编写代码
删除 main.cpp 中的所有默认代码,然后粘贴以下代码:
#include <avr/io.h> // 包含 AVR 寄存器定义的头文件
#include <util/delay.h> // 包含延时函数的头文件
int main(void)
{
// 将 LED 所在的引脚设置为输出模式
// 假设 LED 连接在 PB5 引脚 (Arduino UNO 上的 13 号引脚)
// DDRB 是 Data Direction Register B
// 1 代表输出, 0 代表输入
DDRB |= (1 << DDB5);
while (1) // 无限循环
{
// 点亮 LED: 将 PB5 引脚输出高电平
PORTB |= (1 << PORTB5);
_delay_ms(500); // 延时 500 毫秒
// 熄灭 LED: 将 PB5 引脚输出低电平
PORTB &= ~(1 << PORTB5);
_delay_ms(500); // 延时 500 毫秒
}
}
代码解释:
#include <avr/io.h>: 包含了所有 AVR 单片机寄存器的定义,DDRB,PORTB等。DDRB |= (1 << DDB5);:DDRB是 B 端口的数据方向寄存器。DDB5是 B 端口的第 5 位,这行代码将 B 端口的第 5 位设置为 1,表示PB5引脚为输出模式。PORTB |= (1 << PORTB5);:PORTB是 B 端口的输出数据寄存器,这行代码将PB5引脚的电平设置为高电平 (1),点亮 LED。PORTB &= ~(1 << PORTB5);: 这行代码将PB5引脚的电平设置为低电平 (0),熄灭 LED。_delay_ms(500);: 这是一个延时函数,单位是毫秒,它需要包含<util/delay.h>头文件。
步骤 4: 构建项目
点击工具栏上的 Build 按钮(一个锤子图标)或者按 F7 键。
如果一切正常,底部的 Output 窗口会显示 Build: 1 succeeded, 0 failed,这表示代码已经成功编译成了 .elf, .hex 等格式的文件。.hex 文件就是我们最终要烧录到单片机里的程序。

步骤 5: 烧录程序
烧录程序需要使用硬件工具(编程器/调试器),这里以最常用的 USBasp 为例。
-
连接硬件:
- 将 USBasp 的 6-Pin 排线连接到 Arduino UNO 的
ICSP接口,注意对齐MISO,MOSI,SCK,RESET等引脚。 - 将 USBasp 插入电脑的 USB 口。
- 将 USBasp 的 6-Pin 排线连接到 Arduino UNO 的
-
在 Atmel Studio 中配置工具:
- 点击菜单栏的 Tools -> Device Programming...。
- 在弹出的窗口中:
- Tool: 选择
USBASP。 - Device: 确保选择的是
ATmega328P。 - Interface: 选择
ISP(In-System Programmer)。 - 点击 Apply。
- Tool: 选择
-
烧录:
- 在左侧的 memories 选项卡中,点击 Flash。
- 点击 按钮,选择你刚刚编译生成的
.hex文件(通常在项目目录的Debug或Release文件夹里)。 - 点击 Program 按钮,等待编程完成。
烧录成功后,你的 Arduino UNO 板上的 L LED(连接在 PB5 引脚)就会开始闪烁了!
第三部分:使用调试器进行代码调试
调试是编程中最重要的环节,Atmel Studio 的调试功能非常强大。
步骤 1: 配置调试器
- 确保你的硬件调试器(如 Atmel ICE)已经连接到开发板的
DEBUG接口。 - 点击菜单栏的 Debug -> Start Debugging and Break,或者直接按
F5。
Atmel Studio 会尝试连接到芯片,如果成功,程序会停在 main 函数的第一行,并且编辑器会进入调试模式。
步骤 2: 认识调试界面
调试时,会出现几个新的窗口:
- Debug (调试) 工具栏: 包含了常用的调试按钮,如继续、单步进入、单步跳过、跳出等。
- Disassembly (反汇编): 显示当前代码对应的汇编指令。
- Memory: 显示内存内容。
- Watches: 可以在这里添加变量或寄存器,实时查看它们的值。
步骤 3: 常用调试操作
-
设置断点:
- 在代码编辑器的行号左侧单击,会出现一个红点,这就是断点。
- 当程序运行到断点处时,会自动暂停。
-
运行到光标处:
- 将光标定位到你希望程序暂停的代码行。
- 右键点击,选择 Run to Cursor (快捷键
Ctrl+F10),程序会直接执行到这一行。
-
单步执行:
- Step Over (F10): 单步跳过,如果当前行是函数调用,它会执行整个函数,然后停在下一行。
- Step Into (F11): 单步进入,如果当前行是函数调用,它会进入函数内部,停在函数的第一行。
- Step Out (Shift+F11): 单步跳出,当你在函数内部时,它会执行完剩余的函数代码,并返回到调用该函数的下一行。
-
查看和修改变量/寄存器:
- 查看寄存器: 在 Watches 窗口中,输入
PORTB或DDRB,你就可以实时看到它们的值。 - 查看变量: 同样在 Watches 中输入你的变量名。
- 修改变量/寄存器: 在 Watches 窗口中,右键点击一个变量或寄存器,选择 Edit Value,可以临时修改它的值,用于测试。
- 查看寄存器: 在 Watches 窗口中,输入
-
查看内存:
- 打开 Memory 窗口,输入地址,
0x21(这是PORTB寄存器的地址),你可以直接查看内存该地址的内容。
- 打开 Memory 窗口,输入地址,
第四部分:进阶技巧与资源
使用 Makefile 进行更灵活的项目管理
对于大型项目,手动创建和管理项目文件会很麻烦,Atmel Studio 可以与 Makefile 配合使用,让你能像在 Linux/Unix 环境下一样,通过命令行构建项目,实现跨平台和版本控制。
- 方法: 在创建项目时,选择 AVR GCC C Executable Project,然后选择 "Use Makefile-based build system"。
学习 AVR 数据手册
数据手册是 AVR 开发的“圣经”,当你对某个寄存器或外设(如定时器、ADC)不了解时,查阅数据手册是唯一的正确途径。
- 在哪里找: Microchip 官网,搜索你的芯片型号,如 "ATmega328P Datasheet"。
推荐资源
- 官方文档: Atmel Studio 自带的帮助文档 (
F1) 非常详细。 - 社区论坛: Microchip 官方论坛、AVR Freaks (现在已整合到 Microchip 论坛)。
- 视频教程: 在 YouTube 上搜索 "Atmel Studio tutorial",有大量优秀的视频教程。
- 开源项目: 在 GitHub 上搜索 AVR 相关项目,学习他人的代码。
这份教程带你走完了 Atmel Studio 的基本流程:从安装、创建项目、编写代码、编译、烧录,到最核心的调试功能,掌握了这些,你就已经具备了使用 Atmel Studio 进行 AVR 开发的坚实基础。
学习路径建议:
- 熟练 Blink: 反复练习,直到能不看教程独立完成。
- 尝试更多外设: 学习使用按键、蜂鸣器、数码管等。
- 深入定时器: 学习如何使用 AVR 的定时器来产生精确的延时或 PWM 波形。
- 学习串口通信: 实现 PC 与单片机的数据交互。
- 挑战 ADC: 学习如何读取模拟传感器的数据。
祝你在 AVR 的世界里玩得开心!
