CMSIS-RTOS2
Version 2.1.0
Real-Time Operating System: API and RTX Reference Implementation
|
RTX5 functions. More...
Functions | |
uint32_t | osRtxErrorNotify (uint32_t code, void *object_id) |
OS Error Callback function. More... | |
void | osRtxIdleThread (void *argument) |
OS Idle Thread. More... | |
int32_t | osRtxSysTimerSetup (void) |
OS System Timer functions (default implementation uses SysTick) More... | |
void | osRtxSysTimerEnable (void) |
Enable System Timer. More... | |
void | osRtxSysTimerDisable (void) |
Disable System Timer. More... | |
void | osRtxSysTimerAckIRQ (void) |
Acknowledge System Timer IRQ. More... | |
uint32_t | osRtxSysTimerGetCount (void) |
Get System Timer count. More... | |
uint32_t | osRtxSysTimerGetFreq (void) |
Get System Timer frequency. More... | |
uint32_t osRtxErrorNotify | ( | uint32_t | code, |
void * | object_id | ||
) |
Some system error conditions can be detected during runtime. If the RTX kernel detects a runtime error, it calls the runtime error function osRtxErrorNotify for an object specified by parameter object_id.
The parameter code passes the actual error code to this function:
Error Code | Description |
---|---|
osRtxErrorStackUnderflow | Stack underflow detected for thread (thread_id=object_id) |
osRtxErrorISRQueueOverflow | ISR Queue overflow detected when inserting object (object_id) |
osRtxErrorTimerQueueOverflow | User Timer Callback Queue overflow detected for timer (timer_id=object_id) |
osRtxErrorClibSpace | Standard C/C++ library libspace not available: increase OS_THREAD_LIBSPACE_NUM |
osRtxErrorClibMutex | Standard C/C++ library mutex initialization failed |
The function osRtxErrorNotify must contain an infinite loop to prevent further program execution. You can use an emulator to step over the infinite loop and trace into the code introducing a runtime error. For the overflow errors this means you need to increase the size of the object causing an overflow.
Code Example
osRtxErrorClibMutexvoid osRtxIdleThread | ( | void * | argument | ) |
The function osRtxIdleThread is executed by the RTX kernel, when no other threads are ready to run. By default, this thread is an empty end-less loop that does nothing. It only waits until another task becomes ready to run. You may change the code of the osRtxIdleThread function to put the CPU into a power-saving or idle mode.
The default stack size for this thread is defined in the file RTX_Config.h. Refer to Thread Configuration.
Code Example
int32_t osRtxSysTimerSetup | ( | void | ) |
Setup System Timer.
By default, RTX5 uses the Cortex-M SysTick timer, but using osRtxSysTimerSetup allows to set up an alternative system timer.
void osRtxSysTimerEnable | ( | void | ) |
The function osRtxSysTimerEnable enables the alternative system timer that has been set up using osRtxSysTimerSetup.
void osRtxSysTimerDisable | ( | void | ) |
The function osRtxSysTimerDisable disables the alternative system timer that has been set up using osRtxSysTimerSetup.
void osRtxSysTimerAckIRQ | ( | void | ) |
uint32_t osRtxSysTimerGetCount | ( | void | ) |
The function osRtxSysTimerGetCount returns the system timer count of the alternative timer set up by osRtxSysTimerSetup.
uint32_t osRtxSysTimerGetFreq | ( | void | ) |
The function osRtxSysTimerGetFreq returns the system timer frequency of the alternative timer set up by osRtxSysTimerSetup.