Danh sách tiền xử lý bảng Arduino #defines


9

Khi một người chọn một bảng trong Arduino IDE, một định nghĩa tiền xử lý sẽ được thêm vào một trong các tệp hậu trường.

Sau rất nhiều cuộc săn lùng và một số may mắn, tôi thấy rằng định dạng của định nghĩa này là:

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

Một số dễ đoán ( ARDUINO_AVR_UNOví dụ), nhưng một số khác thì ít hơn. Pro Micro có '16' hoặc '8' được gắn vào định nghĩa tùy thuộc vào tốc độ. Tôi không biết định nghĩa khác với 5V hay 3.3V. Tôi đã không đoán được định nghĩa cho Mega2560, nhưng nó không có gì rõ ràng.

Câu hỏi 1 : Có một danh sách tồn tại của các định nghĩa có thể?

Câu hỏi 2 : Có sự khác biệt nào không, liên quan đến quá trình biên dịch và liên quan đến tiền xử lý, giữa BoardX -5V và BoardX -3.3V, và sự khác biệt này được định nghĩa như thế nào?


Mày cần nó để làm gì? Có lẽ sẽ hữu ích hơn khi phân biệt giữa các bộ xử lý (ví dụ ATMega328), thay vì bảng.
Gerben

1
Tôi có một dự án đa nút sử dụng Uno, Leonardo và <danh từ tập thể> của Pro Minis. Mã này gần giống nhau cho ba phiên bản nhưng để dễ gỡ lỗi, tôi muốn có thể tải lên (hoặc ít nhất là biên dịch từ) cùng một mã cho mọi thứ.
CharlieHanson

Bật tệp> Tùy chọn> Biên dịch Verbose. Sau đó xây dựng / xác minh và kiểm tra đầu ra. Bạn sẽ thấy định nghĩa -D được truyền cho trình biên dịch. Điều này giúp dễ dàng xác định sự khác biệt giữa các bảng của bạn.
Visual Micro

Câu trả lời:


10

Danh sách các ký hiệu bảng có thể được tạo bởi lệnh shell này:

$ 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

Các bảng được xác định bởi thuộc tính "build.board" trong tệp bảng.txt .

mini.build.board=AVR_MINI

Thuộc tính này được sử dụng bởi công thức xây dựng cùng với tiền tố ARDUINO_.

-DARDUINO_{build.board} 

Chúc mừng!


+1, cảm ơn bạn vì danh sách đó. Thật xấu hổ khi nó không nhổ ra các phiên bản tốc độ kép để xóa bỏ mọi nghi ngờ, nhưng điều này trả lời câu hỏi quá đủ.
CharlieHanson

Thuộc tính bảng là giống nhau cho cả hai phiên bản pro-mini trong khi không dành cho mega. Có lẽ nên cập nhật bảng.txt với các tên riêng biệt cho các biến thể pro-mini, ví dụ: AVR_MINI_16MHZ, AVR_MINI_8MHZ.
Mikael Patel

Đối với những người tìm kiếm - Tôi đã cố gắng tìm định nghĩa cho NodeMCU ESP8266 - vì vậy dựa trên thông tin trong câu trả lời này, đó là ARDUINO_ESP8266_NODEMCU Cảm ơn!
Phil

3

Mikael có câu trả lời đúng, nhưng có nhiều tệp board.txt tùy thuộc vào các bảng đã cài đặt với trình quản lý bảng, sửa đổi lệnh thành:

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

và chạy nó từ thư mục Arduino cơ sở của bạn thu thập toàn bộ.


2

Khoảng trống đầu tiên là nền tảng . Đây là "AVR" cho các AVR, "SAM" cho Arduinos dựa trên SAM, v.v ... Điều này được lấy từ thư mục nền tảng có chứa lõi.

Trống thứ hai là bảng . Điều này xuất phát từ mục nhập trong boards.txtchính lõi và là định danh trước giai đoạn đầu tiên.

Không có sự khác biệt giữa các quá trình biên dịch liên quan đến điện áp; bất kỳ sự khác biệt tốc độ nào được đưa ra F_CPUvà bản thân bảng không nên được kiểm tra cho điều này.

Vì vậy, không có danh sách dứt khoát, vì danh sách có kích thước tùy ý do nguồn của nó.


Điều này chỉ đúng khi bảng.txt không xác định build.boardgiá trị và một giá trị được tạo ra bởi Arduino IDE.
per1234

1

Thêm chi tiết vào câu trả lời của Bill thêm vào Mikael:

Các gói bạn tải xuống thông qua Trình quản lý hội đồng cư trú (kể từ 1.8.9 và nhiều vòng quay trước):

linux: / home / (đăng nhập của bạn) /. arduino15

Bạn cũng có thể chạy tập lệnh một dòng của Bill trong thư mục cài đặt Arduino của bạn, để có được các bảng 'dựng sẵn'.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.