Список препроцессоров платы Arduino #defines

Когда выбирается плата в среде IDE Arduino, определение препроцессора добавляется в один из закулисных файлов.

После долгой охоты и некоторой удачи я обнаружил, что формат этого определения таков:

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

Некоторые из них легко угадать (например, ARDUINO_AVR_UNO), но другие-менее. В Pro Micro к определению добавляется "16" или "8" в зависимости от скорости. Я не знаю, отличается ли определение для 5 В или 3,3 В. Мне не удалось угадать определение для Mega2560, но в этом нет ничего очевидного.

Вопрос 1. Существует ли список возможных определений?

Вопрос 2: Существует ли какое-либо различие, в том, что касается компиляции и участия препроцессора, между BoardX-5 В и BoardX-3,3 В, и как определяется это различие?

, 👍21

Обсуждение

Для чего вам это нужно? Вероятно, было бы более полезно различать процессоры (например, ATmega328), а не платы., @Gerben

У меня есть многоузловой проект, в котором используются Uno, Леонардо и несколько <collective noun>мини-проектов. Код почти идентичен для трех версий, но для облегчения отладки я хочу иметь возможность загружать (или, по крайней мере, компилировать) один и тот же код для всего., @CharlieHanson

Включите Файл>Настройки>>Подробная компиляция. Затем создайте/проверьте и проверьте выходные данные. Вы увидите определения-D, которые передаются компилятору. Это позволяет легко определить разницу между вашими платами., @Visual Micro

Grep не работал для меня, как показано на рисунке. Нашел путь, посмотрев на подробный вывод компилятора. Я обнаружил искроуловитель boards.txt файл на моем компьютере был расположен здесь: C:\Users\Jim\AppData\Local\Arduino15\staging\packages\sparkfunboards.1.1.10.tar\avr-1.1.10\boards.txt, @Jim_SD


4 ответа


Лучший ответ:

16

Список символов платы может быть сгенерирован с помощью этой команды оболочки:

$ 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

Платы определяются свойством "build.board" в boards.txt файл.

mini.build.board=AVR_MINI

Это свойство используется рецептом сборки вместе с префиксом ARDUINO_ -.

-DARDUINO_{build.board} 

Ваше здоровье!

,

+1, спасибо вам за этот список. Жаль, что он не выплевывает двухскоростные версии, чтобы устранить любые сомнения, но это отвечает на вопрос более чем достаточно хорошо., @CharlieHanson

Свойство платы одинаково для обеих версий pro-mini, но не для mega. Может быть boards.txt следует обновить отличительные названия для вариантов pro-mini, например AVR_MINI_16 МГц, AVR_MINI_8 МГц., @Mikael Patel

Для тех, кто ищет - я пытался найти определение для NodeMCU ESP8266 - поэтому, основываясь на информации в этом ответе, это ARDUINO_ESP8266_NODEMCU Спасибо!, @Phil


3

Первый пробел - это платформа. Это "AVR" для AVR, "SAM" для ардуино на базе SAM и т. Д. Это происходит из каталога платформы, содержащего ядро.

Второй пробел - это плата. Это следует из записи в boards.txt в самом ядре и является идентификатором перед первым периодом.

Нет никакой разницы между процессами компиляции в отношении напряжений; любая разница в скорости указана в F_CPU, и сама плата не должна проверяться на это.

Таким образом, окончательного списка не существует, поскольку список имеет произвольный размер из-за его источника.

,

Это верно только тогда, когда boards.txt не определяет значение "build.board", и оно автоматически генерируется IDE Arduino., @per1234


7

У Микаэля есть правильный ответ, но есть несколько boards.txt файлы в зависимости от установленных плат с помощью диспетчера плат, измените команду следующим образом:

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

и запуск его из вашего базового каталога Arduino собирает весь набор.

,

Добавление деталей к ответу Билла добавление к ответу Микаэля: Пакеты, которые вы загружаете через менеджера плат, находятся в (начиная с версии 1.8.9 и многих предыдущих версий): > linux: /главная страница/(ваш логин)/.arduino15 Вы также можете запустить однострочный скрипт Билла в папке установки Arduino, чтобы получить "встроенные" платы., @user2543191


1

Добавляя детали к ответу Билла, добавляя к ответу Микаэля:

Пакеты, которые вы загружаете через Диспетчер плат, находятся в (начиная с версии 1.8.9 и многих предыдущих версий):

linux: /главная страница/(ваш логин)/.arduino15

Вы также можете запустить однострочный скрипт Билла в папке установки Arduino, чтобы получить "встроенные" платы.

,