你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何基于Arm®v7-M 架构的 STM32 启用 DWT进行计数

[复制链接]
STMCU小助手 发布时间:2023-10-30 15:53
01前言
# I1 a  P5 h/ t7 r( |客户在使用 STM32H7 的时候,想要使用 DWT 计数来测量代码执行时间,评估执行效率。客户发现在重新上电或 reset 后,无法启用 DWT 进行计数。7 t7 c  R6 [6 U7 \+ E7 r
: C  [5 {7 `/ E  Z. E4 S2 M, S
02调研
0 P/ _0 m# B3 t  ?" g
在 ARMv7-M 架构中有个 DEMCR 寄存器,这个寄存器可以控制 DWT 的使能。在power-on reset 后这个寄存器所有位的值都为 0。而当 bit[24]为 0 时,DWT 和 ITM 模块都是 disabled 的。所以为了启用 DWT 模块,必须将 DEMCR 的 bit[24]置为 1。如图 1 所示:
% o- g% D# E) g- Y# n
% \4 h" K* V1 f+ Y: H7 I. p
微信图片_20231030155307.png

3 h0 c9 S3 t5 H) \, ]0 G
图1.DEMCR 寄存器

: D* Z' ~% y+ L3 }
/ U( [3 _; e9 h7 }1 o$ i) x& {

, W  d0 B6 [( F* |7 G* r9 M# z5 u) M3 z& v
03启用 DWT 进行计数
- e; i6 q- h6 i, q! F1 |) t. CSTM32H7 基于 Arm Cortex-M7 内核,而 Cortex-M7 是 ARMv7-M 架构,所以 H7 在配置 DWT 模块之前需要将 DEMCR 的 bit[24]置位。在基于 Cortex-M7 的芯片中,需要使用DWT-LAR 来解锁 DWT(其他核可能不需要,应具体分析),然后对 DWT_CTRL 进行相应使能即可。
6 ?# B, s; ]" f/ c) t" Z) u( p$ w- C( e8 F1 ^, J4 Y
在 CMSIS 文件中已经提供了相关寄存器的宏定义(例如在“core_cm7.h”文件中包提供了 DWT 和 DEMCR 的宏定义),我们可以使用这些宏定义方便的进行配置,如图 2所示:
( P: v8 Q8 `3 q1 }9 A$ ?! G: c1 {! w2 q! A2 J3 ^  @
微信图片_20231030155302.png

9 L% M5 X) S( d; Y" T( X3 c
图2.core_cm7.h 文件

* W! \* O0 p1 v& \+ M

$ [7 Y! R+ E- t5 b- G( @
示例(如下):使用 DWT 测量代码执行所用的时钟 cycle 数。
! t! d- ]4 p9 z7 S
) W, n4 V' u9 S# Z0 s8 |- ?4 b+ c
微信图片_20231030155521.png
1 _- e1 i0 j; T) w

- x8 E$ [# p. [

; \: J% Y# D' w! R4 g1 A4 x! r
微信图片_20231030155534.png
8 k+ N9 G, _& O9 k# M. r. J7 g1 u/ O

; ^" o$ _- f& E9 R# P& H, }( Q

- y  j; R0 O; u  }; F# D" u
04小结6 Y( q! r9 W' n0 G) m
在使用 ARMv7-M 架构的 STM32 时,对 DWT 配置之前应确保 DEMCR 中的 bit[24]已经被配置(使能 DWT),然后才能使用 DWT。9 c) k  l$ v- t! S$ |) T* F$ d3 H

" z! Y# @9 ?2 g& {4 N* B6 H' J& n/ {
2 d& e+ P9 \& m. s' l6 O" @: d$ k$ ~' B转载自: STM32单片机. U# @; n* ?  B$ g5 w( O0 t
如有侵权请联系删除
* F0 q; q5 n' |6 u6 k$ z8 Q- B9 M1 b0 n7 W. ^

+ m' z9 ]: r, M% S& h1 N% X# }: h1 q6 r+ x% T
赞 收藏 评论2 发布时间:2023-10-30 15:53

举报

2个回答
杨小杨 回答时间:2023-10-31 13:59:58

学习学习

xu@xupt 回答时间:2023-11-2 14:58:14

学习啦~~~

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版