请教下,关于 使用 HAL 的库,对串口数据进行接收时,如果我使用了2 .. ... 等串口接收时,那么是不是需要在下面的接收回调函数里面进行判断是哪个 串口 ?? UART_HandleTypeDef huart1; UART_HandleTypeDef huart2; void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance==USART1) { HAL_UART_Transmit_IT(huart, g_tUsart1.RxBuff, 1); //发回给PC机显示 g_tUsart1.RxCnt = 0; HAL_UART_Receive_IT( & huart1, &g_tUsart1.RxBuff[0], 1); // 接收完成后,重新开启接收中断 } if(huart->Instance==USART2) // 是不是需要这样来进行判断 ??? { HAL_UART_Transmit_IT(huart, g_tUsart2.RxBuff, 1); //发回给PC机显示 g_tUsart2.RxCnt = 0; HAL_UART_Receive_IT( & huart2, &g_tUsart2.RxBuff[0], 1); // 接收完成后,重新开启接收中断 } } |
应该不需要
使用CallBack时你的形参时刻变化
g_tUsart1, g_tUsart2用形参传进来
代码少一半
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart,“在这加形参”)
你好,我试过了,需要判断 usart1, usart2才行,
你要根据你需要的方式来调用对应的函数吧,然后在你的应用里面去做处理
我觉得类似callback等底层是不需要做处理的,因为st都已经帮你做好了,你只需要在应用里面处理就可以了
仅仅是个人意见