以下摘自手冊
當單片機收到串口接收數(shù)據(jù)超時的中斷后,可以先從 RBR 寄存器讀取一個字節(jié),然后查詢 LSR 寄 存器的 DATARDY 位,如果 DATARDY 位有效則再讀取一個字節(jié),直到 DATARDY 位無效。
以下函數(shù)是官方例程,到底是啟用FIFO還是禁用FIFO
UINT8 CH432Seril1Rcv( UINT8 *buf )? ? /* 禁用FIFO,CH432串口1接收多字節(jié)子程序*/
{
? ? UINT8 RcvNum = 0;
? ? if( !( ReadCH432Data( CH432_LSR1_PORT ) & ( BIT_LSR_BREAKINT | BIT_LSR_FRAMEERR | BIT_LSR_PARERR | BIT_LSR_OVERR ) ) )? ? /* b1-b4無錯誤 */
? ? {
? ? ? ? ?while( ( ReadCH432Data( CH432_LSR1_PORT ) & BIT_LSR_DATARDY ) == 0 );? ? /* 等待數(shù)據(jù)準備好 */
? ? ? ? ?do
? ? ? ? ?{
? ? ? ? ? ? ? *buf++ = ReadCH432Data( CH432_RBR1_PORT );? ? /* 從接收緩沖寄存器讀出數(shù)據(jù) */
? ? ? ? ? ? ? RcvNum++;
? ? ? ? ?}
? ? ? ? ?while( ( ReadCH432Data( CH432_LSR1_PORT ) & BIT_LSR_DATARDY ) == 0x01 );
? ? }
? ? else ReadCH432Data( CH432_RBR1_PORT );
? ? return( RcvNum );
}