![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
main.cpp@0:5f6928f781dc, 2012-02-06 (annotated)
- Committer:
- gsionek
- Date:
- Mon Feb 06 14:24:59 2012 +0000
- Revision:
- 0:5f6928f781dc
Who changed what in which revision?
User | Revision | Line number | New 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 | } |