はじめに
nRF52840-DK(pca10056)をPlatoformIOで動かそうとしたところ、 デフォルトのframework(arduino)ではGPIOのピン割り当てが思ったようにならなかった。
そこで、frameworkをmbedに設定して試してみた。
プロジェクト作成
まずはプロジェクトを作成する。
$ pio init -b nrf52840_dk
platformio.ini
を次の内容に修正する。
[env:nrf52840_dk] platform = nordicnrf52 board = nrf52840_dk framework = mbed
このように一度platformio.iniを出力してからframeworkを書き換える方法もあるが、下記のようにオプションを与えることで出力時点でframeworkを設定することもできる。
$ pio init -b nrf52840_dk -O "framework=mbed"
objects_cryptocell.hでエラー
nRF52840-DKのmbed環境では、デフォルトの設定だと、ビルド時に次のようなエラーが発生する。
/home/mickey/.platformio/packages/framework-mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/objects.h:58:10: fatal error: objects_cryptocell.h: No such file or directory **************************************************************************** * Looking for objects_cryptocell.h dependency? Check our library registry! * * CLI > platformio lib search "header:objects_cryptocell.h" * Web > https://platformio.org/lib/search?query=header:objects_cryptocell.h * **************************************************************************** #include "objects_cryptocell.h" ^~~~~~~~~~~~~~~~~~~~~~ compilation terminated.
platform-nordicnrf52のissue(Missing objects_cryptocell.h)によるとbuild_flags = -DPIO_FRAMEWORK_MBED_RTOS_PRESENT
によって回避できるとのこと。
次のようにすることで、プロジェクト作成時に設定することができる。
$ pio init -b nrf52840_dk -O "framework=mbed" -O"build_flags = -DPIO_FRAMEWORK_MBED_RTOS_PRESENT"
Lチカ
src/main.cpp
を次の内容で作成する。
#include "mbed.h" DigitalOut myled(LED1); int main() { while(1) { myled = 1; wait(0.25); myled = 0; wait(0.25); } }
次のコマンドでビルドし、ボードへ書き込む。
$ pio run -t upload
LEDがチカチカした。
まとめ
nRF52840-DKのmbed環境ではbuild_flags = -DPIO_FRAMEWORK_MBED_RTOS_PRESENT
が必要。