Arduino 项目教程
1. 项目的目录结构及介绍
arduino/
├── examples/
│ ├── Blink/
│ ├── Fade/
│ └── ...
├── libraries/
│ ├── EEPROM/
│ ├── Wire/
│ └── ...
├── hardware/
│ ├── avr/
│ │ ├── bootloaders/
│ │ ├── cores/
│ │ ├── variants/
│ │ └── ...
│ └── ...
├── tools/
│ ├── avrdude/
│ └── ...
├── README.md
└── ...
- examples/: 包含一些示例项目,如闪烁LED(Blink)和渐变LED(Fade)等。
- libraries/: 包含一些常用的库,如EEPROM和Wire等。
- hardware/: 包含硬件相关的文件,如AVR核心文件和变体文件等。
- tools/: 包含一些工具,如avrdude等。
- README.md: 项目的说明文件。
2. 项目的启动文件介绍
在Arduino项目中,启动文件通常是指main.cpp
文件,它位于hardware/arduino/cores/arduino/
目录下。这个文件负责初始化硬件和调用用户编写的setup()
和loop()
函数。
#include <Arduino.h>
int main(void) {
init();
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
- init(): 初始化硬件。
- setup(): 用户定义的初始化代码。
- loop(): 用户定义的主循环代码。
3. 项目的配置文件介绍
在Arduino项目中,配置文件通常是指platform.txt
文件,它位于hardware/arduino/avr/
目录下。这个文件包含了编译和上传程序所需的配置信息。
compiler.path={runtime.tools.avr-gcc.path}/bin/
compiler.c.cmd=avr-gcc
compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects
compiler.c.elf.cmd=avr-gcc
compiler.c.elf.flags=-Os -g -flto -fuse-linker-plugin -Wl,--gc-sections,--relax
compiler.S.cmd=avr-gcc
compiler.S.flags=-c -g -x assembler-with-cpp -MMD -flto
compiler.ar.cmd=avr-gcc-ar
compiler.ar.flags=rcs
compiler.objcopy.eep.cmd=avr-objcopy
compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0
compiler.elf2hex.cmd=avr-objcopy
compiler.elf2hex.flags=-O ihex -R .eeprom
compiler.elf2eep.cmd=avr-objcopy
compiler.elf2eep.flags=-j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex
- compiler.path: 编译器路径。
- compiler.c.cmd: C编译器命令。
- compiler.c.flags: C编译器标志。
- compiler.c.elf.cmd: ELF文件编译器命令。
- compiler.c.elf.flags: ELF文件编译器标志。
- compiler.S.cmd: 汇编编译器命令。
- compiler.S.flags: 汇编编译器标志。
- compiler.ar.cmd: 归档器命令。
- compiler.ar.flags: 归档器标志。
- compiler.objcopy.eep.cmd: EEPROM对象复制命令。
- compiler.objcopy.eep.flags: EEPROM对象复制标志。
- compiler.elf2hex.cmd: ELF到HEX转换命令。
- **compiler.elf2hex.flags