基于STM32芯片HAL库的us级别延时函数
stm32的HAL库us级别的延时函数,亲测可用,适合各种传感器的调试和延时;
·
本方法不仅提供了us级别的延时,还包括了获取us级别的系统时间的方法。
//HAL库us延时的获取
__STATIC_INLINE uint32_t GXT_SYSTICK_IsActiveCounterFlag(void)
{
return ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == (SysTick_CTRL_COUNTFLAG_Msk));
}
//获取系统us级别的时间
static uint32_t getCurrentMicros(void)
{
GXT_SYSTICK_IsActiveCounterFlag();
uint32_t m = HAL_GetTick();
const uint32_t tms = SysTick->LOAD + 1;
__IO uint32_t u = tms - SysTick->VAL;
if (GXT_SYSTICK_IsActiveCounterFlag())
{
m = HAL_GetTick();
u = tms - SysTick->VAL;
}
return (m * 1000 + (u * 1000) / tms);
}
//获取系统时间,单位us
uint32_t user_sys_time(void)
{
return getCurrentMicros();
}
//us级别延时
void User_Delay_us(uint32_t us)
{
uint32_t now_time=getCurrentMicros()+us;
while(now_time>=getCurrentMicros());
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)