STM32 使用HAL库获取us时间
一、通用计时方法
在使用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;