STM32CubeIDEを使ってみようの続編として STM32H7シリーズのデュアルコア STM32H745 を使ってみましょう。
本記事において使用する NUCLEO-H745ZI-Q_ は2022年10月1日開催の IoT あるじゃん ALGYAN x STM x mROS-base 世界初!mROS 2ハンズオン においてを STマイクロエレクトロニクス社 村澤様 より頂戴したものを使用しています。
なお、コードの書き方等については STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 Lチカ編 をご覧ください。
プロジェクトを作る
File⇒New⇒STM32 Project をクリックします。
ボード設定する
Board Selector のタブにおいて STM32H7 のチェックをつけて今回使用する NUCLEO-H745ZI-Q を選択します。
プロジェクト名を入力して Next をクリックします。
これで H745 のプロジェクトが生成されました。
そのままでは動かないプログラム
この段階でLD1~3のピンが設定されているのでプログラムを打ち込んでみましょう。
LD1~3が出てきません。
エラーが出てしまいます。
ピン番号を入れても動作しません。
コアとGPIOを紐づける
次にコアとGPIOを紐づけてみましょう。
Pinout&Configuration の画面において該当のピンをクリックして Pin Resevation を Free から使用コアを選択します。
次に DeviceConfiguration Tool Code Generation をクリックします。
プログラム作成
今回は LD1 が選択可能になっています。
コードは必ずの間に記述してください。
コードジェネレートする事で消えてしまいます。
/* USER CODE BEGIN 3 */
/* USER CODE END 3 */
追加コード例
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(LD1_GPIO_Port,LD1_Pin);
HAL_Delay(500);
}
/* USER CODE END 3 */
それではコンパイルしてみましょう。
無事動作しました。
これはGPIOがコアとつながっていない為です。
今回は、1つのGPIOは1つのコアが使用するように設定 します。
2つ目のコアで動かす
それでは次はもう一個のコアで動かしましょう。
Pinout&Configuration の画面においてもう一個のコアを選択しましょう。
LD2,LD3 が選択できるようになりました。
この状態で Run を押してみましょう。
正常に動作してそうに見えますが、残念ながら動作しません。
それではマルチコア用に修正しましょう。
マルチコア向けに設定を変更する
Run As⇒Run Configurations をクリックします。
最初にM7コアを設定します。
CM7 をクリックします。
Startup⇒Add をクリックします。
Project 名に CM4 を Build Configuration を Debug にします。
以下のような構成になります。
次にM4コアの設定をします。
CM4 をクリックします。
デバッガ から
ポート番号:61238
Type:None
とします。
次に Startup⇒Edit をクリックします。
Download のチェックを外してOKをクリックします。
Download が false になっている事を確認し Apply をクリックし、OK をクリックします。
これでコンパイルする事で両マイコンにプログラムを転送して、動作する事が出来ます。
以上で2つのコアが動作するプログラムを作る事が出来ました。