Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 // 2011.05.05 NX 00002 // This a test of [Andrew L] mbos 00003 // main.c copied from mbos.h comments 00004 // ** A 3d task added ** 00005 00006 00007 //* A typical simple example with two tasks, and one timer, might look like this: 00008 //* @code 00009 // mbos Blinky demonstration. 00010 // Task 1 toggles LED1 every second, under control of a timer. It then posts an event to 00011 // task 2 which flashed LED2 briefly. 00012 #include "mbed.h" 00013 #include "mbos.h" 00014 00015 #define TASK1_ID 1 // Id for task 1 (idle task is 0) 00016 #define TASK1_PRIO 50 // priority for task 1 00017 #define TASK1_STACK_SZ 32 // stack size for task 1 in words 00018 00019 #define TASK2_ID 2 // Id for task 2 00020 #define TASK2_PRIO 60 // priority for task 2 00021 #define TASK2_STACK_SZ 32 // stack size for task 2 in words 00022 00023 #define TASK3_ID 3 // Id for task 3 00024 #define TASK3_PRIO 70 // priority for task 3 00025 #define TASK3_STACK_SZ 32 // stack size for task 2 in words 00026 00027 #define TIMER0_ID 0 // Id for timer 0 00028 #define TIMER0_PERIOD 1000 // Time period in milliseconds 00029 #define TIMER0_EVENT 1 // Event flag (1 << 0) 00030 00031 #define T1_TO_T2_EVENT 2 // Event flag (1 << 1) 00032 #define T2_TO_T3_EVENT 2 // Event flag (1 << 1) 00033 00034 void task1(void); // task function prototypes 00035 void task2(void); 00036 void task3(void); 00037 00038 DigitalOut led1(LED1); 00039 DigitalOut led2(LED2); 00040 DigitalOut led3(LED3); 00041 mbos os(3, 1); // Instantiate mbos with 3 tasks & 1 timer 00042 00043 int main(void) 00044 { 00045 // Configure tasks and timers 00046 os.CreateTask(TASK1_ID, TASK1_PRIO, TASK1_STACK_SZ, task1); 00047 os.CreateTask(TASK2_ID, TASK2_PRIO, TASK2_STACK_SZ, task2); 00048 00049 os.CreateTask(TASK3_ID, TASK3_PRIO, TASK3_STACK_SZ, task3); 00050 00051 os.CreateTimer(TIMER0_ID, TIMER0_EVENT, TASK1_ID); 00052 // Start mbos 00053 os.Start(); 00054 // never return! 00055 } 00056 00057 void task1(void) 00058 { 00059 os.SetTimer(TIMER0_ID, TIMER0_PERIOD, TIMER0_PERIOD); 00060 while(1){ 00061 os.WaitEvent(TIMER0_EVENT); 00062 led1 = !led1; 00063 os.SetEvent(T1_TO_T2_EVENT, TASK2_ID); 00064 } 00065 } 00066 00067 void task2(void) 00068 { 00069 while(1){ 00070 os.WaitEvent(T1_TO_T2_EVENT); 00071 led2 = 1; 00072 wait_ms(100); 00073 led2 = 0; 00074 os.SetEvent(T2_TO_T3_EVENT, TASK3_ID); 00075 } 00076 } 00077 00078 void task3(void) 00079 { 00080 while(1){ 00081 os.WaitEvent(T2_TO_T3_EVENT); 00082 led3 = 1; 00083 wait_ms(100); 00084 led3 = 0; 00085 } 00086 }
Generated on Wed Jul 13 2022 06:35:50 by
1.7.2