Base_STM32F4_Discovery の説明 2013/09/05 STM32F4 Discovery 基板の CPU STM32F407VG の FlashMemory 0x08010000 番地に書き込んで実行させる ユーザープログラムのためのプロジェクトの雛形です 本プロジェクトを元にユーザープログラムを作成して USB 経由で CPU に書き込みます USB 経由で CPU にプログラムを書き込むためには Update_STM32F407VG を使用します 本プロジェクトは 無料の開発ツール Atollic TrueSTUDIO for ARM Lite 4.1.0 を使用しています 目次 1. 概念... 2 2. PC と STM32F4 Discovery 基板との接続... 2 3. プログラムの書き込み... 3 3.1. STM32F4 Discovery 基板をプログラム書き込み状態にする... 3 3.2. Base_STM32F4_Discovery プログラムの書き込み... 3 4. プロジェクト Base_STM32F4_Discovery の構成... 7 5. プログラムのデバッグ... 9 5.1. デバッグの開始... 9 5.2. プログラムの実行... 9 5.3. プログラムの一時停止... 10 5.4. ブレークポイントの設定... 11 5.5. デバッグの終了... 12 1
1. 概念 STM32F4 Discovery 基板は Mini USB を接続して デバッグやプログラムの書き込みができるようになっています 通常は CPU の 0x08000000 番地からプログラムを実行します では なぜわざわざこのプロジェクトの雛形を使用して CPU の 0x08010000 番地から実行するのでしょうか 対象としている 無料の開発ツール Atollic True STUDIO for ARM Lite 4.1.0 はプルグラムのコードサイズが 32Kbyte に制限されています 断片的に Peripheral( 周辺インターフェース ) を試すのには それでも十分かもしれません しかし グラフィック LCD に日本語文字を表示するため 日本語フォントを使用したいと思っても 12 x 12 font で約 250Kbyte 16 x 16 font なら約 340Kbyte の領域が必要なりますし また 大きなテーブルを使用してプログラムを実行したくても コードサイズ 32Kbyte の制限のため 実現できません そこで CPU の 0x08010000 番地にプログラムを書き込んで実行するための Update_STM32F407VG を作成しました この Update_STM32F407VG は 0x08080000 ~ 0x080BFFFF の 256Kbyte のエリアに日本語フォントなどのデータを書き込む機能も持っています ( 現在は このエリアに制限していますが もっと大きなエリアに変更可能です ) これにより だいぶ自由に実験が行えます 2. PC と STM32F4 Discovery 基板との接続 PC と STM32F4 Discovery 基板は USB ケーブルで以下のように接続します USB ケーブル : 電源供給およびデバッグのため Mini B PC A USB ポート A STM32F4 Discovery Micro B 図 2. USB ケーブル : プログラム書き込みのため 2
3. プログラムの書き込み Base_STM32F4_Discovery をビルドした結果のファイル Base_STM32F4_Discovery.elf を STM32F4 Discovery 基板の CPU に書き込むには 飛石伝ひアプリケーション を使用します また STM32F4 Discovery 基板の CPU には Update_STM32F407VG.elf が書き込まれている必要があります Update_STM32F407VG については STM32F4 Discovery 基板用ファームウェアアップデートプログラムソースの説明 をご覧ください 3.1. STM32F4 Discovery 基板をプログラム書き込み状態にする 基板の電源が ON の状態で User スイッチと Reset スイッチを同時に押して Reset スイッチを先に話します 基板上の LED LD4( 緑 ) が 200mSec 間隔で点滅していれば CPU の FlashMemory への書き込み状態です 3.2. Base_STM32F4_Discovery プログラムの書き込み 飛石伝ひアプリケーション のメニュー { 基板 } -> { ファームウェア更新 } をクリックすると次のメッセージが表示されます 3
[ はい (Y)] ボタンをクリックすると次のファイル選択のダイアログが開きます ダウンロードしたフォルダの Work_Base_STM32F4_Discovery\Base_STM32F4_Discovery\Release\Base_STM32F4_Discovery.elf を選択して [ 開く (O)] ボタンをクリックすると次のメッセージが表示されます 4
[ はい (Y)] ボタンをクリックするとファームウェアの書き込みが開始されます 書き込みが終了すると このメッセージが表示されます CPU 基板の時計が初期化されました 日付 時刻を設定してください とありますが これは 飛石伝ひ CPU 基板 にファームウェア tri_s_stm32f405vg_vxxx を書き込んだ場合のものです [ Base_STM32F4_Discovery.elf を書き込んだ場合は 無視してください [OK] ボタンをクリックしてください 書き込みはこれで終了です 次ページのように 飛石伝ひアプリケーション の画面にメッセージが表示されています 5
[ Base_STM32F4_Discovery.elf を書き込んだ場合はプログラムが小さいので Access Count は 15 ぐらいです STM32F4 Discovery 基板上の LED LD5( 緑が ) 1 秒点灯 2 秒消灯を繰り返しているはずです プログラム [ Base_STM32F4_Discovery.elf がタイマ割り込みを使用して LED 点滅を行っています 6
4. プロジェクト Base_STM32F4_Discovery の構成プロジェクト Base_STM32F4_Discovery を開いて project Explorer の各フォルダを開いた状態を以下に示します Project Explorer を拡大したものを以下に示します また ユーザーが記述するためのファイルの簡単な説明を記します Handles のフォルダに Peripheral 設定のためのファイルを追加してください HandleTimer2 : タイマ割り込みのための Timer2 の初期化 UserPrograms : ユーザーのプログラムを作成するフォルダ main.c : main() モジュールがある stm32f4xx_it : 割り込み処理を記述するファイル Handles と UserPrograms は独自に追加したフォルダです それ以外はプロジェクト作成時に自動的に構築されます 7
以下に ユーザーが処理を追加する主なフォルダの簡単な説明を記します 1) src 自動で作成されるフォルダです a) main.c main() のモジュールがあります プログラムはこの main() から開始されます b) stm32f4xx_it.h 割り込み処理のヘッダファイルです c) stm32f4xx_it.c 割り込み処理を記述するソースファイルです 2) Libraries 自動で作成されるフォルダです CPU STM32F407VG が持つ 周辺インターフェースの設定および入出力のモジュール群です 3) Handles 独自に追加したフォルダです 各周辺インターフェースの初期化および周辺インターフェースをアクセスするための処理を記述します このプロジェクト Base_STM32F4_Discovery では タイマ割り込みのための Timer2 のモジュールのみを記述してあります ファイルを追加して ユーザー用のモジュールを追加してください 4) UserPrograms 独自に追加したフォルダです ユーザーが作成するプログラムを記述します このプロジェクト Base_STM32F4_Discovery では ステータス LED の点滅処理を記述してあります ファイルを追加して ユーザー用のモジュールを追加してください 8
5. プログラムのデバッグ 5.1. デバッグの開始 左側の虫のアイコンをクリックするか または メニューの {Run} -> {Debug} をクリックします Debug が起動して プログラムコードのロードが終了すると次のような画面になります 5.2. プログラムの実行 三角のアイコンをクリックするか メニューの {Run} -> {Resume} をクリックするとプログラムを実行します 9
5.3. プログラムの一時停止実行中は以下の画面になります Suspend のアイコンをクリックするか メニューの {Run} -> {Suspend} をクリックすると一時停止します この例では while(1) の永久ループのところで一時停止しました 10
5.4. ブレークポイントの設定 ブレークポイントを設定したい行をクリックしてその行でカーソルが点滅している状態でメニューの {Run} -> {Toggle Breakpoint} をクリックします 指定した行番号の左横にブレークポイントのマークが表示されます もう一度 メニューの {Run} -> {Toggle Breakpoint} をクリックするとブレークポイントがはずれます 11
ブレークポイントでプログラムが停止した状態は次の画面のようになります ブレークポイントを指定した行でプログラムが一時停止しています 5.5. デバッグの終了 赤い四角のアイコンをクリックするか または メニューの {Run} -> {Terminate} をクリックするとデバッグが終了して 次ページのようにエディットの画面に戻ります 12
13