亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 342|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

為什么串口屏丟包

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:734017 發(fā)表于 2026-5-25 02:49 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
void Send_Array_UR1( u8 *str, u8 strlen)   
{  
        
u8 k = 0;
                        do  
                        {  
          SBUF = (*(str + k));
          k++;
          TI_Busy_1=1;
        while (TI_Busy_1);                                          
                        }  
                        while (k < strlen);
}  

void UARTO1_ISR() interrupt 4 //接收中斷,不同處理器可能是不同的函數(shù)聲明
{
u8 i; //用處提取接收緩沖器的字符
        if(TI)
                        {
                                TI  = 0;

                                TI_Busy_1 = 0;        
                        }
        if(RI)
                {
                        i=SBUF;                         //提取字符
                        RI=0;
                                
if(!complete_data_flag_1) //前臺(tái)程序處完成
                                {
                                        if(RX_1) //如果接收到0XAA,繼續(xù)接收后面的字符
                                                {
                                                        buffer_1[RX_P]=i; //字符存入數(shù)組
                                                if((RX_P>3)&&(buffer_1[RX_P-3]==0xcc) && (buffer_1[RX_P-2]==0x33)&&(buffer_1[RX_P-1]==0xc3)&&                                                                  (buffer_1[RX_P]==0x3c)) //判斷是是否接收完畢一幀數(shù)據(jù)
                                                                {
                                                                        
                                                                       
complete_data_flag_1=1; //如果接收完成,置位RXFRMOK
                                                                        RX_1 = 0;                                 //清零開始標(biāo)志位RXAAOK
                                                                        
                                                                }
                                                        RX_P++;                                       //接收計(jì)數(shù)器加一
                                                }

                                        if(!RX_1 && (i==0xaa))
                                        {
                                                RX_1=1;
                                                RX_P=0;
                                                
                                        }
                                }
        }
}

// 觸摸指令處理函數(shù)

void Touch_command_selection(void)
{
    // 如果沒有一幀完整數(shù)據(jù),直接退出函數(shù),不執(zhí)行任何操作
    if (!complete_data_flag_1)
        return;



    // 判斷幀頭:0x79 = 觸摸按鍵按下
    if (buffer_1[0] == 0x79)
    {
        // 如果觸摸鎖已經(jīng)上鎖,不響應(yīng)任何按鍵
        if (Screen_touch_lock)
        {
            complete_data_flag_1 = 0;  // 清除數(shù)據(jù)接收完成標(biāo)志
            return;                    // 退出,不處理
        }


        // 根據(jù) buffer_1[2] 里的按鍵指令執(zhí)行對(duì)應(yīng)功能
        switch (buffer_1[2])
        {
            // ====================== 主頁功能 ======================
            case 0xA4:  // 按下:主頁 - 1
                Screen_touch_lock = 1;  // 上鎖觸摸,防止重復(fù)觸發(fā)
                Loop_sending(6);        // 執(zhí)行發(fā)送指令 6
                break;


            case 0xA5:  // 按下:主頁 - 2
                Screen_touch_lock = 1;  // 上鎖觸摸
                Loop_sending(5);        // 執(zhí)行發(fā)送指令 5
                break;


            case 0xA7:  // 按下:主頁 - 3                                       //第一次按運(yùn)行
                Screen_touch_lock = 1;  // 上鎖觸摸
                image_loop_flag = 0;     // 關(guān)閉動(dòng)畫循環(huán)
                Loop_sending(4);        // 執(zhí)行發(fā)送指令 4
                break;


            default:
                break;  // 其他指令不處理
        }
    }
    // 判斷幀頭:0x78 = 觸摸按鍵松開
    else if (buffer_1[0] == 0x78)
    {
        Screen_touch_lock = 0;  // 解鎖觸摸,可以再次響應(yīng)
    }


    // 數(shù)據(jù)處理完畢,清除接收完成標(biāo)志,準(zhǔn)備接收下一幀數(shù)據(jù)
    complete_data_flag_1 = 0;
}


