Dependencies:   mbos mbed

Committer:
gsionek
Date:
Mon Feb 06 14:24:59 2012 +0000
Revision:
0:5f6928f781dc

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gsionek 0:5f6928f781dc 1 #include "mbed.h"
gsionek 0:5f6928f781dc 2 #include "mbos.h"
gsionek 0:5f6928f781dc 3
gsionek 0:5f6928f781dc 4
gsionek 0:5f6928f781dc 5 #define TASK1_ID 1 // Id for task 1 (idle task is 0)
gsionek 0:5f6928f781dc 6 #define TASK1_PRIO 40 // priority for task 1
gsionek 0:5f6928f781dc 7 #define TASK1_STACK_SZ 32 // stack size for task 1 in words
gsionek 0:5f6928f781dc 8 #define TASK2_ID 2 // Id for task 2
gsionek 0:5f6928f781dc 9 #define TASK2_PRIO 30 // priority for task 2
gsionek 0:5f6928f781dc 10 #define TASK2_STACK_SZ 1024 // stack size for task 2 in words
gsionek 0:5f6928f781dc 11 #define TIMER0_ID 0 // Id for timer 0
gsionek 0:5f6928f781dc 12 #define TIMER0_PERIOD 1000 // Time period in milliseconds
gsionek 0:5f6928f781dc 13 #define TIMER0_EVENT 1 // Event flag (1 << 0)
gsionek 0:5f6928f781dc 14 #define TIMER1_ID 1
gsionek 0:5f6928f781dc 15 #define TIMER1_PERIOD 200
gsionek 0:5f6928f781dc 16 #define TIMER1_EVENT 2
gsionek 0:5f6928f781dc 17
gsionek 0:5f6928f781dc 18
gsionek 0:5f6928f781dc 19 #define N_TASKS 2
gsionek 0:5f6928f781dc 20 #define N_TIMERS 2
gsionek 0:5f6928f781dc 21
gsionek 0:5f6928f781dc 22 void task1(void); //led
gsionek 0:5f6928f781dc 23 void task2(void); //serial
gsionek 0:5f6928f781dc 24
gsionek 0:5f6928f781dc 25 DigitalOut led1(LED1);
gsionek 0:5f6928f781dc 26 DigitalOut led2(LED2);
gsionek 0:5f6928f781dc 27 Serial pc(USBTX, USBRX);
gsionek 0:5f6928f781dc 28
gsionek 0:5f6928f781dc 29 mbos os(N_TASKS,N_TIMERS);
gsionek 0:5f6928f781dc 30
gsionek 0:5f6928f781dc 31 int main(void)
gsionek 0:5f6928f781dc 32 {
gsionek 0:5f6928f781dc 33 os.CreateTask(TASK1_ID,TASK1_PRIO,TASK1_STACK_SZ,task1);
gsionek 0:5f6928f781dc 34 os.CreateTask(TASK2_ID,TASK2_PRIO,TASK2_STACK_SZ,task2);
gsionek 0:5f6928f781dc 35 os.CreateTimer(TIMER0_ID,TIMER0_EVENT,TASK1_ID);
gsionek 0:5f6928f781dc 36 os.CreateTimer(TIMER1_ID,TIMER1_EVENT,TASK2_ID);
gsionek 0:5f6928f781dc 37
gsionek 0:5f6928f781dc 38 os.Start();
gsionek 0:5f6928f781dc 39 }
gsionek 0:5f6928f781dc 40
gsionek 0:5f6928f781dc 41 void task1(void)
gsionek 0:5f6928f781dc 42 {
gsionek 0:5f6928f781dc 43 os.SetTimer(TIMER0_ID,TIMER0_PERIOD,TIMER0_PERIOD);
gsionek 0:5f6928f781dc 44 while(1){
gsionek 0:5f6928f781dc 45 os.WaitEvent(TIMER0_EVENT);
gsionek 0:5f6928f781dc 46 led1 = !led1;
gsionek 0:5f6928f781dc 47 }
gsionek 0:5f6928f781dc 48 }
gsionek 0:5f6928f781dc 49
gsionek 0:5f6928f781dc 50 void task2(void)
gsionek 0:5f6928f781dc 51 {
gsionek 0:5f6928f781dc 52 os.SetTimer(TIMER1_ID,TIMER1_PERIOD,TIMER1_PERIOD);
gsionek 0:5f6928f781dc 53 while(1){
gsionek 0:5f6928f781dc 54 os.WaitEvent(TIMER1_EVENT);
gsionek 0:5f6928f781dc 55 led2 = !led2;
gsionek 0:5f6928f781dc 56 if(pc.readable())
gsionek 0:5f6928f781dc 57 switch(pc.getc()){
gsionek 0:5f6928f781dc 58 case '1':
gsionek 0:5f6928f781dc 59 pc.printf("Bonjour\n\r");
gsionek 0:5f6928f781dc 60 break;
gsionek 0:5f6928f781dc 61 case '2':
gsionek 0:5f6928f781dc 62 pc.printf("Bonsoir\r\n");
gsionek 0:5f6928f781dc 63 break;
gsionek 0:5f6928f781dc 64 }
gsionek 0:5f6928f781dc 65
gsionek 0:5f6928f781dc 66 }
gsionek 0:5f6928f781dc 67
gsionek 0:5f6928f781dc 68 }