stm32中如何在同一个回调函数中从不同的uart获取数据

2024-05-03

我使用的是stm32f407控制器。我正在使用 2 个 uart - 2&3。我第一次被中断,但第二次我在 uart 2 上被中断 - 我在 uart3 上没有被中断。

下面是我的回调函数:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if(huart2.Instance == USART2)
    {
        gsm.RxData[gsm.RxDataCnt]=Uart_Rx_Buffer;
        gsm.RxDataCnt=(1+ gsm.RxDataCnt) % MAX_Buff_Size;
        HAL_UART_Receive_IT(&huart2,&Uart_Rx_Buffer, 1);
    }
    else if(huart3.Instance == USART3)
    {
        lidar.RxData[lidar.RxDataCnt]=uart3_RX_Data;
        lidar.RxDataCnt=(1+ lidar.RxDataCnt) % MAX_LIDAR_BUFFER;
        HAL_UART_Receive_IT(&huart3,&uart3_RX_Data, 1);
        if(lidar.RxDataCnt >MAX_COUNT_BUFFER)
        {
            lidar.received = true;
        }
    }
}

中的条件if-陈述总是正确的。您需要检查的实例huart函数参数中提供的句柄,即:

    if(huart->Instance == USART2)

and

    else if(huart->Instance == USART3)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32中如何在同一个回调函数中从不同的uart获取数据 的相关文章

随机推荐