#include "vectors.h"\r
#include "FreeRTOS.h"\r
#include "task.h"\r
-#include "semphr.h"\r
+#include "queue.h"\r
\r
static void vUART5Task( void *pvParameters );\r
\r
\r
void vInitUart5( void );\r
\r
-xSemaphoreHandle xSemaphore;\r
+\r
+static xQueueHandle xQueue;\r
\r
void vInitUart5( void )\r
{\r
volatile portSHORT i, len;\r
len = strlen( Name5 );\r
\r
- for( i = 0; i < strlen(Name5); i++ ) /* go through string */\r
+ for( i = 0; i < len; i++ ) /* go through string */\r
{\r
if( Name5[i] == 10 )\r
{\r
\r
void vUtilityStartTraceTask( unsigned portBASE_TYPE uxPriority )\r
{\r
- portENTER_CRITICAL();\r
- vInitUart5();\r
- portENTER_CRITICAL();\r
-\r
- vSemaphoreCreateBinary( xSemaphore );\r
+ xQueue = xQueueCreate( 5, sizeof( char ) );\r
\r
- if( xSemaphore != NULL )\r
+ if( xQueue != NULL )\r
{\r
- xTaskCreate( vUART5Task, (signed portCHAR *) "UART4", ( unsigned portSHORT ) 2048, ( void * ) NULL, uxPriority, NULL );\r
+ portENTER_CRITICAL();\r
+ vInitUart5();\r
+ portENTER_CRITICAL();\r
+\r
+ xTaskCreate( vUART5Task, (signed portCHAR *) "UART5", configMINIMAL_STACK_SIZE * 2, ( void * ) NULL, uxPriority, NULL );\r
}\r
}\r
\r
static void vUART5Task( void *pvParameters )\r
{\r
- portCHAR tasklist_buff[512], trace_buff[512];\r
+ static portCHAR buff[ 900 ] = { 0 };\r
unsigned portLONG trace_len, j;\r
\r
unsigned portCHAR ch;\r
\r
+ SSR05_RIE = 1;\r
Puts5( "\n -------------MB91467D FreeRTOS DEMO Task List and Trace Utility----------- \n" );\r
\r
for( ;; )\r
\r
Puts5( "\n\r2: To call vTaskStartTrace() and to display trace results once the trace ends" );\r
\r
- SSR05_RIE = 1;\r
-\r
/* Block on the semaphore. The UART interrupt will use the semaphore to\r
wake this task when required. */\r
- xSemaphoreTake( xSemaphore, portMAX_DELAY );\r
-\r
- ch = Getch5();\r
+ xQueueReceive( xQueue, &ch, portMAX_DELAY );\r
\r
switch( ch )\r
{\r
case '1':\r
- vTaskList( (signed char *) tasklist_buff );\r
+ vTaskList( (signed char *) buff );\r
Puts5( "\n\rThe current task list is as follows...." );\r
Puts5( "\n\r----------------------------------------------" );\r
Puts5( "\n\rName State Priority Stack Number" );\r
Puts5( "\n\r----------------------------------------------" );\r
- Puts5( tasklist_buff );\r
+ Puts5( buff );\r
Puts5( "\r----------------------------------------------" );\r
break;\r
\r
case '2':\r
- vTaskStartTrace( (signed char *) trace_buff, 512 );\r
+ vTaskStartTrace( (signed char *) buff, 512 );\r
Puts5( "\n\rThe trace started!!" );\r
vTaskDelay( (portTickType) 450 );\r
trace_len = ulTaskEndTrace();\r
Puts5( "\n\r--------------------------------------------------------\n\r" );\r
for( j = 0; j < trace_len; j++ )\r
{\r
- Puthex5( trace_buff[j], 2 );\r
+ Puthex5( buff[j], 2 );\r
if( j % 4 == 3 )\r
{\r
Puts5( " | " );\r
\r
__interrupt void UART5_RxISR( void )\r
{\r
- SSR05_RIE = 0;\r
- xSemaphoreGiveFromISR( xSemaphore, pdFALSE );\r
+unsigned portCHAR ch;\r
+\r
+ ch = RDR05;\r
+ xQueueSendFromISR( xQueue, &ch, pdFALSE );\r
}\r