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.
Diff: main.c
- Revision:
- 0:9ce7c170cb66
diff -r 000000000000 -r 9ce7c170cb66 main.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.c Fri Jun 11 20:52:03 2010 +0000
@@ -0,0 +1,170 @@
+#include "mbed.h"
+#include "scheduler.h"
+
+#define ON 1
+#define OFF 0
+
+DigitalOut myLED(LED1); // LED for task A and B
+DigitalOut myLEDTaskC(LED2); // LED for Task C
+DigitalOut myLEDTaskD(LED3); // LED for Task D
+DigitalOut myLEDTaskE(LED4); // LED for Task E
+
+Timer t;
+Ticker keepAlive;
+
+// *******************************************************************************
+// * @brief "taskA" task code
+// * @param[in] None
+// * @param[out] None
+// * @retval bool
+// * @par Description
+// * @details This task use to print message "taskA running". Indicate "taskA"
+// * had been executed.
+// *******************************************************************************
+bool taskA(void* pData)
+{
+ static unsigned int cnt_numA = 0;
+
+ myLED = ON;
+ cnt_numA++;
+
+ return true;
+}
+
+// *******************************************************************************
+// * @brief "taskB" task code
+// * @param[in] None
+// * @param[out] None
+// * @retval bool
+// * @par Description
+// * @details This task use to print message "taskB running". Indicate "taskB"
+// * had been executed.
+// *******************************************************************************
+bool taskB(void* pData)
+{
+ static unsigned int cnt_numB = 0;
+
+ myLED = OFF;
+ cnt_numB++;
+
+ return true;
+}
+
+// *******************************************************************************
+// * @brief "taskC" task code
+// * @param[in] None
+// * @param[out] None
+// * @retval bool
+// * @par Description
+// * @details This task use to print message "tasC running". Indicate "taskC"
+// * had been executed.
+// *******************************************************************************
+bool taskC(void* pData)
+{
+ static unsigned int cnt_numC = 0;
+
+ myLEDTaskC = !myLEDTaskC.read();
+ cnt_numC++;
+
+ return true;
+}
+
+// *******************************************************************************
+// * @brief "taskD" task code
+// * @param[in] None
+// * @param[out] None
+// * @retval bool
+// * @par Description
+// * @details This task use to print message "taskB running". Indicate "taskD"
+// * had been executed.
+// *******************************************************************************
+bool taskD(void* pData)
+{
+ static unsigned int cnt_numD = 0;
+
+ myLEDTaskD = !myLEDTaskD.read();
+ cnt_numD++;
+
+ return true;
+}
+
+// *******************************************************************************
+// * @brief "taskE" task code
+// * @param[in] None
+// * @param[out] None
+// * @retval bool
+// * @par Description
+// * @details This task use to print message "taskE running". Indicate "taskE"
+// * had been executed.
+// *******************************************************************************
+bool taskE(void* pData)
+{
+ static unsigned int cnt_numE = 0;
+
+ myLEDTaskE = !myLEDTaskE.read();
+ cnt_numE++;
+
+ return true;
+}
+
+// *******************************************************************************
+// * @brief "taskF" task code
+// * @param[in] None
+// * @param[out] None
+// * @retval bool
+// * @par Description
+// * @details This task use to print message "taskF running". Indicate "taskF"
+// * had been executed.
+// *******************************************************************************
+bool taskF(void* pData)
+{
+ static unsigned int cnt_numF = 0;
+
+ cnt_numF++; // task is only running for 30 seconds -> cnt_numF has the value 5 than
+
+ return true;
+}
+
+// *******************************************************************************
+// * @brief "runningTasks" a Ticker routine
+// * @param[in] None
+// * @param[out] None
+// * @retval None
+// * @par Description
+// * @details This method is used to keep the scheduler alife
+// *
+// *******************************************************************************
+void runningTasks()
+{
+ // you can do this here in running Tasks or in the main routine while loop -> see below
+ schedulerRun(t.read_ms());
+}
+
+int main()
+{
+ schedulerInit(); // init and start scheduler
+
+ t.start(); // start task timer
+
+ int handleTaskA = schedulerAddTask(t.read_ms(), 0, 500, (taskfuncptr) taskA); // Task A is switching LED1 on
+ int handleTaskB = schedulerAddTask(t.read_ms(), 0, 1000, (taskfuncptr) taskB); // Task B is switching LED1 off
+ int handleTaskC = schedulerAddTask(t.read_ms(), 0, 200, (taskfuncptr) taskC); // Task C is switching LED2 on and off - every 200 ms -> five times per sec.
+ int handleTaskD = schedulerAddTask(t.read_ms(), 0, 100, (taskfuncptr) taskD); // Task D is switching LED3 on anf off - every 100 ms -> ten times per sec.
+ int handleTaskE = schedulerAddTask(t.read_ms(), 0, 500, (taskfuncptr) taskE); // Task E is switching LED4 on and off - vice versa to LED1 -> starting with on
+ int handleTaskF = schedulerAddTask(t.read_ms(), 6, 5000, (taskfuncptr) taskF); // Task F finished after 30 seconds
+
+
+ // the address of the function to be attached (runTasks) and the interval (,5 micro seconds)
+ keepAlive.attach_us(&runningTasks, 500);
+
+ while (1)
+ {
+ //// we can feed the scheduler here, too
+ ////schedulerRun(t.read_ms());
+ ////wait(0.001); //wait one ms
+ // with a short delay we can power down the controller here...
+ // or poll very fast variables that are set in interrupt service routines (ISR's) etc.
+ }
+ // The code don't reach here -> if so, a great mess occured
+}
+