]> git.sur5r.net Git - freertos/blobdiff - Demo/MSP430X_MSP430F5438_IAR/main.c
Tidy up the IAR MSP430X demo serial.c file.
[freertos] / Demo / MSP430X_MSP430F5438_IAR / main.c
index fe5e57fd2749c6a11c9d8cb9bf78e034aaf8984b..924d3f054b689ede373692b3f39384873ff8fd06 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V6.1.0 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+    FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.\r
 \r
     ***************************************************************************\r
     *                                                                         *\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
@@ -179,10 +179,13 @@ information.  */
 #define mainCOM_TEST_LED                               ( 1 )\r
 \r
 /* The baud rate used by the comtest tasks described at the top of this file. */\r
-#define mainCOM_TEST_BAUD_RATE                 ( 115200 )\r
+#define mainCOM_TEST_BAUD_RATE                 ( 38400 )\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
@@ -236,6 +239,11 @@ typedef struct
 \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
+#pragma location="ISR_CODE"\r
 void main( void )\r
 {\r
        /* Configure the peripherals used by this demo application.  This includes\r
@@ -261,10 +269,10 @@ void main( void )
                \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, "Reg1", configMINIMAL_STACK_SIZE, NULL, 0, NULL );\r
-               xTaskCreate( vRegTest2Task, "Reg2", configMINIMAL_STACK_SIZE, NULL, 0, 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
 \r
                /* Start the scheduler. */\r
                vTaskStartScheduler();\r
@@ -299,6 +307,14 @@ unsigned char ucLine = 1;
        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
@@ -334,10 +350,8 @@ unsigned char ucLine = 1;
                                                                                                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
@@ -554,10 +568,10 @@ portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
 \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
@@ -588,8 +602,8 @@ const unsigned short usACLK_Frequency_Hz = 32768;
 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