CMSIS-RTOS2  Version 2.0.0
Real-Time Operating System: API and RTX Reference Implementation
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Generic Wait Functions

Wait for a time period or unspecified events. More...

Functions

osStatus_t osDelay (uint32_t ticks)
 Wait for Timeout (Time Delay). More...
 
osStatus_t osDelayUntil (uint64_t ticks)
 Wait until specified time. More...
 

Description

The Generic Wait function group provides means for a time delay.

Function Documentation

osStatus_t osDelay ( uint32_t  ticks)
Parameters
[in]tickstime ticks value
Returns
status code that indicates the execution status of the function.

Wait for a specified time period in kernel ticks.

The timeout value represents a number of timer ticks and is an upper bound. The exact time delay depends on the actual time elapsed since the last timer tick.

For a value of 1, the system waits until the next timer tick occurs. That means that the actual time delay may be up to one timer tick less.

osStatus_t return values:

  • osEventTimeout: the time delay is executed.
  • osErrorISR: osDelay cannot be called from interrupt service routines.
Note
Cannot be called from Interrupt Service Routines.

Code Example

#include "cmsis_os2.h"
void Thread_1 (void *arg) { // Thread function
osStatus_t status; // capture the return status
uint32_t delayTime; // delay time in milliseconds
delayTime = 1000; // delay 1 second
status = osDelay (delayTime); // suspend thread execution
if (status != osOK) {
// handle error code
}
}
osStatus_t osDelayUntil ( uint64_t  ticks)
Parameters
[in]ticksabsolute time in ticks
Returns
status code that indicates the execution status of the function.

Wait until an absolute time - specified in kernel ticks - is reached.

The timeout value represents a number of timer ticks and is an upper bound. The exact time delay depends on the actual time elapsed since the last timer tick.

osKernelGetSysTimerCount can be used to retrieve the current elapsed time of the kernel in .

osStatus_t return values:

  • osEventTimeout: the time delay is executed.
  • osErrorISR: osDelayUntil cannot be called from interrupt service routines.
Note
Cannot be called from Interrupt Service Routines.