我正在使用带有 USART1 的
STM32CubeIDE + STM32F103C8T6 MCU。我通过调用这个函数来传输数据:
- HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef * huart, uint8_t * pData, uint16_t Size)
该函数由 CubeIDE 生成。事实证明,此调用会阻塞,直到发送完最后一个字符。我发现阻塞的是此函数中的以下行:
- __HAL_UART_ENABLE_IT(huart, UART_IT_TXE);
HAL_UART_TxCpltCallback 在 HAL_UART_Transmit_IT 返回前几微秒被调用。
为什么会发生这种情况的任何想法?我希望 HAL_UART_Transmit_IT 立即返回,而传输数据应该在后台完成。