SNSへはこちら

STM32CubeIDEなる新IDEが出た(使用記)

いつものように Twitter を眺めていたところ、こんなサイトへのリンクを発見。↓

なになに?ん??

あ...Atolic True StudioSystem Workbench for STM32新規使用非推奨になってる!?!?!?

まさかの事態です。でも、どうやら STM32CubeIDE という新たな IDE が登場しているらしいです。
CubeMX と OpenOCD などてんこもりの IDE のようです。いいですね〜〜〜

早速文句ですが、ここまでやってくれているんだったら CubeProgrammer も内包してほしかったとおもいます。

さっそく Mac 版をダウンロードして、インストールします。zip ファイルは展開すると dmg イメージになりますね。ダブルクリックしてマウントします。
そして表示されたウィンドウはこちら。

どうやらインストールに順番があるらしいです。指示に従ってインストールします。

使ってみよう

今回は STM32F042K6Tx (いつもの F303 ではありませんが...)をやってみます。この IDE はやはり Eclipse ベースのようです。

結論から言うと、CubeMX のコード生成機能、IDE の使い勝手は TrueStudio や SystemWorkbench と殆ど変わりません。これらの IDE を使っている人はすぐに移行できると思います。

プロジェクト作成

画像のみ載せますので、雰囲気で感じ取ってください。



設定が終わると、ファームウェアのダウンロードが始まります。

メインの画面

プロジェクト作成が終わると、こんな画面になります。

デフォルトで .ioc ファイルが開かれています。これが CubeMX に相当する機能のようです。
適当に PF0 を GPIO_Output にしてみました。

設定が終わったら、保存をするかツールバーの黄色い歯車ボタンを押すとコード生成がされます。

Src/main.c を見ると早速コードが生成されているっぽいです。メイン関数にも適用されています。

Lチカコードを書く

先程設定した PF0 でLチカしてみましょう。こんなコードでどうでしょうか。

できたら、例の金槌ボタンを押してビルド。System Workbench よりも断然速いです!

書き込もう

ST-LINK あるいは J-Link をつなげて虫のアイコンをクリックします。すると小さいダイアログが出てくるので(各プロジェクト初回の1回のみ)、STM32 C/C++ Application を選択します。

デバッグプローブの設定は、このようにして出てきたウィンドウでできます。OK をクリックすると書き込みが始まります。

このままデバッグ開始もできますし、ツールバーの停止ボタンを押してデバッグをしないということもできます。再度 USB ケーブルを抜き差しすると書き込まれたプログラムがひとりでに動き出します。

愚痴

タブがスペース2個であるというのは変わっていないよう。Eclipse のデフォルト設定が4個分なのに、なぜ2つにした。。。しかもスペース2つというのはかなり少数派なのではないだろうか?個人的にはかなり気持ち悪いですねぇ。それ以外はかなり良くできていて、コード生成からプログラム書き書きまでかなりシームレスに行うことができると思います。

CubeMXを排除して使ってみる

で、僕はレジスタ手打ち原理主義者なんですよ。なので頑張って CubeMX をプロジェクトから追いやろうと思います
そのためにやったことは次のような感じです。

  1. .ioc ファイルを削除
  2. Drivers/STM32F0xx_HAL_Driver/Src をまるごと削除
  3. Src/stm32f0xx_hal_msp.c, Src/stm32f0xx_it.c を削除
  4. Inc/stm32f0xx_it.h, Inc/main.h を削除

これで余計なファイルが削除できましたね。最後に Src/main.c を以下のようにまっさらにすれば完璧です。

#include "stm32f0xx.h"

int main(void) {
    while(1) {

    }
    return 0;
}

素晴らしい!まっさらできれいな環境の出来上がりです。

先程の PF0 をLチカしてみましょう。こんなコードですかね。

#include "stm32f0xx.h"

void ms_wait(uint16_t ms) {
    SysTick->LOAD = 1000 - 1;
    SysTick->VAL = 0;
    SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
    for(uint16_t i = 0; i < ms; i++) {
        while( !(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) );
    }
}

int main(void) {
    RCC->AHBENR |= RCC_AHBENR_GPIOFEN;
    GPIOF->MODER = 0b01; // output
    while(1) {
        GPIOF->ODR ^= 1;
        ms_wait(1000);
    }
    return 0;
}

はい、速攻でLチカできました。Atolic TrueStudio と違って _Msk 系のマクロが生きていたのが嬉しいですね。

コンパイラのバージョン

モダンな時代に生きる我々にとってはコンパイラのバージョンは三度の飯より大事なのです。C言語はもう枯れているからいいとして、C++ に関しては C++17 になってようやく近代になった(C++14 は中世、C++11 は古代)ので、少なくとも25歳以上の男子は C++17 以下を使うとなると人権の侵害になります。
ちなみに、C++20 はまだ現代になりきれていない近代だと思います。

ということで C++ コンパイラ、arm-none-eabi-g++ を探してみましょう。Mac では /Applications にインストールされるため、こんなシェル芸で見つけられますね。

$ find STM32CubeIDE.app -name "arm-none-eabi-g++" | xargs -n1 -I {} echo {} -v | bash

どうやら2箇所に該当の物があるらしいですが、どちらも 7.3.1 でした。C++ の日本語リファレンスページによると、どうやら C++17 に対応しているよう。やったー!

Ad
Ad

SNSへはこちら

RSS等はこちら