This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432E401Y: Code goes into Default handler when enable UART Interrupt TX

Part Number: MSP432E401Y

Hi I have a circular buffer of character that I want to transmit using the UART Interrupt, however my code goes into the default handler after my code get out of the function which enables the interrupt. I commented out every other function which uses interrupts and am testing just the UART. Does anyone have an idea why it keeps going into the default handler?

void UART7_IRQHandler(void)
{

uint32_t ui32Status7;

//
// Get the interrrupt status.
//

ui32Status7 = UARTIntStatus(UART7_BASE, true);

if((ui32Status7 & UART_INT_RX) == UART_INT_RX){
char byte = UARTCharGetNonBlocking(UART7_BASE);
coordinator.gpsManager.buffer.push(byte);
UARTIntClear(UART7_BASE, UART_INT_RX);
}
else if((ui32Status7 & UART_INT_TX) == UART_INT_TX){
coordinator.gpsManager.sendNextByte();
UARTIntClear(UART7_BASE, UART_INT_TX);
UARTIntRegister(INT_UART7, UART7_IRQHandler);

}

}

void GPSManager::process(TransitPacket::PacketType type, vector<char> data)
{
if (type == TransitPacket::GPSConfig)
{
deviceBusy = true;
prepareToSend(data);   // code gets stuck right here after it runs the function then goes into the default handler
}


}

void Manager::prepareToSend(vector<char> tx_data)
{
unsigned int i = 0;
int length = tx_data.size();

for (i = 0; i < length; i++) // Increment through array, look for null pointer (0) at end of string
{
char temp = tx_data[i];
transmit.push(temp);
// deviceBusy = true;

}

UARTIntEnable(UART, UART_INT_TX );
UARTCharPut(UART, transmit.pop());
}

/* This is the code that gets called when the processor receives an unexpected */
/* interrupt. This simply enters an infinite loop, preserving the system state */
/* for examination by a debugger.

void Default_Handler(void)
{
/* Fault trap exempt from ULP advisor */
#ifdef __TI_ARM__
#pragma diag_push
#pragma CHECK_ULP("-2.1")
#endif

/* Enter an infinite loop. */
while(1)
{
}

#ifdef __TI_ARM__
#pragma diag_pop
#endif
}