硬汉嵌入式论坛

 找回密码
 立即注册
查看: 220|回复: 1
收起左侧

[其它] dwt做延时时,烧录程序后直接运行不了,必须重新上电才能正常,怎么解决呢

[复制链接]

7

主题

12

回帖

33

积分

新手上路

积分
33
发表于 2025-10-16 18:22:43 | 显示全部楼层 |阅读模式
oid DWT_Init(void)
{
    if (!(CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk)) {
        CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
    }
         CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
        // dwt_access(1);
    DWT->CYCCNT = 0;
    DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
}


void  delay_init()
{
   DWT_Init();
}
/**
  * @brief
  * @param us:
  */
void delay_us(uint32_t us)
{
    uint32_t start = DWT->CYCCNT;
    uint32_t cycles = us * (SystemCoreClock / 1000000);

    while ((DWT->CYCCNT - start) < cycles);
}


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 2025-10-17 09:49:31 | 显示全部楼层
估计是你的IDE控制下载器没有正常复位DWT导致的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-11-22 02:05 , Processed in 0.045244 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表