Hi, I’m ussing FreeRTOS and when i try to create a quoue the MPLAB Compiler give me the next error:
MPLINK 4.1, Linker
Copyright (C) 2006 Microchip Technology Inc.
Error – could not find definition of symbol ‘xQueueCreate’ in file ‘Objectsmain.o’.
Errors : 1
i’m doing as the Reference Manual says:
#define QUEUE_LENGHT 5
#define QUEUE_ITEM_SIZE sizeof( AMessage )
typedef struct A_Message
{
char ucMessageID;
char ucData;
} AMessage;
void main( void ){
xQueueHandle xQueue;
xQueue = xQueueCreate(QUEUE_LENGHT, QUEUE_ITEM_SIZE);
I hope someone can helpme, thanks.
Error with xQueueCreate
Error with xQueueCreate
I presume you have #include “FreeRTOS.h” and #include “queue.h” in you source file? Are you building queue.c as part of your project?
I suggest taking the demo project details on this page http://www.freertos.org/port_PIC32_MIPS_MK4.html as a start. There are both MPLAB 8 and MPLAB X project, and it includes a simple blinky demo that uses a couple of tasks and a queue. When that compiles (and runs) you can take the demo code out, leaving the FreeRTOS source files in, and add in your own code.
Regards.
Error with xQueueCreate
thanks richard!! i can create a queue now, my misstake was the queue.c that i didnt have in the project..
Now my problem is when i try to use xQueueReceive, the reading is 0x66 ever, i put send and receive in the same task to find the problem:
int Data2; for(;;)
{
xQueueSend(xQueueUART,&Data,( portTickType ) 0);
xQueueReceive(xQueueUART,&Data2,portMAX_DELAY); putcUSART(Data2);
while(BusyUSART());
} }[/quote
static xQueueHandle xQueueUART;void main( void ){ xQueueUART = xQueueCreate( 10, sizeof( portCHAR ) ); vPortInitialiseBlocks(); Configure_Ports(); xTaskCreate( vtaskA, ( const char * const ) “T1”, configMINIMAL_STACK_SIZE, NULL, PRIORITY_taskA, NULL ); vTaskStartScheduler(); } static void vtaskA( void *pvParameters ){ int Data=’A’;
int Data2; for(;;)
{
xQueueSend(xQueueUART,&Data,( portTickType ) 0);
xQueueReceive(xQueueUART,&Data2,portMAX_DELAY); putcUSART(Data2);
while(BusyUSART());
} }[/quote
Error with xQueueCreate
but write in USART 0x66 that is the Data2 valor.
Error with xQueueCreate
Your queue is created to hold 8 bit types, and when you send data to the queue you pass it a pointer to a 32 bit type.
You are sending the letter ‘A’, which is ascii 65, so I would expect to receive decimal 65, not hex 66, but that might be something to do with the mismatch in types.
Regards.
Error with xQueueCreate
you was right richard!! I changed the variable to char and now is working.