皆さま こんにちは。
前回に続いて、今回は主にデバッガー(STM32CubeIDE)の使い方について説明をしていきます。
投稿時の開発環境を記しておきます。
PC:Windows10 OS
IDE: STM32CubeIDE Version1.3.0
Configurator: STM32CubeMX Version5.6.0
マイコン: STM32L010F4P6
Board: 自作のボード
構成を確認する
前回までの記事で、全体の構成は以下のようになります。
配線や接続に誤りがないか、ご確認ください。
それからインターネットに接続する環境も必要になります。
PCはネットに接続できる環境にしておいてください。
また、プログラムも書いていきますのでC言語の知識が必要になります。
(ローパワーマイコン編では C++の知識は不要です)
デバッガー(STM32CubeIDE)を起動してみる
STM32CubeIDEを起動します。
どこにあるのかわからない方は、スタートメニューの S のあたりに STMicroelectronics というフォルダがあり、そこをクリックすると、
STM32CubeIDE 1.3.0 (1.3.0はバージョン)があるので、そこをクリックします。
STM32CubeIDEは少々長いので今後は省略して IDE と呼ぶことにします。
プロジェクトを作成する
仕事でもそうですけど、何かことを始めようとする際に「プロジェクト」を立ち上げるなどと言います。
デバッガを使う場合にも、プロジェクト単位で作業を行うので、まずプロジェクトをつくります。
書いたプログラムもプロジェクト単位で管理できます。
File – New – STM32 Project を選択します。
一番最初の起動時には、ファームウェアのダウンロードで時間がかかることがあります。
Target Selection のウィンドウが出ます。
Part Number Search のコンボボックス(下図の赤枠部分)に STM32L010F4 と入力します。
そうすると MPUs/MCUs List に STM32L010F4 (下図の2重線部分)が出てくるので、クリックして Nextボタンを押します。
Project Name を入力するウィンドが出るので、ここでは STM32L010 と入力し、Optionのところはさわらずに Finishボタンを押します。
This kind of project is associated with the STM32CubeMx perspective. Do you want to open this perspective now ? と聞いてくるので Yesを押します。
これは平たく言うと STM32CubeMX を IDE に関連づけして開きますか? という内容です。
初期化コード生成ツールを STM32CubeIDE に統合して使えるようなイメージになります。
main.cを確認する
IDEの左側に Project Explorer があります。
STM32L010の下の > Core の > をクリックするとその下の階層が表示されます。
> Src の > をクリックすると main.c が表示されるのでダブルクリックしてみます。
コメントを省くと、以下のコードが書かれています。
int main(void)
{
HAL_Init();
SystemClock_Config();
while (1)
{
}
}
HAL_Init()という関数があります。
HALの初期化を行う関数です。
HAL は Hardware Abstraction Layer の略でハードウェア抽象化レイヤの意味です。
ハードウェアの違いを吸収して抽象化して、できるだけ同じコード(関数)ですむようにするしくみです。
メモリーの使用量は若干増えますが便利なので、こちらのサイトでもHALを積極的に使っていきます。
ただ、今回説明しているSTM32L010F4P6はメモリー容量が少なめなので、この先容量的に限界が出てくることがあったらHALの使用を諦めるなどの方法も考えていきたいと思います。
メモリー容量を確認しておきます。
フラッシュメモリー : 16KByte
RAM : 2KByte
それからデータを保持することができる EEPROM も STM32L010F4 は持ち合わせています。
EEPROM : 128Byte
それからSystemClock_Config()という関数はクロック系の初期化を行う関数です。
ピンに機能を設定すると、この他にGPIOの初期化関数が追加されます。
ピンに機能を設定する
20ピンマイコンの図が出てきます。
左上からUの字を書くようにピン番号が割り振られているのはご存じのとおりです。
ピンの部分にマウスポインターを置くと、そのピンの設定内容が表示されます。
例えば2番ピンを確認してみましょう。
(1)-PB9-BOOT0:ResetState
これはリセット状態で PB9-BOOT0 の機能が割り当てられている という意味です。
このピンは、この機能(ブート)を使うので設定は不要です。
そして使いたい機能を選択することで、その機能を割り当てることができます。
4 : NRST
5 : VDDA
15: VSS
16: VDD
の4つは変更ができません。
次に2番ピンにマウスポインターを置いて確認してみましょう。
(2)-PC14-OSC32_IN:ResetState
そしてそのピンのグレーの部分をマウスで左クリックすると、リストが出てきて設定可能な機能が表示されます。
リセット状態では水晶発振回路の入力端子になっていますが、水晶は使わないので機能を変更する必要があります。
現状の回路では、何も接続しないので出力端子に設定しておきましょう。
リストから GPIO_Output を選択します。
すると2番ピンがグレーから緑色にかわり設定が変更されたことを教えてくれます。
同様に、その他の端子も全て GPIO_Output に設定変更します。
(注)設定に誤りがありました。
まず 19, 20番ピンを除くその他の端子 GPIO_Output に設定変更します。
そして、 19番(PA13)には SWDIO を設定し、20番(PA14)には SWCLK を設定します。
これでデバッガーと接続できるようになります。
ドキドキして来ました。麻雀で言うところの緑一色イーシャンテンの図(笑)
ビルドする
一度ビルドしておきましょう。
メニューから Project – Build All を選択します。
Do you want generate Code? と聞いてくるので Yes を選択します。
これで設定を変更した部分の初期化コードをIDEが自動的に生成してくれます。
(実際には STM32CubeMX がこの機能を持っています)
IDE下部の Console にビルドの結果が表示されます。
エラーがないことを確認します。
08:37:10 Build Finished. 0 errors, 0 warnings. (took 2s.450ms)
そして MX_GPIO_Init() という関数が追加されていることを確認してください。
設定したピンに見合った機能の初期化をこの中で行ってくれています。
便利ですね。
この関数の中身は HAL と構造体を使って書かれています。
あまり重複した記事を書きたくないので HALやGPIOの初期化について知りたい方は こちら の記事を参考にしてみてください。
それでは、この続きは次回に。
次回は、いよいよ待望の Lチカ です^^
お疲れさまでした。
コメントを書く