欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1683|回復: 4
收起左側

STC32G單片機串口3接收數據字節數不對,幫我看一下吧?

[復制鏈接]
ID:525244 發表于 2022-4-3 11:20 | 顯示全部樓層 |閱讀模式
程序是串口3接收,串口1發送串口3接收到的字節數,發送八個,經常收到7個,程序在下邊,請幫我看一下原因,謝謝!
11111.PNG

V1.6 STC32G重構 - UART3.7z

65.16 KB, 下載次數: 7

回復

使用道具 舉報

ID:525244 發表于 2022-4-3 18:31 | 顯示全部樓層
程序很簡單,就兩個串口中斷接收,DMA發送。串口3直接TTL轉USB時。數據收發沒問題。當用USB轉485時,單片機接收數據就容易丟數據,一串數據前邊應該是4個字節,收到卻是三個錯誤的字節,應該從RS485芯片下手吧
#ifdef UART3
void UART3_ISR_Handler (void) interrupt UART3_VECTOR
{
        if(RI3)
        {
                CLR_RI3();
                if(COM3.B_RX_OK == 0)
                {
                        if(COM3.RX_Cnt >= COM_RX3_Lenth)        COM3.RX_Cnt = 0;
                        if(COM3.RX_Cnt == 16)        IWEDATA.ADC0++;
                        RX3_Buffer[COM3.RX_Cnt++] = S3BUF;
                        COM3.RX_TimeOut = TimeOutSet3;
                        SBUF=S3BUF;
                }
        }

        if(TI3)
        {
                CLR_TI3();
                COM3.B_TX_busy = 0;
               
//                if(COM3.TX_read != COM3.TX_write)
//                {
//                         S3BUF = TX3_Buffer[COM3.TX_read];
//                        if(++COM3.TX_read >= COM_TX3_Lenth)                COM3.TX_read = 0;
//                }
//                else        COM3.B_TX_busy = 0;
        }
}
#endif
上邊是串口接收中斷,收到數據發給串口1,串口1接收到的數據偶爾時錯誤的。
回復

使用道具 舉報

ID:525244 發表于 2022-4-3 19:38 | 顯示全部樓層
通過邏輯分析儀查看RS485轉TTL,UART3收到我數據是正確的的,但是單片機接收到的是不正常的。把TTL直接接在UART3上,收到的數據就正常。是RXD設置了高阻輸入,打開了上拉電阻。TXD設置為推挽輸出,這樣合理嗎?
回復

使用道具 舉報

ID:301191 發表于 2022-4-4 01:54 | 顯示全部樓層
頂一下
回復

使用道具 舉報

ID:507641 發表于 2022-4-4 11:58 | 顯示全部樓層
你要考慮的是要加等待判斷,是沒接收完。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表