STM32使用SysTick实现us/ms级延时
作者:
imMazda | 来源:发表于
2019-11-07 19:32 被阅读0次void udelay(uint32_t nus)
{
uint32_t tickStart, tickCur, tickCnt;
uint32_t tickMax = SysTick->LOAD;
uint32_t udelay_value = (SysTick->LOAD/1000)*nus;
tickStart = SysTick->VAL;
while(1)
{
tickCur = SysTick->VAL;
tickCnt = (tickStart < tickCur) ? (tickMax+tickStart-tickCur) : (tickStart-tickCur);
if (tickCnt > udelay_value)
break;
}
}
void mdelay(uint32_t nms)
{
uint32_t tickStart = HAL_GetTick();
uint32_t wait = nms;
if (wait < HAL_MAX_DELAY)
{
wait += (uint32_t)(uwTickFreq);
}
while ( (HAL_GetTick() - tickStart )< wait)
{
}
}
本文标题:STM32使用SysTick实现us/ms级延时
本文链接:https://www.haomeiwen.com/subject/llzvbctx.html
网友评论