欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

提高串口數(shù)據(jù)接收正確性的方法和裝置的制造方法

文檔序號:9687387閱讀:439來源:國知局
提高串口數(shù)據(jù)接收正確性的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)傳輸領(lǐng)域,特別是指一種提高串口數(shù)據(jù)接收正確性的方法和裝置。
【背景技術(shù)】
[0002]通用異步收發(fā)器(UniversalAsynchronous Receiver and Transmitter ;UART)是用硬件實現(xiàn)異步串行通信的通信接口電路,UART異步串行通信接口是電子電路設(shè)計中最常見都接口,可用來與上位機(jī)或其他外部設(shè)備進(jìn)行數(shù)據(jù)通信。由于UART應(yīng)用的普通性,所以大部分微控制器內(nèi)部都集成有UART模塊。
[0003]UART模塊以字節(jié)為單位接收數(shù)據(jù),每接收一個字節(jié)或多個字節(jié),UART模塊就會設(shè)置一個中斷標(biāo)記,當(dāng)微控制器使能了 UART模塊的中斷使能后,就會觸發(fā)一個中斷操作,微控制器會中斷當(dāng)前的操作,跳到UART中斷處理函數(shù)中執(zhí)行相應(yīng)的操作。
[0004]微控制器處理UART的中斷操作如圖1所示,而當(dāng)前技術(shù)在用UART接收數(shù)據(jù)的操作如圖2所示:
[0005]現(xiàn)有技術(shù)利用UART接收數(shù)據(jù)的操作存在的問題是:
[0006]—、微控制器的工作負(fù)荷大;由于微控制器要不斷的進(jìn)出中斷來完成串口數(shù)據(jù)的接收工作,這就使的微控制器要不斷的中斷當(dāng)前操作、保持中斷現(xiàn)場、執(zhí)行中斷處理函數(shù)、然后退出中斷、恢復(fù)中斷現(xiàn)場,這就使得微控制器的工作負(fù)荷非常的大。
[0007]二、對微控制器當(dāng)前進(jìn)行的操作造成不利影響;微控制器在處理中斷的時候需要中斷當(dāng)前的操作,頻繁的進(jìn)出中斷將影響到其它的操作,甚至造成某些操作的失敗。例如當(dāng)某器件對操作時序要求非常嚴(yán)格的時候,如果在對此器件操作的過程,頻繁的進(jìn)出UART中斷處理,將會使對此器件的操作失敗,嚴(yán)重情況下可能會造成整個程序的崩潰。
[0008]三、降低了軟件的運行速度和運行效率;微控制器頻繁的進(jìn)出UART中斷,整體上降低了軟件的運行速度和運行效率,因為微控制器的一部分的工作消耗到了保存中斷現(xiàn)場、恢復(fù)中斷現(xiàn)場上。
[0009]四、可能使數(shù)據(jù)的丟失,降低了數(shù)據(jù)接收的正確性;進(jìn)入UART中斷處理函數(shù)后,如果不能及時的退出該函數(shù),將會造成UART接口新接收的數(shù)據(jù)還沒來得及被讀取,就被后面的數(shù)據(jù)所覆蓋,UART的數(shù)據(jù)接收緩存的大小是一定的(一般為一個或幾個字節(jié)),當(dāng)已經(jīng)有數(shù)據(jù)存儲到了緩存中,下次有數(shù)據(jù)到來的時候,UART模塊不管當(dāng)前緩存中有沒有數(shù)據(jù),會直接將新數(shù)據(jù)放到UART緩存中,覆蓋當(dāng)前數(shù)據(jù),從而造成數(shù)據(jù)的丟失。

【發(fā)明內(nèi)容】

