STM32 M0&M0+ ソフトウェア開発 April 2015 IAR Systems K.K. FAE Team
本ドキュメントについて 的 ARM 統合開発環境である ARM IAR Embedded Workbench(EWARM) と ST マイクロエレクトニクス社 (ST 社 ) 提供のサンプルプロジェクト および設計 援ツールを使 して ST 社評価ボード のソフトウェアを実際にビルド デバッグする 順を紹介します 内容 STM32 M0/M0+ 評価ボードラインナップ STM32CubeLx/Fx 同梱サンプルプロジェクトのビルド サンプルプロジェクトを実ボードでデバッグ実 EWARMのデバッグ機能 部紹介 STM32CubeMXのプロジェクト設定 法 STM32CubeMX 成プロジェクトをEWARMで実装してデバッグ 本ドキュメントは 2015 年 4 現在の IAR システムズ Web サイト および EWARM バージョン 7.40.2 を基に作成しています 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 M0/M0+ 評価ボードラインナップ
STM32L0(M0+)/F0(M0) NUCLEO-L053R8(L0) を例に記載 他のボードは置き換えて 読むことで対応可能 STM32F0DISCOVERY F0 STM32F051R8T6 M0 64 48 64 8 NUCLEO-F072RB F0 STM32F072RBT6 M0 64 48 128 16 NUCLEO-F030R8 F0 STM32F030R8T6 M0 64 48 64 8 NUCLEO-L053R8 L0 STM32L053R8T6 M0+ 64 32 64 8 F0 シリーズ ボードプロジェクト 5
STM32CubeLx/Fx 同梱サンプルプロジェクトのビルド
EWARM を起動 スタートメニューから起動 すべてのプログラム > IAR Systems > IAR Embedded Workbench for ARM 7.xx.x > IAR Embedded Workbench 7
STM32CubeL0 のサンプルを起動 GPIO_IOToggle プロジェクトを開く [ ファイル ] > [ 開く ] > [ ワークスペース ] STM32Cube_FW_L0_V1.1.0 Projects STM32L053R8-Nucleo Examples GPIO GPIO_IOToggle EWARM Project.eww を選択して [ 開く ] 8
STM32CubeL0 のサンプルをビルド ソースコードを表 Example > User > main.c をダブルクリック 9
STM32CubeL0 のサンプルをビルド 番号を表 する ツール > オプションエディタ > [ 番号の表 ] にチェック 番号が表 される 10
STM32CubeL0 のサンプルをビルド メイクを実 する エラーが 0 なら成功 ツール > オプションメッセージ > ビルドメッセージの表 > [ 全て ] に変更することで詳細ビルド情報を表 11
サンプルプロジェクトを 実ボードでデバッグ実
ST-LINK の接続 ST-LINK と PC の接続 > デバイスドライバインストール デバッグ オンボード ST-LINK メイン MCU USB ミニケーブル http://www.st.com/web/jp/catalog/tools/fm116/sc959/ss1532/ln1847/pf260001 2015 年 4 1 ST 社 Web サイトより抜粋 初回のみデバイスドライバのインストールが実 13
STM32CubeL0 のサンプルをデバッグ デバッグモードに移動 実 ファイルのフラッシュ書き込み デバッグセッション初期化 デバッグモード開始 14
STM32CubeL0 のサンプルをデバッグ 実 の制御 デバッグの終了 実 カーソルまで実 次のステートメント ステップアウトステップインステップオーバブレークリセット 15
STM32CubeL0 のサンプルをデバッグ 実機でデバッグ実 グリーンの LD2 LED が 200ms で点滅 Main 関数 while ループ内にブレークポイント設置 ステップ実 で コードの動作を追う 番号の左をシングルクリック もう 度クリックで解除 16
EWARM のデバッグ機能 部紹介
EWARM の豊富なデバッグ表 表 メニュー概要 各種ブレークポイント情報 逆アセンブリ画 メモリ表 CPU レジスタ 周辺レジスタ表 変数ウォッチ 静的変数リアルタイムウォッチ Printf 出 表 18
EWARM のデバッグ機能 : レジスタ GPIO 変化をレジスタウィンドウで てみる 表 > レジスタ 現在の CPU レジスタ > GPIOA 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 でプロジェクト設定 Nucleo ボードをベースとする Nucleo STM32L0 NUCLEO-L053R8 25
STM32CubeMX でプロジェクト設定 ピン配置および周辺機能の使 を選択 LED(LD2) は設定済み TIM2 の Clock Source を [Disable] から [Internal Clock] に変更 26
STM32CubeMX でプロジェクト設定 Clock Configuration で各ブロックへの供給クロックを設定 HSI 16MHz に変更する CPU メインクロック クロック源 システムクロック選択 MSI > HIS_16 に変更 27
STM32CubeMX でプロジェクト設定 各周辺機能の設定 Configuration タブからボタンクリックで設定 点滅 TIM2 を設定 ボタン LED GPIO 設定 28
STM32CubeMX でプロジェクト設定 TIM2 モジュールの設定 プリスケーラ 16000 TIM2global interrupt [Enabled] にチェック リロードカウント 1000 16,000 サイクルごとに 1 カウントアップし 1,000 カウントごとに割り込みが発 16,000 1,000 = 16M => 1 秒に 1 回割り込み 29
STM32CubeMX でプロジェクト設定 GPIO 設定 評価ボード選択で 必要箇所は設定済み 30
STM32CubeMX でプロジェクト設定 コード 成オプションの設定 Project > Settings プロジェクトファイル名 LED_Blink ドライバ の STM32CubeL0 を Web からダウンロード プロジェクト保存場所 C: STM32_workspace NUCLEO-L053R8 31
STM32CubeMX 成プロジェクトを EWARM で実装してデバッグ
STM32CubeMX でプロジェクト 成 ソースコードと EWARM プロジェクトファイルを出 LED_Blink 以下にプロジェクトファイルとドライバなどが 成される Project.eww をダブルクリック 33
STM32CubeMX でプロジェクト 成 初期化コードを含んだプロジェクトが 成される ユーザコードは /* USER CODE BEGIN x */ /* USER CODE END x */ の間に記述する HAL_xxx() は STM32CubeL0 の提供するドライバ API 関数 MX_xxx() は STM32CubeMX が 成した初期化関数 34
アプリケーションコードを記述 タイマー開始関数と タイマー割り込みで 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(GPIOA,GPIO_PIN_5); } } を追加 有効化関数や データ 関数は STM32CubeL0 の Example コードを参照する 35
プロジェクトの実 メイク後 ダウンロードしてデバッグ デバッグの終了 実 カーソルまで実 次のステートメント ステップアウトステップインステップオーバブレークリセット 36
プロジェクトのデバッグ ブレークポイントを設置し コードの流れを解析追加した割り込みハンドラ内にブレークポイントを設定 表 > コールスタック 現在のコードが どの関数から呼ばれているか確認可能 37
STM32CubeMX で設定変更 クロック設定を変更し プロジェクト再 成 EWARM のデバッグを中 コード 成 PLLMul を 4 に変更 CPU クロック 32MHz System Clock Mux をPLLCLKに変更 38
EWARM でプロジェクト再読み込み プロジェクトを読み込んで 再ビルドソースコードの変更が通知されるので [ すべてはい ] を選択 クロック設定コードが変更されている システムクロックが 16M から 32M になったので 1 秒から 500m 秒ごとに LED 点滅が変更 39
まとめ
まとめ (1/2) STM32Cube Lx/Fx 同梱のサンプルプロジェクトを使うことで 豊富な周辺機能を実機で すぐに試すことができる EWARM のデバッグ機能を使うことで 変数やメモリ レジスタなどの値を確認し 状態把握や問題の特定を効率よく うことができる 41
まとめ (2/2) STM32CubeMX を使 することで 初期化設定をグラフィカルに うことができる 成された EWARM プロジェクトで すぐにビルドしデバッグを試すことができる STM32CubeMX のルールに従ってユーザコードを記述することで 何度でも初期化設定をやり直すことができる 42
本資料について
本資料取り扱い上の注意 本資料は 2015 年 4 1 時点の情報を基に作成されており 将来変更の可能性のあるものです あわせてご紹介する設定や機能に関連して 動作保証をお約束するものではございませんので ご了承ください 本資料で提供している情報は ご利 されている のご判断 責任においてご使 ください 提供した情報に関連して ご利 される が不利益等を被る事態が じたとしても 弊社及び執筆者は 切の責任を負いかねますので ご了承ください 本資料の内容に関する弊社または各社へのお問合せはご遠慮ください 本資料及びデータの再配布 無断転 転載等はご遠慮ください 44
商標について 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 マイクロエレクトロニクスの登録商標です その他 本資料中の製品名やサービス名は全てそれぞれの所有者に属する商標または登録商標です 45