CC3120的移植层中的实现方式令人困惑。 根据 SDK 的演示(使用 MSP432)、在 user.h 中显示
#define SL_LockObjLock (pLockObj、Timeout) Mutex_lock (*(pLockObj))
它将忽略超时参数。 此外、在 cc_PAL.c 中、Mutex_lock 指向 MutexP_FreeRTOS.c、即:
uintptr_t MutexP_LOCK (MutexP_Handle handle)
{
SemaphoreHandle_t xMutex =(SemaphoreHandle_t) handle;
/*每10个节拍重试一次*/
while (xSemaphoreTake递 归(xMutex、(TickType_t) 10)=pdFALSE){
;
}
返回(0);
}
总体而言、该实现方案有效地强制调用方永远等待并忽略超时参数、即使调用方希望其立即返回。 这样做是否有任何具体原因?