ch592x的單字節(jié)發(fā)送直接操作寄存器的問題
  1. 情況描述:需要通過592的3個串口和多個設(shè)備通訊,其中一個串口是和成品模組通訊,移植模組端的通訊文件到592的工程中,因為模組端的文件有較多宏定義和592庫函數(shù)中的宏定義沖突,所以沒有調(diào)用串口單字節(jié)發(fā)送庫函數(shù)UART2_SendByte(val);而是直接操作寄存器(*((volatile unsigned char? *)0x40003808)) = val;進行單字節(jié)的發(fā)送。

  2. 移植后測試,發(fā)現(xiàn)UART2單字節(jié)發(fā)送會不穩(wěn)定。目前根據(jù)手冊加了一條語句while(R8_UART2_TFC != 0); 之后數(shù)據(jù)就穩(wěn)定了。

  3. 請問如果不加這個while有什么辦法能確保數(shù)據(jù)發(fā)送的穩(wěn)定

  4. 如果必須要加這個while? ?會不會對我其他串口中斷產(chǎn)生影響?其他兩路串口也在不停的收發(fā)數(shù)據(jù)!

    微信圖片_20250102162135.png

每個串口的發(fā)送FIFO都是最大8字節(jié)。代碼里按字節(jié)發(fā),只能填慢點,填快了會覆蓋還沒來得及發(fā)出的數(shù)據(jù)。

或者可以用中斷方式發(fā)出,在FIFO空/使能發(fā)送中斷時,會觸發(fā)UART發(fā)送中斷。

串口發(fā)送中斷的應(yīng)用 - JayWell - 博客園


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

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