Processor: PIC32MX795F512L
Dev Board: PIC32 USB Starter Kit II
Compiler: C32
FreeRTOS version: 7.2 Here is the code:
#define UART_STACK_SIZE configMINIMAL_STACK_SIZE
#define YIELDING_TIME_UART ( 10 / portTICK_RATE_MS ) //5ms
#define SIZE_OF_BUFFER_IN 63
#define SIZE_OF_BUFFER_OUT (SIZE_OF_BUFFER_IN *50)+1
// ----------------------------------------------
// FUNCTION DECLARATIONS
// ----------------------------------------------
static portTASK_FUNCTION_PROTO( vSerialTestTask, pvParameters );
// ----------------------------------------------
// GLOBAL VARIABLES
// ----------------------------------------------
xTaskHandle* handle;
static char buffer_in[SIZE_OF_BUFFER_IN];
static char buffer_out[SIZE_OF_BUFFER_OUT];
static char second_buffer_out[SIZE_OF_BUFFER_OUT];
static int position = 0;
static int cr_received;
xQueueHandle xQueueHandleGSMSend2;
LogMessage* lReceivedData2;
// ----------------------------------------------
// FUNCTION DEFINITIONS
// ----------------------------------------------
void StartSerialTestTask( unsigned portBASE_TYPE priority ){
//initializations
cr_received = FALSE;
//UARTInit( 2, 9600 );
UARTInit( 1, 115200 );
xQueueHandleGSMSend2 = xQueueCreate(5, sizeof(LogMessage));
//creates task
xTaskCreate( vSerialTestTask, ( signed char * ) "Serial test", UART_STACK_SIZE, NULL, priority, ( xTaskHandle * ) handle );
}
static portTASK_FUNCTION( vSerialTestTask, pvParameters ){
portBASE_TYPE xStatus;
int retVal;
int i;
//cleans buffers
for(i=0; i<SIZE_OF_BUFFER_OUT; i++){
buffer_out[i] = ' ';
second_buffer_out[i] = ' ';
}
while(TRUE){
//clears input buffer
for( i=0; i<SIZE_OF_BUFFER_IN; i++)
buffer_in[i] = ' ';
//THIS WORKS
UART1Send("ATE=0r");
xStatus = xQueueReceive(xQueueHandleGSMSend2, &lReceivedData2, portMAX_DELAY);
if(xStatus == pdPASS)
{
//THIS BREAKS
UART1Send("ATE=0r");
}
}
}