stm32单片机实现串口1(115200)同时接收/发送数据给串口2(9600)
[复制链接]
stm32g030芯片
实现功能串口1 给串口2 发送数据,同时接收串口2数据
串口2给串口1 发送数据,同时接收串口1数据
可以实现9600(串口2)给串口1(115200)发送数据,串口1能完整接收。
串口1(115200)给串口2(9600)发送数据,数据接收不正确。是什么地方配置不正确还是
main.c
while (1)
{
/* USER CODE END WHILE */
if(HAL_UART_Receive_IT(&huart2,USART2_RX_BUF,1) == HAL_OK)
{
HAL_UART_Transmit(&huart1,USART2_RX_BUF,sizeof(USART2_RX_BUF),100);
}
if(HAL_UART_Receive_IT(&huart1,USART1_RX_BUF,1) == HAL_OK)
{
HAL_UART_Transmit(&huart2,USART1_RX_BUF,sizeof(USART1_RX_BUF),100);
}
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
回调函数
void HAL_UART_RXCpltCallback(UART_HandleTypeDef *huart)
{
if(huart ->Instance == USART2)
{
HAL_UART_Transmit(&huart1,USART2_RX_BUF,1,100);
HAL_UART_Receive_IT(&huart2,USART2_RX_BUF,1);
}
if(huart ->Instance == USART1)
{
HAL_UART_Transmit(&huart2,USART1_RX_BUF,1,100);
HAL_UART_Receive_IT(&huart1,USART1_RX_BUF,1);
}
}
usart.c
usart初始化中添加使能
/*Enable the uart data register not empty interrupt*/
__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
//__HAL_UART_ENABLE_IT(&huart2,UART_IT_TXE);
/*Enable the uart parity error interrupt*/
__HAL_UART_ENABLE_IT(&huart2,UART_IT_PE);
/*Enable the uart error interrtupt:(Frame error,noise error,overrun error)*/
__HAL_UART_ENABLE_IT(&huart2,UART_IT_ERR);
|