[0010]本發(fā)明提供一種提高串口數(shù)據(jù)接收正確性的方法和裝置,該方法降低了微控制器的工作負(fù)荷,不會對微控制器當(dāng)前進(jìn)行的操作造成不利影響,提高了軟件的運行速度和運行效率,提高了數(shù)據(jù)接收的正確性,以及降低了系統(tǒng)的功耗。
[0011]為解決上述技術(shù)問題,本發(fā)明提供技術(shù)方案如下:
[0012]一種提高串口數(shù)據(jù)接收正確性的方法,包括:
[0013]步驟S101:進(jìn)入UART中斷處理函數(shù);
[0014]步驟S102:讀取UART緩存,將接收到的數(shù)據(jù)保存到內(nèi)存中;
[0015]步驟S103:清除UART中斷標(biāo)記;
[0016]步驟S104:檢測UART中斷標(biāo)記,若檢測到UART中斷標(biāo)記,則轉(zhuǎn)至步驟S102。
[0017]—種提高串口數(shù)據(jù)接收正確性的裝置,包括:
[0018]開始模塊,用于進(jìn)入UART中斷處理函數(shù);
[0019]讀取模塊,用于讀取UART緩存,將接收到的數(shù)據(jù)保存到內(nèi)存中;
[0020]清除模塊,用于清除UART中斷標(biāo)記;
[0021]第一檢測模塊,用于檢測UART中斷標(biāo)記,若檢測到UART中斷標(biāo)記,則轉(zhuǎn)至讀取模塊。
[0022]本發(fā)明具有以下有益效果:
[0023]與現(xiàn)有技術(shù)相比,本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法中,在進(jìn)入UART中斷處理函數(shù)后,開始讀取UART緩存中的數(shù)據(jù)到內(nèi)存中,接收完成后,并不立刻退出,而是重新檢測UART端口是否接收到了新的數(shù)據(jù),如果接收到的話,繼續(xù)讀取UART緩存中的數(shù)據(jù)到內(nèi)存中,直至數(shù)據(jù)接收完成。
[0024]本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法降低了微控制器的工作負(fù)荷。本發(fā)明只需進(jìn)入UART中斷一次,就能完成串口數(shù)據(jù)的接收,微控制器不需要不斷的中斷當(dāng)前操作、保持中斷現(xiàn)場、執(zhí)行中斷處理函數(shù)、然后退出中斷、恢復(fù)中斷現(xiàn)場,這就降低了微控制器的工作負(fù)荷。
[0025]本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法不會對微控制器當(dāng)前進(jìn)行的操作造成不利影響。由于本發(fā)明的方法在接收串口數(shù)據(jù)的時候,一次中斷即可完成,不用頻繁的進(jìn)出中斷從而影響到其它的操作,不會對整體程序的正常執(zhí)行造成影響。
[0026]本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法提高了軟件的運行速度和運行效率。微控制器不用頻繁的進(jìn)出UART中斷,不用將資源消耗到了保存中斷現(xiàn)場、恢復(fù)中斷現(xiàn)場上,減少了微控制器的一些無謂的工作開銷,大大提高了微控制器的使用效率,從而大大提高了整體代碼的執(zhí)行速度和執(zhí)行效率,提高了軟件的運行速度和運行效率。
[0027]本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法提高了數(shù)據(jù)接收的正確性。本發(fā)明在進(jìn)入UART中斷后,在中斷函數(shù)內(nèi)循環(huán)接收串口數(shù)據(jù),直至串口數(shù)據(jù)接收完成,從而提高了串口數(shù)據(jù)接收的準(zhǔn)確性。不會出現(xiàn)現(xiàn)有技術(shù)中的如下現(xiàn)象:如果一次中斷發(fā)生后UART緩存中的數(shù)據(jù)被讀取后,而此時微控制器還沒有來的及退出UART中斷處理函數(shù)時候,又有新數(shù)據(jù)被UART接口接收的話,此時將會造成這部分?jǐn)?shù)據(jù)的丟失。
[0028]另外,發(fā)明人還發(fā)現(xiàn),本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法降低了系統(tǒng)的功耗。頻繁的進(jìn)出UART中斷,將會使微控制器的工作負(fù)荷非常的大,從而使系統(tǒng)的功耗也非常的高。而通過本發(fā)明中的方法,降低了微控制器的工作負(fù)荷,從而在一定程度上降低了系統(tǒng)的功耗。
[0029]故本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法降低了微控制器的工作負(fù)荷,不會對微控制器當(dāng)前進(jìn)行的操作造成不利影響,提高了軟件的運行速度和運行效率,提高了數(shù)據(jù)接收的正確性,以及降低了系統(tǒng)的功耗。
【附圖說明】
[0030]圖1為現(xiàn)有技術(shù)中微控制器處理UART時的中斷操作流程圖;
[0031 ]圖2為現(xiàn)有技術(shù)中UART接收數(shù)據(jù)的方法流程圖;
[0032]圖3為UART的數(shù)據(jù)傳輸格式示意圖;
[0033]圖4為本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法的一個實施例的流程圖;
[0034]圖5為本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法的另一個實施例的流程圖;
[0035]圖6為本發(fā)明的提高串口數(shù)據(jù)接收正確性的方法的再一個實施例的流程圖;
[0036]圖7為本發(fā)明的提高串口數(shù)據(jù)接收正確性的裝置的一個實施例的結(jié)構(gòu)示意圖;
[0037]圖8為本發(fā)明的提高串口數(shù)據(jù)接收正確性的裝置的另一個實施例的結(jié)構(gòu)示意圖;
[0038]圖9為本發(fā)明的提高串口數(shù)據(jù)接收正確性的裝置的再一個實施例的結(jié)構(gòu)示意圖。
【具體實施方式】
[0039]為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖及具體實施例進(jìn)行詳細(xì)描述。
[0040]UART (Universal Asynchronous Receiver and Transmitter)通用異步收發(fā)器(異步串行通信口),是一種通用的數(shù)據(jù)通信協(xié)議。UART使用的是異步,串行通信。
[0041]串行通信是指利用一條傳輸線將資料一位位地順序傳送。特點是通信線路簡單,利用簡單的線纜就可實現(xiàn)通信,降低成本。適用于遠(yuǎn)距離通信,但傳輸速度慢的應(yīng)用場合。
[0042]—方面,本發(fā)明提供一種提高串口數(shù)據(jù)接收正確性的方法,如圖4所示,包括:
[0043]步驟S101:進(jìn)入UART中斷處理函數(shù);
[0044]本步驟之前的所有操作與現(xiàn)有技術(shù)相同,如圖1所示;
[0045]步驟S102:讀取UART緩存,將接收到的數(shù)據(jù)保存到內(nèi)存中;
[0046]此處的UART緩存指UART的輸入緩沖寄存器,UART在接收數(shù)據(jù)時,會用到輸入移位寄存器以及輸入緩沖寄存器,其中輸入移位寄存器以接收時鐘的速率把出現(xiàn)在串行數(shù)據(jù)輸入線上的數(shù)據(jù)逐位移入,當(dāng)數(shù)據(jù)裝滿后,并行送往輸入緩沖寄存器,輸入緩沖寄存器從輸入移位寄存器中接收并行數(shù)據(jù),然后由CPU取走;
[0047]步驟S103:清除UART中斷標(biāo)記;
[0048]輸入緩沖寄存器中的數(shù)據(jù)由CPU取走之后,CPU會清除UART中斷標(biāo)記(一般是使中斷標(biāo)記的值由邏輯1變?yōu)檫壿?);
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
都匀市| 南召县| 江山市| 威宁| 淮南市| 阳信县| 新巴尔虎右旗| 墨江| 巫山县| 航空| 宣化县| 宜春市| 红安县| 莲花县| 彭州市| 珲春市| 乌海市| 温宿县| 玉环县| 石台县| 舞钢市| 肇州县| 龙山县| 江北区| 平安县| 察哈| 开原市| 新郑市| 海伦市| 色达县| 鸡西市| 甘德县| 涟水县| 承德县| 聊城市| 大理市| 盐边县| 丰城市| 酉阳| 沂南县| 汝州市|