Cafe'Tec Yagiyu

のんびり気ままに技術進捗

MbedStudioでNucleo-F446REのLチカした話

お久し振りです。
Mbedの公式オフライン環境が出たと聞いて試してみました。ミーハーなので。
正直めんどくさかったですw (2019.03.07現在)
これからもしかしたら改善があるかもしれません。簡単な方法を知ってる方はぜひ教えてください。

とりあえずARMからMbedStudioをダウンロード&インストール。
os.mbed.com


開くとこんな感じ。
f:id:yagiyu-tec:20190307215350p:plain
(左側のActive programとTargetは初めは何も選択されていません)

この赤色で囲んだところにプログラムを入れていきます。
f:id:yagiyu-tec:20190307215754j:plain

以前Mbed OSでプログラムを作ってたので、とりあえず"File">"Import Program..."でARMの自分のページから、公開リポジトリのプログラムをインポート。
f:id:yagiyu-tec:20190307234327j:plain
ここのTestのURLを、
f:id:yagiyu-tec:20190307220723p:plain
こんな感じでAdd。

中身を見ると...あれ?なにも入ってない。
どうやらダウンロードして突っ込んだほうが速そうです。

ARMの公開リポジトリからDownload repositoryでzipをダウンロードして、中身をMbedStudio上のTestに突っ込む。
Active programで選択できるのかと思ったら、
またない。

調べながらいじってみると、どうやら"File">"Add Library to Active Program..."からmbed-os libraryを入れなきゃいけないみたいです。
最初からMbedStudioに入ってるんじゃなかったのか...

github.com
ここのURLを、
f:id:yagiyu-tec:20190307222032p:plain
"File">"Add Library to Active Program..."に貼り付け。

Nextすると、osバージョンの選択画面に。
f:id:yagiyu-tec:20190307222422p:plain
こんなに必要あるのか?ってくらいたくさん選択肢が出てきますが、"mbed_lib_rev(最新版の数字)"を選択。

しかしだめだった。Active programとして認識されていないようです。

そこでmbed-osのサンプルプログラムをダウンロード。
os.mbed.com
ここからzipダウンロード。
できたらMbedStudioでファイルを作って、放り込む。
すると中に"mbed-os.lib"というファイルがあるので、Testフォルダにコピーする。
f:id:yagiyu-tec:20190307224515p:plain
不思議なことに、これでActive programとして認識されました。
f:id:yagiyu-tec:20190307224535p:plain
すかさず、"File">"Add Library to Active Program..."からmbed-osを入れる。
ここはめちゃ時間がかかる。しばらく待ち。

ライブラリが入ったら、接続するボードをUSBでPCに接続。
ドライバが入ってなかったので、
STSW-LINK009 - ST-LINK, ST-LINK/V2, ST-LINK/V2-1 USB driver signed for Windows7, Windows8, Windows10 - STMicroelectronics
ここからダウンロード&インストール。

するとこんな感じでTargetのところに接続したボードが表示される。
f:id:yagiyu-tec:20190307225704p:plain
今回はNucleo-F446REを使ったので、このボード名をクリック。
Build profileをDevelopにしても、ハンマー(Buildボタン)も三角(Runボタン)も光りませんが、フォルダ名のところで右クリックして、"Set Active Program"で再度書き込むファイルをアクティブにしてみましょう。
f:id:yagiyu-tec:20190307231148p:plain
はい勝ち。
ハンマーでビルド。めtttっちゃ長い。短くなる方法知ってる人募集。
完了したら三角のRunボタンで動作。
こんな感じ。

コードは以下。

#include "mbed.h"

DigitalOut myled(LED1);

int main() {
    while(1) {
        myled = 1; // LED is ON
        wait(0.1); // 100 ms
        myled = 0; // LED is OFF
        wait(0.1); // 100 ms
    }
}

というわけでMbedStudioでLチカでした。
長い。
こっちでやるほうがメリットがあるって人以外はゆーくりっどさんが紹介してるHALでやったほうが楽だと思います。
yuqlid.hatenablog.com

ちなみに公式のOverviewによるとMbedStudioがサポートしているボードは150あるらしいのですが、手持ちのNucleo-F303K8でもやってみたらできませんでした。シリーズというよりボードによるみたいです。

指摘質問等あればコメントででもお願いします。
ちょくちょく修正しようとは思ってます。


投げ銭していただければ、めちゃくちゃ喜ぶのでよかったらよろしくお願いします。
↓えさを投げる(Ofuseのサイトに飛びます)↓