![](/media/cache/profiles/af7fc8485f40dc495bc626d6dbe7faf1.50x50_q85.png)
Basic example showing the CMSIS-RTOS Semaphore API
mbed 2 and mbed OS 5
This is an mbed 2 example. mbed OS 5 has integrated the mbed library with mbed-rtos. For an mbed-os example, please see:
Import programrtos_semaphore
semaphore example
main.cpp
- Committer:
- emilmont
- Date:
- 2012-11-23
- Revision:
- 2:66f36aff7050
- Parent:
- 1:7aa2ff92570b
File content as of revision 2:66f36aff7050:
#include "mbed.h" #include "cmsis_os.h" osSemaphoreId two_slots; osSemaphoreDef(two_slots); void test_thread(void const *name) { while (true) { osSemaphoreWait(two_slots, osWaitForever); printf("%s\n\r", (const char*)name); osDelay(1000); osSemaphoreRelease(two_slots); } } void t2(void const *argument) {test_thread("Th 2");} osThreadDef(t2, osPriorityNormal, DEFAULT_STACK_SIZE); void t3(void const *argument) {test_thread("Th 3");} osThreadDef(t3, osPriorityNormal, DEFAULT_STACK_SIZE); int main (void) { two_slots = osSemaphoreCreate(osSemaphore(two_slots), 2); osThreadCreate(osThread(t2), NULL); osThreadCreate(osThread(t3), NULL); test_thread((void *)"Th 1"); }