對例程有疑問,謝謝解答

以下摘自手冊

當單片機收到串口接收數(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 );

}


這個只是接收函數(shù),沒有禁用fifo接收。fifo接收是在串口初始化那邊設置的。


UINT8 CH432Seril1Rcv( UINT8 *buf )? ? /* 禁用FIFO,CH432串口1接收多字節(jié)子程序*/

明明是使用FIFO,為什么寫個禁用FIFO


注釋上的一些小問題。


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频