]> git.sur5r.net Git - freertos/blobdiff - Demo/msp430_CrossWorks/main.c
Remove unnecessary use of portLONG, portCHAR and portSHORT.
[freertos] / Demo / msp430_CrossWorks / main.c
index 0e157d3ee50f5a7ef279e699bebf5362963806a1..9ebb3bfdd7b96c2d57553c9b70a5fb4c288d9ea2 100644 (file)
@@ -1,36 +1,49 @@
 /*\r
-       FreeRTOS.org V4.5.0 - Copyright (C) 2003-2007 Richard Barry.\r
-\r
-       This file is part of the FreeRTOS.org distribution.\r
-\r
-       FreeRTOS.org is free software; you can redistribute it and/or modify\r
-       it under the terms of the GNU General Public License as published by\r
-       the Free Software Foundation; either version 2 of the License, or\r
-       (at your option) any later version.\r
-\r
-       FreeRTOS.org is distributed in the hope that it will be useful,\r
-       but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-       GNU General Public License for more details.\r
-\r
-       You should have received a copy of the GNU General Public License\r
-       along with FreeRTOS.org; if not, write to the Free Software\r
-       Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-\r
-       A special exception to the GPL can be applied should you wish to distribute\r
-       a combined work that includes FreeRTOS.org, without being obliged to provide\r
-       the source code for any proprietary components.  See the licensing section \r
-       of http://www.FreeRTOS.org for full details of how and when the exception\r
-       can be applied.\r
-\r
-       ***************************************************************************\r
-       See http://www.FreeRTOS.org for documentation, latest information, license \r
-       and contact details.  Please ensure to read the configuration and relevant \r
-       port sections of the online documentation.\r
-\r
-       Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along\r
-       with commercial development and support options.\r
-       ***************************************************************************\r
+    FreeRTOS V6.0.0 - Copyright (C) 2009 Real Time Engineers Ltd.\r
+\r
+    This file is part of the FreeRTOS distribution.\r
+\r
+    FreeRTOS is free software; you can redistribute it and/or modify it    under\r
+    the terms of the GNU General Public License (version 2) as published by the\r
+    Free Software Foundation and modified by the FreeRTOS exception.\r
+    **NOTE** The exception to the GPL is included to allow you to distribute a\r
+    combined work that includes FreeRTOS without being obliged to provide the\r
+    source code for proprietary components outside of the FreeRTOS kernel.\r
+    Alternative commercial license and support terms are also available upon\r
+    request.  See the licensing section of http://www.FreeRTOS.org for full\r
+    license details.\r
+\r
+    FreeRTOS is distributed in the hope that it will be useful,    but WITHOUT\r
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+    more details.\r
+\r
+    You should have received a copy of the GNU General Public License along\r
+    with FreeRTOS; if not, write to the Free Software Foundation, Inc., 59\r
+    Temple Place, Suite 330, Boston, MA  02111-1307  USA.\r
+\r
+\r
+    ***************************************************************************\r
+    *                                                                         *\r
+    * The FreeRTOS eBook and reference manual are available to purchase for a *\r
+    * small fee. Help yourself get started quickly while also helping the     *\r
+    * FreeRTOS project! See http://www.FreeRTOS.org/Documentation for details *\r
+    *                                                                         *\r
+    ***************************************************************************\r
+\r
+    1 tab == 4 spaces!\r
+\r
+    Please ensure to read the configuration and relevant port sections of the\r
+    online documentation.\r
+\r
+    http://www.FreeRTOS.org - Documentation, latest information, license and\r
+    contact details.\r
+\r
+    http://www.SafeRTOS.com - A version that is certified for use in safety\r
+    critical systems.\r
+\r
+    http://www.OpenRTOS.com - Commercial support, development, porting,\r
+    licensing and training services.\r
 */\r
 \r
 /*\r
@@ -74,8 +87,8 @@
 #include "PollQ.h"\r
 \r
 /* Constants required for hardware setup. */\r
-#define mainALL_BITS_OUTPUT            ( ( unsigned portCHAR ) 0xff )\r
-#define mainMAX_FREQUENCY              ( ( unsigned portCHAR ) 121 )\r
+#define mainALL_BITS_OUTPUT            ( ( unsigned char ) 0xff )\r
+#define mainMAX_FREQUENCY              ( ( unsigned char ) 121 )\r
 \r
 /* Constants that define the LED's used by the various tasks. [in this case\r
 the '*' characters on the LCD represent LED's] */\r
