/*\r
- FreeRTOS.org V4.0.4 - Copyright (C) 2003-2006 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
+ FreeRTOS V7.0.1 - Copyright (C) 2011 Real Time Engineers Ltd.\r
+ \r
+\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 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
+ by writing to Richard Barry, contact details for whom are available on the\r
+ FreeRTOS WEB site.\r
+\r
+ 1 tab == 4 spaces!\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
/* FIFO setting for the UART. The FIFO is not used to create a better test. */\r
#define commsFIFO_SET ( 0x10 )\r
\r
-/* The string that is transmitted on the UART contains sequentially the \r
+/* The string that is transmitted on the UART contains sequentially the\r
characters from commsFIRST_TX_CHAR to commsLAST_TX_CHAR. */\r
#define commsFIRST_TX_CHAR '0'\r
#define commsLAST_TX_CHAR 'z'\r
\r
/* Just used to walk through the program memory in order that some random data\r
can be generated. */\r
-#define commsTOTAL_PROGRAM_MEMORY ( ( unsigned portLONG * ) ( 8 * 1024 ) )\r
-#define commsFIRST_PROGRAM_BYTES ( ( unsigned portLONG * ) 4 )\r
+#define commsTOTAL_PROGRAM_MEMORY ( ( unsigned long * ) ( 8 * 1024 ) )\r
+#define commsFIRST_PROGRAM_BYTES ( ( unsigned long * ) 4 )\r
\r
/* The time between transmissions of the string on UART 0. This is pseudo\r
random in order to generate a bit or randomness to when the interrupts occur.*/\r
static xQueueHandle xCommsQueue;\r
\r
/* The next character to transmit. */\r
-static portCHAR cNextChar;\r
+static char cNextChar;\r
\r
/*-----------------------------------------------------------*/\r
\r
{\r
/* Create the queue used to communicate between the UART ISR and the Comms\r
Rx task. */\r
- xCommsQueue = xQueueCreate( commsRX_QUEUE_LEN, sizeof( portCHAR ) );\r
+ xCommsQueue = xQueueCreate( commsRX_QUEUE_LEN, sizeof( char ) );\r
\r
/* Enable the UART. GPIOA has already been initialised. */\r
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);\r
GPIODirModeSet( GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1, GPIO_DIR_MODE_HW );\r
\r
/* Configure the UART for 8-N-1 operation. */\r
- UARTConfigSet( UART0_BASE, commsBAUD_RATE, UART_CONFIG_WLEN_8 | UART_CONFIG_PAR_NONE | UART_CONFIG_STOP_ONE );\r
+ UARTConfigSetExpClk( UART0_BASE, SysCtlClockGet(), commsBAUD_RATE, UART_CONFIG_WLEN_8 | UART_CONFIG_PAR_NONE | UART_CONFIG_STOP_ONE );\r
\r
/* We dont want to use the fifo. This is for test purposes to generate\r
as many interrupts as possible. */\r
\r
/* Enable both Rx and Tx interrupts. */\r
HWREG( UART0_BASE + UART_O_IM ) |= ( UART_INT_TX | UART_INT_RX );\r
+ IntPrioritySet( INT_UART0, configKERNEL_INTERRUPT_PRIORITY );\r
IntEnable( INT_UART0 );\r
}\r
/*-----------------------------------------------------------*/\r
void vSerialTxCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )\r
{\r
portTickType xDelayPeriod;\r
-static unsigned portLONG *pulRandomBytes = commsFIRST_PROGRAM_BYTES;\r
+static unsigned long *pulRandomBytes = commsFIRST_PROGRAM_BYTES;\r
\r
/* Co-routine MUST start with a call to crSTART. */\r
crSTART( xHandle );\r
\r
void vUART_ISR( void )\r
{\r
-unsigned portLONG ulStatus;\r
-portCHAR cRxedChar;\r
-portBASE_TYPE xTaskWokenByPost = pdFALSE;\r
+unsigned long ulStatus;\r
+char cRxedChar;\r
+portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;\r
\r
/* What caused the interrupt. */\r
ulStatus = UARTIntStatus( UART0_BASE, pdTRUE );\r
if( ( HWREG(UART0_BASE + UART_O_FR ) & UART_FR_RXFF ) )\r
{\r
/* Get the char from the buffer and post it onto the queue of\r
- Rxed chars. Posting the character should wake the task that is \r
+ Rxed chars. Posting the character should wake the task that is\r
blocked on the queue waiting for characters. */\r
- cRxedChar = ( portCHAR ) HWREG( UART0_BASE + UART_O_DR );\r
- xTaskWokenByPost = xQueueSendFromISR( xCommsQueue, &cRxedChar, xTaskWokenByPost );\r
+ cRxedChar = ( char ) HWREG( UART0_BASE + UART_O_DR );\r
+ xQueueSendFromISR( xCommsQueue, &cRxedChar, &xHigherPriorityTaskWoken );\r
} \r
}\r
\r
}\r
}\r
\r
- if( xTaskWokenByPost )\r
- {\r
- /* If a task was woken by the character being received then we force\r
- a context switch to occur in case the task is of higher priority than\r
- the currently executing task (i.e. the task that this interrupt \r
- interrupted.) */\r
- portEND_SWITCHING_ISR( xTaskWokenByPost );\r
- }\r
+ /* If a task was woken by the character being received then we force\r
+ a context switch to occur in case the task is of higher priority than\r
+ the currently executing task (i.e. the task that this interrupt\r
+ interrupted.) */\r
+ portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );\r
}\r
/*-----------------------------------------------------------*/\r
\r
void vCommsRxTask( void * pvParameters )\r
{\r
-static portCHAR cRxedChar, cExpectedChar;\r
+static char cRxedChar, cExpectedChar;\r
\r
/* Set the char we expect to receive to the start of the string. */\r
cExpectedChar = commsFIRST_TX_CHAR;\r
{\r
if( cExpectedChar == commsLAST_TX_CHAR )\r
{\r
- /* We have reached the end of the string - we now expect to \r
- receive the first character in the string again. The LED is \r
+ /* We have reached the end of the string - we now expect to\r
+ receive the first character in the string again. The LED is\r
toggled to indicate that the entire string was received without\r
error. */\r
vParTestToggleLED( commsRX_LED );\r