STM32での実行時間測定(DWT機能を使う)

これもデバッグ時にはほぼ必須の機能である実行時間の測定方法についてです

STM32 タイマーを使って処理時間を計測する

を使ってみました、DWT機能というのはData Watchpoint and Trace Unitの略でArm Mコアで正確な時間測定を行う時に使われる機能のようです

<動作環境>

・M4 MacBook Pro Tahoe

・CubeIDE 1.19.0

・STM32F401re

<セットアップ>

例にあるDWT.hとDWT.cというファイルを作成してそれぞれ、Core / IncとCore / Src以下に配置します

https://isehara-3lv.sakura.ne.jp/blog/2025/12/05/adcをdma転送で実行してみる/

の記事のコードに追加してADCのDMA転送の時間を測定してみました

タイマーの初期化処理は、

__IO表記はC言語におけるvolatileのalias表記です

ソースコードはこんな感じ、最初if文の直後においてましたが、測定結果が複数回実行しても変わらないので、cnt++行の後に移動して結果と比較

<実行結果>

最初のコードでの実行時間

ログポイントをずらした結果

確かに差分で0.1μsぐらい増加してますね

多少の細工は必要ですが、測定結果は正確であるように思います

 

admin

コメントを残す