2017年12月21日木曜日

TrueSTUDIOでLチカ

この記事はMice Advent Calendar 2017 - Adventarの21日目の記事です。
昨日はnanoさんの「quadceptはいいぞ」でした。

さて,今回はSTM32マイコンのIDEの一つであるTrue STUDIOについての記事です。

来年はSystem Workbench for STM32 (SW4STM32)
開発しようかな、なんて思っていたのですが、このニュースを見て
そんな気も吹き飛びました。

STMicroelectronicsがTrueSTUDIOを開発しているatollicを買収し
有料だったTrueSTUDIO Pro が近々無償で利用できるようになるとのことです。

というわけで,とりあえずTrueSTUDIOに慣れてみようと思い
インストールからLチカまでやってみました。

ちなみに今回はNUCLEO-F446REを使い、付属のST-LinkをJ-Link OB化して
J-Linkで書き込んでみます。

インストール

まずはatollicのサイトでTrue STUDIOのインストーラをダウンロードします。
インストーラを起動したら, どんどんポチポチと進めて行きます。
コンポーネントの選択をするように言われるので、
今回はST-LinkとJ-Linkのところにチェックを入れて進みます。
さらに、ポチポチ進めてインストールを完了させましょう。

CubeMXをTrueSTUDIOに導入

 TrueSTUDIOにコードジェネレータのCubeMXプラグインを入れます。
まずは以下のリンクからEclipse用プラグインのzipを入手します (要アカウント登録)。

ダウンロードが終わったら、TrueSTUDIOのメニューバーで
ヘルプ->新規ソフトウェアのインストール...
を開き、出てきたウィンドウにある作業対象の追加ボタンを押し、
リポジトリーを追加のダイアログを出します。

ダイアログの名前入力欄に任意の名前を入力し、
ロケーション欄はアーカイブボタンを押し、先ほどインストールしたzipを選択すればOK

あとは流れで進んでいき、インストール後再起動すればTrueSTUDIO上で
CubeMXが使えるようになります。

プロジェクトをつくる

まずはCubeMXでプロジェクトを作ります。
TrueSTUDIOの右上にある「パースペクティブを開く」ボタンを押し




出てきたダイアログにある 「STM32CubeMX」をクリックしCubeMXを開きます。
CubeMXが起動したら、New Projectをクリックしデバイス選択に進みます。

今回はNUCLEO-F446REを使うので、「Board Selector」タブから選択し
ダブルクリックで進みます。

進むと下のような画面に進みます。ここでピン設定やクロック設定ができます。
今回はLチカだけなのでいじらず進みます。
まずはプロジェクトの設定を行います。メニューバーから
 Project->Settings...
と進み、以下のように、Project Nameを適当に決め
Project Locationを好きな場所に設定し、Toolchain/IDEをTrueSTUDIOにすればOK
設定が終わったら
 Project->Generate Code
でプロジェクトを生成し、「Open Project」をクリックします。
 右上のボタンを押してCubeMXからC/C++パースペクティブに戻ります。
  
一度ビルドしてみてエラーが出ないか確かめておきます。

ST-LinkのJ-Link OB化

下記のリンクからSTLinkReflashをインストールします。
Converting ST-LINK On-Board Into a J-Link
 ST-LinkをPCに接続した状態でSTLinkReflash.exeを起動し
指示に従ってJ-Link OB化します。

デバッガの設定

TrueSTUDIOのデバッガをJ-Linkに設定します。メニューバーから
実行->デバッグの構成
を選択し、出てきたダイアログの左欄にある「(プロジェクト名).elf」を選択し
デバッガタブのデバッグプローブ欄を「SEGGER J-LINK」に設定します。
適用を押したらダイアログを閉じます。


Lチカのプログラムを書く

TrueSTUDIOのプロジェクト・エクスプローラーからSrcフォルダにあるmain.cを
開きます。main.c 内にはCubeMXで生成されたコードがすでにあります。

CubeMXで再度コード生成を行ったときに、自分が書いたコードが
消えないようにするには
/* USER CODE BEGIN */
/* USER CODE END */
のようなコメントの間に書いていきます。

今回はLチカなのでコード生成で用意されているwhile(1)ループを使います。
/* USER CODE BEGIN WHILE */
/* USER CODE END WHILE*/
の間に次のようにコードを書きます。

これをビルドしてエラーが出なければOK。あとはJ-Linkで書き込むだけです。

書き込み

 ツールバーの虫アイコンをクリックすることでデバッグのパースペクティブが開き
デバッグが開始されます。
 ツールバーの再開ボタンを押してみるとNucleoボード上のLEDがチカチカと
輝き始めます。

まとめ

SW4STM32に比べて環境構築がらくちん



明日のMice Advent Calendar 2017
アブノーマルくんの「elecrowでクリスマスツリー【2年目】」です。