else
{
pData +=1U;
}
}
else
{//不带校验
if(UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
{//上面函数作用是保证发送寄存器里的数据为空(UART_FLAG_TXE置位)
return HAL_TIMEOUT;
}
huart->Instance->DR = (*pData++ & (uint8_t)0xFF);//发送寄存器写入数据,UART_FLAG_TXE复位【待数据全部移到发送移位寄存器时,UART_FLAG_TXE置位,故前面超时等待】
}
}
if(UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK)
{//上面函数作用是保证全部传输完成,UART_FLAG_TC置1,否则也认为传输失败,双重保证!
return HAL_TIMEOUT;
}
/* At end of Tx process, restore huart->gState to Ready */
huart->gState = HAL_UART_STATE_READY;
/* Process Unlocked */
__HAL_UNLOCK(huart);
return HAL_OK;
}
else
{
return HAL_BUSY;
}
}
|