Ivo van Poorten
/
opus-una
A Small Cooperative Multitasking Kernel
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Wed Jul 13 2022 20:40:52 by 1.7.2