STM32 Cubx HAL库 UART问题

2019-07-14 17:08发布

查看HAL库UART文件,发现UART中断里面的处理都是根据UART传的一个全局结构变量来处理的。void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);

我要处理UART的发送和接收。发送部分我可以理解,接收部分就让人郁闷了。

static HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart)

if(--huart->RxXferCount == 0)  //这个也是全局结果传过来的。
    {
      __HAL_UART_DISABLE_IT(huart, UART_IT_RXNE);

      /* Check if a transmit process is ongoing or not */
      if(huart->State == HAL_UART_STATE_BUSY_TX_RX)
      {
        huart->State = HAL_UART_STATE_BUSY_TX;
      }
      else
      {
        /* Disable the UART Parity Error Interrupt */
        __HAL_UART_DISABLE_IT(huart, UART_IT_PE);

        /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */
        __HAL_UART_DISABLE_IT(huart, UART_IT_ERR);

        huart->State = HAL_UART_STATE_READY;
      }
      HAL_UART_RxCpltCallback(huart);

      return HAL_OK;
    }


这个一定要接收固定数目的字符后才会关闭接收中断,如果发送10个字符,接收10个字符,这样处理很OK。但是发送是可以确定的,
接收的个数是不确定的。官方的库这么死板吗?还是我理解错了。请大侠帮忙分析下,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。