First

Fork of TEN_mbedos_threads by Qmax

main.cpp

Committer:
narasimma23
Date:
2017-03-02
Revision:
1:d1d5c33000fb
Parent:
0:95bee34b8805
Child:
2:967778096fa0

File content as of revision 1:d1d5c33000fb:

/**
 * @brief first thread control program with  MBED OS
 */
#include "mbed.h"
#include "rtos.h"

#define THREAD_A "thread_a"
#define THREAD_B "thread_b"
#define THREAD_C "thread_c"

/* reserve the debbuger uart to shell interface */
Serial pc_serial(USBTX,USBRX);

/* declares threads for this demo: */
const size_t a_stk_size = 512;
uint8_t a_stk[a_stk_size];
Thread a_thread(osPriorityNormal, a_stk_size, &a_stk[0]);

const size_t b_stk_size = 512;
uint8_t b_stk[b_stk_size];
Thread b_thread(osPriorityNormal, b_stk_size, &b_stk[0]);

const size_t c_stk_size = 512;
uint8_t c_stk[c_stk_size];
Thread c_thread(osPriorityNormal, c_stk_size, &c_stk[0]);

/**
 * @brief thread a function 
 */
static void thread(void const *buf)
{
    uint32_t execs = 0;
    pc_serial.printf("## started %s execution! ##\n\r", (char *)buf);
 
    for(;;) {
        execs++;
        /* adds dummy processing */
        for(int i = 0 ; i < 0xFFFFFF; i++);
        pc_serial.printf("## %s executed %d times! ##\n\r", (char *)buf, execs);
        Thread::yield();
    }
}


/**
 * @brief main application loop
 */
int main(void) 
{      
    pc_serial.baud(115200);
    a_thread.start(callback(thread, (void *)THREAD_A));
    b_thread.start(callback(thread, (void *)THREAD_B));
    c_thread.start(callback(thread, (void *)THREAD_C));
    return 0;
}