TickType Os_SysTickGetElapsedValue(uint32 preValue ) { uint32 curr; uint32 max; curr = ARM_TIMER_VAL; max = ARM_TIMER_LOD; return Os_CounterDiff((max - curr),preValue,max); }
/** @req 4.1.2/SWS_Os_00392 */ StatusType GetElapsedValue ( CounterType counter_id, TickRefType val, TickRefType elapsed_val) { StatusType rv = E_OK; OsCounterType *cPtr; TickType currTick = 0; TickType max; cPtr = Os_CounterGet(counter_id); /** @req SWS_Os_00381 */ OS_VALIDATE(IsCounterValid(counter_id),E_OS_ID); max = Os_CounterGetMaxValue(cPtr); /** @req SWS_Os_00391 */ OS_VALIDATE( *val <= max,E_OS_VALUE ); #if (OS_APPLICATION_CNT > 1) && (OS_NUM_CORES > 1) if (Os_ApplGetCore(cPtr->applOwnerId) != GetCoreID()) { StatusType status = Os_NotifyCore(Os_ApplGetCore(cPtr->applOwnerId), OSServiceId_GetElapsedValue, counter_id, (int32_t)val, (int32_t)elapsed_val); return status; } #endif GetCounterValue(counter_id,&currTick); /** @req OS382 */ *elapsed_val = Os_CounterDiff(currTick,*val,max); /** @req OS460 */ *val = currTick; COUNTER_STD_END; }