1. 修改HAL库相关函数即可。
1. 描述:使用函数HAL_UART_Transmit大量发送数据,当接收命令时卡死。
2. 修改:在函数中注释掉如下函数:
- __HAL_LOCK(huart);
- huart->gState = HAL_UART_STATE_BUSY_TX;
- __HAL_UNLOCK(huart);
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
{
......
/* Process Locked */
//__HAL_LOCK(huart);
huart->ErrorCode = HAL_UART_ERROR_NONE;
//huart->gState = HAL_UART_STATE_BUSY_TX;
......
/* At end of Tx process, restore huart->gState to Ready */
huart->gState = HAL_UART_STATE_READY;
/* Process Unlocked */
//__HAL_UNLOCK(huart);
......
}
3. 收发正常
- 串口回馈被夹杂到了二进制数据中。
注:若此法失败,请按照如上方法修改相关接收函数。