hpdell 发表于 2016-5-13 22:13:05

关于使用 HAL Cube usart 接收 ??

请教下,关于 使用 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, 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, 1);   // 接收完成后,重新开启接收中断

   }

}

0721de 发表于 2016-5-14 12:09:09

本帖最后由 0721de 于 2016-5-14 12:10 编辑

应该不需要
使用CallBack时你的形参时刻变化
g_tUsart1, g_tUsart2用形参传进来
代码少一半

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart,“在这加形参”)

hpdell 发表于 2016-5-16 09:04:55

0721de 发表于 2016-5-14 12:09
应该不需要
使用CallBack时你的形参时刻变化
g_tUsart1, g_tUsart2用形参传进来


你好,我试过了,需要判断 usart1, usart2才行,

quackonchen 发表于 2016-5-16 12:03:19

在hal_uart里面有很多函数的啊
你要根据你需要的方式来调用对应的函数吧,然后在你的应用里面去做处理

我觉得类似callback等底层是不需要做处理的,因为st都已经帮你做好了,你只需要在应用里面处理就可以了

仅仅是个人意见
页: [1]
查看完整版本: 关于使用 HAL Cube usart 接收 ??