// 水模式動(dòng)畫循環(huán)函數(shù)
void image_loop(void)
{
    static u8 count = 0;  // 靜態(tài)變量:保存幀計(jì)數(shù),不會(huì)被重置


    // 循環(huán):只要 image_loop_flag = 1,就一直跑動(dòng)畫
    do
    {
        if (++count > 60)  // 計(jì)數(shù)自增,超過60歸零
            count = 0;


        HIM_page_0_temp[2] = count;        // 把計(jì)數(shù)值放入發(fā)送數(shù)組
        Send_Array_UR1(HIM_page_0_temp, 7); // 發(fā)送一幀動(dòng)畫數(shù)據(jù)
        delay_ms(60);                      // 延時(shí)60ms,控制動(dòng)畫速度
        Touch_command_selection();         // 調(diào)用觸摸處理,檢測(cè)按鍵    第一次按下


    } while (image_loop_flag);  // 判斷是否繼續(xù)循環(huán)
}


// 主函數(shù):程序入口
void main()
{
    IOsatar();                                                // 芯片IO口初始化
      Delay100ms();  // 開機(jī)延時(shí)100ms,穩(wěn)定系統(tǒng)
    image_loop();  // 進(jìn)入動(dòng)畫循環(huán)(一旦進(jìn)入,除非flag=0,否則不退出)


    // 主死循環(huán):系統(tǒng)正常運(yùn)行任務(wù)
    while(1)
    {
        TIME_START();         // 計(jì)時(shí)/定時(shí)器啟動(dòng)      
        Touch_command_selection();  // 觸摸按鍵指令處理    //第二,三次按下判斷
        While_loop_sending(); // 循環(huán)發(fā)送數(shù)據(jù)
    }
}


流程
開機(jī)給屏幕發(fā)送動(dòng)畫循環(huán),當(dāng)按下屏幕后轉(zhuǎn)跳。(第一次按下可以正常切換頁面,再次按下沒反應(yīng),第三次按下正常了)
第一次按下后,T
ouch_command_selection(); i函數(shù)里mage_loop_flag = 0;     // 關(guān)閉動(dòng)畫循環(huán)
程序到達(dá)while(1) 不然第一次就不會(huì)切換面。但是complete_data_flag_1 = 0;這條有時(shí)候不運(yùn)行。導(dǎo)至第二次按下屏幕沒反應(yīng)。

如果中斷發(fā)生在delay_ms(60);  只運(yùn)行了按下,鎖鍵,沒有抬起動(dòng)作,第二次按下沒反應(yīng)該?等待抬起?


delay_ms(60);                      // 延時(shí)60ms,控制動(dòng)畫速度
        Touch_command_selection();         // 調(diào)用觸摸處理,檢測(cè)按鍵    第一次按下
complete_data_flag_1 = 0; 在這里增加后,正常了。沒想明白。

屏幕下發(fā)間隔100MS 可能點(diǎn)一下會(huì)來兩幀。按下。再抬起








分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1034262 發(fā)表于 2026-5-25 16:47 | 只看該作者
有線串口通信(無干擾)都能丟包,只能是程序執(zhí)行時(shí)間安排不恰當(dāng)引起的(特別是中斷函數(shù)耗時(shí)過長)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:584814 發(fā)表于 2026-5-25 17:14 | 只看該作者
為了讓設(shè)計(jì)容錯(cuò)的人有口飯吃
回復(fù)

使用道具 舉報(bào)

地板
ID:734017 發(fā)表于 2026-5-26 09:14 | 只看該作者
coody_sz 發(fā)表于 2026-5-25 16:47
有線串口通信(無干擾)都能丟包,只能是程序執(zhí)行時(shí)間安排不恰當(dāng)引起的(特別是中斷函數(shù)耗時(shí)過長)。

我這個(gè)還好吧
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表