首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >STM32 -如何启用DWT循环计数器

STM32 -如何启用DWT循环计数器
EN

Stack Overflow用户
提问于 2016-04-02 20:22:03
回答 5查看 29.1K关注 0票数 16

我正在使用STM32F7-Discoveryboard,并且一直在尝试启用DWT循环计数器。从我在网上看到的情况来看,这应该足以启用它:

代码语言:javascript
复制
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
DWT->CYCCNT = 0;
DWT->CTRL  |= 1;

但是,每当我运行该代码时,都不会更改值或跳过操作(我不太确定发生了什么)。

我试着做指向内存中地址的指针,并直接修改它们,但也没有效果。例如:

代码语言:javascript
复制
volatile uint32_t *DWT_CONTROL = (uint32_t *) 0xE0001000;
volatile uint32_t *DWT_CYCCNT = (uint32_t *) 0xE0001004;
volatile uint32_t *DEMCR = (uint32_t *) 0xE000EDFC;
*DEMCR = *DEMCR | 0x01000000;
*DWT_CYCCNT  = 0;
*DWT_CONTROL = *DWT_CONTROL | 1;

目前,如果我将DWT->CTRL的值更改为循环计数器开始的ON值,那么在VisualGDB中(使用VisualGDB)中处理调试器时,我得到的唯一方法是。除此之外,我似乎无法在代码中得到可以更改的值。

编辑:是什么导致这些代码行没有执行任务,但也不会崩溃和继续的行为。

代码语言:javascript
复制
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
DWT->CYCCNT = 0;
DWT->CTRL  |= 1;

在运行这些代码行之后,这些内存位置上的所有值都保持不变,并且不会随着应该执行的操作而改变。

例如:

代码语言:javascript
复制
//DWT_CTRL_CYCCNTENA_Msk = 1
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk 

应该会导致DWT->CTRL的值为0x40000001,但它将保持其默认值0x40000000

下面的图片是运行时发生的事情的一个例子。

之前:

之后:

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36378280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档