为什么在串口接收中断函数中打印数据(串口输出数据)会导致出错?

在用华大单片机HC32L110操作时,会出现标题所示的错误,下面是数据手册中的一句话:

为什么在串口接收中断函数中打印数据(串口输出数据)会导致出错?

then,看下实际工程中的代码(无关代码已经删除,保留关键代码),串口配置为接收中断,输出不用中断方式

串口发送:

en_result_t Uart_SendData(uint8_t u8Idx, uint8_t u8Data)
{
    Uart_ClrStatus(u8Idx,UartTxEmpty);   //发送完成标志位清零=FALSE
    pstcData->pstcInstance->SBUF =u8Data;//要发送的字节
    while(FALSE == Uart_GetStatus(u8Idx,UartTxEmpty))//等待发送完成,标志位置位=TRUE
    {}

    Uart_ClrStatus(u8Idx,UartTxEmpty);  //发送完成标志位清零=FALSE
    return Ok;
}

接收中断函数:

void UART1_IRQHandler(void)
{
     
     Uart_ClrStatus(1,UartRxFull);//清除接收中断
        UartRecvBuff[UartRecvWrite++] = M0P_UART1->SBUF;   //保存数据 

        Uart_SendData(UARTCH1,0x06);//在接收中断后发送一个字节
}

主函数:

      while(1)
      {          
         Uart_SendData(UARTCH1,0x02);      
      }

软件发生错误的过程:主函数发送一个字节时,还未完成就被中断,跳转到中断函数,然后在接收中断函数中又进行了一个字节的发送操作,就会导致出错(如数据手册所言,当一个发送字节还未完成时,又发送了一个字节),结果就是主函数一直在这里等待数据发送成功while(FALSE == Uart_GetStatus(u8Idx,UartTxEmpty)),而它已经发生了错误永远都不可能成功发送了。