STM32 HAL庫的串口使用__HAL_LOCK(huart)


在使用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);注釋掉了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM