#define RECLEN 4
int32_t rec[RECLEN] , ite = 0;
bool chkUARTcmd = false;
void UART6_IRQHandler(void)
{
uint32_t ui32Status;
ui32Status = MAP_UARTIntStatus(UART6_BASE, true);
MAP_UARTIntClear(UART6_BASE, ui32Status);
if(ui32Status & UART_INT_RX){
while(MAP_UARTCharsAvail(UART6_BASE) )
{
rec[ite++] = MAP_UARTCharGetNonBlocking(UART6_BASE);
if (RECLEN == ite)
{
chkUARTcmd = true;
ite = 0;
}
}
}
}
void UARTSend(const uint8_t *pui8Buffer, uint32_t ui32Count)
{
while(ui32Count--)
{
MAP_UARTCharPutNonBlocking(UART6_BASE, *pui8Buffer++);
}
}
int main(void)
{
initUART(); //Initialize UART settings, content omitted.
while(1)
{
if(chkUARTcmd){
UARTSend((uint8_t *)"ABCDEFGH", 8);
chkUARTcmd = false;
}
}
}
您好、我们需要使用 MSP432E401Y UART 接收命令并发回对所接收指令的确认。 不过、我们已确定 UART RX 和 TX 共用同一个寄存器。 在提供的代码中、当写入 RX 缓冲区时、它会被 TX 进程干扰、从而导致 RX 缓冲区被错误地写入 TX 传输数据。 我们如何解决该问题? 我们应该如何实现同步 TX/RX?