gpt4 book ai didi

time - STM32如何获取时间间隔?

转载 作者:行者123 更新时间:2023-12-03 07:30:02 27 4
gpt4 key购买 nike

我想测量单个函数在STM32上需要多长时间。我唯一能找到的是 SysTick_Handler。但是,这是一个周期性中断,但我需要的是获取时间间隔,例如:

long t1 = mcu_clock();
sleep(20);
long t2 = mcu_clock();
long diff = (t2 - t1);

我尝试过 C clock(),但它不起作用并且总是返回 -1。我怎样才能做到?

最佳答案

首先,在启动时启用一次周期计数器:

CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
DWT->CYCCNT = 0;
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;

然后,您可以访问它的值:

unsigned long t1 = DWT->CYCCNT;
/* do something */
unsigned long t2 = DWT->CYCCNT;
unsigned long diff = t2 - t1;

它计算经过的 cpu 周期,您必须将其除以 cpu 时钟频率才能得到以秒为单位的值。

由于它是一个 32 位值,因此在较高时钟频率下可以非常快地溢出,例如在 216 MHz 下需要 19.88 秒。

关于time - STM32如何获取时间间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42246125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com