見出し画像

[Mac]CLionでSTM32搭載のBlue Pill Boradの開発環境を整えてみた

トランジスタ技術 2020年3月号にも特集が組まれていたSTM32搭載ボードを使ってなにか遊びたいなと思い、値段の安いBlue Pillボードを購入して開発環境を作ってみました。

Blue Pillボード

Blue Pillボードと書き込みに使うST-LinkはこちらのShigezoneさんで購入しました。
いつもお世話になっています。ありがとうございます。

そして肝心のBlue Pillボードの仕様はこちらの様です。

今回はボード上のLEDのみ使用します。
サイトによると、ボード上のLEDのポート番号はPC13です。
あとでプログラムを作る時に必要になるので、覚えておきます。

CLionとは

CLionはjetbrainsという会社が開発しているC/C++言語用の開発ツールです。
jetbrainsの開発ツールは他にjavaなどに使えるIntelliJ IDEA、PHP用のPHPStorm、Python用のPyCharmなどがあり、Androidの開発環境Android Studioも同じインターフェースのIDEとなっています。

なお、CLionではPlatformIOを使うことで、Arduino用の開発環境としても使えます。
こちらについては、またの機会にnoteを書いてみたいと思います。

CLionダウンロード&インストール

まずは、公式サイトよりCLionをダウンロードします。

全ての機能を試せる30日間の試用期間がありますので、迷わずダウンロードしてしてインストールしましょう♪
起動は後ほどおこないます。
なお、ライセンスの購入は日本の代理店であるサムライズムさんから購入するのがおすすめです。
こちらの侍割(名前がかっこいい)紹介リンクから購入すると、割引になりますので良いなとおもったら是非ご検討ください。

ライブラリのインストール

次は、デバッグやarmプロセッサーのコンパイルに必要なツールをインストールします。ここでは、homebrewを使ってインストールします。
Homebrewがインストールされていない方は、公式サイトを参考にインストールしてください。

Homebrewのインストールが終わったら、openocdをインストールします。

brew install open-ocd

引き続き、arm用のコンパイラもインストールします

brew tap ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc

最新版のコンパイラを使う場合は、以下のDeveloperサイトからダウンロードしてインストールする必要がありそうですが、今回はbrewでインストールしました。

STM32の初期化コード(C言語)を自動生成するためのSTM32CubeMXをダウンロードしてインストールしましょう。
なお、STM32CubeMXのダウンロードには、会員登録が必要です。
会員になっていない方は、新規会員登録を行ってダウンロードしてください。
※2020/6/21の最新版は5.6.1

日本のサイトではこちらからダウンロードできます。

本家のサイトの方が新しい場合がある様です。また、アカウント登録は本家と日本語サイトで別々です。

ダウンロード後にインストールするのですが、OSがCatalinaの場合、ダウンロードしたファイルを展開したappファイルは直接実行できません。その場合は、ターミナルアプリを実行しexeファイルをjavaで起動します。
※javaが入っていない方は、javaをインストールしてください。
※フォルダ等は適宜変更してください。

sudo java -jar en.stm32cubemx_v5-6-1/SetupSTM32CubeMX-5.6.1.exe 

画像2

インストールは、デフォルトのまま進めて構いません。
ライセンスの同意などがありますので、チェックをつけて進みます。
以下の画面の下側のチェックは、チェックなしでも構いません。
※機能改善などのための統計情報送信を許可するかしないかのチェックです。機能改善などに協力する場合はチェックしましょう。

画像2

インストールフォルダは、CLionの設定と合わせるため、デフォルトのままインストールすることをお勧めします。

画像3

これで、一通り必要なツールのインストールが終わりました。
お疲れ様です。

一休みしたら、プロジェクトの作成を行っていきましょう。

プロジェクトの作成

そてでは、インストールしたClionを起動しましょう。
起動すると、ライセンス入力を促されますが、「Evaluate for free」を選択し、Evaluateボタンを押して進んでください。
(購入された方はActivate CLionを選択して進んで下さい)

画像25

試用開始またはLicenceを登録して進むと、以下のWelcome to CLionの画面が表示されていると思います。
ここで、「+ New Project」をクリックしてください。

画像5

New Projectウインドウが表示されたら、左側より「STM32CubeMX」を選択し、プロジェクトを作成するフォルダを指定します。
日本語やスペースを含むフォルダは念のため使わない方が良いと思います。

画像6

「Create」ボタンを押してしばらく待つと、メインウインドウが表示されます。

画像7

ソースコードの自動生成

右側のメインウインドウに、警告が表示されているのでまずはこちらの警告を解消させるため、真ん中の「Open with STM32CubeMX」をクリックしてSTM32CubeMXを起動します。
MCUが目的のチップではないので、STM32F103C8を選択します。
まずは、画面左上の「STM32F030F4Px」をクリックしてチップ選択画面を表示し、左上の検索で"f103c"を入力して一覧にでてきた"STM32F103C8"をダブルクリックして決定します。

