數(shù)變量的初值以及預(yù)設(shè)值的差值得到),若在規(guī)定次數(shù)內(nèi)檢測(cè)到UART中斷標(biāo)記,則表明數(shù)據(jù)傳輸未完成,繼續(xù)執(zhí)行前面的接收數(shù)據(jù)的過(guò)程,若在規(guī)定次數(shù)內(nèi)沒(méi)有檢測(cè)到UART中斷標(biāo)記,則表明數(shù)據(jù)傳輸已經(jīng)完成,退出UART中斷處理函數(shù)。若沒(méi)有上述環(huán)節(jié),有可能在數(shù)據(jù)未接收完畢時(shí)就退出了 UART中斷處理函數(shù),此時(shí)有新的數(shù)據(jù)傳來(lái)后,還需要再次進(jìn)入U(xiǎn)ART中斷處理函數(shù)。通過(guò)上述方法可以進(jìn)一步減少進(jìn)出UART中斷處理函數(shù)的次數(shù)
[0087]故本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法進(jìn)一步降低了微控制器的工作負(fù)荷,更加不會(huì)對(duì)微控制器當(dāng)前進(jìn)行的操作造成不利影響,進(jìn)一步提高了軟件的運(yùn)行速度和運(yùn)行效率,進(jìn)一步提高了數(shù)據(jù)接收的正確性,以及進(jìn)一步降低了系統(tǒng)的功耗。
[0088]另一方面,本發(fā)明還提供一種提高串口數(shù)據(jù)接收正確性的裝置,如圖7所示,包括:
[0089]開(kāi)始模塊11,用于進(jìn)入U(xiǎn)ART中斷處理函數(shù);
[0090]讀取模塊12,用于讀取UART緩存,將接收到的數(shù)據(jù)保存到內(nèi)存中;
[0091]清除模塊13,用于清除UART中斷標(biāo)記;
[0092]第一檢測(cè)模塊H,用于檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊12。
[0093]與上述提高串口數(shù)據(jù)接收正確性的方法對(duì)應(yīng)的,本發(fā)明的提高串口數(shù)據(jù)接收正確性的裝置降低了微控制器的工作負(fù)荷,不會(huì)對(duì)微控制器當(dāng)前進(jìn)行的操作造成不利影響,提高了軟件的運(yùn)行速度和運(yùn)行效率,提高了數(shù)據(jù)接收的正確性,以及降低了系統(tǒng)的功耗。
[0094]作為本發(fā)明的提高串口數(shù)據(jù)接收正確性的裝置的一種改進(jìn),如圖8所示,第一檢測(cè)模塊14進(jìn)一步用于:檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊12,否則轉(zhuǎn)至定時(shí)模塊21 ;
[0095]該裝置還包括:
[0096]定時(shí)模塊21,用于啟動(dòng)定時(shí)器,設(shè)置定時(shí)時(shí)間;
[0097]第一判斷模塊22,用于判斷定時(shí)時(shí)間是否到,若是,轉(zhuǎn)至第二檢測(cè)模塊23,否則,繼續(xù)執(zhí)行判斷模塊22 ;
[0098]第二檢測(cè)模塊23,用于檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊12,否則退出UART中斷處理函數(shù)。
[0099]與上述提高串口數(shù)據(jù)接收正確性的方法對(duì)應(yīng)的,本發(fā)明的提高串口數(shù)據(jù)接收正確性的裝置進(jìn)一步降低了微控制器的工作負(fù)荷,更加不會(huì)對(duì)微控制器當(dāng)前進(jìn)行的操作造成不利影響,進(jìn)一步提高了軟件的運(yùn)行速度和運(yùn)行效率,進(jìn)一步提高了數(shù)據(jù)接收的正確性,以及進(jìn)一步降低了系統(tǒng)的功耗。
[0100]上述定時(shí)時(shí)間為串口接收一幀數(shù)據(jù)的時(shí)間的倍數(shù)。
[0101]這樣設(shè)置定時(shí)時(shí)間既可以保證在數(shù)據(jù)未接收完畢時(shí)就退出了 UART中斷處理函數(shù)的情況不會(huì)發(fā)生,又不會(huì)使微處理器等待時(shí)間過(guò)長(zhǎng)而浪費(fèi)時(shí)間,提高了微處理器的工作效率。
[0102]優(yōu)選的,定時(shí)時(shí)間可以為10_500ms。
[0103]作為本發(fā)明的提高串口數(shù)據(jù)接收正確性的裝置的另一種改進(jìn),如圖9所示,第一檢測(cè)模塊14進(jìn)一步用于:檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊12,否則轉(zhuǎn)至設(shè)置模塊51 ;
[0104]該裝置還包括:
[0105]設(shè)置模塊51,用于設(shè)置計(jì)數(shù)變量的初值以及預(yù)設(shè)值;
[0106]第三檢測(cè)模塊52,用于檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊12,否則轉(zhuǎn)至計(jì)數(shù)模塊53 ;
[0107]計(jì)數(shù)模塊53,用于使計(jì)數(shù)變量自加或自減;
[0108]第二判斷模塊54,用于判斷計(jì)數(shù)變量的值是否等于預(yù)設(shè)值,若是,退出UART中斷處理函數(shù),否則,轉(zhuǎn)至第三檢測(cè)模塊52。
[0109]與上述提高串口數(shù)據(jù)接收正確性的方法對(duì)應(yīng)的,本發(fā)明的提高串口數(shù)據(jù)接收正確性的裝置進(jìn)一步降低了微控制器的工作負(fù)荷,更加不會(huì)對(duì)微控制器當(dāng)前進(jìn)行的操作造成不利影響,進(jìn)一步提高了軟件的運(yùn)行速度和運(yùn)行效率,進(jìn)一步提高了數(shù)據(jù)接收的正確性,以及進(jìn)一步降低了系統(tǒng)的功耗。
[0110]以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種提高串口數(shù)據(jù)接收正確性的方法,其特征在于,包括: 步驟S101:進(jìn)入U(xiǎn)ART中斷處理函數(shù); 步驟S102:讀取UART緩存,將接收到的數(shù)據(jù)保存到內(nèi)存中; 步驟S103:清除UART中斷標(biāo)記; 步驟S104:檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至步驟S102。2.根據(jù)權(quán)利要求1所述的提高串口數(shù)據(jù)接收正確性的方法,其特征在于,所述步驟S104進(jìn)一步為:檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至步驟S102,否則轉(zhuǎn)至步驟S201 ; 所述方法還包括: 步驟S201:啟動(dòng)定時(shí)器,設(shè)置定時(shí)時(shí)間; 步驟S202:判斷定時(shí)時(shí)間是否到,若是,轉(zhuǎn)至步驟S203,否則,繼續(xù)執(zhí)行步驟S102 ; 步驟S203:檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至步驟S102,否則退出UART中斷處理函數(shù)。3.根據(jù)權(quán)利要求2所述的提高串口數(shù)據(jù)接收正確性的方法,其特征在于,所述定時(shí)時(shí)間為串口接收一幀數(shù)據(jù)的時(shí)間的倍數(shù)。4.根據(jù)權(quán)利要求3所述的提高串口數(shù)據(jù)接收正確性的方法,其特征在于,所述定時(shí)時(shí)間為 10-500ms。5.根據(jù)權(quán)利要求1所述的提高串口數(shù)據(jù)接收正確性的方法,其特征在于,所述步驟S104進(jìn)一步為:檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至步驟S102,否則轉(zhuǎn)至步驟S501 ; 所述方法還包括: 步驟S501:設(shè)置計(jì)數(shù)變量的初值以及預(yù)設(shè)值; 步驟S502:檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至步驟S102,否則轉(zhuǎn)至步驟S503 ; 步驟S503:使計(jì)數(shù)變量自加或自減; 步驟S504:判斷計(jì)數(shù)變量的值是否等于預(yù)設(shè)值,若是,退出UART中斷處理函數(shù),否則,轉(zhuǎn)至步驟S502。6.一種提高串口數(shù)據(jù)接收正確性的裝置,其特征在于,包括: 開(kāi)始模塊,用于進(jìn)入U(xiǎn)ART中斷處理函數(shù); 讀取模塊,用于讀取UART緩存,將接收到的數(shù)據(jù)保存到內(nèi)存中; 清除模塊,用于清除UART中斷標(biāo)記; 第一檢測(cè)模塊,用于檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊。7.根據(jù)權(quán)利要求6所述的提高串口數(shù)據(jù)接收正確性的裝置,其特征在于,所述第一檢測(cè)模塊進(jìn)一步用于:檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊,否則轉(zhuǎn)至定時(shí)模塊; 所述裝置還包括: 定時(shí)模塊,用于啟動(dòng)定時(shí)器,設(shè)置定時(shí)時(shí)間; 第一判斷模塊,用于判斷定時(shí)時(shí)間是否到,若是,轉(zhuǎn)至第二檢測(cè)模塊,否則,繼續(xù)執(zhí)行判斷模塊; 第二檢測(cè)模塊,用于檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊,否則退出UART中斷處理函數(shù)。8.根據(jù)權(quán)利要求7所述的提高串口數(shù)據(jù)接收正確性的裝置,其特征在于,所述定時(shí)時(shí)間為串口接收一幀數(shù)據(jù)的時(shí)間的倍數(shù)。9.根據(jù)權(quán)利要求8所述的提高串口數(shù)據(jù)接收正確性的裝置,其特征在于,所述定時(shí)時(shí)間為 10-500ms。10.根據(jù)權(quán)利要求6所述的提高串口數(shù)據(jù)接收正確性的裝置,其特征在于,所述第一檢測(cè)模塊進(jìn)一步用于:檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊,否則轉(zhuǎn)至設(shè)置模塊; 所述裝置還包括: 設(shè)置模塊,用于設(shè)置計(jì)數(shù)變量的初值以及預(yù)設(shè)值; 第三檢測(cè)模塊,用于檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊,否則轉(zhuǎn)至計(jì)數(shù)模塊; 計(jì)數(shù)模塊,用于使計(jì)數(shù)變量自加或自減; 第二判斷模塊,用于判斷計(jì)數(shù)變量的值是否等于預(yù)設(shè)值,若是,退出UART中斷處理函數(shù),否則,轉(zhuǎn)至第三檢測(cè)模塊。
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種提高串口數(shù)據(jù)接收正確性的方法和裝置,屬于數(shù)據(jù)傳輸領(lǐng)域。所述方法包括步驟S101:進(jìn)入U(xiǎn)ART中斷處理函數(shù);步驟S102:讀取UART緩存,將接收到的數(shù)據(jù)保存到內(nèi)存中;步驟S103:清除UART中斷標(biāo)記;步驟S104:檢測(cè)UART中斷標(biāo)記,若檢測(cè)到UART中斷標(biāo)記,則轉(zhuǎn)至步驟S102。與現(xiàn)有技術(shù)相比,本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法降低了微控制器的工作負(fù)荷,不會(huì)對(duì)微控制器當(dāng)前進(jìn)行的操作造成不利影響,提高了軟件的運(yùn)行速度和運(yùn)行效率,提高了數(shù)據(jù)接收的正確性,以及降低了系統(tǒng)的功耗。
【IPC分類(lèi)】G06F13/42
【公開(kāi)號(hào)】CN105446925
【申請(qǐng)?zhí)枴緾N201510335257
【發(fā)明人】賈天亮
【申請(qǐng)人】北京天誠(chéng)盛業(yè)科技有限公司
【公開(kāi)日】2016年3月30日
【申請(qǐng)日】2015年6月16日