記事概要
本記事はSTM32 CubeIDEが公開されたことを記念して,STM32でUART版「Hello World」を作ります.
環境
- STM32CubeIDE 1.0.0
- macOS 10.14.5
- NUCLEO-F401RE
STM32 CubeIDEについて(読まなくてもよい)
STM32 CubeIDEはSTM32用の統合開発環境です.
2019年4月にリリースされたものですが,実態はこれまでも存在し,広く使われていた「STM32CubeMX」,「SW4STM32」の2つのアプリケーションを統合したものです.
CubeMXはマイコンの設定を作成するためのアプリケーションです.
SW4STM32はプログラムを書いて実行するためのアプリケーションです.
これまではCubeMXで作った設定データをSW4STM32に取り込んで作る必要がありましたが,Cube IDEで統合されたため,とてもわかりやすくなりました.
まだネット上にはCubeIDEを使った記事は少ないため,CubeMXやSW4STM32を使った情報が多くあります.
調べる際には上記のワードも覚えておくとよいでしょう.
CubeMX,SW4STM32は今後アップデートされなくなるため,今から始める方はSTM32CubeIDEで練習するのがよいでしょう.
環境構築について
STM32 CubeIDEのインストール方法はこちらをご覧ください.
プロジェクトの作成
STM32 CubeIDEを開いたら,
"File→New→STM32 Project"でプロジェクトを新規作成します.
するとこんな感じのロードがはじまり,,
Target
Target(対象とするマイコン)を選択する画面となります.
マイコンの名前を直接入力してもよいのですが,NUCLEOはあらかじめボードとして登録されています.
上のタブから「Board Selector」を選択します.
「NUCLEO-F401RE」で検索
出てきたマイコンを選択して,次へ
Setup
プロジェクトの基本設定ウインドウが出てきます.
プロジェクト名を適当に入力してください.
他の設定はそのままで良いので,「Finish」を選択します.
なんか出てきますが「Yes」でOKのはず.
同じく.最初に旧CubeMXの画面で設定を行うので「Yes」でOKです.
CubeMX
CubeMXを使っていた人にはおなじみの画面が出てきます.
(今回この画面で必要な作業はありません)
この画面は左メニューの「(プロジェクト名).ioc」を選択することでいつでも開くことができます.
STM32ではマイコンの周辺機能(Peripheral)を様々なピンに割り当てることができます(緑のピンは割り当て済み).
この画面で,タイマーなどマイコンの機能をピンに割り当てることで,設定や初期化の内容がプログラムに反映されます.
今後機能を増やしていく際にはこちらの画面でピンを設定して,プログラムを記述という作業を繰り返していくことになります.
UARTは最初から設定されている(USART2ペリフェラル)ので,今回この画面で必要な作業はありません.
左の「Project Explorer」メニューから「main.c」を開きます.
作成完了
これがmainプログラムです.
すでに自動生成された設定などが記述されています.
UART通信
プログラムを書く上での注意
mainプログラムを下にスクロールすると,main()関数が見えてきます.
main関数の中もいろいろと記述済みですが,こちらを追記していきます.
その際に注意しなければならないのが「自分で書いたプログラムが勝手に削除される場合がある」ことです.
main.cはマイコンの設定に応じて自動で書き換えられますが,その際,「指定の場所」以外に書かれたプログラムは削除されていしまいます.
必ず,
/*USER CODE BEGIN xxx */ /*USER CODE END xxx */
の間に記述するようにしてください.
またこのコメントを消さないでください.
HAL_UART_Transmit()
それではようやく本題ですが,プログラムを編集していきます.
以下のように/USER CODE BEGIN WHILE /の中に2行追記します.
/* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { HAL_UART_Transmit( &huart2, "Hello UART\r\n", 13, 0xFFFF); HAL_Delay( 100 ); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */
書き込み
編集が終わったら,書き込みを行います.USBケーブルでMacとNUCLEOを接続します.
"Run→Debug"を選択すると,書き込みが始まります.
初回のみ対象を選択する画面が出るので,「STM32 MCU C/C++ Application」を選択します.
同じく初回のみ出てきます.OKを選択します.
しばらく待つと書き込みが終わるはずです.
プログラムが自動で実行されますが,すぐに停止し待機状態になります.
開始するには「Resume」を選択します.
macでUARTを見る
macのターミナルを開きます(terminal.app).
ここにコマンドを2つ入力します.
以下を入力します.
ls /dev/tty.usb*
すると,「/dev/tty.usb....(数字)」という文字列が出力されます.
これが接続されているマイコンのシリアルポート名です.
このポートに対するシリアル通信を「screen」コマンドで行います.
screen /dev/tty.usb.....xxxxxx 115200
を打ち込みます「.....xxxxxx」の部分は先ほど出力されたものを入力します.
すると「Hello UART」の文字列が出力されます.
以上で完了です.
出力がされない場合は
- プログラムが実行されているか
などを確認してください.
また,マイコンを抜き差ししたり,パソコンを再起動したりしてみるのも忘れないでください.自分の環境が悪いと決めつける前に.