コンテンツにスキップ
ショップ

STM32 MCU:STM32CubeIDEの設定

いつものAIとセットアップ

Gemini・その他のAI

質問文をコピーして、いつものAIに貼り付け。キットの確認から動作確認まで、一つずつ進められます。

Geminiを開く

質問文をコピーして、Geminiの入力欄に貼り付けてください。

質問文を確認

Eclipse版STM32CubeIDEでAP03 / STM32L452REI6向けのプログラムを作り、STM32CubeProgrammerで書き込んで、シリアル端末へ1秒ごとにHello Worldを表示します。最初にArduinoのスケッチを試したい場合は、Arduino IDEまたはPlatformIOの手順へ進んでください。

元の画面例とワークスペース名はSTM32CubeIDE 1.11.2のものです。2.0.0以降はSTM32CubeMXが別ツールになり、周辺機能の設定とプロジェクト生成をCubeMXで行ってからCubeIDEで開きます。STのリリース案内も参照し、以下では手元のツールに合う分岐を使ってください。

  • AP03 STM32 MCU、USBリーフ、データ通信対応のUSBケーブル(Basic Kit 2の場合はAVR MCUを交換)
  • 以下の開発ツールが対応するパソコン
  • STM32CubeIDE、プロジェクト生成に使うSTM32CubeMX、STM32CubeProgrammer
  • シリアル端末(WindowsではTera Termなど)

STの製品ページからEclipse版を取得し、使用OS向けのインストーラに従います。2.xの手順ではSTM32CubeMXも別に導入します。必要な実行環境は、選んだ版のインストール要件に従ってください。

USBリーフ経由のUART書き込みに使うSTM32CubeProgrammerをインストールします。

WindowsのTera Termは公式プロジェクトから取得します。macOS・Linuxでは、接続先のシリアルポートと115200 bpsを指定できる端末ソフトを用意してください。

既存のHello_Worldプロジェクトをインポートして始めることも、以下の手順で新しく生成することもできます。

  1. CubeIDE 2.xの場合: STM32CubeMXを開き、MCUSTM32L452REI6を選んでプロジェクトを作ります。元の1.x統合画面の場合: File → New → STM32 ProjectからMCU/MPU Selectorを開き、Commercial Part NumberにSTM32L452REI6を入力して選びます。
  2. プロジェクト名をHello_Worldとし、保存先のローカルフォルダを選びます。別ツールのCubeMXではツールチェーンにSTM32CubeIDEを選びます。元の統合画面の例では、言語をC++、バイナリをExecutable、プロジェクトの種類をSTM32Cubeとしていました。
  3. 続いて下の周辺機能を設定します。CubeMXまたは統合画面からコードを生成し、STM32CubeIDEで開きます。

デバイスの設定(初期化コードの自動生成)

Section titled “デバイスの設定(初期化コードの自動生成)”
  1. Pinout & Configurationで、PA2をUSART2_TX、PA3をUSART2_RXに設定します。
  2. Connectivity → USART2でAsynchronousを選び、ハードウェアフロー制御を無効にします。ボーレートは115200です。

元のガイドのUSART2設定画面

  1. コードを生成し、生成されたmain.cを開きます。プロジェクトツリーで場所を確認してください。ソースのフォルダとビルド出力のフォルダは役割が異なります。

コードを再生成したときに識別できるよう、対応するUSER CODEブロックに追記します。行番号はツールの版や生成設定によって変わります。

標準入出力のヘッダを読み込みます。

/* USER CODE BEGIN Includes */
#include <stdio.h>
/* USER CODE END Includes */

printfを呼ぶ前に、出力のバッファリングを無効にします。

/* USER CODE BEGIN 1 */
setbuf(stdout, NULL);
/* USER CODE END 1 */

生成されたメインループの中で、1秒ごとに出力します。

/* USER CODE BEGIN 3 */
printf("Hello World\r\n");
HAL_Delay(1000);

printfの出力をUSART2へ送る_writeを追加します。

/* USER CODE BEGIN 4 */
int _write(int file, char *ptr, int len)
{
HAL_UART_Transmit(&huart2, (uint8_t *)ptr, len, 10);
return len;
}
/* USER CODE END 4 */

Project → Build Allでビルドします。エラーがあれば修正し、使用中のビルド出力フォルダ(通常はDebug)に生成されたHello_World.elfを確認してください。ファイル名とパスは実際のプロジェクトに合わせます。

STM32CubeProgによるプログラムの書込み

Section titled “STM32CubeProgによるプログラムの書込み”

書き込むとMCUに入っているプログラムが置き換わります。購入時のデモを後で試す場合はデモの書き戻し方を確認してください。

  1. パソコンとの接続例に沿ってUSBリーフを接続します。AP03のプログラムスイッチをProgram側にして、Resetを押します。
  2. STM32CubeProgrammerでUARTを選びます。接続先ポート、ボーレート115200、パリティEven、データ8ビット、ストップ1ビット、フロー制御なしを指定し、Connectを押します。
  3. Erasing & Programmingで、生成した.elfを選び、Verify programmingを有効にします。
  4. Start Programmingを押し、Download verified successfullyを確認します。ビルドの成功だけでは書き込みの完了にはなりません。
  5. STM32CubeProgrammerを切断し、AP03のスイッチをRunへ戻して、Resetを押します。
  1. シリアル端末を開き、同じポートを選びます。ポートを使用する他のアプリは閉じてください。
  2. 115200 bps、データ8ビット、パリティなし、ストップ1ビット、フロー制御なしに設定します。
  3. Hello Worldが1秒ごとに表示されれば完了です。表示されない場合はRunスイッチ、Reset、接続ポート、通信速度を確認します。
  1. STM32CubeIDEを起動し、使うワークスペースを選びます。
  2. File → Open Projects from File System(版によってArchivesを含む表記)から取得したプロジェクトフォルダを選び、インポートします。
  3. 一覧が見えない場合はWindow → Show View → Project Explorerを開きます。
  4. インポートしたプロジェクトをビルドし、上の書き込み手順へ進みます。移行を求められた場合は元のプロジェクトを残し、変更点を確認してからビルドします。

UART書き込みの代わりにデバッガを使う場合は、デバッガの接続方法を確認してください。