@@ -89,7 +102,7 @@ the '*' characters on the LCD represent LED's] */
 #define mainLED_TASK_PRIORITY                  ( tskIDLE_PRIORITY + 1 )\r
 \r
 /* Baud rate used by the COM test tasks. */\r
-#define mainCOM_TEST_BAUD_RATE                 ( ( unsigned portLONG ) 19200 )\r
+#define mainCOM_TEST_BAUD_RATE                 ( ( unsigned long ) 19200 )\r
 \r
 /* The frequency at which the 'Check' tasks executes.  See the comments at the \r
 top of the page.  When the system is operating error free the 'Check' task\r
@@ -100,10 +113,10 @@ LCD represent LED's]*/
 #define mainERROR_CHECK_DELAY                  ( ( portTickType ) 500 / portTICK_RATE_MS  )\r
 \r
 /* The constants used in the calculation. */\r
-#define intgCONST1                             ( ( portLONG ) 123 )\r
-#define intgCONST2                             ( ( portLONG ) 234567 )\r
-#define intgCONST3                             ( ( portLONG ) -3 )\r
-#define intgCONST4                             ( ( portLONG ) 7 )\r
+#define intgCONST1                             ( ( long ) 123 )\r
+#define intgCONST2                             ( ( long ) 234567 )\r
+#define intgCONST3                             ( ( long ) -3 )\r
+#define intgCONST4                             ( ( long ) 7 )\r
 #define intgEXPECTED_ANSWER            ( ( ( intgCONST1 + intgCONST2 ) * intgCONST3 ) / intgCONST4 )\r
 \r
 /* \r
@@ -116,7 +129,7 @@ static void vErrorChecks( void *pvParameters );
  * Called by the Check task.  Returns pdPASS if all the other tasks are found\r
  * to be operating without error - otherwise returns pdFAIL.\r
  */\r
-static portSHORT prvCheckOtherTasksAreStillRunning( void );\r
+static short prvCheckOtherTasksAreStillRunning( void );\r
 \r
 /* \r
  * Perform the hardware setup required by the ES449 in order to run the demo\r
@@ -126,6 +139,7 @@ static void prvSetupHardware( void );
 \r
 \r
 portBASE_TYPE xLocalError = pdFALSE;\r
+volatile unsigned long ulIdleLoops = 0UL;\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
@@ -145,7 +159,7 @@ int main( void )
        vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );\r
 \r
        /* Start the 'Check' task which is defined in this file. */\r
-       xTaskCreate( vErrorChecks, ( const signed portCHAR * const ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );  \r
+       xTaskCreate( vErrorChecks, ( const signed char * const ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );      \r
 \r
        /* Start the scheduler. */\r
        vTaskStartScheduler();\r
@@ -184,9 +198,10 @@ portTickType xDelayPeriod = mainNO_ERROR_CHECK_DELAY;
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-static portSHORT prvCheckOtherTasksAreStillRunning( void )\r
+static short prvCheckOtherTasksAreStillRunning( void )\r
 {\r
-static portSHORT sNoErrorFound = pdTRUE;\r
+static short sNoErrorFound = pdTRUE;\r
+static unsigned long ulLastIdleLoopCount = 0UL;\r
 \r
        /* The demo tasks maintain a count that increments every cycle of the task\r
        provided that the task has never encountered an error.  This function \r
@@ -214,6 +229,15 @@ static portSHORT sNoErrorFound = pdTRUE;
        {\r
                sNoErrorFound = pdFALSE;\r
        }\r
+\r
+    if( ulIdleLoops == ulLastIdleLoopCount )\r
+    {\r
+        sNoErrorFound = pdFALSE;\r
+    }\r
+    else\r
+    {\r
+        ulLastIdleLoopCount = ulIdleLoops;\r
+    }\r
        \r
        return sNoErrorFound;\r
 }\r
@@ -250,7 +274,7 @@ void vApplicationIdleHook( void ) __toplevel
 {\r
 /* These variables are all effectively set to constants so they are volatile to\r
 ensure the compiler does not just get rid of them. */\r
-volatile portLONG lValue;\r
+volatile long lValue;\r
 volatile signed portBASE_TYPE *pxTaskHasExecuted;\r
 \r
        /* Keep performing a calculation and checking the result against a constant. */\r
@@ -287,6 +311,11 @@ volatile signed portBASE_TYPE *pxTaskHasExecuted;
                        taskYIELD();\r
                }\r
                #endif\r
+\r
+        ulIdleLoops++;\r
+\r
+        /* Place the processor into low power mode. */\r
+        LPM3;\r
        }\r
 }\r
 \r