大部分使用非中断发送,一直等到发完为止~~。
可是想使用中断发送的话,我的理解就是启动中断发送时候,数据就交给中断自动完成了,其它不用管。不像跟普通发送一样,一直等大到发送为为止,一直执行在发送函数里面。
可是查看这个函数,只知道将pData给了pTxBuffPtr,然后就开启了发送。
可是他内部是怎么执行的?
huart->TxXferSize = Size;
huart->TxXferCount = Size;
只有这2个,但是总应该看到一个TxXferCount发一个减一个的地方,搜索了下并没有哎。
也没有看到这个中断发送调用了其它哪个函数了。
各位大佬指导下~~~
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
{
/* Check that a Tx process is not already ongoing */
if (huart->gState == HAL_UART_STATE_READY)
{
if ((pData == NULL) || (Size == 0U))
{
return HAL_ERROR;
}
/* Process Locked */
__HAL_LOCK(huart);
huart->pTxBuffPtr = pData;
huart->TxXferSize = Size;
huart->TxXferCount = Size;
huart->ErrorCode = HAL_UART_ERROR_NONE;
huart->gState = HAL_UART_STATE_BUSY_TX;
/* Process Unlocked */
__HAL_UNLOCK(huart);
/* Enable the UART Transmit data register empty Interrupt */
__HAL_UART_ENABLE_IT(huart, UART_IT_TXE);
return HAL_OK;
}
else
{
return HAL_BUSY;
}
} |