我使用的是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(使用前将#替换为@)