harsha abeykoon
/
rtest
if line number 55 is omitted the program runs. But why?
main.cpp@0:e1853421807f, 2012-01-11 (annotated)
- Committer:
- harsha
- Date:
- Wed Jan 11 05:12:37 2012 +0000
- Revision:
- 0:e1853421807f
mbos with fprintf
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
harsha | 0:e1853421807f | 1 | // mbos Blinky demonstration. |
harsha | 0:e1853421807f | 2 | // Task 1 toggles LED1 every second, under control of a timer. It then posts an event to |
harsha | 0:e1853421807f | 3 | // task 2 which flashed LED2 briefly. |
harsha | 0:e1853421807f | 4 | #include "mbed.h" |
harsha | 0:e1853421807f | 5 | #include "mbos.h" |
harsha | 0:e1853421807f | 6 | |
harsha | 0:e1853421807f | 7 | #define TASK1_ID 1 // Id for task 1 (idle task is 0) |
harsha | 0:e1853421807f | 8 | #define TASK1_PRIO 95 // priority for task 1 |
harsha | 0:e1853421807f | 9 | #define TASK1_STACK_SZ 64 // stack size for task 1 in words |
harsha | 0:e1853421807f | 10 | #define TASK2_ID 2 // Id for task 2 |
harsha | 0:e1853421807f | 11 | #define TASK2_PRIO 65 // priority for task 2 |
harsha | 0:e1853421807f | 12 | #define TASK2_STACK_SZ 64 // stack size for task 2 in words |
harsha | 0:e1853421807f | 13 | #define TIMER0_ID 0 // Id for timer 0 |
harsha | 0:e1853421807f | 14 | #define TIMER0_PERIOD 1000 // Time period in milliseconds |
harsha | 0:e1853421807f | 15 | #define TIMER0_EVENT 1 // Event flag (1 << 0) |
harsha | 0:e1853421807f | 16 | #define T1_TO_T2_EVENT 2 // Event flag (1 << 1) |
harsha | 0:e1853421807f | 17 | |
harsha | 0:e1853421807f | 18 | LocalFileSystem local("local"); |
harsha | 0:e1853421807f | 19 | FILE *fp ; |
harsha | 0:e1853421807f | 20 | void task1(void); // task function prototypes |
harsha | 0:e1853421807f | 21 | void task2(void); |
harsha | 0:e1853421807f | 22 | |
harsha | 0:e1853421807f | 23 | DigitalOut led1(LED1); |
harsha | 0:e1853421807f | 24 | DigitalOut led2(LED2); |
harsha | 0:e1853421807f | 25 | mbos os(2, 1); // Instantiate mbos with 2 tasks & 1 timer |
harsha | 0:e1853421807f | 26 | int i=0; |
harsha | 0:e1853421807f | 27 | int main(void) |
harsha | 0:e1853421807f | 28 | { |
harsha | 0:e1853421807f | 29 | FILE *fp = fopen("/local/out.txt", "w"); |
harsha | 0:e1853421807f | 30 | // Configure tasks and timers |
harsha | 0:e1853421807f | 31 | os.CreateTask(TASK1_ID, TASK1_PRIO, TASK1_STACK_SZ, task1); |
harsha | 0:e1853421807f | 32 | os.CreateTask(TASK2_ID, TASK2_PRIO, TASK2_STACK_SZ, task2); |
harsha | 0:e1853421807f | 33 | os.CreateTimer(TIMER0_ID, TIMER0_EVENT, TASK1_ID); |
harsha | 0:e1853421807f | 34 | // Start mbos |
harsha | 0:e1853421807f | 35 | os.Start(); |
harsha | 0:e1853421807f | 36 | // never return! |
harsha | 0:e1853421807f | 37 | } |
harsha | 0:e1853421807f | 38 | |
harsha | 0:e1853421807f | 39 | void task1(void) |
harsha | 0:e1853421807f | 40 | { |
harsha | 0:e1853421807f | 41 | os.SetTimer(TIMER0_ID, TIMER0_PERIOD, TIMER0_PERIOD); |
harsha | 0:e1853421807f | 42 | while(i<15){ |
harsha | 0:e1853421807f | 43 | os.WaitEvent(TIMER0_EVENT); |
harsha | 0:e1853421807f | 44 | led1 = !led1; |
harsha | 0:e1853421807f | 45 | i++; |
harsha | 0:e1853421807f | 46 | |
harsha | 0:e1853421807f | 47 | } |
harsha | 0:e1853421807f | 48 | } |
harsha | 0:e1853421807f | 49 | |
harsha | 0:e1853421807f | 50 | void task2(void) |
harsha | 0:e1853421807f | 51 | { |
harsha | 0:e1853421807f | 52 | while(i<15){ |
harsha | 0:e1853421807f | 53 | |
harsha | 0:e1853421807f | 54 | led2 = !led2; |
harsha | 0:e1853421807f | 55 | fprintf(fp, "Hello World!"); |
harsha | 0:e1853421807f | 56 | |
harsha | 0:e1853421807f | 57 | wait_ms(100); |
harsha | 0:e1853421807f | 58 | |
harsha | 0:e1853421807f | 59 | } |
harsha | 0:e1853421807f | 60 | fclose(fp); |
harsha | 0:e1853421807f | 61 | } |