Guilherme Sionek
/
OS_test
main.cpp
- Committer:
- gsionek
- Date:
- 2012-02-06
- Revision:
- 0:5f6928f781dc
File content as of revision 0:5f6928f781dc:
#include "mbed.h" #include "mbos.h" #define TASK1_ID 1 // Id for task 1 (idle task is 0) #define TASK1_PRIO 40 // priority for task 1 #define TASK1_STACK_SZ 32 // stack size for task 1 in words #define TASK2_ID 2 // Id for task 2 #define TASK2_PRIO 30 // priority for task 2 #define TASK2_STACK_SZ 1024 // stack size for task 2 in words #define TIMER0_ID 0 // Id for timer 0 #define TIMER0_PERIOD 1000 // Time period in milliseconds #define TIMER0_EVENT 1 // Event flag (1 << 0) #define TIMER1_ID 1 #define TIMER1_PERIOD 200 #define TIMER1_EVENT 2 #define N_TASKS 2 #define N_TIMERS 2 void task1(void); //led void task2(void); //serial DigitalOut led1(LED1); DigitalOut led2(LED2); Serial pc(USBTX, USBRX); mbos os(N_TASKS,N_TIMERS); int main(void) { os.CreateTask(TASK1_ID,TASK1_PRIO,TASK1_STACK_SZ,task1); os.CreateTask(TASK2_ID,TASK2_PRIO,TASK2_STACK_SZ,task2); os.CreateTimer(TIMER0_ID,TIMER0_EVENT,TASK1_ID); os.CreateTimer(TIMER1_ID,TIMER1_EVENT,TASK2_ID); os.Start(); } void task1(void) { os.SetTimer(TIMER0_ID,TIMER0_PERIOD,TIMER0_PERIOD); while(1){ os.WaitEvent(TIMER0_EVENT); led1 = !led1; } } void task2(void) { os.SetTimer(TIMER1_ID,TIMER1_PERIOD,TIMER1_PERIOD); while(1){ os.WaitEvent(TIMER1_EVENT); led2 = !led2; if(pc.readable()) switch(pc.getc()){ case '1': pc.printf("Bonjour\n\r"); break; case '2': pc.printf("Bonsoir\r\n"); break; } } }