/*\r
- FreeRTOS V6.1.0 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V7.0.0 - Copyright (C) 2011 Real Time Engineers Ltd.\r
+ \r
\r
***************************************************************************\r
- * *\r
- * If you are: *\r
- * *\r
- * + New to FreeRTOS, *\r
- * + Wanting to learn FreeRTOS or multitasking in general quickly *\r
- * + Looking for basic training, *\r
- * + Wanting to improve your FreeRTOS skills and productivity *\r
- * *\r
- * then take a look at the FreeRTOS books - available as PDF or paperback *\r
- * *\r
- * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *\r
- * http://www.FreeRTOS.org/Documentation *\r
- * *\r
- * A pdf reference manual is also available. Both are usually delivered *\r
- * to your inbox within 20 minutes to two hours when purchased between 8am *\r
- * and 8pm GMT (although please allow up to 24 hours in case of *\r
- * exceptional circumstances). Thank you for your support! *\r
- * *\r
+ * *\r
+ * FreeRTOS tutorial books are available in pdf and paperback. *\r
+ * Complete, revised, and edited pdf reference manuals are also *\r
+ * available. *\r
+ * *\r
+ * Purchasing FreeRTOS documentation will not only help you, by *\r
+ * ensuring you get running as quickly as possible and with an *\r
+ * in-depth knowledge of how to use FreeRTOS, it will also help *\r
+ * the FreeRTOS project to continue with its mission of providing *\r
+ * professional grade, cross platform, de facto standard solutions *\r
+ * for microcontrollers - completely free of charge! *\r
+ * *\r
+ * >>> See http://www.FreeRTOS.org/Documentation for details. <<< *\r
+ * *\r
+ * Thank you for using FreeRTOS, and thank you for your support! *\r
+ * *\r
***************************************************************************\r
\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\r
- a combined work that includes FreeRTOS without being obliged to provide the\r
- source code for proprietary components outside of the FreeRTOS kernel.\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
+ >>>NOTE<<< The modification to the GPL is included to allow you to\r
+ distribute a combined work that includes FreeRTOS without being obliged to\r
+ provide the source code for proprietary components outside of the FreeRTOS\r
+ kernel. FreeRTOS is distributed in the hope that it will be useful, but\r
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
more details. You should have received a copy of the GNU General Public\r
License and the FreeRTOS license exception along with FreeRTOS; if not it\r
can be viewed here: http://www.freertos.org/a00114.html and also obtained\r
* error has occurred. The nature of the reg test tasks necessitates that they\r
* are written in assembly code.\r
*\r
- * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let\r
+ * *NOTE 1* vApplicationSetupTimerInterrupt() is called by the kernel to let\r
* the application set up a timer to generate the tick interrupt. In this\r
* example a timer A0 is used for this purpose.\r
*\r
\r
/* The maximum number of lines of text that can be displayed on the LCD. */\r
#define mainMAX_LCD_LINES ( 8 )\r
+\r
+/* Just used to ensure parameters are passed into tasks correctly. */\r
+#define mainTASK_PARAMETER_CHECK_VALUE ( ( void * ) 0xDEAD )\r
/*-----------------------------------------------------------*/\r
\r
/*\r
\r
/*-----------------------------------------------------------*/\r
\r
-/* The linker script tests the FreeRTOS ports use of 20bit addresses by\r
-locating all code in high memory. The following pragma ensures that main\r
-remains in low memory. The ISR_CODE segment is used for convenience as ISR\r
-functions are always placed in low memory. */\r
+/* The linker script can be used to test the FreeRTOS ports use of 20bit \r
+addresses by locating all code in high memory. The following pragma ensures \r
+that main remains in low memory when that is done. The ISR_CODE segment is used \r
+for convenience as ISR functions are always placed in low memory. */\r
#pragma location="ISR_CODE"\r
void main( void )\r
{\r
\r
/* Create the LCD, button poll and register test tasks, as described at\r
the top of this file. */\r
- xTaskCreate( prvLCDTask, ( signed char * ) "LCD", configMINIMAL_STACK_SIZE * 2, NULL, mainLCD_TASK_PRIORITY, NULL );\r
+ xTaskCreate( prvLCDTask, ( signed char * ) "LCD", configMINIMAL_STACK_SIZE * 2, mainTASK_PARAMETER_CHECK_VALUE, mainLCD_TASK_PRIORITY, NULL );\r
xTaskCreate( prvButtonPollTask, ( signed char * ) "BPoll", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );\r
xTaskCreate( vRegTest1Task, ( signed char * ) "Reg1", configMINIMAL_STACK_SIZE, NULL, 0, NULL );\r
xTaskCreate( vRegTest2Task, ( signed char * ) "Reg2", configMINIMAL_STACK_SIZE, NULL, 0, NULL );\r
First print out the number of bytes that remain in the FreeRTOS heap. This\r
can be viewed in the terminal IO window within the IAR Embedded Workbench. */\r
printf( "%d bytes of heap space remain unallocated\n", ( int ) xPortGetFreeHeapSize() );\r
+ \r
+ /* Just as a test of the port, and for no functional reason, check the task\r
+ parameter contains its expected value. */\r
+ if( pvParameters != mainTASK_PARAMETER_CHECK_VALUE )\r
+ {\r
+ halLcdPrintLine( "Invalid parameter", ucLine, OVERWRITE_TEXT );\r
+ ucLine++; \r
+ }\r
\r
for( ;; )\r
{\r
the terminal IO window in the IAR\r
embedded workbench. */\r
printf( "\nTask\t Abs Time\t %%Time\n*****************************************" );\r
- fflush( stdout );\r
vTaskGetRunTimeStats( ( signed char * ) cBuffer );\r
printf( cBuffer );\r
- fflush( stdout );\r
\r
/* Also print out a message to\r
the LCD - in this case the\r
\r
/* The MSP430X port uses this callback function to configure its tick interrupt.\r
This allows the application to choose the tick interrupt source.\r
-configTICK_INTERRUPT_VECTOR must also be set in FreeRTOSConfig.h to the correct\r
+configTICK_VECTOR must also be set in FreeRTOSConfig.h to the correct\r
interrupt vector for the chosen tick interrupt source. This implementation of\r
vApplicationSetupTimerInterrupt() generates the tick from timer A0, so in this\r
-case configTICK_INTERRUPT_VECTOR is set to TIMER0_A0_VECTOR. */\r
+case configTICK_VECTOR is set to TIMER0_A0_VECTOR. */\r
void vApplicationSetupTimerInterrupt( void )\r
{\r
const unsigned short usACLK_Frequency_Hz = 32768;\r
void vApplicationIdleHook( void )\r
{\r
/* Called on each iteration of the idle task. In this case the idle task\r
- just enters a low(ish) power mode. */\r
- __bis_SR_register( LPM1_bits + GIE );\r
+ just enters a low power mode. */\r
+ __bis_SR_register( LPM3_bits + GIE );\r
}\r
/*-----------------------------------------------------------*/\r
\r