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つのコアが動作するプログラムを作る事が出来ました。