關鍵詞:DWT, DEMCR
目錄預覽
1、前言
2、調研
3、啟用 DWT 進行計數
4、小結
01
前言
客戶在使用 STM32H7 的時候,想要使用 DWT 計數來測量代碼執行時間,評估執行效率。客戶發現在重新上電或 reset 后,無法啟用 DWT 進行計數。
02
調研
在 ARMv7-M 架構中有個 DEMCR 寄存器,這個寄存器可以控制 DWT 的使能。在power-on reset 后這個寄存器所有位的值都為 0。而當 bit[24]為 0 時,DWT 和 ITM 模塊都是 disabled 的。所以為了啟用 DWT 模塊,必須將 DEMCR 的 bit[24]置為 1。如圖 1 所示:

圖1.DEMCR 寄存器
03
啟用 DWT 進行計數
STM32H7 基于 Arm Cortex-M7 內核,而 Cortex-M7 是 ARMv7-M 架構,所以 H7 在配置 DWT 模塊之前需要將 DEMCR 的 bit[24]置位。在基于 Cortex-M7 的芯片中,需要使用DWT-LAR 來解鎖 DWT(其他核可能不需要,應具體分析),然后對 DWT_CTRL 進行相應使能即可。
在 CMSIS 文件中已經提供了相關寄存器的宏定義(例如在“core_cm7.h”文件中包提供了 DWT 和 DEMCR 的宏定義),我們可以使用這些宏定義方便的進行配置,如圖 2所示:

圖2.core_cm7.h 文件
示例(如下):使用 DWT 測量代碼執行所用的時鐘 cycle 數。


04
小結
在使用 ARMv7-M 架構的 STM32 時,對 DWT 配置之前應確保 DEMCR 中的 bit[24]已經被配置(使能 DWT),然后才能使用 DWT。
更多內容,歡迎點擊下方“閱讀原文”,下載完整文檔。
完整內容請點擊“閱讀原文”下載原文檔。
原文標題:Arm?v7-M 架構的 STM32 如何啟用 DWT進行計數
文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
-
單片機
+關注
關注
6065文章
44934瀏覽量
647668 -
STM32
+關注
關注
2290文章
11018瀏覽量
362733
原文標題:Arm?v7-M 架構的 STM32 如何啟用 DWT進行計數
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論