STM32CubeMX

STM32CubeMXは便利なのでみなさんに紹介する。

STM32CubeMXは、STマイクロ提供のC言語ソースのひな型を吐き出すジェネレータだ。

STM32CubeMX起動画面

STM32CubeMX起動画面

特徴は

  • MCUメーカ純正品である
  • 無償である
  • グラフィクで直感的に操作できる
  • keil uViosnなど市販の開発環境プロジェクトのソースが吐き出される
  • STマイクロ社のほとんどのSTM32シリーズのMCUをサポートしている
  • javaプログラムなので動作環境を選ばない

Standard Peripherals Libraryとの決別

これまでSTマイクロは自社のCortex-M(ARM)用にStandard Peripherals Libraryを用意していたが、新規にHAL(hard ware abstraction layer)を中心としたSTM32Cubeという新しい開発環境のファームウェアセットを提供した。
Standard Peripherals LibraryとHAL(hard ware abstraction layer)には互換性がない。そしてSTM32CubeMXは、HAL(hard ware abstraction layer)を含むCソースを吐き出すのだ。

逆に云うと、HAL(hard ware abstraction layer)が自在に扱えないとSTM32CubeMXを使いこなせない。

特徴はとしては、多種なSTM32 MCUをサポートするSTM32CubeMXでの自動生成を意識してかCMSIS規格を元にペリフェラルの抽象化と移植性の向上されている。

こんな感じ

//GPIOにクロックを提供

//Standard Peripherals Libraryなら
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

// HAL(hard ware abstraction layer)なら
__GPIOD_CLK_ENABLE();

Standard Peripherals LibraryとかHAL(hard ware abstraction layer)とか言ってもMCUのレジスタを如何に適切に設定するかという手順が書かれたライブラリィだ。ばんとさんは、Standard Peripherals Libraryなら川内さんの『STM32マイコン徹底入門』で学習したのである程度は使えるのだが、HAL(hard ware abstraction layer)は、書籍はない上Webでの情報も少ないのでSTマイクロが提供したサンプルとHALで書かれたmbedのソースを眺めながら再学習しているところだ。

STM32CubeMXは便利なものだ

ここではビジュアライズされて直感的に操作できるところを紹介したい。

これはMCUの選択画面、STマイクロのほとんどのMCUが網羅されているようだ。

MCU選択画面

MCU選択画面

これはGPIOの設定、MCUのイラストのピンをクリックして設定するというのは直感的で画期的。
左にはMCUが用意している周辺機器が列挙されている。

PinOut画面

PinOut画面

細い設定は別の画面でする。
割り込みやDMA、USARTやSPIなどの設定もできる。

Pinコンフィグ

Pinコンフィグ

これはクロックの設定。ARMは周辺機器が豊富でクロックも複雑怪奇なので、これまではデータシートを注意深く読んで設定してたが、このように直感的に設定できるのは画期的。

クロック設定

クロック設定

これまでのStandard Peripherals Libraryを使ったプログラム作成方法と比べて、直感的で理解しやすく画期的だと思う。

続きを書くョ

STM32CubeMXもHALも試行錯誤(学習中ということ)なのだが、少しずつ慣れてきたので、続きはボチボチ書いていきます。