diff --git a/kal/cmsis/cmsis_liteos2.c b/kal/cmsis/cmsis_liteos2.c index 4c741240..9d6cb289 100644 --- a/kal/cmsis/cmsis_liteos2.c +++ b/kal/cmsis/cmsis_liteos2.c @@ -639,7 +639,7 @@ osStatus_t osDelay(uint32_t ticks) return osOK; } if (osKernelGetState() != osKernelRunning) { - HalDelay(ticks); + LOS_SysDelay(ticks); } else { uwRet = LOS_TaskDelay(ticks); } diff --git a/kernel/src/los_task.c b/kernel/src/los_task.c index 8c226c34..c860f3c3 100644 --- a/kernel/src/los_task.c +++ b/kernel/src/los_task.c @@ -1296,3 +1296,17 @@ LITE_OS_SEC_TEXT_MINOR VOID LOS_Msleep(UINT32 mSecs) (VOID)LOS_TaskDelay(interval); } +VOID LOS_SysDelay(UINT32 ticks) +{ + UINT64 endTime; + + if (ticks == 0) { + return; + } + + endTime = LOS_SysCycleGet() + ticks * OS_CYCLE_PER_TICK; + while (LOS_SysCycleGet() < endTime) { + } + + return; +}