stm32 m3&m4 ソフトウェア開発⼊⾨ m3/m4 評価ボードラインナップ...
TRANSCRIPT
April 2015IAR Systems K.KFAE Team.
STM32 M3&M4ソフトウェア開発⼊⾨
本ドキュメントについて
2
⽬的 ARM⽤統合開発環境であるARM⽤IAR Embedded Workbench(EWARM)
とSTマイクロエレクトニクス社(ST社)提供のサンプルプロジェクト、および設計⽀援ツールを使⽤して、ST社評価ボード⽤のソフトウェアを実際にビルド・デバッグする⼿順を紹介します。
内容 STM32 M3/M4評価ボードラインナップ STM32CubeLx/Fx同梱サンプルプロジェクトのビルド サンプルプロジェクトを実ボードでデバッグ実⾏ EWARMのデバッグ機能⼀部紹介 STM32CubeMXのプロジェクト設定⽅法 STM32CubeMX⽣成プロジェクトをEWARMで実装してデバッグ
※本ドキュメントは、2015年4⽉現在のIARシステムズWebサイト、およびEWARMバージョン7.40.2を基に作成しています。
168 Employees with HQ in Uppsala, Sweden
Listed in Stockholm/Nasdaq
R&D investment 32% of revenue
32 years in the industry
UppsalaMunichSao PauloTokyoSeoulShanghai
LondonParisSan FranciscoDallasBostonLos Angeles
+Distributor representation in
43 countries
24 hour technical support in
13 languages
0
5
10
15
20
0
5
10
15
20
2010 2011 2012 2013License # Operating Margin
Licenses# (000’s)
Operating Margin %
2010 - 2013
Stability and growth
IAR SYSTEMS— A LEADING GLOBAL VENDOR
STM32 M3/M4評価ボードラインナップ
STM32F4DISCOVERY F4 STM32F407VGT6 M4 100 168 1024 192STM32F3DISCOVERY F3 STM32F303VCT6 M4 100 72 256 48NUCLEO-F401RE F4 STM32F401RET6 M4 64 85 512 96NUCLEO-F302R8 F3 STM32F334R8T6 M4 64 72 64 16NUCLEO-F302R8 F3 STM32F302R8T6 M4 64 72 64 16STM32VLDISCOVERY F1 STM32F100RB M3 64 24 128 832L152CDISCOVERY L1 STM32L152RCT6 M3 64 32 256 32NUCLEO-F103RB F1 STM32F103RBT6 M3 64 72 128 20NUCLEO-L152RE L1 STM32L152RET6 M3 64 72 512 80
STM32F1(M3)/L1(M3)/F3(M4)/F4(M4)
5
STM32F4DISCOVERY (F4)を例に記載他のボードはシリーズを置き換えて読むことで対応可能
F3シリーズ⽤ボードプロジェクト
STM32CubeLx/Fx同梱サンプルプロジェクトのビルド
EWARMを起動
7
スタートメニューから起動
すべてのプログラム > IAR Systems > IAR Embedded Workbench for ARM 7.xx.x >IAR Embedded Workbench
STM32CubeF4のサンプルを起動
8
GPIO_EXTIプロジェクトを開く
Project.ewwを選択して、[開く]
[ファイル] > [開く] > [ワークスペース]
STM32Cube_FW_F4_V1.5.0¥Projects¥STM32F4-Discovery¥Examples¥GPIO¥GPIO_EXTI¥EWARM
STM32CubeF4のサンプルをビルド
9
ソースコードを表⽰Example > User > main.c をダブルクリック
STM32CubeF4のサンプルをビルド
10
⾏番号を表⽰するツール>オプション エディタ > [⾏番号の表⽰]にチェック
⾏番号が表⽰される
STM32CubeF4のサンプルをビルド
11
メイクを実⾏する
エラーが0なら成功
ツール > オプション メッセージ > ビルドメッセージの表⽰ > [全て]に変更することで詳細ビルド情報を表⽰
サンプルプロジェクトを実ボードでデバッグ実⾏
ST-LINKの接続
13
ST-LINKとPCの接続 > デバイスドライバインストール
デバッグ⽤オンボードST-LINK
メインMCU
初回のみデバイスドライバのインストールが実⾏
USBミニケーブル
http://www.st.com/web/jp/catalog/tools/PF254044 2015年4⽉1⽇ ST社Webサイトより抜粋
STM32CubeF4のサンプルをデバッグ
14
デバッグモードに移動実⾏ファイルのフラッシュ書き込み、デバッグセッション初期化
デバッグモード開始
STM32CubeF4のサンプルをデバッグ
15
実⾏の制御
実⾏
ステップアウトステップイン
ステップオーバブレーク
リセット
次のステートメントカーソルまで実⾏
デバッグの終了
STM32CubeF4のサンプルをデバッグ
16
実機でデバッグ実⾏
ユーザボタンを押すと4つのLEDが同時にトグル
main.c GPIO割り込みハンドラ内にブレークポイント
⾏番号の左をシングルクリック※もう⼀度クリックで解除
ステップ実⾏で、コードの動作を追う
※サンプル動作はボードにより異なる
EWARMのデバッグ機能⼀部紹介
EWARMの豊富なデバッグ表⽰
18
表⽰メニュー概要
各種ブレークポイント情報
逆アセンブリ画⾯
メモリ表⽰
CPUレジスタ、周辺レジスタ表⽰
変数ウォッチ
Printf出⼒表⽰
静的変数リアルタイムウォッチ
EWARMのデバッグ機能:レジスタ
19
GPIO変化をレジスタウィンドウで⾒てみる表⽰ > レジスタ 現在のCPUレジスタ > GPIOD
LED変更コードを通るとレジスタの変化箇所が⾚く変わる
EWARMのデバッグ機能:ターミナルI/O
20
ソースコードを編集し、EWARM内でprintfを表⽰する#include “stdio.h”を追記
printf(“Hello!World¥n”);を追記
[メイク] [ダウンロードしてデバッグ]
表⽰ > ターミナルI/O printfの実⾏結果がターミナルI/Oに表⽰される
EWARMのデバッグ機能:ライブウォッチ
21
ソースコードを編集し、定期的にカウントアップされる静的変数を表⽰割込み関数に[static int count = 0;]を追記[count++;]を追記 [メイク] [ダウンロードしてデバッグ]
表⽰ > ライブウォッチ [式]をクリックしcountを登録 CPUを停めずに変数の値を取得
※静的変数のみ登録可能
STM32CubeMXのプロジェクト設定⽅法
STM32CubeMXを起動
23
スタートメニューから起動
すべてのプログラム > STMicroelectronics> STM32Cube > STM32CubeMX
[New Project]を選択
STM32CubeMXでプロジェクト設定
24
デバイスをベースとするか、評価ボードをベースとするか選択
タブクリックで切り替える
評価ボードをベースとすると基本的なピン配置は設定済みで開始できる
STM32CubeMXでプロジェクト設定
25
DISCOVERYボードをベースとする
Discovery
STM32F4
STM32F4DISCOVERY
STM32CubeMXでプロジェクト設定
26
ピン配置および周辺機能の使⽤を選択
LED(LD3)は設定済み
TIM2のClock Sourceを[Disable]から[Internal Clock]に変更
STM32CubeMXでプロジェクト設定
27
Clock Configurationで各ブロックへの供給クロックを設定PLL168 MHz からHSI 16MHzに変更する
クロック源
システムクロック選択※PLLCLK > HSIに変更
CPUメインクロック
STM32CubeMXでプロジェクト設定
28
各周辺機能の設定Configurationタブからボタンクリックで設定
点滅⽤TIM2を設定ボタン、LED⽤GPIO設定
STM32CubeMXでプロジェクト設定
29
TIM2モジュールの設定
プリスケーラ16000
リロードカウント1000
TIM2global interrupt[Enabled]にチェック
16,000サイクルごとに1カウントアップし、1,000カウントごとに割り込みが発⽣。※16,000×1,000 = 16M => 1秒に1回割り込み
STM32CubeMXでプロジェクト設定
30
GPIO設定評価ボード選択で、必要箇所は設定済み
LED3はGPIODの13Pin
STM32CubeMXでプロジェクト設定
31
コード⽣成オプションの設定
ドライバ⽤のSTM32CubeF4をWebからダウンロード
Project > Settings
プロジェクトファイル名※LED_Blink
プロジェクト保存場所プロジェクト保存場所※C:¥STM32_workspace¥STM32F4DISCOVERY
数分から⼗数分かかる
STM32CubeMX⽣成プロジェクトをEWARMで実装してデバッグ
STM32CubeMXでプロジェクト⽣成
33
ソースコードとEWARM⽤プロジェクトファイルを出⼒
LED_Blink以下にプロジェクトファイルとドライバなどが⽣成される
Project.ewwをダブルクリック
STM32CubeMXでプロジェクト⽣成
34
初期化コードを含んだプロジェクトが⽣成される
ユーザコードは/* USER CODE BEGIN x *//* USER CODE END x */
の間に記述する
HAL_xxx()はSTM32CubeL0の提供するドライバAPI関数
MX_xxx()はSTM32CubeMXが⽣成した初期化関数
アプリケーションコードを記述
35
タイマー開始関数と、タイマー割り込みでLEDトグル関数を追加
main関数内、初期化処理とwhileループの間にHAL_TIM_Base_Start_IT(&htim2);
を追加
main関数終了後にvoid HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
if(htim ->Instance == htim2.Instance){
HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_13);}
}を追加
※有効化関数や、データ⼊⼒関数はSTM32CubeF4のExampleコードを参照する
プロジェクトの実⾏
36
メイク後、ダウンロードしてデバッグ
実⾏
ステップアウトステップイン
ステップオーバブレーク
リセット
次のステートメントカーソルまで実⾏
デバッグの終了
プロジェクトのデバッグ
37
ブレークポイントを設置し、コードの流れを解析追加した割り込みハンドラ内にブレークポイントを設定
表⽰>コールスタック
現在のコードが、どの関数から呼ばれているか確認可能
STM32CubeMXで設定変更
38
クロック設定を変更し、プロジェクト再⽣成
EWARMのデバッグを中⽌
System Clock MuxSystem Clock MuxをPLLCLKに変更
CPUクロック168MHz
コード⽣成
EWARMでプロジェクト再読み込み
39
プロジェクトを読み込んで、再ビルドソースコードの変更が通知されるので、[すべてはい]を選択
クロック設定コードが変更されている
システムクロックが16Mから168Mになったので1秒から100m秒弱にLEDトグルに変更
まとめ
まとめ (1/2)
41
STM32Cube Lx/Fx同梱のサンプルプロジェクトを使うことで、豊富な周辺機能を実機で、すぐに試すことができる。
EWARMのデバッグ機能を使うことで、変数やメモリ、レジスタなどの値を確認し、状態把握や問題の特定を効率よく⾏うことができる。
まとめ (2/2)
42
STM32CubeMXを使⽤することで、初期化設定をグラフィカルに⾏うことができる。
⽣成されたEWARM⽤プロジェクトで、すぐにビルドしデバッグを試すことができる。
STM32CubeMXのルールに従ってユーザコードを記述することで、何度でも初期化設定をやり直すことができる。
本資料について
本資料取り扱い上の注意
44
本資料は2015年4⽉1⽇時点の情報を基に作成されており、将来変更の可能性のあるものです。あわせてご紹介する設定や機能に関連して、動作保証をお約束するものではございませんので、ご了承ください
本資料で提供している情報は、ご利⽤されている⽅のご判断・責任においてご使⽤ください。提供した情報に関連して、ご利⽤される⽅が不利益等を被る事態が⽣じたとしても、弊社及び執筆者は⼀切の責任を負いかねますので、ご了承ください。
本資料の内容に関する弊社または各社へのお問合せはご遠慮ください。
本資料及びデータの再配布・無断転⽤・転載等はご遠慮ください。
商標について
45
• IAR Systems, IAR Embedded Workbench, C-SPY, C-RUN, C-STAT, visualSTATE, Focus on Your Code, IAR KickStart Kit, I-jet, I-scope, IAR, および IAR Systems のロゴタイプはIAR Systems ABが所有する商標または登録商標です。
• ARMおよびCortexは、ARM Limited(またはその⼦会社)のEUまたはその他の国における登録商標です。CoreSightは、ARM Limited(またはその⼦会社)のEUまたはその他の国における商標です。 All rights reserved.
• STM32は、STマイクロエレクトロニクスの登録商標です。
• その他、本資料中の製品名やサービス名は全てそれぞれの所有者に属する商標または登録商標です。