]> git.sur5r.net Git - freertos/commitdiff
Update PIC32 serial.c slightly to add volatile qualifier and update to coding standard.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 14 Jul 2013 08:46:15 +0000 (08:46 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 14 Jul 2013 08:46:15 +0000 (08:46 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1979 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS/Demo/PIC32MX_MPLAB/serial/serial.c

index cdb34f30fadd4a28b30f3b2a8f49098fcf476276..12a36d3829db887d97c0bcac1419c2a7aaa9c207 100644 (file)
@@ -99,7 +99,7 @@ static xQueueHandle xRxedChars;
 static xQueueHandle xCharsForTx; \r
 \r
 /* Flag used to indicate the tx status. */\r
-static portBASE_TYPE xTxHasEnded;\r
+static volatile portBASE_TYPE xTxHasEnded;\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
@@ -151,21 +151,30 @@ signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedC
 \r
 signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, portTickType xBlockTime )\r
 {\r
+signed portBASE_TYPE xReturn;\r
+\r
        /* Only one port is supported. */\r
        ( void ) pxPort;\r
 \r
        /* Return false if after the block time there is no room on the Tx queue. */\r
        if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )\r
        {\r
-               return pdFAIL;\r
+               xReturn = pdFAIL;\r
+       }\r
+       else\r
+       {\r
+               xReturn = pdPASS;\r
        }\r
 \r
-       /* A critical section should not be required as xTxHasEnded will not be\r
-       written to by the ISR if it is already 0 (is this correct?). */\r
-       if( xTxHasEnded )\r
+       if( xReturn != pdFAIL )\r
        {\r
-               xTxHasEnded = pdFALSE;\r
-               IFS1SET = _IFS1_U2TXIF_MASK;\r
+               /* A critical section should not be required as xTxHasEnded will not be\r
+               written to by the ISR if it is already 0. */\r
+               if(  xTxHasEnded == pdTRUE )\r
+               {\r
+                       xTxHasEnded = pdFALSE;\r
+                       IFS1SET = _IFS1_U2TXIF_MASK;\r
+               }\r
        }\r
 \r
        return pdPASS;\r
@@ -201,7 +210,7 @@ static portBASE_TYPE xHigherPriorityTaskWoken;
        /* Are any Tx interrupts pending? */\r
        if( IFS1bits.U2TXIF == 1 )\r
        {\r
-               while( !( U2STAbits.UTXBF ) )\r
+               while( ( U2STAbits.UTXBF ) == 0 )\r
                {\r
                        if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )\r
                        {\r