RTOS example - using stdio_mutex controlling the access to printf(). Note that this is necessary only for Cortex-M0 MCU-s

Dependencies:   mbed mbed-rtos

main.cpp

Committer:
cspista
Date:
2022-02-24
Revision:
0:fe1656248d2b

File content as of revision 0:fe1656248d2b:

#include "mbed.h"
#include "rtos.h"

Serial pc(USBTX,USBRX);     //UART via ST-Link
Mutex stdio_mutex;

void notify(const char* name, int state)
{
    stdio_mutex.lock();
    pc.printf("%s: %d\n\r", name, state);
    stdio_mutex.unlock();
}

void test_thread(void const *args)
{
    while (true) {
        notify((const char*)args, 0);
        Thread::wait(1000);
        notify((const char*)args, 1);
        Thread::wait(1000);
    }
}

int main()
{
    pc.baud(115200);
    Thread t2(test_thread, (void *)"Th 2");
    Thread t3(test_thread, (void *)"Th 3");
    test_thread((void *)"Th 1");
}