画像8

MCUが選択できると以下のチップ画面が表示されます。
ここでは、MCUのピンの使い方を設定していきます。
今回はボード上のLEDでLチカをさせたいので、左上あたりにあるPC13をくりっくして、赤線の「GPIO Output」を選択します。

画像9

正しく選択できると、PC13ピンが緑色になり、GPIO_Outputが表示されます

画像10

次に、デバッグ用ポートの設定を行います。
この設定を行っていないと、ファームウェアを書き込んだあと操作不能になりますので、必ず行っておきましょう。

左サイドバーより「SYS」をクリックし、Debugの種類から「Serial Wire」を選択します。
チップ画面のPA13とPA14ピンが下の画像の様に緑色になっていれば大丈夫です。

画像25

もし、設定を忘れてこれ以降の書き込みをした場合、ボード上のDip Switchを変更して対応する必要があります。このお話は、また別記事にて紹介したいと思います。

引き続きプロジェクトの設定を変更していきます。

上部のタブから「Project Manager」を選択し、各種設定を変更します。

・Project Name : CLionで作成した時のプロジェクト名を入力します
※MCUを変更するとプロジェクト名が消えてしまうので、変更するたびに設定する必要があります。
・Toolchain / IDE : STM32CubeIDEを選択します
・Generate Under Root : 必ずチェックを入れてください。
変更するのは上記の3点になりますが、念のためProject Location、Toolchain Folder Locationがプロジェクトフォルダになっているか確認してください。

画像11

上記の設定が完了したら、画面右上の「GENERATE CODE」をクリックします。
初回のみ、上書き確認の画面が表示されますので「Yes」をクリックして進みます。

422_上書き

コードの自動生成が終わると、次の画面が表示されるので「Close」をクリックして閉じます(CLionで編集するため)
その後、STM32CubeMXアプリを終了します。

画像13

CLionの画面に戻ると、プロジェクトの再読み込みが行われて、Board Config Filesというポップアップ画面が表示されます。
ここで、使うボードの設定ファイルを選択するのですが、Blue Pill Boardの設定ファイルはこの一覧にはないので、ひとまず一番上の「lisa-l.cfg」を選択して、一番左の「Copy to Project & Use」をクリックします。

画像14

CLionの画面に戻ったら、左のプロジェクトウインドウのプロジェクト名の▶︎をクリックして、プロジェクトのファイル一覧を表示します。
プロジェクトウインドウが表示されていない場合は、ウインドウ左側にある細いタブの「1:Project」をクリックして表示します。

画像15

ファイル一覧に先程選択したlisa-l.cfgファイルがあるので、こちらのファイル名をstm32f1x.cfgにリネームします。
lisa-l.cfgファイル名の上で右クリックし、ポップアップメニューから
Refactor > Rename を選択します。ショートカットはShift + F6です。

画像16

2つのチェックボックスのチェックは今回は外してください。
※ソース内及びコメントなどの文字列も置換して変更するかどうかのチェックになりますが、今回は不要です。

画像17

ファイル名を変更したら、変更に合わせて設定を変更します。
Clionの画面上部にあるビルド設定から「Edit Configuration」を選択します。

画像18

ファイル名を変えてしまったため、Board config fileに赤枠が表示されています。
ファイル名を「lisa-l.cfg」を「stm32f1x.cfg」に変更します。

画像19

設定を変更したら、stm32f1x.cfgファイルの中身を以下の様に変更します。

#
# This is an Bull Pill board with a single STM32F103CT8 chip.
#
source [find interface/stlink-v2.cfg]

transport select hla_swd

source [find target/stm32f1x.cfg]

もしくは、以下のファイルをダウンロードして上書きしてください。

これで一通りの設定が完了します。
プロジェクトをビルドしてみましょう。

画面上部のビルド設定から「OCD [プロジェクト名] | Debug」を選択します。
※[プロジェクト名]は、CLion作成時に設定したプロジェクト名
そして、左側にある金槌のアイコンをクリックしてください。

画像20

エラーなく「Build finished」が表示されてばビルド成功です。

ST-Link

つぎは、ボードへの書き込みです。
今回使用するのは、冒頭で紹介したST-Linkというモジュールです。
こちらを使うのですが、まずはST-LINKのファームウェアを更新します。
以下のURLよりファームウェアアップデートツールをダウンロードします。
2020年6月21日現在の最新バージョンは 2.37.26 です。

ダウンロードしたら展開します。
ターミナルを開いて、stsw-link007/AllPlatformsフォルダへ移動します。
STLinkUpgrade.jar ファイルが存在するのを確認して、以下のコマンドを実行します。

