Như bạn đã lưu ý, bạn kiểm tra mục tiêu của bảng trong môi trường phát triển để trình biên dịch có thể biết bảng. Thật không may, IDE không cho trình biên dịch thông tin này trực tiếp. Chỉ loại bộ xử lý và tần số được truyền xuống.
Bạn có thể xem IDE làm gì để biên dịch chương trình. Trong menu tùy chọn, hãy bật đầu ra chi tiết để biên dịch. Biên soạn bản phác thảo và bạn sẽ thấy một cái gì đó như thế này:
C: \ Ứng dụng \ arduino-1.0-windows \ arduino-1.0 \ phần cứng \ công cụ \ avr \ bin \ avr-g ++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections-mmcu = atmega328p -DF_CPU = 16000000L -DARDUINO = 100 -IC: \ Ứng dụng \ arduino-1.0-windows \ arduino-1.0 \ phần cứng \ arduino \ lõi \ arduino -IC: \ Ứng dụng \ arduino-1.0-windows \ arduino-1.0 \ phần cứng \ arduino \ biến thể \ tiêu chuẩn C: \ Users \ Jim \ AppData \ Local \ Temp \ build4664216036291565363.tmp \ Blink.cpp -oC: \ Users \ Jim \ AppData \ Local \ Temp \ build4664216036291565363.tmp \ Blink.cpp.o
-D là cách môi trường Arduino chuyển định nghĩa cho bộ tiền xử lý. Bạn thấy rằng chỉ có tốc độ CPU và phiên bản Arduino được truyền theo cách này.
Các chân IO được định nghĩa theo cách khác: IDE bao gồm một thư mục chứa tệp tiêu đề cụ thể của bảng.
luận -Tôi này bao gồm một thư mục trên con đường tìm kiếm của trình biên dịch:
ic: \ Apps \ Arduino-1,0-windows \ Arduino-1.0 \ phần cứng \ Arduino \ biến thể \ chuẩn
Trong thư mục đó là tệp pins_arduino.h phù hợp với bảng bạn đã chọn. Nếu bạn chọn một bảng khác, bạn sẽ thấy thay đổi tham số này.
Nếu bạn sẵn sàng sửa đổi cấu hình IDE, bạn có thể nhận được những gì bạn yêu cầu.
Vì vậy, để có được những gì bạn muốn, bạn chỉ cần nhận được một chỉ thị #define. Vì vậy, đây là cách để
Bước 1. Tạo loại bảng của riêng bạn. Để thực hiện một loại tàu mới, xem các tập tin boards.txt nằm trong thư mục này:
... \ Arduino-1.0 \ phần cứng \ Arduino
Dòng như thế này xác định bao gồm thư mục (tiêu chuẩn trong trường hợp này):
uno.build.variant=standard
Sao chép toàn bộ khối, thay đổi tên và thư mục
myuno.name=My Arduino Uno
...
myuno.build.variant=myunoboard
với thay đổi này, khi bạn chọn mục tiêu ban này, thư mục myunoboard sẽ được đặt trên comp đường dẫn iler.
Bước 2. Đặt tiêu đề bao gồm xác định của bạn.
Trong thư mục
... \ Arduino-1.0 \ phần cứng \ Arduino \ biến thể \ myunoboard
tạo một tập tin pins_arduino.h. Trong tệp đó
#include "..\standard\pins_arduino.h"
#define BOARD MY_UNO
// and/or this form
#define __BOARD_MY_UNO
Bước 3. Lặp lại các bảng khác.
Điều này sẽ cung cấp khả năng tạo mã của bạn cho các mục tiêu bảng khác nhau.
Có nói điều này, tôi sẽ không thực sự đề nghị phương pháp này. Nếu bạn đang bắt đầu nghĩ về việc tạo mã chạy trên nhiều mục tiêu, có thể là thời gian để chuyển từ IDE Arduino. Nếu bạn đang sử dụng một môi trường như Eclipse, bạn có một dự án với bất kỳ số lượng cấu hình xây dựng nào. Mỗi cấu hình xây dựng có thể chỉ định tiền xử lý khác nhau xác định cho mục tiêu của bảng.
Tôi vừa mới thử cách này. Nơi nó hoạt động cho tệp INO chính. Tuy nhiên, nó xuất hiện tập tin thư viện, không thể nhìn thấy xác định có nguồn gốc trong các biến thể/pin_arduino.h. Khi tôi cần sự khác biệt xảy ra trong thư mục .h của thư viện tùy chỉnh. – mpflaga
có vẻ như tôi có thể sai. có vẻ như tôi không thể sử dụng #define tên tệp của thư viện khác. vì vậy nó hiện đang hoạt động. – mpflaga
Ở trên bây giờ là đúng với IDE 1.5 xem https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification và tham số uno.build.board = AVR_UNO, cung cấp được sử dụng để đặt biến biên dịch ARDUINO_ {build.board} để cho phép sử dụng mã có điều kiện giữa #ifdefs – mpflaga