こんにちは、nomuraです。
今週はSTM32の開発環境を簡単に紹介しましょう。
紹介といっても、STM32はこの研修で初めて使用するので雰囲気を中心にお伝えします。
今回使用する開発環境はSystem Workbench for STM32(略称SW4STM32)とSTM32CubeMXです。
実際に触ってみるための詳しい情報が欲しい方は、Webショップの方で「SW4STM32とCubeMXではじめるSTM32マイコン入門」などをお求め頂ければ(私も持っています!)と思います。
- SW4STM32
SW4STM32はEclipseベースの開発環境です。

Eclipseは様々な開発環境で採用されているので、何かしらで触れた事のある方は抵抗なく触れると思います。私も以前から何度か使用しているのですんなり導入することが出来ました。

この統合開発環境から、プロジェクト管理、ソースコードの編集、コンパイル、デバッグまで、ほとんどの作業を行う事が出来ます。
- STM32CubeMX
STM32CubeMXはSTM32シリーズの低レベル実装(クロックの設定とかIOの初期化とか)を生成してくれるツールです。

STM32の公式ライブラリには「Standard Peripheral Driver」と「HAL(Hardware Abstraction Layer)」というものが提供されているようなのですが、今後はHALが主流になっていくようなのでこちらを利用することにします。
STM32CubeMXを利用するとGUIで初期化コードを細かくチューニングすることが出来ます。”CPUを選んでプロジェクト作成->CPUの設定をマウスで選択->コード生成!”のような簡単な流れで初期化コードが出力できます。例えば、今回使用するSTM32F405(64ピン)のプロジェクトを作成する場合、
まずはCPUを選択して、

使用したい機能を選択して、

コードを生成!

という流れでGUIから設定した値でCPUが動作するコードが生成されます。視覚的にわかりやすくて「いい時代になったなぁ」と感心します。
自動生成されたコードの動作確認を行うために、今回はLEDを点滅させてみました。下記のように2行だけ追加しています。
int main(void)
{
~~~~省略~~~~
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);/* 追加:LEDポートをトグル */
HAL_Delay(500); /* 追加:500msec待つ */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
動作させてみた動画がこちら。
難しい初期化コードを自分で書く必要なく、IOを操作することが出来ました。Delay関数でいきなり秒数指定して待てるのも驚きです。
深い部分に手を入れようとすると生成されたコードの理解も必要になってきますが、使いながら慣れていこうと思います。
今回はこのあたりで。
次回はセンサ入力を試してみましょう。
