<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > uCOS-II的嵌入式串口通信模塊設計

uCOS-II的嵌入式串口通信模塊設計

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò ) 收藏

3 串口通信模塊的設計
每個(gè)串行端口有兩個(gè)環(huán)狀隊列緩沖區,同時(shí)有兩個(gè)信號量:一個(gè)用來(lái)指示接收字節,另一個(gè)用來(lái)指示發(fā)送字節。每個(gè)環(huán)狀緩沖區有以下四個(gè)要素:

  • 存儲數據(INT8U數組);
  • 包含環(huán)狀緩沖區字節數的計數器;
  • 環(huán)狀緩沖區中指向將被放置的下一字節的指針;
  • 環(huán)狀緩沖區中指向被取出的下一字節的指針。



圖3是接收數據軟件模塊的流程圖。SerialGetehar()用來(lái)獲取接收到的數據,如果緩沖區已空時(shí)將任務(wù)掛起,接收到字節時(shí),任務(wù)將被喚醒,同時(shí)從串行口接收字節。SerialPutRxChar()用來(lái)將接收的字節放到緩沖區中,如果接收緩沖區已滿(mǎn),則該字節被丟棄。當字節插入到緩沖區中,SerialPutRxChar()通知數據接收信號量,使之將數據己到的消息傳達給所有等待的任務(wù)。為防止掛起應用任務(wù),可以通過(guò)調用 SceiallsEmPty()去發(fā)現環(huán)狀隊列中是否有字節。


圖4是發(fā)送數據模塊的流程圖。當需要發(fā)送數據給串行端口時(shí),SerialPurChar()等待信號量在初始化發(fā)送信號量時(shí)應該初始為緩沖區的大小。因此,當緩沖區中沒(méi)有更多空間時(shí),SerialPutChar()就掛起任務(wù),只要UART再次發(fā)送字節,掛起任務(wù)就將恢復。 SerialGctChar()被中斷服務(wù)程序調用,如果發(fā)送緩沖區至少還有一個(gè)字節,Seri-a1GetChar()就返回一個(gè)從緩沖區發(fā)送的字節。如果緩沖區己空,則SerialGetChar()返回Null,這將使調用停止進(jìn)一步的發(fā)送中斷,一直到有數據發(fā)送為止。

4 異步串行通信的接口函數
應用任務(wù)可以通過(guò)如下的幾個(gè)函數來(lái)控制和訪(fǎng)問(wèn)UART:SerialCfgPort()、SerialGetChar()、SerialInit()、SerialIsEmpty()、SerialIsFull()和SerialPutChar()。
SerialCfgPort()用于建立串行端口的特征,在為指定端口調用其他服務(wù)前,必須先調用該函數,包括確定波特率、比特數、奇偶校驗和停止位等。
SerialGetChar()使應用程序從接收數據的環(huán)狀緩沖區中取出數據。
SerialInit()用于初始化整個(gè)串口軟件模塊,且必須在該模塊提供的其他任何服務(wù)前調用。SeriallInit()將環(huán)狀緩沖區計數器的字節數清零,并初始化每個(gè)環(huán)狀緩沖區的IN和OUT指針,指向數據存儲區的開(kāi)始處。數據接收信號量初始化為0,表示在環(huán)狀緩沖區無(wú)數據。用傳送緩沖區大小初始化數據傳送信號量,表示緩沖區已空。
SerialIsEmpty()允許應用程序確定是否有字節從串口接收進(jìn)來(lái)。本函數允許在無(wú)數據時(shí)避免將任務(wù)掛起。
SerialIsFull()允許應用程序確定傳送環(huán)狀緩沖區的狀態(tài),本函數可以在緩沖區已滿(mǎn)時(shí)避免將任務(wù)掛起。
SerialPutChar()允許應用程序向一個(gè)串行端口發(fā)送數據。

結 語(yǔ)
該串口通信模塊充分利用了實(shí)時(shí)內核的任務(wù)調度功能和信號量機制,系統軟件模塊化,可讀性增強,便于修改和移植,其設計思路和方法可以很好的應用在多種情況下的測控系統中,系統的擴展方便,具有一定的借鑒作用。該串口通信模塊已作為某鐵路供水遠程控制終端的一部分,運行穩定,提高了整個(gè)系統的運行效率和實(shí)時(shí)性。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: uCOS-II串口通信模塊設

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>