HAL_UART_RxCpltCallback HAL库中回调函数两个串口同时进行中断接受数据,一开始串口四能一直接收到数据,为啥通过485发送命令与串口三通信后,整个回调函数就不执行了。
代码如下
/* USER CODE BEGIN 1 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance==UART4)//激光雷达数据
{
if(huancun4[0]==0x59&&huancun4[1]==0x59)
{
TF03_data=huancun4[2]+huancun4[3]*256;
TF03_data_ok=1;//激光雷达数据读取完毕 标志位置一
}
else if(huancun4[0]!=0x59||huancun4[1]!=0x59)
{
TF03_data_ok=0;//数据错误 读取失败
}
for(uint8_t q=0;q<9;q++)
{
huancun4[q]=0;
}
HAL_UART_Receive_IT(&huart4,huancun4,9);//打开中断接收9个字节
}
else if(huart->Instance==USART3)//485数据
{
if(huancun4[0]==0x55&&huancun4[1]==0x11&&huancun3[7]==0x59)
{
RS485TxData[0]=0x5B;
RS485TxData[1]=0x11;
RS485TxData[7]=0xBB;
RS485_data_ok=1;//485数据读取完毕 标志位置一
}
else if(huancun4[0]==0x55&&huancun4[1]==0x11&&huancun3[7]==0x59)
{
RS485_data_ok=0;//数据错误 读取失败
}
for(uint8_t m=0;m<9;m++)
{
huancun3[m]=0;
}
HAL_UART_Receive_IT(&huart3,huancun3,8);//打开中断接收9个字节
}
}
|