stm32 m7 · 2015-10-30 · アプリケーションコードを記述 36...
TRANSCRIPT
September 2015
IAR Systems K.K
FAE Team.
STM32 M7
ソフトウェア開発入門
本ドキュメントについて
2
目的
ARM用統合開発環境であるARM用IAR Embedded Workbench(EWARM)とSTマイクロエレクトニクス社(ST社)提供のサンプルプロジェクト、および設計支援ツールを使用して、ST社評価ボード用のソフトウェアを実際にビルド・デバッグする手順を紹介します。
内容
STM32 M7評価ボードラインナップ
STM32CubeFx同梱サンプルプロジェクトのビルド
サンプルプロジェクトを実ボードでデバッグ実行
EWARMのデバッグ機能一部紹介
STM32CubeMXのプロジェクト設定方法
STM32CubeMX生成プロジェクトをEWARMで実装してデバッグ
※本ドキュメントは、2015年9月現在のIARシステムズWebサイト、およびEWARMバージョン7.40.3を基に作成しています。
168 Employees with HQ in Uppsala, Sweden
Listed in Stockholm/Nasdaq
R&D investment 32% of revenue
32 years in the industry
Uppsala
Munich
Sao Paulo
Tokyo
Seoul
Shanghai
London
Paris
San Francisco
Dallas
Boston
Los 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 M7
評価ボードラインナップ
STM32F7(M7)
5
STM32F7DISCOVERY (F7)を例に記載
他のボードはシリーズを置き換えて読むことで対応可能
F7シリーズ用 ボードプロジェクト
ST Part number Series MCU Core Package Max Clock(MHz) Flash(KB) RAM(KB)
STM32F7DISCOVERY F7 STM32F746NGH6 M7 BGA216 216 1024 340+4
STM32756G-EVAL2 F7 STM32F756NGH6 M7 BGA216 216 1024 340+4
STM32CubeF7
同梱サンプルプロジェクトのビルド
EWARMを起動
7
スタートメニューから起動
すべてのプログラム > IAR Systems > IAR Embedded Workbench for ARM 7.xx.x > IAR Embedded Workbench
STM32CubeF7のサンプルを起動
8
TIM_TimeBaseプロジェクトを開く
Project.ewwを選択して、[開く]
[ファイル] > [開く] > [ワークスペース]
STM32Cube_FW_F7_V1.1.0¥Projects¥STM32746G-Discovery¥Examples¥TIM¥TIM_TimeBase¥EWARM
STM32CubeF7のサンプルをビルド
9
ソースコードを表示
Example > User > main.c をダブルクリック
STM32CubeF7のサンプルをビルド
10
行番号を表示する
ツール>オプション エディタ > [行番号の表示]にチェック
行番号が表示される
STM32CubeF7のサンプルをビルド
11
メイクを実行する
エラーが0なら成功
ツール > オプション メッセージ > ビルドメッセージの表示 > [全て] に変更することで詳細ビルド情報を表示
サンプルプロジェクトを
実ボードでデバッグ実行
ST-LINKの接続
13
ST-LINKとPCの接続 > デバイスドライバインストール
デバッグ用 オンボードST-LINK
メインMCU
初回のみデバイスドライバのインストールが実行
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/data_brief/DM00179227.pdf 2015年8月29日 ST社Webサイトより抜粋
USBミニケーブル
STM32CubeF7のサンプルをデバッグ
14
デバッグモードに移動 実行ファイルのフラッシュ書き込み、デバッグセッション初期化
デバッグモード開始
STM32CubeF7のサンプルをデバッグ
15
実行の制御
実行
ステップアウト
ステップイン
ステップオーバ
ブレーク
リセット
次のステートメント
カーソルまで実行
デバッグの終了
STM32CubeF7のサンプルをデバッグ
16
実機でデバッグ実行
LEDが1秒間隔で点滅
main.c Timer割込みハンドラ内にブレークポイント
行番号の左をシングルクリック ※もう一度クリックで解除
ステップイン実行で、コードの動作を追う
※サンプル動作はボードにより異なる
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
STM32F7
STM32F746G-DISCO
STM32CubeMXでプロジェクト設定
26
ピン配置および周辺機能の使用を選択
D14を左クリックして GPIO_Outputを選択
D14を右クリックして Enter User Labelを選択
LED1を入力
STM32CubeMXでプロジェクト設定
27
ピン配置および周辺機能の使用を選択
TIM3のClock Sourceを [Disable]から[Internal Clock]に変更
STM32CubeMXでプロジェクト設定
28
Clock Configurationで各ブロックへの供給クロックを設定
PLL168 MHz からHSI 16MHzに変更する
クロック源
システムクロック選択 ※PLLCLK > HSIに変更
CPUメインクロック
STM32CubeMXでプロジェクト設定
29
各周辺機能の設定
Configurationタブからボタンクリックで設定
点滅用TIM3を設定
ボタン、LED用 GPIO設定
STM32CubeMXでプロジェクト設定
30
TIM3モジュールの設定
プリスケーラ 16000
リロードカウント 1000
TIM3global interrupt [Enabled]にチェック
16,000サイクルごとに1カウントアップし、1,000カウントごとに割り込みが発生。 ※16,000×1,000 = 16M => 1秒に1回割り込み
STM32CubeMXでプロジェクト設定
31
GPIO設定
評価ボード選択で、基本機能箇所は設定済み
GPIOIのPin1は LED1に設定済み
STM32CubeMXでプロジェクト設定
32
コード生成オプションの設定
ドライバ用のSTM32CubeF7を Webからダウンロード
Project > Settings
プロジェクトファイル名 ※LED_Blink
プロジェクト保存場所 ※C:¥STM32_workspace¥STM32F746G-DISCO
数分から十数分かかる
STM32CubeMX生成プロジェクトを
EWARMで実装してデバッグ
STM32CubeMXでプロジェクト生成
34
ソースコードとEWARM用プロジェクトファイルを出力
LED_Blink以下にプロジェクトファイルと ドライバなどが生成される
Project.ewwを ダブルクリック
STM32CubeMXでプロジェクト生成
35
初期化コードを含んだプロジェクトが生成される
ユーザコードは /* USER CODE BEGIN x */ /* USER CODE END x */ の間に記述する
HAL_xxx()はSTM32CubeF7の提供する ドライバAPI関数
MX_xxx()はSTM32CubeMXが生成した 初期化関数
アプリケーションコードを記述
36
タイマー開始関数と、タイマー割り込みでLEDトグル関数を追加
main関数内、初期化処理と whileループの間に HAL_TIM_Base_Start_IT(&htim2); を追加
main関数終了後に void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim ->Instance == htim3.Instance) { HAL_GPIO_TogglePin(GPIOI,GPIO_PIN_1); } } を追加
※有効化関数や、データ入力関数はSTM32CubeF7のExampleコードを参照する
プロジェクトの実行
37
メイク後、ダウンロードしてデバッグ
実行
ステップアウト
ステップイン
ステップオーバ
ブレーク
リセット
次のステートメント
カーソルまで実行
デバッグの終了
プロジェクトのデバッグ
38
ブレークポイントを設置し、コードの流れを解析 追加した割り込みハンドラ内にブレークポイントを設定
表示>コールスタック
現在のコードが、どの関数から呼ばれているか 確認可能
STM32CubeMXで設定変更
39
クロック設定を変更し、プロジェクト再生成
EWARMのデバッグを中止
System Clock MuxをPLLCLKに変更
CPUクロック 216MHz
コード生成
EWARMでプロジェクト再読み込み
40
プロジェクトを読み込んで、再ビルド ソースコードの変更が通知されるので、[すべてはい]を選択
クロック設定コードが変更されている
システムクロックが16Mから168Mになったので 1秒から100m秒弱にLEDトグルに変更
まとめ
まとめ (1/2)
42
STM32Cube Fx同梱のサンプルプロジェクトを使うことで、豊富な周辺機能を実機で、すぐに試すことができる。
EWARMのデバッグ機能を使うことで、変数やメモリ、レジスタなどの値を確認し、状態把握や問題の特定を効率よく行うことができる。
まとめ (2/2)
43
STM32CubeMXを使用することで、初期化設定をグラフィカルに行うことができる。
生成されたEWARM用プロジェクトで、すぐにビルドし デバッグを試すことができる。
STM32CubeMXのルールに従ってユーザコードを記述することで、何度でも初期化設定をやり直すことができる。
本資料について
本資料取り扱い上の注意
45
本資料は2015年9月1日時点の情報を基に作成されており、将来変更の可能性 のあるものです。あわせてご紹介する設定や機能に関連して、動作保証をお約束するものではございませんので、ご了承ください 本資料で提供している情報は、ご利用されている方のご判断・責任においてご使用ください。提供した情報に関連して、ご利用される方が不利益等を被る事態が生じたとしても、弊社及び執筆者は一切の責任を負いかねますので、ご了承ください。 本資料の内容に関する弊社または各社へのお問合せはご遠慮ください。 本資料及びデータの再配布・無断転用・転載等はご遠慮ください。
商標について
46
• 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マイクロエレクトロニクスの登録商標です。
• その他、本資料中の製品名やサービス名は全てそれぞれの所有者に属する商標または登録商標です。