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

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

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


04
小結(jié)
在使用 ARMv7-M 架構(gòu)的 STM32 時(shí),對(duì) DWT 配置之前應(yīng)確保 DEMCR 中的 bit[24]已經(jīng)被配置(使能 DWT),然后才能使用 DWT。
更多內(nèi)容,歡迎點(diǎn)擊下方“閱讀原文”,下載完整文檔。

完整內(nèi)容請點(diǎn)擊“閱讀原文”下載原文檔。
原文標(biāo)題:Arm?v7-M 架構(gòu)的 STM32 如何啟用 DWT進(jìn)行計(jì)數(shù)
文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
單片機(jī)
+關(guān)注
關(guān)注
6076文章
45495瀏覽量
670369 -
STM32
+關(guān)注
關(guān)注
2309文章
11162瀏覽量
373455
原文標(biāo)題:Arm?v7-M 架構(gòu)的 STM32 如何啟用 DWT進(jìn)行計(jì)數(shù)
文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
RISC-V vs ARM:為什么工業(yè)與邊緣計(jì)算仍然選擇 ARM 架構(gòu)?
探秘NXP MCXE315/316/317/31B:5V Arm Cortex M7 MCU的卓越性能與應(yīng)用潛力
探秘MCXE315/316/317/31B:5V強(qiáng)勁Arm Cortex M7 MCU的卓越性能
數(shù)據(jù)觀察點(diǎn)及跟蹤DWT
Cortex-M內(nèi)核中的精確延時(shí)的方法
芯源MCU架構(gòu)是不是基本都是ARM架構(gòu)?還有其他的架構(gòu)嗎?
STM32C031x4/x6:面向主流應(yīng)用的Arm? Cortex?-M0+ 微控制器
STM32H7S78-DK探索套件深度解析與技術(shù)應(yīng)用指南
一文了解Arm神經(jīng)超級(jí)采樣 (Arm Neural Super Sampling, Arm NSS) 深入探索架構(gòu)、訓(xùn)練和推理
同一水平的 RISC-V 架構(gòu)的 MCU,和 ARM 架構(gòu)的 MCU 相比,運(yùn)行速度如何?
RISC-V和ARM有何區(qū)別?
Arm?v7-M 架構(gòu)的 STM32 如何啟用 DWT進(jìn)行計(jì)數(shù)
評(píng)論