TMS320F28377D: 关于SCI初始状态读数据的问题

Part Number: TMS320F28377D

最近看boot程序,F2837xD_sci_flash_kernels程序,官方例程中SCIA_GetWordData这个函数,在未初始化SCI配置时就已经调用,但是这个函数存在while循环读取接收寄存器数据的语句,为什么程序没有卡死在这一步呢?

这句话在这里的作用是什么?

if((DevCfgRegs.DC8.bit.SCI_A != 0x01))
{
return 0xFFFFFFFF;
}

// Assign GetWordData to the SCI-A version of the
// function. GetWordData is a pointer to a function.
GetWordData = SCIA_GetWordData;                                              //这里还未初始化就已经调用函数

//----------------------------------------------
// Initialize the SCI-A port for communications
// with the host.
//----------------------------------------------
//parameter SCI_BOOT for GPIO84,85; parameter SCI_BOOT_ALTERNATE for GPIO28,29
SCIA_Init(BootMode);//这里才初始化
SCIA_AutobaudLock();

//---------------------------------------------------------以下为SCIA_GetWordData函数-----------------------------------//

Uint16 SCIA_GetWordData(void)
{
Uint16 wordData;
Uint16 byteData;

wordData = 0x0000;
byteData = 0x0000;

// Fetch the LSB and verify back to the host
while(SciaRegs.SCIRXST.bit.RXRDY != 1) { }        //---------------------为何没有卡在这个循环里面呢?说明RXRDY 是1,已经有数据在寄存器中了?????
wordData = (Uint16)SciaRegs.SCIRXBUF.bit.SAR;
SciaRegs.SCITXBUF.bit.TXDT = wordData;

// Fetch the MSB and verify back to the host
while(SciaRegs.SCIRXST.bit.RXRDY != 1) { }
byteData = (Uint16)SciaRegs.SCIRXBUF.bit.SAR;
SciaRegs.SCITXBUF.bit.TXDT = byteData;

// form the wordData from the MSB:LSB
wordData |= (byteData << 8);

return wordData;
}

//-------------------------------------------------------------//