こんにちは、はしもとです。
前回は、自作マウスの部品を選定しました。
今回からは、選定したSTM32マイコンで各部品を動作させることができるか確認していきます。
ただ、マイコン初学者の自分がいきなりマイコンを使って開発を進めるのは難易度が高いので、
最初はSTM32を簡単に使用できるようにしたマイコン評価ボード「STM32 NucleoBoard」を
使って各部品の動作確認を行っていきます。
その評価ボードはいくつか種類があるのですが、自分が選定したマイコンに近い機能を持ち、
かつ半導体不足の現在でも在庫が残っていた「STM32F446RE」を使います。
開発環境構築
まずは、STM32F446REで開発を進めるための開発環境構築を行っていきます。
環境構築方法は、マウス研修の先輩方のブログを参考にさせていただきました。
自分の動作環境は以下のとおりです。
- Ubuntu 18.04.5 LTS
- STM32CubeIDE 1.7.0
STM32CubeIDEは、STM32用の統合開発環境(IDE)です。 プログラムして、デバッグして、STM32に書き込むまでのすべての作業を これ一つで行うことができます。 環境構築で行った作業は上記のブログとまったく一緒なので、 こちらの記事では説明を省略させていただきます。
Lチカ
プロジェクト作成
マイコンを動かせるようになったらまずやることとしてLチカがあると思います。
自分も例のごとくLチカをしていきます。
まずこちらのブログのプロジェクト作成部分以降を参考に、プロジェクト作成を行います。
ピン機能を設定
次にピンにどの機能を与えるか設定します。
今回は、プロジェクトを生成したときにすでに設定されているピン機能をそのまま使用します。
一応自分の設定内容を下記に残しておきます。
コード変更
プロジェクトを作成したときに自動生成されたコードを一部変更して、Lチカを実装します。
プロジェクト名/Core/Src/main.c
のwhile文を下記のように変更します。
/* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE BEGIN 3 */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); //LEDを点灯 HAL_Delay(500); //500ms待つ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); //LEDを消灯 HAL_Delay(500); //500ms待つ /* USER CODE END 3 */ } /* USER CODE END WHILE */
HAL_GPIO_WritePin()関数は、GPIO として設定したピンの出力値を決める関数です。
第1引数は、GPIOの種類。
第2引数は、使用するGPIOピンの番号、
または前節で述べた「ピン機能を設定」で指定したピンの名前。
今回の場合では、PA5のピンの名前をLD2としているので、引数を”LD2_Pin”としても動作します。
第3引数は、ピンの出力値を指定します。
GPIO_PIN_SETとすると、出力値をHIGHに設定でき、LEDが点灯します。
GPIO_PIN_RESETとすると、出力値をLOWに設定でき、LEDが消灯します。
詳細はこちらです。
void HAL_GPIO_WritePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
書き込む
NucleoとPCを接続します。
次に画面上部にあるRunアイコンボタンをクリックして、書き込みます。
なにもエラーが表示されていなければ、書き込み成功です。
初回の書き込みでは、デバッグに関する設定が必要なのでのりさんのブログを参考にして設定してみてください。
Lチカを確認
Nucleoボード上でLチカするのを確認できました!
また、外部の赤外線LEDでも点灯するのを確認しました。
赤外線なので目に見えないですが、スマホカメラで撮ると光ってました。
まとめ
今回は、マイコンを購入したらまず行うであろうLチカをやってみました。
ただマイクロマウスで使う部品はLEDだけではないので、
他の部品の動作確認も次回から行っていきます。
それでは!