58 #define osCMSIS 0x10002 60 #define osCMSIS_KERNEL 0x10000 63 #define osKernelSystemId "KERNEL V1.00" 66 #define osFeature_MainThread 1 68 #define osFeature_Pool 1 69 #define osFeature_MailQ 1 70 #define osFeature_MessageQ 1 71 #define osFeature_Signals 8 72 #define osFeature_Semaphore 30 73 #define osFeature_Wait 1 74 #define osFeature_SysTick 1 92 osPriorityBelowNormal = -1,
94 osPriorityAboveNormal = +1,
96 osPriorityRealtime = +3,
97 osPriorityError = 0x84
102 #define osWaitForever 0xFFFFFFFF 108 osEventSignal = 0x08,
109 osEventMessage = 0x10,
111 osEventTimeout = 0x40,
112 osErrorParameter = 0x80,
113 osErrorResource = 0x81,
114 osErrorTimeoutResource = 0xC1,
116 osErrorISRRecursive = 0x83,
117 osErrorPriority = 0x84,
118 osErrorNoMemory = 0x85,
121 os_status_reserved = 0x7FFFFFFF
134 typedef void (*os_pthread) (
void const *argument);
138 typedef void (*os_ptimer) (
void const *argument);
144 typedef struct os_thread_cb *osThreadId;
148 typedef struct os_timer_cb *osTimerId;
152 typedef struct os_mutex_cb *osMutexId;
156 typedef struct os_semaphore_cb *osSemaphoreId;
160 typedef struct os_pool_cb *osPoolId;
164 typedef struct os_messageQ_cb *osMessageQId;
168 typedef struct os_mailQ_cb *osMailQId;
244 osStatus osKernelInitialize (
void);
249 osStatus osKernelStart (
void);
254 int32_t osKernelRunning(
void);
256 #if (defined (osFeature_SysTick) && (osFeature_SysTick != 0)) // System Timer available 261 uint32_t osKernelSysTick (
void);
265 #define osKernelSysTickFrequency 100000000 270 #define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000) 272 #endif // System Timer available 283 #if defined (osObjectsExternal) // object is external 284 #define osThreadDef(name, priority, instances, stacksz) \ 285 extern const osThreadDef_t os_thread_def_##name 286 #else // define the object 287 #define osThreadDef(name, priority, instances, stacksz) \ 288 const osThreadDef_t os_thread_def_##name = \ 289 { (name), (priority), (instances), (stacksz) } 296 #define osThread(name) \ 297 &os_thread_def_##name 304 osThreadId osThreadCreate (
const osThreadDef_t *thread_def,
void *argument);
309 osThreadId osThreadGetId (
void);
315 osStatus osThreadTerminate (osThreadId thread_id);
320 osStatus osThreadYield (
void);
327 osStatus osThreadSetPriority (osThreadId thread_id, osPriority priority);
333 osPriority osThreadGetPriority (osThreadId thread_id);
341 osStatus osDelay (uint32_t millisec);
343 #if (defined (osFeature_Wait) && (osFeature_Wait != 0)) // Generic Wait available 349 osEvent osWait (uint32_t millisec);
351 #endif // Generic Wait available 360 #if defined (osObjectsExternal) // object is external 361 #define osTimerDef(name, function) \ 362 extern const osTimerDef_t os_timer_def_##name 363 #else // define the object 364 #define osTimerDef(name, function) \ 365 const osTimerDef_t os_timer_def_##name = \ 373 #define osTimer(name) \ 382 osTimerId osTimerCreate (
const osTimerDef_t *timer_def, os_timer_type type,
void *argument);
389 osStatus osTimerStart (osTimerId timer_id, uint32_t millisec);
395 osStatus osTimerStop (osTimerId timer_id);
401 osStatus osTimerDelete (osTimerId timer_id);
411 int32_t osSignalSet (osThreadId thread_id, int32_t signals);
418 int32_t osSignalClear (osThreadId thread_id, int32_t signals);
425 osEvent osSignalWait (int32_t signals, uint32_t millisec);
434 #if defined (osObjectsExternal) // object is external 435 #define osMutexDef(name) \ 436 extern const osMutexDef_t os_mutex_def_##name 437 #else // define the object 438 #define osMutexDef(name) \ 439 const osMutexDef_t os_mutex_def_##name = { 0 } 446 #define osMutex(name) \ 453 osMutexId osMutexCreate (
const osMutexDef_t *mutex_def);
460 osStatus osMutexWait (osMutexId mutex_id, uint32_t millisec);
466 osStatus osMutexRelease (osMutexId mutex_id);
472 osStatus osMutexDelete (osMutexId mutex_id);
477 #if (defined (osFeature_Semaphore) && (osFeature_Semaphore != 0)) // Semaphore available 483 #if defined (osObjectsExternal) // object is external 484 #define osSemaphoreDef(name) \ 485 extern const osSemaphoreDef_t os_semaphore_def_##name 486 #else // define the object 487 #define osSemaphoreDef(name) \ 488 const osSemaphoreDef_t os_semaphore_def_##name = { 0 } 495 #define osSemaphore(name) \ 496 &os_semaphore_def_##name 503 osSemaphoreId osSemaphoreCreate (
const osSemaphoreDef_t *semaphore_def, int32_t count);
510 int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec);
516 osStatus osSemaphoreRelease (osSemaphoreId semaphore_id);
522 osStatus osSemaphoreDelete (osSemaphoreId semaphore_id);
524 #endif // Semaphore available 529 #if (defined (osFeature_Pool) && (osFeature_Pool != 0)) // Memory Pool Management available 537 #if defined (osObjectsExternal) // object is external 538 #define osPoolDef(name, no, type) \ 539 extern const osPoolDef_t os_pool_def_##name 540 #else // define the object 541 #define osPoolDef(name, no, type) \ 542 const osPoolDef_t os_pool_def_##name = \ 543 { (no), sizeof(type), NULL } 550 #define osPool(name) \ 557 osPoolId osPoolCreate (
const osPoolDef_t *pool_def);
563 void *osPoolAlloc (osPoolId pool_id);
569 void *osPoolCAlloc (osPoolId pool_id);
576 osStatus osPoolFree (osPoolId pool_id,
void *block);
578 #endif // Memory Pool Management available 583 #if (defined (osFeature_MessageQ) && (osFeature_MessageQ != 0)) // Message Queues available 591 #if defined (osObjectsExternal) // object is external 592 #define osMessageQDef(name, queue_sz, type) \ 593 extern const osMessageQDef_t os_messageQ_def_##name 594 #else // define the object 595 #define osMessageQDef(name, queue_sz, type) \ 596 const osMessageQDef_t os_messageQ_def_##name = \ 597 { (queue_sz), sizeof (type) } 604 #define osMessageQ(name) \ 605 &os_messageQ_def_##name 612 osMessageQId osMessageCreate (
const osMessageQDef_t *queue_def, osThreadId thread_id);
620 osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec);
627 osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec);
629 #endif // Message Queues available 634 #if (defined (osFeature_MailQ) && (osFeature_MailQ != 0)) // Mail Queues available 642 #if defined (osObjectsExternal) // object is external 643 #define osMailQDef(name, queue_sz, type) \ 644 extern const osMailQDef_t os_mailQ_def_##name 645 #else // define the object 646 #define osMailQDef(name, queue_sz, type) \ 647 const osMailQDef_t os_mailQ_def_##name = \ 648 { (queue_sz), sizeof (type) } 655 #define osMailQ(name) \ 663 osMailQId osMailCreate (
const osMailQDef_t *queue_def, osThreadId thread_id);
670 void *osMailAlloc (osMailQId queue_id, uint32_t millisec);
677 void *osMailCAlloc (osMailQId queue_id, uint32_t millisec);
684 osStatus osMailPut (osMailQId queue_id,
void *mail);
691 osEvent osMailGet (osMailQId queue_id, uint32_t millisec);
698 osStatus osMailFree (osMailQId queue_id,
void *mail);
700 #endif // Mail Queues available 707 #endif // _CMSIS_OS_H Definition: cmsis_os.h:182
Definition: cmsis_os.h:173
Definition: cmsis_os.h:216
Definition: cmsis_os.h:188
uint32_t queue_sz
number of elements in the queue
Definition: cmsis_os.h:217
uint32_t item_sz
size of an item
Definition: cmsis_os.h:202
uint32_t instances
maximum number of instances of that thread function
Definition: cmsis_os.h:176
uint32_t stacksize
stack size requirements in bytes; 0 is default stack size
Definition: cmsis_os.h:177
int32_t signals
signal flags
Definition: cmsis_os.h:230
Definition: cmsis_os.h:208
Definition: cmsis_os.h:225
uint32_t dummy
dummy value.
Definition: cmsis_os.h:195
os_pthread pthread
start address of thread function
Definition: cmsis_os.h:174
uint32_t dummy
dummy value.
Definition: cmsis_os.h:189
void * pool
memory array for messages
Definition: cmsis_os.h:211
osStatus status
status code: event or error information
Definition: cmsis_os.h:226
void * pool
memory array for mail
Definition: cmsis_os.h:219
uint32_t item_sz
size of an item
Definition: cmsis_os.h:210
Definition: cmsis_os.h:194
Definition: cmsis_os.h:200
uint32_t queue_sz
number of elements in the queue
Definition: cmsis_os.h:209
uint32_t pool_sz
number of items (elements) in the pool
Definition: cmsis_os.h:201
osMessageQId message_id
message id obtained by osMessageCreate
Definition: cmsis_os.h:234
uint32_t v
message as 32-bit value
Definition: cmsis_os.h:228
void * pool
pointer to memory for pool
Definition: cmsis_os.h:203
osPriority tpriority
initial thread priority
Definition: cmsis_os.h:175
void * p
message or mail as void pointer
Definition: cmsis_os.h:229
osMailQId mail_id
mail id obtained by osMailCreate
Definition: cmsis_os.h:233
os_ptimer ptimer
start address of a timer function
Definition: cmsis_os.h:183
uint32_t item_sz
size of an item
Definition: cmsis_os.h:218