java -jar STLinkUpgrade.jar

「開発元を検証できないため開けません。」とエラーがでますので、一旦キャンセルをクリックします。

その後、「システム環境設定」>「セキュリティーとプライバシー」の「一般」タブを表示します。
ダウンロードしたアプリケーションの実行許可が以下の様な表示になるので、「このまま許可」をクリックします。
※目的のプログラム以外を許可しないよう、ファイル名が合っていることを確認しましょう。

画像21

その後、javaの実行コマンドを再度実行します。
今度は「開く」で起動します。

画像22

起動すると、以下の様な画面になります。
ST-Linkが繋がっていない場合は、ST-Linkを接続して「Refresh device list」ボタンを押してください。
「ST-LINK/V2」などボード名が表示されればファームウェアのアップデートが可能です。

画像23

「Open in update mode」ボタンを押すと、Current Firmwareなどの情報が更新されます。
Current FirmwareとUpdate to Firmwareのバージョンが違う場合、「upgrade」ボタンで更新します。
下の画像は、すでにアップデートしているので、バージョンが同じになっています。

画像24

「Upgarde」ボタンを押して最後にボタンの下に「Upgrade successful.」が表示されたら成功です。
アップデートツールを終了してCLionに戻りましょう。

プログラムの書き込み

準備ができたら、ST-LINKとBlue Pill Boardを接続します。

Blue Pill Boardのピンは 1ピンから 3.3V、CLK、DIO、GNDの並びになっていますので、ST-LINIKに付属のケーブルを使って同じ信号線どうしを接続します。

画像26

配線後、ST-LINKとMacに接続しCLionに戻ります。
もどったら、先ほど金槌のアイコンをクリックしましたが、今度は実行ボタン(ビルド設定の右側にある左向きの三角ボタン)をクリックしましょう。
プログラムの実行ボタンですが、この場合はボードへの書き込みが行われます。

画像27

実行ボタンを押すと、以下の様な表示に変わり左下がRunに変わり「OCD First」タブに実行ログが表示されます。

画像29

最後に「** Programming Finished **」が表示されていれば書き込み完了です。
タブの部分をダブルクリックすると、ウインドウに全体に拡大されるのでログが見やすくなります。
※元に戻す場合は、もう一度ダブルクリックします。

画像28

まだプログラムに何も書いていないので、特になにも動きはありません。

プログラムの修正

書き込みを確認するために、ボード上のLEDを点滅させるプログラムを書き込んでみましょう。

左側のプロジェクトタブを開き、main.cを探してダブルクリックして、main.cファイルを開きます。

画像30

main.cから"USER CODE BEGIN 3"とコメントが書かれている部分を検索し、その下にLEDを1秒毎にON/OFFするコードを書きましょう。

HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(1000);

STM32での開発コードは、"USER CODE BEGIN XXX"から"USER CODE END XXX"の間に記載します。
これは、STM32CubeMXでコードを生成したときに、上書きされない様にするためです。
BEGIN 〜 END以外にコードを書くと、STM32CubeMXでコード生成するとコードが削除されてしまいますので注意しましょう。

画像31

while(1) { .. } までの背景色が変わっていますが、これは無限ループになってるよ〜という警告ですが、基本的には無視して構いません。
※Arduinoでの開発でいうloop()関数の部分がこの部分になっています。

プログラムが修正できたら、もう一度実行ボタンで書き込みしましょう。
ボード上のLEDが点滅したら完了です。

プログラムのデバッグ

次に、プログラムのデバッグを行ってみましょう。
ソースコードの行番号の右側にあるエリア(赤枠の部分)をクリックしてブレークポイントを設定します。

HAL_GPIO_TogglePin()関数の部分に設定しましょう。

画像32

設定したら、実行ボタンのさらに右側にある虫マークのデバッグボタンをクリックしましょう。

ボタンをクリックすると、設定したブレークポイントの部分でプログラムが一時停止します。
止まっている行の背景がかわっているのが目印です。

画像33

左下のデバッグエリアで実行を再開してみましょう。

画像34

再開すると、約1秒たつとまたブレークポイントで止まります。
ボードを確認すると、実行するごとにLEDが点いたり消えたりしているはずです。デバッグエリア左上辺りのステップ実行なども試してみてください。

長くなってしまったので、こちらの記事は一旦ここで終わりたいと思います。

長い記事にお付き合いいただきありがとうございました。

ぜひみなさんもBlue Pill BoardやCLionで遊んでみてください。

もし、参考になったよとか、役に立ったよって方は記事の購入をしていただけると嬉しいです。
よろしくお願いします。


ここから先は

40字

¥ 300

この記事が気に入ったらサポートをしてみませんか?