Serial communication service & queue

davedoors wrote on Monday, May 21, 2007:

1)

Don’t know what you are asking, but there is no need to place the xQueueReceive() in a while loop if you are using a newer version of FreeRTOS.

2)

Queue implementations in ISRs are not always a good idea.  It is best to use the DMA of FIFO of the peripheral to capture data, then a semaphore to wake a task to process the data.  This is much more efficient.

3)

No - but there is a separate vTaskResumeFromISR() function that can be used.  Generally waking tasks from interrupts is best done using a semaphore as you will not get into a situation where the task suspends as the ISR is calling Resume.