2018年12月7日金曜日

STM32CubeMX + Atollic TRUEStudioでLチカ

STM32のネイティブ環境でLチカを動作させられたので、メモです。いろいろ試行錯誤しているのでこの手順通りで動作できるかどうかはわかりません。

STM32の統合開発環境には、

  • IAR Embedded Workbench(有償)
  • ARM MDK-ARM(有償)
  • AC6 SW4STM32(無償)
  • Atollic TRUEStudio(無償)

などがありますが、今回はAtollic TRUEStudioを使いました。パソコンはWindows10で、ターゲットボードはNucleo-F446REです。

参考にした記事
「楽しくやろう。」さんの「TrueSTUDIO fo STM32を動かしてみた https://blog.boochow.com/article/456508260.html
「HappyTech Blog」さんの「STM32CubeMXの使い方 http://happytech.jp/wordpress/2017/06/05/how-to-use-stm32cubemx/

TrueSTUDIOのインストール


https://atollic.com/truestudio/よりAtollic_TrueSTUDIO_for_STM32_windows_x86_v9.0.1_20180420-1214.exeを入手してインストール。

Quickstart guideを一読


EclipseベースのIDEを使うのは10年ぶり?ぐらいです。[ヘルプ] - [Information Center]より「Quickstart Guide」を一読してなんとなく操作法を確認しました。パースペクティブの切り替えなど少しクセがあります。

新規プロジェクトの作成


[新規] - [C++ Project] で現れる[C++ Project]ダイアログでプロジェクト名を指定。

[Project type:]を[Embedded C++ Project]を指定。

[ターゲット]で[Boards]-[NUCLEO_F446RE]を指定。

[デバッグプローブ]で[ST-LINK]を指定。

以上でカウンターをインクリメントするプロジェクトが作成され、コンパイル&デバッグできますが、これだけでは周辺機能のドライバが何もありません。

STM32CubeMX & STM32Cubeのインストール


STM32CubeはSTM32の開発を行うためのHALその他もろもろのソフトウェアを集めたもので、F3とかF4などのSTM32のシリーズごとに別れています。STM32CubeMXはSTM32Cubeを使ったプログラムに必要な初期化コードを生成するグラフィカルなツールです。

まずは、STM32CubeMXをインストールします。途中で「Java Runtime Enviroment」のインストールが促され、インストールしました。

STMicroの日本語の記事
https://www.stmcu.jp/design/sw_dev/pc_soft/52798/?gclid=EAIaIQobChMI-P6p9qfD3QIVQamWCh3FhQNcEAAYASAAEgIFxvD_BwE

インストールファイルはSTMicroの本家サイトhttps://www.st.com/ja/development-tools/stm32cubemx.html)から入手しました。

STM32CubeMXのスタンドアロン版の[Help]で「UM1718 User manual」が参照でき、これに従って以降の設定を行いました。

4.3  Installing STM32CubeMX plug-in version

プラグインバージョンのインストールです。TRUEStudio上でCubeMXを利用できるようになります。

4.5.2  Installing STM32 MCU packages

STM32Cubeのインストールです。NucleoF446REを使うので、「STM32F4 1.21.0」をインストールしました。

動作テスト


STM32F4Discovery & Keilの記事ですが、
「@gkmaro634」さんの「STM32CubeMXでSTM32F4Discoveryを動かす1~Lチカ編~ (https://qiita.com/gkmaro634/items/7b2ce4f72615c96f41d3)」を参考にしてLチカさせました。

CubeMXでBoardを指定してデフォルトの設定のまま初期化コードをを生成するものです。とりあえず動かしてみるにはちょうどいいと思います。

CubeMXの[New Project] - [Board Selector]で[Nucleo-F446RE]を選択、デフォルト・モードで初期化。

[Project] - [Settings...]で[Project Name]、[Project Location]を設定。

[Toolchain / IDE]で[TrueSTUDIO]を選択。

[Project] - [Generate Code]でコードを生成。

以上でTRUEStudio用の雛形プロジェクトが生成されます。コード生成後あらわれるダイアログで、「Open Project」を選択するとエラーメッセージが表示されましたが、TrueSTUDIOで生成されたプロジェクトを開けば大丈夫でした。

プロジェクト内のmain.cppのmain()関数内のwhile()ループ内にLチカさせるコードを追加します。


  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
   HAL_Delay(500);
   HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
   HAL_Delay(500);
   HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

[実行] - [デバッグ]で、PCに接続したNucleoにプログラムが書き込まれ、LEDがチカチカします。

HAL_GPIO_WritePin()、HAL_Delay()などはSTM32CubeのAPIで、ドキュメントを参照しながら習得する必要があります。

参考になりそうなドキュメント:
UM1725 Description of STM32F4 HAL and LL drivers
UM1730 Getting started with STM32CuberF4 MCU Package for STM32F4 Series
STM32Cube ファームウエア テクニカル・プレゼンテーション STM32Cube_training_JPN_rev1.pdf
STM32F4 シリーズ テクニカルトレーニング STM32F40x_training_JPN_rev1.pdf
Best-practices / FAQ: TrueSTUDIO + STM32CubeMx http://blog.atollic.com/best-practices-faq-truestudio-stm32cubemx

STM32CubeF4のExample:
<ドキュメントフォルダ>\STM32Cube\Repository\STM32Cube_FW_F4_V1.21.0\Projects\

0 件のコメント:

コメントを投稿