A Small Cooperative Multitasking Kernel

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers tasks.c Source File

tasks.c

00001 #include "kernel.h"
00002 #include <mbed.h>
00003 
00004 static void task_zero(void);
00005 static void task_one(void);
00006 static void task_two(void);
00007 static void task_three(void);
00008 
00009 struct ou_task ou_tasks[] = {
00010     { task_zero,  2, 0, 0, 0, NULL },
00011     { task_one,   1, 0, 0, 0, NULL },
00012     { task_two,   5, 0, 0, 0, NULL },
00013     { task_three, 5, 0, 0, 0, NULL }
00014 };
00015 
00016 const unsigned ou_ntasks = sizeof(ou_tasks)/sizeof(struct ou_task);
00017 
00018 
00019 OU_TASK(task_zero)
00020     static DigitalOut led(LED1);
00021 
00022     OU_WAIT(100);
00023     led = 1;
00024     OU_WAIT(100);
00025     led = 0;
00026 OU_ENDTASK
00027 
00028 OU_TASK(task_one)
00029     static DigitalOut led(LED2);
00030 
00031     OU_WAIT(100);
00032     led = 1;
00033     OU_WAIT(100);
00034     led = 0;
00035     OU_WAIT(100);
00036     led = 1;
00037     for(;;) {
00038         OU_WAIT(50);
00039         led = 0;
00040         OU_WAIT(50);
00041         led = 1;
00042     }
00043 OU_ENDTASK
00044 
00045 OU_TASK(task_two)
00046     static DigitalOut led(LED3);
00047     for(;;) {
00048         OU_WAIT(100);
00049         led = !led;
00050     }
00051 OU_ENDTASK
00052 
00053 OU_TASK(task_three)
00054     static DigitalOut led(LED4);
00055     for(;;) {
00056         OU_WAIT(20);
00057         led = !led;
00058     }
00059 OU_ENDTASK