Quantcast
Channel: Todotaniのはやり物Log
Viewing all articles
Browse latest Browse all 48

mbed OSでLチカ

$
0
0

既に記事がポストされていますが、mbed OS(執筆時点では、mbed OS 15.11 Technology Previewとなっています)を使ってLチカを行ってみました。ターゲットのmbedボードはFRDM-K64Fを使っています。Lチカができるまでの手順を以下に示します。

yottaのインストール

先ずは、mbed OSのビルドツールyottaをインストールします。私はOS Xを使っていますが、このページの手順に従ってインストール。

執筆時点のyottaバージョンは、0.9.4でした。

ビルド手順

①プロジェクト用のサブディレクトリを作成しyotta initを実行

$ mkdir led
$ cd led

$ yotta init
Enter the module name:  
Enter the initial version: <0.0.0> 
Is this an executable (instead of a re-usable library module)?  yes
Short description: LED blink using D12 pin
Author: todotani
What is the license for this project (Apache-2.0, ISC, MIT etc.)?   

Is this an executableと聞かれるので、yesを入力します。参考にしたサイトの情報では、生成されたmodule.jsonファイルのマニュアル修正が必要とありましたが、執筆時点の環境では不要になっていました。yotta initの挙動も微妙に違っているようで、最終的なリリース版ではまた変更があるかもしれません。

②ターゲットの設定と、ドライバーのインストール

$ yotta target frdm-k64f-gcc
$ yotta install mbed-drivers

③Lチカコード

sourceディレクトリにソースファイルを格納します。ファイル名はなんでもよいのですが、今回の例では、led.cppとしました。mbed OSのチュートリアルには、以下に示すような、mbed OSのスケジューラーminarを使ってLチカルーチンを周期起動するコードが載っています。

#include "mbed-drivers/mbed.h"

static void blinky(void) {
    static DigitalOut led(LED1);
    led = !led;
    printf("LED = %d \r\n",led.read());
}

void app_start(int, char**) {
    minar::Scheduler::postCallback(blinky).period(minar::milliseconds(500));
}

このコードがmbed OS流の書き方なのだと思いますが、以下のような、従来のmbed風の書き方でも動作しました。mbed OSではプログラムのエントリポイントはmain()でなく、app_start()になるようです。

#include "mbed-drivers/mbed.h"

DigitalOut myLed(D12);

void app_start(int, char**) {
    while(1) {
        myLed = 1;
        wait(0.5);
        myLed = 0;
        wait(0.5);
    }
}

DigitalOutクラスを使った出力ピンの指定やピン番号(D12など)の指定は、従来のmbedと共通です。まだ使ったことはないですが、ヘッダーファイルの定義を見ると、I2Cクラスなども従来のmbedと同様の使い方ができそうです。基本的な入出力は従来のmbedと同様に出来そうです。

④ビルドとターゲットボードへの書き込み

$ yotta build
$ cp ./build/frdm-k64f-gcc/source/led.bin /Volumes/MBED/

ビルドが完了すると、build/<target名>/soruce/ディレクトリ配下にbinファイルが生成されるので、mbedにコピーします。リセットボタンを押すとプログラムが動き出します。

参考情報


Viewing all articles
Browse latest Browse all 48

Trending Articles