void __ISR(_UART_1_VECTOR, ipl1) IntUart1Handler(void)
{
// Is this an RX interrupt?
if(INTGetFlag(INT_SOURCE_UART_RX(UART_MODULE_ID)))
{
// Clear the RX interrupt Flag
INTClearFlag(INT_SOURCE_UART_RX(UART_MODULE_ID));
// Echo what we just received.
PutCharacter(UARTGetDataByte(UART_MODULE_ID));
}
// We don't care about TX interrupt
if (INTGetFlag(INT_SOURCE_UART_TX(UART_MODULE_ID)))
{
INTClearFlag(INT_SOURCE_UART_TX(UART_MODULE_ID));
}
}
//
void PutCharacter(const char character)
{
while(!UARTTransmitterIsReady(UART_MODULE_ID))
;
UARTSendDataByte(UART_MODULE_ID, character);
while(!UARTTransmissionHasCompleted(UART_MODULE_ID))
;
}
//
// eg.
// WriteString("*** UART Interrupt-driven Application Example ***\r\n");
// Helper functions
void WriteString( char *string)
{
while(*string != '\0')
{
while(!UARTTransmitterIsReady(UART_MODULE_ID))
;
UARTSendDataByte(UART_MODULE_ID, *string);
string++;
while(!UARTTransmissionHasCompleted(UART_MODULE_ID))
;
}
}
void UART1Trans_fail( void)
{
P_Debug_O=1;
if(UARTTransmitterIsReady(UART_MODULE_ID))
{
UARTSendDataByte(UART_MODULE_ID, U1TX_Buffer[U1TX_Index]);
// IO_FLAG.U1TXP=1; //Uart1 TX in processing flag hand up
IO_FLAG.U1TXReady=0;
}
// P_Debug_O=0;
if(UARTTransmissionHasCompleted(UART_MODULE_ID))
{
// IO_FLAG.U1TXP=0;
if(U1TX_CNT==0) //check need to send next byte
{
IO_FLAG.U1TXReady=1;
IO_FLAG.U1TXP=0;
}
U1TX_CNT--;
U1TX_Index++;
}
// while(!UARTTransmissionHasCompleted(UART_MODULE_ID)) ;
P_Debug_O=0;
}
//