xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength ) { /* NOTE: The baud rate used by this driver is determined by the hardware parameterization of the UART Lite peripheral, and the baud value passed to this function has no effect. */ ( void ) ulWantedBaud; /* Create the queues used to hold Rx and Tx characters. */ xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed char ) ); xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed char ) ); /* Only initialise the UART if the queues were created correctly. */ if( ( xRxedChars != NULL ) && ( xCharsForTx != NULL ) ) { XUartLite_Initialize( &xUART, XPAR_RS232_UART_1_DEVICE_ID ); XUartLite_ResetFifos( &xUART ); XUartLite_DisableInterrupt( &xUART ); if( xPortInstallInterruptHandler( XPAR_XPS_INTC_0_RS232_UART_1_INTERRUPT_INTR, ( XInterruptHandler )vSerialISR, (void *)&xUART ) == pdPASS ) { /* xPortInstallInterruptHandler() could fail if vPortSetupInterruptController() has not been called prior to this function. */ XUartLite_EnableInterrupt( &xUART ); } } /* There is only one port so the handle is not used. */ return ( xComPortHandle ) 0; }
void RecvHandler(void *CallBackRef, unsigned int EventData){ u32 numBytesRx; XUartLite_DisableInterrupt(&UartLite); uart_callback(ReceiveBuffer[0]); XUartLite_EnableInterrupt(&UartLite); numBytesRx = XUartLite_Recv(&UartLite, ReceiveBuffer, UART_BUFFER_SIZE); //xil_printf("numBytesRx = %d\n", numBytesRx); }