2016-06-15 158 views
1

嗨,大家好我想使用stm32 HAL庫進行串行rx中斷,並且出現了我不知道的錯誤。STM32 HAL rx中斷無法正確獲取字節

這是一個非常簡單的程序。 PC給stm32板提供字節,stm32將使用rx中斷程序取這些字節。

問題是當我發送超過4個字節,如「12345」,stm32板只有4個字節和最後一個字節(5)消失了某處。這是爲了更好的理解。

enter image description here

這是我在日常HAL_UART_RxCpltCallback代碼:

HAL_UART_Transmit(&huart4, &receive1, 1, 1000); 
HAL_UART_Receive_IT(&huart4, &receive1, 1); 

如果您有任何想法,請評論:)

回答

3

檢查功能:HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

  1. 使尺寸足夠長,例如16bytes,例如;
  2. 請將您的HAL_UART_RxCpltCallback例程調入功能HAL_UART_Receive_IT(...)。我建議你添加一個結束字符(\n)檢測這樣的:

    if ((*huart->pRxBuffPtr) == '\n') { 
        HAL_UART_RxCpltCallback(huart); //-------------------------------------------///////// 
    } else { 
        huart->pRxBuffPtr++; 
    }