STM32 M0&M0+
ソフトウェア開発⼊⾨
本ドキュメントについて
2
⽬的
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を基に作成しています。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
countries24
hour technical support in13
languagesStability and growth
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シリーズ⽤ ボードプロジェクトSTM32CubeLx/Fx
EWARMを起動
スタートメニューから起動
すべてのプログラム > IAR Systems > IAR Embedded Workbench for ARM 7.xx.x > IAR Embedded Workbench
STM32CubeL0のサンプルを起動
8GPIO_IOToggleプロジェクトを開く
Project.ewwを選択 して、[開く] [ファイル] > [開く] > [ワークスペース] STM32Cube_FW_L0_V1.1.0¥Projects¥STM32L053R8-Nucleo¥Examples¥GPIO¥GPIO_IOToggle¥EWARMSTM32CubeL0のサンプルをビルド
ソースコードを表⽰
STM32CubeL0のサンプルをビルド
10
⾏番号を表⽰する
ツール>オプション エディタ > [⾏番号の表⽰]にチェック
STM32CubeL0のサンプルをビルド
メイクを実⾏する
エラーが0なら成功
ツール > オプション メッセージ > ビルドメッセージの表⽰ > [全て]
サンプルプロジェクトを
実ボードでデバッグ実⾏
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サイトより抜粋STM32CubeL0のサンプルをデバッグ
14デバッグモードに移動
実⾏ファイルのフラッシュ書き込み、 デバッグセッション初期化 デバッグモード開始STM32CubeL0のサンプルをデバッグ
実⾏の制御
実⾏ 次のステートメント カーソルまで実⾏ デバッグの終了STM32CubeL0のサンプルをデバッグ
16実機でデバッグ実⾏
グリーンのLD2 LEDが 200msで点滅 Main関数 whileループ内にブレークポイント設置 ⾏番号の左をシングルクリック ※もう⼀度クリックで解除 ステップ実⾏で、コードの動作を追うEWARMの豊富なデバッグ表⽰
18表⽰メニュー概要
各種ブレークポイント情報 逆アセンブリ画⾯ メモリ表⽰ CPUレジスタ、周辺レジスタ表⽰ 変数ウォッチ Printf出⼒表⽰ 静的変数リアルタイムウォッチEWARMのデバッグ機能:レジスタ
GPIO変化をレジスタウィンドウで⾒てみる
EWARMのデバッグ機能:ターミナルI/O
20ソースコードを編集し、EWARM内でprintfを表⽰する
#include “stdio.h”を追記 printf(“Hello!World¥n”);を追記 [メイク] [ダウンロードしてデバッグ] 表⽰ > ターミナルI/O printfの実⾏結果がターミナルI/Oに表⽰されるEWARMのデバッグ機能:ライブウォッチ
ソースコードを編集し、定期的にカウントアップされる静的変数を表⽰
static int count = 0;を追記
count++;を追記
[メイク] [ダウンロードしてデバッグ]
STM32CubeMXの
プロジェクト設定⽅法
STM32CubeMXを起動
スタートメニューから起動
すべてのプログラム > STMicroelectronics> STM32Cube >
STM32CubeMX
STM32CubeMXでプロジェクト設定
24デバイスをベースとするか、評価ボードをベースとするか選択
タブクリックで切り替える 評価ボードをベースとすると基本的なピン配置は 設定済みで開始できるSTM32CubeMXでプロジェクト設定
Nucleoボードをベースとする
Nucleo
STM32L0
STM32CubeMXでプロジェクト設定
26ピン配置および周辺機能の使⽤を選択
LED(LD2)は設定済み TIM2のClock Sourceを [Disable]から[Internal Clock]に変更STM32CubeMXでプロジェクト設定
Clock Configurationで各ブロックへの供給クロックを設定
HSI 16MHzに変更する
システムクロック選択
STM32CubeMXでプロジェクト設定
28各周辺機能の設定
Configurationタブからボタンクリックで設定 点滅⽤TIM2を設定 ボタン、LED⽤ GPIO設定STM32CubeMXでプロジェクト設定
TIM2モジュールの設定
プリスケーラ 16000 リロードカウント 1000 TIM2global interrupt [Enabled]にチェックSTM32CubeMXでプロジェクト設定
30
GPIO設定
STM32CubeMXでプロジェクト設定
コード⽣成オプションの設定
ドライバ⽤のSTM32CubeL0を Webからダウンロード Project > Settings プロジェクトファイル名 ※LED_Blink プロジェクト保存場所STM32CubeMX⽣成プロジェクトを
EWARMで実装してデバッグ
STM32CubeMXでプロジェクト⽣成
ソースコードとEWARM⽤プロジェクトファイルを出⼒
LED_Blink以下にプロジェクトファイルと ドライバなどが⽣成される
STM32CubeMXでプロジェクト⽣成
34
初期化コードを含んだプロジェクトが⽣成される
ユーザコードは/* USER CODE BEGIN x */ /* USER CODE END x */ の間に記述する
HAL_xxx()はSTM32CubeL0の提供する ドライバAPI関数
MX_xxx()はSTM32CubeMXが⽣成した 初期化関数
アプリケーションコードを記述
タイマー開始関数と、タイマー割り込みでLEDトグル関数を追加
main関数内、初期化処理と whileループの間に HAL_TIM_Base_Start_IT(&htim2); を追加 main関数終了後にvoid HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
プロジェクトの実⾏
36メイク後、ダウンロードしてデバッグ
実⾏ ステップアウト ステップイン ステップオーバ ブレーク リセット 次のステートメント カーソルまで実⾏ デバッグの終了プロジェクトのデバッグ
ブレークポイントを設置し、コードの流れを解析
追加した割り込みハンドラ内にブレークポイントを設定
STM32CubeMXで設定変更
38
クロック設定を変更し、プロジェクト再⽣成
EWARMのデバッグを中⽌
PLLMulを×4に変更
System Clock Mux System Clock Mux をPLLCLKに変更
CPUクロック 32MHz
EWARMでプロジェクト再読み込み
プロジェクトを読み込んで、再ビルド
ソースコードの変更が通知されるので、[すべてはい]を選択
クロック設定コード が変更されている