From 583d177de0d039aae73faec8d2dadc5ef344edca Mon Sep 17 00:00:00 2001 From: zhushengle Date: Fri, 23 Apr 2021 14:50:27 +0800 Subject: [PATCH] fix:Provide a CPU delay interface Close #I3NT3Y Change-Id: I30c984a95a77cbddabdae2900ab8fcf9d7eac1ac --- kal/cmsis/cmsis_liteos2.c | 2 +- kernel/src/los_task.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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; +}