上位机给串口1发数据,串口1接收到数据后通过串口1和串口3发出去,测试结果是上位机可以将发送的数据成功接回,但是485那边无法接收到数据,如果屏蔽EN_485(RX_485);则可以收到数据,可以知道是485被设置成接收模式无法发送数据;当时代码设计时候是这么理解的,HAL_UART_Transmit_IT这个函数将COM1.RX_NUM字节数据全部发送,成功发送将返回HAL_OK,这个时候我重新将485设置为接收模式,这里具体为何出现这样情况以及如何修正这个bug恳亲大家帮忙看下,代码如下:while(1)
{
if(COM1.RX_Ready == SET)
{
COM1.RX_Ready = RESET;
EN_485(TX_485);
if(HAL_UART_Transmit_IT(&huart1,(uint8_t*)COM1.RX_BUF,COM1.RX_NUM) != HAL_OK)
{
;
}
// USART1_RX_NUM = 0;
if(HAL_UART_Transmit_IT(&huart3,(uint8_t*)COM1.RX_BUF,COM1.RX_NUM) != HAL_OK)
{
}
EN_485(RX_485);
}
}
还有个疑问就是HAL_UART_StateTypeDef结构体中没有发送完成标志,这个标志在哪个位置
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>