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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3544|回復(fù): 2
收起左側(cè)

串口中斷的學(xué)習(xí)

[復(fù)制鏈接]
ID:74985 發(fā)表于 2015-3-21 03:03 | 顯示全部樓層 |閱讀模式
昨天寫(xiě)串口中斷的程序,一直沒(méi)調(diào)好,才發(fā)現(xiàn)是串口中斷里的函數(shù)干的事情太多的原因。
我原來(lái)的程序:
void uart()interrupt 4
{
        if(RI)
                {
                        global_uart_table[global_i]=SBUF;
                         assign_gsm_net();
                        assign_gprs_table();
                        compare_gsm_net_sign();  //判斷是否獲取網(wǎng)絡(luò)時(shí)間
                        compare_gprs_net_sign();//判斷是否獲取GPRS服務(wù)器時(shí)間
                        assign_usb_table();                       
                        assign_fn_table();
                        compare_usb_sign(); //判斷是否收到幀結(jié)束符
                        compare_fn_sign();   //判斷電腦添加用戶(hù)是否結(jié)束
                        global_i++;
                        if(global_i>MAX_UART_TABLE_NUMBER-1)
                                {
                                        global_i=0;       
                                }
                        RI=0;
                }
}
發(fā)現(xiàn)這個(gè)程序一直不安自己想的走,后來(lái)發(fā)現(xiàn)是我在中斷里做的事情太多了,因?yàn)槲以O(shè)定的波特率為115200.如果我在中斷了干活的時(shí)間太長(zhǎng)的話(huà),那下一次中斷來(lái)時(shí)我還沒(méi)有退出中斷,那么它的信息我將丟失掉。這就是原因的所在。


相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:75468 發(fā)表于 2015-3-27 15:58 | 顯示全部樓層
謝謝樓主的分享,這都是經(jīng)驗(yàn)。
回復(fù)

使用道具 舉報(bào)

ID:74985 發(fā)表于 2015-3-21 03:04 | 顯示全部樓層
今天寫(xiě)程序碰見(jiàn)一個(gè)奇怪的問(wèn)題,我用到單片機(jī)的串口,在配置的時(shí)候使能了串口中斷,但是我沒(méi)有寫(xiě)相應(yīng)的中斷函數(shù),編譯程序沒(méi)錯(cuò)誤,但是下載到板子上的時(shí)候程序死在了開(kāi)頭,后來(lái)我寫(xiě)上中斷函數(shù),在中斷函數(shù)里隨便寫(xiě)了一些代碼,程序能正常執(zhí)行,我把串口使能關(guān)斷,不寫(xiě)串口中斷,程序也能正常執(zhí)行。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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