STM32
直播中

陈超

7年用户 952经验值
私信 关注
[问答]

HAL_UART_RxCpltCallback HAL库中回调函数,通过485发送命令与串口三通信后,整个回调函数就不执行了的原因?

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个字节
               
        }

        
        

}


回帖(1)

谷雪阳

2024-3-22 17:16:06
建议仿真时,发生改问题时,检查一下串口4的状态是不是进入溢出错误,如果是,需要重新初始化串口4。发生该问题,可能是因为串口3处理时,导致串口4数据溢出。
串口3检查是是否使用huancun4,这里是用huancun3还是huancun4?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分