您好的团队、
我面临一个奇怪的问题、那就是 UART 无法接收数据。
我配置了两个 UART 的 UART0 和 UART2、两个 UART 都能够发送数据、但接收不一致。
有时 UART0 无法工作、UART2 无法工作或 UART0 和 UART2 都无法工作、但有时两者都正常工作、系统运行没有问题。
该行为类似于有时寄存器 UARTx->CPU_INT.MIS 设置为 0x400 (RXINT)、但不调用例程、有时不设置寄存器、也不调用例程。
请建议如何修复此问题。
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.
您好的团队、
我面临一个奇怪的问题、那就是 UART 无法接收数据。
我配置了两个 UART 的 UART0 和 UART2、两个 UART 都能够发送数据、但接收不一致。
有时 UART0 无法工作、UART2 无法工作或 UART0 和 UART2 都无法工作、但有时两者都正常工作、系统运行没有问题。
该行为类似于有时寄存器 UARTx->CPU_INT.MIS 设置为 0x400 (RXINT)、但不调用例程、有时不设置寄存器、也不调用例程。
请建议如何修复此问题。
您好、
以下是一些观察结果、
当 UART0 不工作时、寄存器 UART0->CPU_INT.MIS 的值为 0x400、UART0->CPU_INT.IIDX 的值为 0xB(附加的屏幕截图)。

当 UART2 无法正常工作时、寄存器 UART2->CPU_INT.MIS 的值为 0x0、UART2->CPU_INT.IIDX 的值为 0x0。
我确认已启用 UART NVIC(随附屏幕截图)。

此外、还在具有 MCU“MSPM0G3507SDGS28R"(“(28 引脚排列)的定制电路板上执行该操作。
此外、我使用 SYSOSC @32MHz 和 HFXT->SYSPLLCLK0 @80MHz 对此进行了测试、每次的行为相同。 UART 波特率始终为 115200。

确保始终读取 RXDATA 寄存器 (DL_UART_Main_receiveData ()) 以响应 RX 中断。 我看到 RIS 中设置了 OVRERR (0x10)、因此我怀疑这是发生了什么。 我的观察是清除 RX 中断 (DL_UART_clearInterruptStatus ()) 时不会清除 RXDATA 上的“锁定“。
在 NVIC 中待处理时清除 IRQ (NVIC_ClearPendingIRQ ()) 后、我还看到了 UART0 情况 (MIS 中为 0x400)、尽管这可能是更罕见的情况。