- ST-LINK V2
- STM32CubeMX
- 必要な材料
- 回路図と接続
- KeiluVisionとST-Linkを使用してプログラムを作成してSTM32に書き込む
- KeilプログラムSTM32ボードの出力
- プログラム
ARM Cortex Mアーキテクチャを使用するSTM32マイクロコントローラは現在人気が高まっており、その機能、コスト、およびパフォーマンスのために多くのアプリケーションで使用されています。以前のチュートリアルでは、ArduinoIDEを使用してSTM32F103C8をプログラムしました。 Arduino IDEを使用したSTM32のプログラミングは簡単です。さまざまなセンサーが任意のタスクを実行するために利用できるライブラリがたくさんあるため、プログラムにそれらのライブラリを追加するだけです。これは簡単な手順であり、ARMプロセッサについて深く学ぶことはできないかもしれません。そのため、ARMプログラミングと呼ばれる次のレベルのプログラミングに取り掛かっています。これにより、コードの構造を改善できるだけでなく、不要なライブラリを使用しないことでメモリスペースを節約することもできます。
STMicroelectronics は、周辺機器と選択されたSTM32ボードに従って基本コードを生成するSTM32CubeMXと呼ばれるツールを導入しました。したがって、基本的なドライバーや周辺機器のコーディングについて心配する必要はありません。さらに、この生成されたコードは、必要に応じて編集するためにKeiluVisionで使用できます。そして最後に、STMicroelectronicsのST-Linkプログラマーを使用してコードをSTM32に焼き付けます。
このチュートリアルでは、プッシュボタンとLEDをSTM32F103C8ブルーピルボードに接続するという簡単なプロジェクトを実行することにより、KeiluVisionとSTM32CubeMXを使用してSTM32F103C8をプログラムする方法を学習します。STM32Cube MXを使用してコードを生成し、KeiluVisionを使用してコードを編集してSTM32F103C8にアップロードします。詳細に入る前に、まずST-LINKプログラマーとSTM32CubeMXソフトウェアツールについて学びます。
ST-LINK V2
ST-LINK / V2は、インサーキットデバッガとプログラマであるSTM8およびSTM32マイクロコントローラファミリ用。このST-LINKを使用して、STM32F103C8およびその他のSTM8およびSTM32マイクロコントローラーにコードをアップロードできます。シングルワイヤインターフェイスモジュール(SWIM)およびJTAG /シリアルワイヤデバッグ(SWD)インターフェイスは、アプリケーションボードにあるSTM8またはSTM32マイクロコントローラと通信するために使用されます。 STM32アプリケーションはUSBフルスピードインターフェイスを使用してAtollic、IAR、Keil、またはTASKING統合開発環境と通信するため、このハードウェアを使用してSTM8およびSTM32マイクロコントローラーをプログラムできます。
上の画像は、STMicroelectronicsのST-LINK V2ドングルの画像で、STM32 SWDデバッグインターフェイスの全範囲、シンプルな4線式インターフェイス(電源を含む)を高速かつ安定してサポートしています。さまざまな色でご利用いただけます。本体はアルミ合金製です。 ST-LINKの動作状態を観察するために使用されるため、青色のLED表示があります。上の画像でわかるように、ピン名はシェルにはっきりとマークされています。プログラムをSTM32マイクロコントローラーにフラッシュできるKeilソフトウェアとインターフェースすることができます。したがって、このチュートリアルで、このST-LINKプログラマーを使用してSTM32マイクロコントローラーをプログラムする方法を見てみましょう。下の画像は、ST-LINKV2モジュールのピンを示しています。
注:ST-Linkを初めてコンピュータに接続する場合。デバイスドライバをインストールする必要があります。デバイスドライバは、オペレーティングシステムに応じてこのリンクにあります。
STM32CubeMX
STM32CubeMXツールはSTMicroelectronicsSTMCubeの一部です。このソフトウェアツールは、開発の労力、時間、およびコストを削減することにより、開発を容易にします。STM32Cubeには、グラフィカルウィザードを使用してC初期化コードを生成できるグラフィカルソフトウェア構成ツールであるSTM32CubeMXが含まれています。このコードは、keil uVision、GCC、IARなどのさまざまな開発環境で使用できます。このツールは次のリンクからダウンロードできます。
STM32CubeMXには次の機能があります
- ピンアウト-競合ソルバー
- 時計ツリー設定ヘルパー
- 消費電力計算機
- GPIOピン、USARTなどのMCU周辺機器構成を実行するユーティリティ
- USB、TCP / IPなどのミドルウェアスタックのMCU周辺機器構成を実行するユーティリティ
必要な材料
ハードウェア
- STM32F103C8ブルーピルボード
- ST-LINK V2
- ボタンを押す
- 導いた
- ブレッドボード
- ジャンパー線
ソフトウェア
- STM32CubeMXコード生成ツール(リンク)
- Keil uVision 5(リンク)
- ST-Link V2用ドライバー(リンク)
回路図と接続
以下は、押しボタンを使用してLEDをSTM32ボードに簡単に接続するための回路図です。
ST-LINKV2とSTM32F103C8間の接続
ここで、STM32 Blue Pillボードは、コンピューターのUSBポートに接続されているST-LINKから電力を供給されます。したがって、STM32に個別に電力を供給する必要はありません。下の表は、ST-LinkとBlueピルボードの接続を示しています。
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3.3V |
LED&プッシュボタン
LEDは、押しボタンが押されたときのブルーピルボードからの出力を示すために使用されます。LEDのアノードはブルーピルボードのピンPC13に接続され、カソードは接地されています。
プッシュボタンはブルーピルボードのピンPA1に入力を提供するように接続されています。また、ボタンを離したときにピンが入力なしでフロートする可能性があるため、値10kのプルアップ抵抗を使用する必要があります。押しボタンの一端はグランドに接続され、他端はピンPA1に接続され、10kのプルアップ抵抗も3.3Vのブルーピルボードに接続されています。
KeiluVisionとST-Linkを使用してプログラムを作成してSTM32に書き込む
ステップ1:-最初にST-LINK V2のすべてのデバイスドライバー、ソフトウェアツールSTM32CubeMXおよびKeiluVisionをインストールし、STM32F103C8に必要なパッケージをインストールします。
ステップ2:-2番目のステップはオープン>> STM32Cube MX
ステップ3:-次に、[ 新しいプロジェクト]を クリックします
ステップ4:-その後、マイクロコントローラーSTM32F103C8を検索して選択します
ステップ5: -今STM32F103C8のピンアウトスケッチは、ここで我々はピン構成を設定することができ、表示されます。プロジェクトに応じて、周辺機器セクションでピンを選択することもできます。
ステップ6:-ピンを直接クリックしてリストを表示することもできます。次に、必要なピン構成を選択します。
ステップ7:-私たちのプロジェクトでは、PA1をGPIO入力として、PC13をGPIO出力として、SYSデバッグをシリアルワイヤとして選択しました。ここでは、ST-LINKSWCLKピンとSWDIOピンのみを接続します。選択および構成されたピンは緑色で表示されます。下の画像でそれを注意することができます。
ステップ8:-次に、 [ 構成]タブで、 [GPIO ]を選択して、選択したピンのGPIOピン構成を設定します。
ステップ9:-次に、このピン構成ボックスで、使用しているピンの ユーザーラベル 、つまりユーザー定義のピン名を構成 できます。
ステップ10:-その後、[ プロジェクト ] >> [ コードの生成 ]をクリックします。
ステップ11:-プロジェクト設定ダイアログボックスが表示されます。このボックスで、プロジェクト名と場所を選択し、開発環境を選択します。Keilを使用しているため、IDEとしてMDK-ARMv5を選択します。
ステップ12:-次に、[コードジェネレーター]タブで、[必要なライブラリファイルのみ を コピーする]を選択し、[OK]をクリックします。
手順13:-コード生成ダイアログボックスが表示されます。 プロジェクト を開くを選択して、Keiluvsionで生成されたコードをプロジェクトを自動的に開きます。
ステップ14:-これで、Keil uVisionツールが開き、STM32CubeMxで生成されたコードが、選択したピン用に構成された必要なライブラリとコードを含む同じプロジェクト名で開きます。
ステップ15:-ボタンが押されてGPIO入力(ピンPA1)で離されたときに、出力LED(ピンPC13)で何らかのアクションを実行するロジックを含める必要があります。したがって、main.cプログラムを選択して、いくつかのコードを含めます。
ステップ16: -while (1) ループにコードを追加します 。コードを継続的に実行するために、そのセクションを強調表示した次の画像を参照してください。
while(1){if(HAL_GPIO_ReadPin(BUTN_GPIO_Port、BUTN_Pin)== 0)// =>検出ボタンが押された{HAL_GPIO_WritePin(LEDOUT_GPIO_Port、LEDOUT_Pin、1); //ボタンが押されたときに出力をハイにする} else {HAL_GPIO_WritePin(LEDOUT_GPIO_Port、LEDOUT_Pin、0); //ボタンを押したときに出力をLowにするには}}
ステップ17:-コードの編集が終了したら、[デバッグ]タブの下にある[ターゲット の オプション ]アイコンをクリックして、[ST-LINKデバッガー]を選択します。
また、[ 設定] ボタンをクリックし、[ Flashのダウンロード ]タブで[ リセットして実行 ]チェックボックスをオンにして、[OK]をクリックします。
ステップ18:-次に、[再構築]アイコンをクリックして、すべてのターゲットファイルを再構築します。
ステップ19:-これで、回路接続の準備ができた状態でST-LINKをコンピューターに接続し、ダウンロードアイコンをクリックするか、F8キーを押して、生成および編集したコードでSTM32F103C8をフラッシュできます。
ステップ20: -keiluVisionウィンドウの下部に点滅する表示があります。
KeilプログラムSTM32ボードの出力
これで、押しボタンを押すとLEDがオンになり、離すとLEDがオフになります。
プログラム
生成されたプログラムに追加した主要部分を以下に示します。以下のコードは、STM32CubeMXによって生成された main.c プログラムの while(1 )に含める必要があります。手順15から手順17に戻って、 main.c プログラムに追加する方法を学ぶことができます。
while(1){if(HAL_GPIO_ReadPin(BUTN_GPIO_Port、BUTN_Pin)== 0)// =>検出ボタンが押された{HAL_GPIO_WritePin(LEDOUT_GPIO_Port、LEDOUT_Pin、1); //ボタンが押されたときに出力をハイにする} else {HAL_GPIO_WritePin(LEDOUT_GPIO_Port、LEDOUT_Pin、0); //ボタンを押したときに出力をLowにするには}}
プロジェクトを作成してSTM32ボードにアップロードする完全なプロセスについては、最後にあるビデオでも説明されています。また、main.cファイルの完全なコードは、上記のコードを含めて以下に示されています。
さらに、STM32プロジェクトの完全なセットはここにあります。