Skip to the content.

CÁC CHỈ THỊ BIÊN DỊCH

Hướng dẫn thay đổi code khi chuyển board env với PlatformIO

Hướng dẫn sau hướng dẫn thay đổi code tự động dựa việc chọn [env] trong platformio.ini image

  1. Mở file platformio.ini
  2. Trong các cấu hình board khác nhau [env] bổ sung thêm flag biên dịch. Ví dụ
     [env:esp32-c3-devkitm-1]
     ; something
     build_flags = 
     	-D ADRUINO_BOARD_ESP32_C3_SUPERMINI    ; đặt thêm define bất kì
        
     [env:esp32-wroom-32]
     ; something
     build_flags = 
     	-D ADRUINO_BOARD_ESP32_DEV_KIT        ; đặt thêm define bất kì
    
  3. Trong mã nguồn, bổ sung các chỉ thị biên dịch
     #if defined(ADRUINO_BOARD_ESP32_C3_SUPERMINI)
         // TODO: something
     #elif defined(ADRUINO_BOARD_ESP32_DEV_KIT)
         // TODO: something
     #endif   
    

    Vậy là xong. Các chỉ thị sẽ làm thay đổi mã nguồn cần biên dịch mỗi khi thay đổi [env] trên giao diện change platformio env

Các chỉ thị sử dụng với ArduinoIDE

Các chỉ thị giúp thay đổi code tùy theo loại Board được chọn trên giao diện. Vi dụ

#if defined(AVR_UNO)
    /// Áp dùng khi board là Arduino UNO
#elif defined(ESP32C3_DEV)
    /// Áp dụng khi board là ESP32C3 DevKit Module
#endif       

Chỉ thị xác định kiến trúc của MCU

Mặc dù có nhiều loại board khác nhau, chúng có thể dùng chung một MCU, hoặc một loại MCU của kiến trúc nào đó. Cách sử dụng chỉ thị để xác định kiến trúc của MCU như sau

#if defined(ARDUINO_ARCH_ESP32)
    /// Áp dụng khi MCU thuộc họ ESP32
#elif defined(ARDUINO_ARCH_ESP8266)
    /// Áp dụng khi CPU thuộc họ ESP8266
#elif defined(ARDUINO_ARCH_AVR)
    /// Áp dụng khi CPU thuộc họ AVR như Arduino Uno, Mega, Lilypad
#endif       

Shorcut

  1. Danh sách Board sử dụng kiến trúc AVR - ATmega
  2. Danh sách Board sử dụng kiến trúc AVR - ATTiny
  3. Danh sách Board sử dụng mcu ESP32
  4. Danh sách Board sử dụng mcu ESP8266

Đối với các bộ xử lý thuộc kiến trúc AVR như Uno, Nano

Đối với các bộ xử lý thuộc kiến trúc AVR - dòng chip ATTINY

Đối với các bộ xử lý thuộc họ ESP32

Đối với các bộ xử lý thuộc họ ESP8266