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:当启用 UART 中断 TX 时、代码进入默认处理程序

Guru**** 2555630 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/952820/msp432e401y-code-goes-into-default-handler-when-enable-uart-interrupt-tx

器件型号:MSP432E401Y

大家好、我有一个要使用 UART 中断传输的循环字符缓冲区、但是代码从启用中断的函数中退出后、我的代码进入默认处理程序。 我已经注释掉了使用中断的所有其他函数、并且仅对 UART 进行 AM 测试。 是否有人知道为什么会继续使用默认处理程序?

空 UART7_IRQHandler (空)

uint32_t ui32Status7;

//
//获取中断状态。
//

ui32Status7 = UARTIntStatus (UART7_BASE、TRUE);

if (((ui32Status7 & UART_INT_RX)== UART_INT_RX){
CHAR 字节= UARTCharGetNonBlocking (UART7_BASE);
Coordinator.gpsManager.pbuffer.push (字节);
UARTIntClear (UART7_BASE、UART_INT_RX);

否则、如果(((ui32Status7 & UART_INT_TX)== UART_INT_TX){
coordinator.gpsManager.sendNextByte();
UARTIntClear (UART7_BASE、UART_INT_TX);
UARTIntRegister (INT_UART7、UART7_IRQHandler);

void GPSManager::Process(TransitPack::PacketType 类型,vector 数据)

if (type = TransitPacket::GPSConfig)

deviceBusy = true;
prepareToSend (data);  //代码在运行函数后卡在此处,然后进入默认处理程序


void Manager::prepareToSend (向量 TX_DATA)

unsigned int i = 0;
int length = TX_DATA.SIZE ();

对于(i = 0;i < length;i++)//通过数组递增,请在字符串末尾查找空指针(0)

char temp = TX_DATA[i];
transmit.push (temp);
// deviceBusy = true;

UARTIntEnable (UART、UART_INT_TX);
UARTCharPut (UART、Transmit.Pop ()));

/*这是当处理器收到意外的*/时调用的代码
/*中断。 这只是进入一个无限循环、保持系统状态*/
//供调试器检查。

空 Default_Handler (空)

/* ULP Advisor 可免除故障陷阱*/
#ifdef __TI_ARM__
#pragma diag_push
#pragma CHECK_ULP ("-2.1")
#endif

/*输入无限循环。 *
while (1)

#ifdef __TI_ARM__
#pragma diag_pop
#endif

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否启用了相应的 UART 中断?  

    您是否尝试过其他中断处理程序?  

    谢谢、  

    Lixin