各位好:
我想請問新唐Drvuart裡面的int32_t DrvUART_Write(E_UART_PORT u32Port,uint8_t *pu8TxBuf, uint32_t u32WriteBytes)
這個副程式,裡面內容我有點看不懂,希望可以教我這個怎麼看,尤其
1)tUART = (UART_T *)((uint32_t)UART0 + u32Port);
2) if ( u32delayno >= 0x40000000 )
return E_DRVUART_ERR_TIMEOUT;
這兩條。我想知道他怎麼運作的
以下是完整的副程式
int32_t DrvUART_Write(E_UART_PORT u32Port,uint8_t *pu8TxBuf, uint32_t u32WriteBytes)
{
uint32_t u32Count, u32delayno;
UART_T * tUART;
tUART = (UART_T *)((uint32_t)UART0 + u32Port);
for (u32Count=0; u32Count<u32WriteBytes; u32Count++)
{
u32delayno = 0;
while (tUART->FSR.TE_FLAG !=1) /* Wait Tx empty and Time-out manner */
{
u32delayno++;
if ( u32delayno >= 0x40000000 )
return E_DRVUART_ERR_TIMEOUT;
}
tUART->DATA = pu8TxBuf[u32Count]; /* Send UART Data from buffer */
}
return E_SUCCESS;
}
拜託各為了YY
|