Testing [Andrew L] mbos RTOS for mbed Simply by copying code for main.cpp from mbos.h-comments

Dependencies:   mbed

Committer:
chalikias
Date:
Thu May 05 07:34:12 2011 +0000
Revision:
0:a61d29450691

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chalikias 0:a61d29450691 1 // 2011.05.05 NX
chalikias 0:a61d29450691 2 // This a test of [Andrew L] mbos
chalikias 0:a61d29450691 3 // main.c copied from mbos.h comments
chalikias 0:a61d29450691 4 // ** A 3d task added **
chalikias 0:a61d29450691 5
chalikias 0:a61d29450691 6
chalikias 0:a61d29450691 7 //* A typical simple example with two tasks, and one timer, might look like this:
chalikias 0:a61d29450691 8 //* @code
chalikias 0:a61d29450691 9 // mbos Blinky demonstration.
chalikias 0:a61d29450691 10 // Task 1 toggles LED1 every second, under control of a timer. It then posts an event to
chalikias 0:a61d29450691 11 // task 2 which flashed LED2 briefly.
chalikias 0:a61d29450691 12 #include "mbed.h"
chalikias 0:a61d29450691 13 #include "mbos.h"
chalikias 0:a61d29450691 14
chalikias 0:a61d29450691 15 #define TASK1_ID 1 // Id for task 1 (idle task is 0)
chalikias 0:a61d29450691 16 #define TASK1_PRIO 50 // priority for task 1
chalikias 0:a61d29450691 17 #define TASK1_STACK_SZ 32 // stack size for task 1 in words
chalikias 0:a61d29450691 18
chalikias 0:a61d29450691 19 #define TASK2_ID 2 // Id for task 2
chalikias 0:a61d29450691 20 #define TASK2_PRIO 60 // priority for task 2
chalikias 0:a61d29450691 21 #define TASK2_STACK_SZ 32 // stack size for task 2 in words
chalikias 0:a61d29450691 22
chalikias 0:a61d29450691 23 #define TASK3_ID 3 // Id for task 3
chalikias 0:a61d29450691 24 #define TASK3_PRIO 70 // priority for task 3
chalikias 0:a61d29450691 25 #define TASK3_STACK_SZ 32 // stack size for task 2 in words
chalikias 0:a61d29450691 26
chalikias 0:a61d29450691 27 #define TIMER0_ID 0 // Id for timer 0
chalikias 0:a61d29450691 28 #define TIMER0_PERIOD 1000 // Time period in milliseconds
chalikias 0:a61d29450691 29 #define TIMER0_EVENT 1 // Event flag (1 << 0)
chalikias 0:a61d29450691 30
chalikias 0:a61d29450691 31 #define T1_TO_T2_EVENT 2 // Event flag (1 << 1)
chalikias 0:a61d29450691 32 #define T2_TO_T3_EVENT 2 // Event flag (1 << 1)
chalikias 0:a61d29450691 33
chalikias 0:a61d29450691 34 void task1(void); // task function prototypes
chalikias 0:a61d29450691 35 void task2(void);
chalikias 0:a61d29450691 36 void task3(void);
chalikias 0:a61d29450691 37
chalikias 0:a61d29450691 38 DigitalOut led1(LED1);
chalikias 0:a61d29450691 39 DigitalOut led2(LED2);
chalikias 0:a61d29450691 40 DigitalOut led3(LED3);
chalikias 0:a61d29450691 41 mbos os(3, 1); // Instantiate mbos with 3 tasks & 1 timer
chalikias 0:a61d29450691 42
chalikias 0:a61d29450691 43 int main(void)
chalikias 0:a61d29450691 44 {
chalikias 0:a61d29450691 45 // Configure tasks and timers
chalikias 0:a61d29450691 46 os.CreateTask(TASK1_ID, TASK1_PRIO, TASK1_STACK_SZ, task1);
chalikias 0:a61d29450691 47 os.CreateTask(TASK2_ID, TASK2_PRIO, TASK2_STACK_SZ, task2);
chalikias 0:a61d29450691 48
chalikias 0:a61d29450691 49 os.CreateTask(TASK3_ID, TASK3_PRIO, TASK3_STACK_SZ, task3);
chalikias 0:a61d29450691 50
chalikias 0:a61d29450691 51 os.CreateTimer(TIMER0_ID, TIMER0_EVENT, TASK1_ID);
chalikias 0:a61d29450691 52 // Start mbos
chalikias 0:a61d29450691 53 os.Start();
chalikias 0:a61d29450691 54 // never return!
chalikias 0:a61d29450691 55 }
chalikias 0:a61d29450691 56
chalikias 0:a61d29450691 57 void task1(void)
chalikias 0:a61d29450691 58 {
chalikias 0:a61d29450691 59 os.SetTimer(TIMER0_ID, TIMER0_PERIOD, TIMER0_PERIOD);
chalikias 0:a61d29450691 60 while(1){
chalikias 0:a61d29450691 61 os.WaitEvent(TIMER0_EVENT);
chalikias 0:a61d29450691 62 led1 = !led1;
chalikias 0:a61d29450691 63 os.SetEvent(T1_TO_T2_EVENT, TASK2_ID);
chalikias 0:a61d29450691 64 }
chalikias 0:a61d29450691 65 }
chalikias 0:a61d29450691 66
chalikias 0:a61d29450691 67 void task2(void)
chalikias 0:a61d29450691 68 {
chalikias 0:a61d29450691 69 while(1){
chalikias 0:a61d29450691 70 os.WaitEvent(T1_TO_T2_EVENT);
chalikias 0:a61d29450691 71 led2 = 1;
chalikias 0:a61d29450691 72 wait_ms(100);
chalikias 0:a61d29450691 73 led2 = 0;
chalikias 0:a61d29450691 74 os.SetEvent(T2_TO_T3_EVENT, TASK3_ID);
chalikias 0:a61d29450691 75 }
chalikias 0:a61d29450691 76 }
chalikias 0:a61d29450691 77
chalikias 0:a61d29450691 78 void task3(void)
chalikias 0:a61d29450691 79 {
chalikias 0:a61d29450691 80 while(1){
chalikias 0:a61d29450691 81 os.WaitEvent(T2_TO_T3_EVENT);
chalikias 0:a61d29450691 82 led3 = 1;
chalikias 0:a61d29450691 83 wait_ms(100);
chalikias 0:a61d29450691 84 led3 = 0;
chalikias 0:a61d29450691 85 }
chalikias 0:a61d29450691 86 }