Arduino板预处理器列表#defines


9

当人们在Arduino IDE中选择板子时,预处理器定义将添加到其中一个后台文件中。

经过大量的搜寻和一些好运,我发现此定义的格式为:

#define ARDUINO_<PROCESSOR-DESCRIPTOR>_<BOARDNAME>

有些很容易猜到(ARDUINO_AVR_UNO例如,),而有些则不太容易猜到。Pro Micro根据速度在定义后附加“ 16”或“ 8”。我不知道5V或3.3V的定义是否不同。我还没有猜到Mega2560的定义,但是它并不明显。

问题1:是否存在可能定义的清单?

问题2:就编译和预处理器的参与而言,BoardX -5V和BoardX -3.3V 之间有什么区别,如何区分?


您需要什么?区分处理器(例如ATMega328)而不是主板,可能会更有用。
Gerben

1
我有一个使用Uno,Leonardo和Pro Minis的<collective noun>的多节点项目。这三个版本的代码几乎相同,但是为了简化调试,我希望能够为所有内容上载(或至少从中编译)相同的代码。
CharlieHanson '16

启用“文件”>“首选项”>“编译详细”。然后构建/验证并检查输出。您将看到传递给编译器的-D定义。这样可以轻松确定板之间的差异。
Visual Micro

Answers:


10

板符号列表可以通过以下shell命令生成:

$ grep board= boards.txt | cut -f2 -d= | sort -u
AVR_ADK
AVR_BT
AVR_DUEMILANOVE
AVR_ESPLORA
AVR_ETHERNET
AVR_FIO
AVR_GEMMA
AVR_LEONARDO
AVR_LILYPAD
AVR_LILYPAD_USB
AVR_MEGA
AVR_MEGA2560
AVR_MICRO
AVR_MINI
AVR_NANO
AVR_NG
AVR_PRO
AVR_ROBOT_CONTROL
AVR_ROBOT_MOTOR
AVR_UNO
AVR_YUN

这些板是由boards.txt文件中的“ build.board”属性定义的。

mini.build.board=AVR_MINI

此属性由构建配方与ARDUINO_-prefix一起使用。

-DARDUINO_{build.board} 

干杯!


+1,谢谢你的清单。遗憾的是,它没有吐出双速版本以消除任何疑问,但这足以回答问题。
CharlieHanson '16

两个版本的pro-mini的board属性相同,而mega则不同。也许应该使用pro-mini变体的独特名称来更新board.txt,例如AVR_MINI_16MHZ,AVR_MINI_8MHZ。
Mikael Patel

对于那些寻找-我正在尝试为NodeMCU ESP8266定义-因此基于此答案中的信息,它是ARDUINO_ESP8266_NODEMCU谢谢!
菲尔(Phil)

3

Mikael的答案正确,但是根据安装了Board Manager的Board,有多个board.txt文件,将命令修改为:

grep board= `find . -name boards.txt` | cut -f2 -d= | sort -u

然后从您的基本Arduino目录运行它会收集整个集合。


2

第一个空白是平台。这是用于AVR的“ AVR”,用于基于SAM的Arduino的“ SAM”,等等。这是从包含内核的平台目录派生的。

第二个空白是木板。它来自boards.txt核心本身中的条目,并且是第一个期间之前的标识符。

关于电压,编译过程之间没有区别;给出了任何速度差F_CPU,因此不应为此检查板本身。

因此,没有确定的列表,因为列表由于其来源而具有任意大小。


仅当boards.txt没有定义build.board值并且Arduino IDE自动生成一个值时,才如此。
per1234

1

在比尔的答案中增加细节,在米凯尔的答案中增加以下内容:

您通过Board Manager下载的软件包位于(自1.8.9起,且之前有许多版本):

linux:/ home /(您的登录名)/。arduino15

您还可以在Arduino安装文件夹中运行Bill的一行脚本,以获取“内置”板。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.