組み込みのHello World的存在である,LEDをチカチカさせるプログラム,所謂Lチカを正常に動かすことができるようになった話です.

LPC1768とgcc4mbedを使っています.

テスト用に以下のLチカプログラムを書きました.
これ以上簡単なプログラムはないというぐらいです.

#include "mbed.h"

DigitalOut myled(LED1);

int
main() {
    while (1) {
        myled = 1;
        wait(0.1);
        myled = 0;
        wait(0.1);
    }
}

gcc4mbedをインストールして, make deploy を走らせると……

チカチカの間隔が長い!!

0.1秒ではなく,1秒間隔になります.

0.1のところを変えても,やはり指定した秒数の10倍の間隔になります.

原因

mbed OS 5用のバイナリだと,こうなるみたいです.もともとLPC1768はmbed 2用のバイナリじゃないといけないらしく,それ用にしたらうまくいきました.

2017-10-21追記: ファームウェアをアップデートし,mbed OS 5にすることでも解決しました.RTOSが使えるようになって便利になりました.下記の解決方法より,ファームアップデートのほうがおすすめです.

解決方法

gcc4mbedの設定用環境変数 MBED_OS_ENABLE を変更する.

export MBED_OS_ENABLE=0

使うデバイスのスペックをちゃんと知っておかないと,こういうことが起こるんですね.