diff --git a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md index 4ce502c938e0254b29001de578b50f650e522588..f925f03c64de1945363478787691845a57f682ca 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md @@ -512,13 +512,15 @@ RT-Thread 定时器的最小精度是由系统时钟节拍所决定的(1 OS Ti #include void rt_hw_us_delay(rt_uint32_t us) { - rt_uint32_t delta; + rt_uint32_t tstart; /* 获得延时经过的 tick 数 */ us = us * (SysTick->LOAD/(1000000/RT_TICK_PER_SECOND)); /* 获得当前时间 */ - delta = SysTick->VAL; + tstart = SysTick->VAL; + /* 判断是否会溢出 */ + if (tstart < us) tstart += SysTick->LOAD; /* 循环获得当前时间,直到达到指定的时间后退出循环 */ - while (delta - SysTick->VAL< us); + while (tstart - SysTick->VAL < us); } ```