**NOTE** The exception to the GPL is included to allow you to distribute a\r
combined work that includes FreeRTOS.org without being obliged to provide\r
the source code for any proprietary components. Alternative commercial\r
- license and support terms are also available upon request. See the \r
+ license and support terms are also available upon request. See the\r
licensing section of http://www.FreeRTOS.org for full details.\r
\r
FreeRTOS.org is distributed in the hope that it will be useful, but WITHOUT\r
* This file contains a demo created to execute on the Rowley Associates\r
* LPC2138 CrossFire development board.\r
*\r
- * main() creates all the demo application tasks, then starts the scheduler. \r
- * The WEB documentation provides more details of the standard demo application \r
+ * main() creates all the demo application tasks, then starts the scheduler.\r
+ * The WEB documentation provides more details of the standard demo application\r
* tasks.\r
- * \r
- * Main.c also creates a task called "Check". This only executes every few \r
- * seconds but has a high priority so is guaranteed to get processor time. \r
+ *\r
+ * Main.c also creates a task called "Check". This only executes every few\r
+ * seconds but has a high priority so is guaranteed to get processor time.\r
* Its function is to check that all the other tasks are still operational.\r
- * Each standard demo task maintains a unique count that is incremented each \r
- * time the task successfully completes its function. Should any error occur \r
- * within such a task the count is permanently halted. The check task inspects \r
- * the count of each task to ensure it has changed since the last time the \r
- * check task executed. If all the count variables have changed all the tasks \r
+ * Each standard demo task maintains a unique count that is incremented each\r
+ * time the task successfully completes its function. Should any error occur\r
+ * within such a task the count is permanently halted. The check task inspects\r
+ * the count of each task to ensure it has changed since the last time the\r
+ * check task executed. If all the count variables have changed all the tasks\r
* are still executing error free, and the check task writes "PASS" to the\r
- * CrossStudio terminal IO window. Should any task contain an error at any time \r
+ * CrossStudio terminal IO window. Should any task contain an error at any time\r
* the error is latched and "FAIL" written to the terminal IO window.\r
*\r
* Finally, main() sets up an interrupt service routine and task to handle\r
* pushes of the button that is built into the CrossFire board. When the button\r
* is pushed the ISR wakes the button task - which generates a table of task\r
- * status information which is also displayed on the terminal IO window. \r
+ * status information which is also displayed on the terminal IO window.\r
*\r
- * A print task is defined to ensure exclusive and consistent access to the \r
+ * A print task is defined to ensure exclusive and consistent access to the\r
* terminal IO. This is the only task that is allowed to access the terminal.\r
- * The check and button task therefore do not access the terminal directly but \r
+ * The check and button task therefore do not access the terminal directly but\r
* instead pass a pointer to the message they wish to display to the print task.\r
*/\r
\r
#include "PollQ.h"\r
#include "blocktim.h"\r
#include "recmutex.h"\r
+#include "semtest.h"\r
\r
/* Hardware configuration definitions. */\r
#define mainBUS_CLK_FULL ( ( unsigned portCHAR ) 0x01 )\r
handler. */\r
xSemaphoreHandle xButtonSemaphore;\r
\r
-/* The queue that is used to send message to vPrintTask for display in the \r
+/* The queue that is used to send message to vPrintTask for display in the\r
terminal output window. */\r
xQueueHandle xPrintQueue;\r
\r
\r
#if configUSE_PREEMPTION == 1\r
{\r
- /* The timing of console output when not using the preemptive \r
+ /* The timing of console output when not using the preemptive\r
scheduler causes the block time tests to detect a timing problem. */\r
vCreateBlockTimeTasks();\r
}\r
{\r
xErrorOccurred = pdTRUE;\r
}\r
- \r
+\r
if( xArePollingQueuesStillRunning() != pdTRUE )\r
{\r
xErrorOccurred = pdTRUE;\r
}\r
- \r
+\r
if( xAreSemaphoreTasksStillRunning() != pdTRUE )\r
{\r
xErrorOccurred = pdTRUE;\r
}\r
- \r
+\r
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )\r
{\r
xErrorOccurred = pdTRUE;\r
}\r
- \r
+\r
if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
{\r
xErrorOccurred = pdTRUE;\r
\r
#if configUSE_PREEMPTION == 1\r
{\r
- /* The timing of console output when not using the preemptive \r
+ /* The timing of console output when not using the preemptive\r
scheduler causes the block time tests to detect a timing problem. */\r
if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )\r
{\r
extern void (vButtonISRWrapper) ( void );\r
\r
/* Configure the interrupt. */\r
- portENTER_CRITICAL(); \r
+ portENTER_CRITICAL();\r
{\r
/* Configure P0.14 to generate interrupts. */\r
- PINSEL0 |= mainP0_14__EINT_1; \r
+ PINSEL0 |= mainP0_14__EINT_1;\r
EXTMODE = mainEINT_1_EDGE_SENSITIVE;\r
EXTPOLAR = mainEINT_1_FALLING_EDGE_SENSITIVE;\r
\r