STM32 M7 ソフトウェア開発入門 September 2015 IAR Systems K.K FAE Team.
本ドキュメントについて 目的 ARM 用統合開発環境である ARM 用 IAR Embedded Workbench(EWARM) と ST マイクロエレクトニクス社 (ST 社 ) 提供のサンプルプロジェクト および設計支援ツールを使用して ST 社評価ボード用のソフトウェアを実際にビルド デバッグする手順を紹介します 内容 STM32 M7 評価ボードラインナップ STM32CubeFx 同梱サンプルプロジェクトのビルド サンプルプロジェクトを実ボードでデバッグ実行 EWARMのデバッグ機能一部紹介 STM32CubeMXのプロジェクト設定方法 STM32CubeMX 生成プロジェクトをEWARMで実装してデバッグ 本ドキュメントは 2015 年 9 月現在の IAR システムズ Web サイト および EWARM バージョン 7.40.3 を基に作成しています 2
IAR SYSTEMS A LEADING GLOBAL VENDOR 168 Employees with HQ in Uppsala, Sweden Listed in Stockholm/Nasdaq R&D investment 32% of revenue 32 years in the industry 24 hour technical support in 13 languages Uppsala Munich Sao Paulo Tokyo Seoul Shanghai London Paris San Francisco Dallas Boston Los Angeles +Distributor representation in 43 countries Stability and growth Licenses # (000 s) 20 15 10 5 2010-2013 Operating Margin % 20 15 10 5 0 2010 2011 2012 2013 License # Operating Margin 0
STM32 M7 評価ボードラインナップ
STM32F7(M7) STM32F7DISCOVERY (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 F7 シリーズ用ボードプロジェクト 5
STM32CubeF7 同梱サンプルプロジェクトのビルド
EWARM を起動 スタートメニューから起動 すべてのプログラム > IAR Systems > IAR Embedded Workbench for ARM 7.xx.x > IAR Embedded Workbench 7
STM32CubeF7 のサンプルを起動 TIM_TimeBase プロジェクトを開く [ ファイル ] > [ 開く ] > [ ワークスペース ] STM32Cube_FW_F7_V1.1.0 Projects STM32746G-Discovery Examples TIM TIM_TimeBase EWARM Project.eww を選択して [ 開く ] 8
STM32CubeF7 のサンプルをビルド ソースコードを表示 Example > User > main.c をダブルクリック 9
STM32CubeF7 のサンプルをビルド 行番号を表示する ツール > オプション エディタ > [ 行番号の表示 ] にチェック 行番号が表示される 10
STM32CubeF7 のサンプルをビルド メイクを実行する エラーが 0 なら成功 ツール > オプションメッセージ > ビルドメッセージの表示 > [ 全て ] に変更することで詳細ビルド情報を表示 11
サンプルプロジェクトを 実ボードでデバッグ実行
ST-LINKの接続 ST-LINKとPCの接続 デバイスドライバインストール USBミニケーブル メインMCU デバッグ用 オンボードST-LINK http://www.st.com/st-web-ui/static/active/en/resource/technical/document/data_brief/dm00179227.pdf 2015年8月29日 ST社Webサイトより抜粋 初回のみデバイスドライバのインストールが実行 13
STM32CubeF7 のサンプルをデバッグ デバッグモードに移動 実行ファイルのフラッシュ書き込み デバッグセッション初期化 デバッグモード開始 14
STM32CubeF7 のサンプルをデバッグ 実行の制御 デバッグの終了 リセット 実行 ステップアウトステップイン ステップオーバブレーク カーソルまで実行 次のステートメント 15
STM32CubeF7のサンプルをデバッグ 実機でデバッグ実行 LEDが1秒間隔で点滅 main.c Timer割込みハンドラ内にブレークポイント 行番号の左をシングルクリック もう一度クリックで解除 ステップイン実行で コードの動作を追う サンプル動作はボードにより異なる 16
EWARM のデバッグ機能一部紹介
EWARM の豊富なデバッグ表示 表示メニュー概要 各種ブレークポイント情報 逆アセンブリ画面 メモリ表示 CPU レジスタ 周辺レジスタ表示 変数ウォッチ 静的変数リアルタイムウォッチ Printf 出力表示 18
EWARM のデバッグ機能 : レジスタ GPIO 変化をレジスタウィンドウで見てみる 表示 > レジスタ 現在の CPU レジスタ > GPIOD LED 変更コードを通るとレジスタの変化箇所が赤く変わる 19
EWARM のデバッグ機能 : ターミナル I/O ソースコードを編集し EWARM 内で printf を表示する #include stdio.h を追記 [ メイク ] [ ダウンロードしてデバッグ ] printf( Hello!World n ); を追記 表示 > ターミナル I/O printf の実行結果がターミナル I/O に表示される 20
EWARM のデバッグ機能 : ライブウォッチ ソースコードを編集し 定期的にカウントアップされる静的変数を表示 割込み関数に [static int count = 0;] を追記 [count++;] を追記 [ メイク ] [ ダウンロードしてデバッグ ] 表示 > ライブウォッチ [ 式 ] をクリックし count を登録 CPU を停めずに変数の値を取得 静的変数のみ登録可能 21
STM32CubeMX の プロジェクト設定方法
STM32CubeMX を起動 スタートメニューから起動 すべてのプログラム > STMicroelectronics> STM32Cube > STM32CubeMX [New Project] を選択 23
STM32CubeMX でプロジェクト設定 デバイスをベースとするか 評価ボードをベースとするか選択 タブクリックで切り替える 評価ボードをベースとすると基本的なピン配置は設定済みで開始できる 24
STM32CubeMX でプロジェクト設定 DISCOVERY ボードをベースとする Discovery STM32F7 STM32F746G-DISCO 25
STM32CubeMXでプロジェクト設定 ピン配置および周辺機能の使用を選択 D14を右クリックして Enter User Labelを選択 LED1を入力 D14を左クリックして GPIO_Outputを選択 26
STM32CubeMXでプロジェクト設定 ピン配置および周辺機能の使用を選択 TIM3のClock Sourceを [Disable]から[Internal Clock]に変更 27
STM32CubeMX でプロジェクト設定 Clock Configuration で各ブロックへの供給クロックを設定 PLL168 MHz から HSI 16MHz に変更する クロック源 システムクロック選択 PLLCLK > HSI に変更 CPU メインクロック 28
STM32CubeMX でプロジェクト設定 各周辺機能の設定 Configuration タブからボタンクリックで設定 点滅用 TIM3 を設定 ボタン LED 用 GPIO 設定 29
STM32CubeMX でプロジェクト設定 TIM3 モジュールの設定 プリスケーラ 16000 リロードカウント 1000 TIM3global interrupt [Enabled] にチェック 16,000 サイクルごとに 1 カウントアップし 1,000 カウントごとに割り込みが発生 16,000 1,000 = 16M => 1 秒に 1 回割り込み 30
STM32CubeMX でプロジェクト設定 GPIO 設定 評価ボード選択で 基本機能箇所は設定済み GPIOI の Pin1 は LED1 に設定済み 31
STM32CubeMX でプロジェクト設定 コード生成オプションの設定 Project > Settings プロジェクトファイル名 LED_Blink ドライバ用の STM32CubeF7 を Web からダウンロード プロジェクト保存場所 C: STM32_workspace STM32F746G- DISCO 数分から十数分かかる 32
STM32CubeMX 生成プロジェクトを EWARM で実装してデバッグ
STM32CubeMX でプロジェクト生成 ソースコードと EWARM 用プロジェクトファイルを出力 LED_Blink 以下にプロジェクトファイルとドライバなどが生成される Project.eww をダブルクリック 34
STM32CubeMX でプロジェクト生成 初期化コードを含んだプロジェクトが生成される ユーザコードは /* USER CODE BEGIN x */ /* USER CODE END x */ の間に記述する HAL_xxx() は STM32CubeF7 の提供するドライバ 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 == htim3.instance) { HAL_GPIO_TogglePin(GPIOI,GPIO_PIN_1); } } を追加 有効化関数や データ入力関数は STM32CubeF7 の Example コードを参照する 36
プロジェクトの実行 メイク後 ダウンロードしてデバッグ デバッグの終了 リセット 実行 ステップアウトステップイン ステップオーバブレーク カーソルまで実行 次のステートメント 37
プロジェクトのデバッグ ブレークポイントを設置し コードの流れを解析追加した割り込みハンドラ内にブレークポイントを設定 表示 > コールスタック 現在のコードが どの関数から呼ばれているか確認可能 38
STM32CubeMXで設定変更 クロック設定を変更し プロジェクト再生成 EWARMのデバッグを中止 コード生成 CPUクロック 216MHz System Clock Mux をPLLCLKに変更 39
EWARM でプロジェクト再読み込み プロジェクトを読み込んで 再ビルドソースコードの変更が通知されるので [ すべてはい ] を選択 クロック設定コードが変更されている システムクロックが 16M から 168M になったので 1 秒から 100m 秒弱に LED トグルに変更 40
まとめ
まとめ (1/2) STM32Cube Fx 同梱のサンプルプロジェクトを使うことで 豊富な周辺機能を実機で すぐに試すことができる EWARM のデバッグ機能を使うことで 変数やメモリ レジスタなどの値を確認し 状態把握や問題の特定を効率よく行うことができる 42
まとめ (2/2) STM32CubeMX を使用することで 初期化設定をグラフィカルに行うことができる 生成された EWARM 用プロジェクトで すぐにビルドしデバッグを試すことができる STM32CubeMX のルールに従ってユーザコードを記述することで 何度でも初期化設定をやり直すことができる 43
本資料について
本資料取り扱い上の注意 本資料は 2015 年 9 月 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 マイクロエレクトロニクスの登録商標です その他 本資料中の製品名やサービス名は全てそれぞれの所有者に属する商標または登録商標です 46