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