STM32 使用HAL库获取us时间
摘要:本文介绍了STM32中两种计时方法。第一种使用HAL库的HAL_GetTick()函数实现毫秒级计时,通过记录前后时间差值计算耗时。第二种针对微秒级计时需求,给出了自定义GetMicros()的实现方法,结合SysTick定时器实现高精度计时,同样采用差值法计算耗时。两种方法都提供了清晰的使用示例,适用于不同精度要求的STM32开发场景。
·
一、通用计时方法
在使用STM32时,有时我们需要测试代码运行的时间,或者需要计时,有个最简单的办法是调用HAL库提供HAL_GetTick,这个函数可以获取ms的计数值,每ms计数一次。
使用办法如下:
uint32_t tickstart = HAL_GetTick();
// 需要测试耗时的代码
// ...
// 获取消耗的时间,ms
uint32_t times = HAL_GetTick() - tickstart;
二、us计时方法
但是当我们需要计算us时,发现HAL库并没有提供类似的函数,我们只有自己写:
uint32_t GetMicros(void) {
uint32_t m = HAL_GetTick();
uint32_t tms = SysTick->LOAD + 1;
uint32_t u = tms - SysTick->VAL;
if ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0) {
m = HAL_GetTick();
u = tms - SysTick->VAL;
}
return (m * 1000 + (u * 1000) / tms);
}
使用方法同上:
uint32_t tickstart = GetMicros();
// 需要测试耗时的代码
// ...
// 获取消耗的时间,us
uint32_t times = GetMicros() - tickstart;
更多推荐



所有评论(0)