是否有可能使用HAL_UART_RxCpltCallback创建与UART的双向通信?

是否有可能使用HAL_UART_RxCpltCallback创建与UART的双向通信?,c,callback,stm32,usart,C,Callback,Stm32,Usart,我目前正在进行一个项目,我希望使用usart-1与ESP8266模块进行通信,并拥有另一个usart-2,可用于putty。我的问题是,使用HAL_UART_RxCpltCallback函数是否有可能实现这一目标?到目前为止,我所有的尝试都以惨败告终,我能做的最好的事情就是创建一种通信,在这种通信中,数据可以发送到esp,但无法捕获任何答案。我所有的其他尝试都以在USART之间创建一个循环而告终。先谢谢你 void HAL_UART_RxCpltCallback(UART_HandleTypeD

我目前正在进行一个项目,我希望使用usart-1与ESP8266模块进行通信,并拥有另一个usart-2,可用于putty。我的问题是,使用HAL_UART_RxCpltCallback函数是否有可能实现这一目标?到目前为止,我所有的尝试都以惨败告终,我能做的最好的事情就是创建一种通信,在这种通信中,数据可以发送到esp,但无法捕获任何答案。我所有的其他尝试都以在USART之间创建一个循环而告终。先谢谢你

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {

    uint8_t Data[50]; 
    uint16_t size = 0; 

    size = sprintf(Data, "%c", Received);

    if(Received != '\r' && Received != '\n')
    {
        RingBuffer_PutChar(&USART_RingBuffer_Tx, Received);

        HAL_UART_Transmit_IT(&huart1, Data, size); 
        HAL_UART_Receive_IT(&huart1, &Received, 1); 
    }
    else
    {
        if(Received == '\n')
        {
            //size = sprintf(Data, "\n\r", 2);
            HAL_UART_Transmit_IT(&huart1,(uint8_t*) "\n\r", 2); 
            HAL_UART_Receive_IT(&huart1, &Received, 1); 

        }

        if(Received == '\r')
        {
            if(!RingBuffer_IsEmpty(&USART_RingBuffer_Tx))
            {
                RingBuffer_PutChar(&USART_RingBuffer_Tx, '\r');
                RingBuffer_PutChar(&USART_RingBuffer_Tx, '\n');

                HAL_UART_Transmit_IT(&huart6, (uint8_t*) RingBufferData_Tx, sizeof(RingBufferData_Tx));
                HAL_UART_Transmit_IT(&huart1, "\nSent\n\r", 12);
                HAL_UART_Receive_IT(&huart6, &Received1, 1);
                HAL_UART_Receive_IT(&huart1, &Received, 1);
                RingBuffer_Clear(&USART_RingBuffer_Tx);
            }
            else
            {
                HAL_UART_Transmit_IT(&huart1,(uint8_t*) "Buffer is empty\n\r", 17); 
                HAL_UART_Receive_IT(&huart1, &Received, 1); 
            }
        }

    }
}

HAL_UART_RxCpltCallback函数有一个参数UART_HandleTypeDef*huart,因此您可以检查哪个UART实例调用了此回调。 您可以检查它是usart-1还是usart-2,并根据此代码执行代码