| CMSIS-RTOS Version 1.02 CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.

- CMSIS
- CORE
- Driver
- DSP
- RTOS API
- Pack
- SVD

- Main Page
- Usage and Description
- Reference

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
Generic Wait Functions
CMSIS-RTOS API

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

## Macros
#define | osFeature_Wait 1
| osWait function: 1=available, 0=not available

## Functions
osStatus | osDelay (uint32_t millisec)
| Wait for Timeout (Time Delay).
osEvent | osWait (uint32_t millisec)
| Wait for Signal, Message, Mail, or Timeout.

## Description

The Generic Wait function group provides means for a time delay and allow to wait for unspecified events.

## Macro Definition Documentation

#define osFeature_Wait 1

A CMSIS-RTOS implementation may support the generic wait function osWait.

- When osFeature_Wait is 1 a generic wait function osWait is available.
- When osFeature_Wait is 0 no generic wait function osWait is available.

## Function Documentation

osStatus osDelay | ( | uint32_t | millisec | ) |

Parameters

  [in] | millisec | time delay value

Returns
  status code that indicates the execution status of the function.

Wait for a specified time period in millisec.

Status and Error Codes

- osEventTimeout: the time delay is executed.
- osErrorISR: osDelay cannot be called from interrupt service routines.

Example

#include "cmsis_os.h"
void Thread_1 (void const *arg) { // Thread function
osStatus status; // capture the return status
uint32_t delayTime; // delay time in milliseconds
delayTime = 1000; // delay 1 second
:
status = osDelay (delayTime); // suspend thread execution
// handle error code
:
}

osEvent osWait | ( | uint32_t | millisec | ) |

Parameters

  [in] | millisec | timeout value or 0 in case of no time-out

Returns
  event that contains signal, message, or mail information or error code.

Note
  MUST REMAIN UNCHANGED: osWait shall be consistent in every CMSIS-RTOS.

Wait for any event of the type Signal, Message, Mail for a specified time period in millisec. While the system waits the thread that is calling this function is put into the state WAITING. When millisec is set to osWaitForever the function will wait for an infinite time until a event occurs.

The osWait function puts a thread into the state WAITING and waits for any of the following events:

- Signal sent to that thread explicitly
- Message from a message object that is registered to that thread
- Mail from a mail object that is registered to that thread

Note
  this function is optionally and may not be provided by all CMSIS-RTOS implementations.

Status and Error Codes

- osEventSignal: a signal event occurred and is returned.
- osEventMessage: a message event occurred and is returned.
- osEventMail: a mail event occurred and is returned.
- osEventTimeout: the time delay is executed.
- osErrorISR: osDelay cannot be called from interrupt service routines.

Example

#include "cmsis_os.h"
void Thread_1 (void const *arg) { // Thread function
osEvent Event; // capture the event
uint32_t waitTime; // wait time in milliseconds
:
waitTime = osWaitForever; // special "wait" value
Event = osWait (waitTime); // wait forever and until an event occurred
switch (Event.status) {
case osEventSignal: // Signal arrived
: // Event.value.signals contains the signal flags
break;
case osEventMessage: // Message arrived
: // Event.value.p contains the message pointer
: // Event.def.message_id contains the message Id
break;
case osEventMail: // Mail arrived
: // Event.value.p contains the mail pointer
: // Event.def.mail_id contains the mail Id
break;
case osEventTimeout: // Timeout occurred
break;
default: // Error occurred
break;
}
:
}