gpt4 book ai didi

arduino - 确定 Arduino 的板类型

转载 作者:行者123 更新时间:2023-12-04 02:17:27 29 4
gpt4 key购买 nike

如何在编译时确定 Arduino 的板类型(例如 Uno vs Nano)?
不要与确定处理器类型混淆。正如我所看到的那样,例如#如果定义(__AVR_ATmega32U4__)...

同样,我想要一种方法来确定所有使用相同 ATmega328 处理器的 Arduino 口味。

IDE 知道板。那么是否可以从一些预编译器#IF 访问它

Nano 与 Uno 有不同的中断。因此,在编译时知道板子类型可以自动分配公共(public)库的引脚。

最佳答案

正如您所指出的,您在开发环境中检查了一个板目标,以便编译器可能知道该板。不幸的是,IDE 并没有直接告诉编译器这个信息。仅传递处理器类型和频率。

您可以看到 IDE 为编译程序所做的工作。在首选项菜单中,打开详细输出以进行编译。编译一个草图,你会看到这样的东西:

C:\Apps\arduino-1.0-windows\arduino-1.0\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -IC:\Apps\arduino-1.0-windows\arduino-1.0\hardware\arduino\cores\arduino -IC:\Apps\arduino-1.0-windows\arduino-1.0\hardware\arduino\variants\standard C:\Users\Jim\AppData\Local\Temp\build4664216036291565363.tmp\Blink.cpp -oC:\Users\Jim\AppData\Local\Temp\build4664216036291565363.tmp\Blink.cpp.o

-D 是 Arduino 环境将定义传递给预处理器的方式。您会看到只有 CPU 速度和 arduino 版本是通过这种方式传递的。

IO 引脚以不同的方式定义:IDE 包含一个文件夹,其中包含特定于板的头文件。

这个 -I 参数包括一个文件夹到编译器的搜索路径:

-IC:\Apps\arduino-1.0-windows\arduino-1.0\hardware\arduino\variants\standard

在该文件夹中有一个适用于您选择的板的 pins_arduino.h 文件。
如果您选择不同的板,您将看到此参数更改。

如果你愿意修改你的 IDE 配置,你可以得到你想要的。

所以要得到你想要的,你只需要得到一个#define 指令。
所以这里是如何

步骤 1. 制作您自己的板型。要创建新的板类型,请参见位于此文件夹中的 board.txt 文件:

...\arduino-1.0\硬件\arduino

像这样的行定义了包含文件夹(在这种情况下是标准的):

uno.build.variant=standard

复制整个 block ,更改名称和文件夹
myuno.name=My Arduino Uno
...
myuno.build.variant=myunoboard

通过此更改,当您选择此板目标时,myunoboard 文件夹将放置在编译器路径上。

第 2 步。让您的标题包含您的定义。

在文件夹中

...\arduino-1.0\hardware\arduino\variants\myunoboard

制作文件 pin_arduino.h .在那个文件中
#include "..\standard\pins_arduino.h"
#define BOARD MY_UNO
// and/or this form
#define __BOARD_MY_UNO

步骤 3. 重复更多板。

这将提供为不同的板目标构建代码的能力。

话虽如此,我不会真正推荐这种方法。如果您开始考虑创建跨多个目标运行的代码,那么可能是时候从 Arduino IDE 继续前进了。如果您使用的是 Eclipse 之类的环境,那么您将拥有一个项目,其中包含任意数量的构建配置。每个构建配置都可以为板目标指定不同的预处理器定义。

关于arduino - 确定 Arduino 的板类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13853109/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com