icefishhead wrote on Friday, March 13, 2009:
In the serial.c files of lpc2106_gcc demos, there is a litte segment code that I am confused. That is:
////////////////////////////////////////////////
xReturn = xQueueSend( xCharsForTx, &cOutChar, xBlockTime );
if( ( *plTHREEmpty == ( portLONG ) pdTRUE ) && ( xReturn == pdPASS ) )
{
xQueueReceive( xCharsForTx, &cOutChar, serNO_BLOCK );
*plTHREEmpty = pdFALSE;
UART0_THR = cOutChar;
}
///////////////////////////////////////////////
When run this code, interrupt is disabled, so xBlockTime should have no effect or this is a wrong using style? And also because interrupt is disabled, so *plTHREEmpty == pdTRUE is impossible, the if code would have no effect too. I am really confused and may be my logic is wrong.
any reply would be appreciated!