QueueSend on a full queue doesn't unblock?

hengin wrote on Friday, March 30, 2012:

I have a thread (with the highest priority of all my threads) filling a queue.

         if (xQueueSend(xRFOutRaw,&data,100)!=pdPASS)

When it’s full I would like it to block upto 100ms waiting for my interrupt routine to receive data

The interrupt routine receives the data:

        if (xQueueReceiveFromISR(xRFOutRaw, &data, &xHigherPriorityTaskWoken) != pdPASS )

Note: The xHigherPriorityTaskWoken is always false, even when the QueueSend is blocking. How come? When the data is received, I would like my thread waiting to complete the send to unblock imediately, but it doesn’t.

I’m running on a STM32. I’ve checked the intterrupt priorities and they are ok (above (configMAX_SYSCALL_INTERRUPT_PRIORITY >> 4), and  NVIC_PriorityGroup_4 is set), there must be somthing other than that causing my problem.

Is it ok to full upp a queue like I do here and expect it to unblock when there is space available in the queue? Do I have to enably something in the FreeRTOSconfig to make it work?

hengin wrote on Friday, March 30, 2012:

I don’t know that I’ve done, but it’s now working as expected.