最近項目中遇到了一個問題,因為開始用freertos,然後想加入序列槽收發功能。列印正常,但是加入接收中斷後,開始出bug,最後鎖定接收中斷挂掉了。
原因:HAL庫的序列槽接收發送函數有bug,就是收發同時進行的時候,會出現鎖死的現象。
解決:需要注釋掉 HAL_UART_Receive_IT 和 HAL_UART_Transmit_IT 中的 __HAL_LOCK(huart) 函數
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在接收中斷中使用HAL_UART_Receive_IT()函數,會導緻CR1的RXNEIE 置0,最後一直處于錯誤狀态,無法進行接收。
處理辦法:注釋掉 HAL_UART_Receive_IT 中的 __HAL_LOCK(huart) 函數