在使用HAL庫的時候發現同一串口的接收和發送如果同時進行的話會發生問題,因為
如果用調用下面的函數
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
進行接收串口數據的時候,有可能
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
也正在進行中,而這兩個函數都會對串口資源上鎖
__HAL_LOCK(huart);
導致中斷接收函數 HAL_StatusTypeDef HAL_UART_Receive_IT 返回hal_busy; 沒有正常的執行,所以串口接收中斷也沒有打開,再也接收不到下一個字節了。
我簡單粗爆的把 __HAL_LOCK(huart);注釋掉了。
