<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è) > 嵌入式系統 > 設計應用 > 基于μC/OS-II的Modbus協(xié)議測試系統

基于μC/OS-II的Modbus協(xié)議測試系統

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

  3 軟件設計

  μ下應用程序設計主要是根據系統的功能需要劃分不同的任務(wù)和中斷,并為每個(gè) 任務(wù)分配不同的優(yōu)先級。一個(gè)任務(wù)通常是一個(gè)無(wú)限的循環(huán),看起來(lái)像其它C的函數一樣,有 函數返回類(lèi)型,有形式參數變量,但任務(wù)是決不會(huì )返回的,因此返回參數類(lèi)型必須定義為 void。為了使μ能管理用戶(hù)任務(wù),用戶(hù)必須在建立一個(gè)任務(wù)的時(shí)候,將任務(wù)的起始地 址與其它參數一起傳給OSTaskCreate()或OSTaskCreateExt()。

  中斷和任務(wù)以及任務(wù)與任務(wù)之間的同步可通過(guò)信號量實(shí)現。下面以測試程 序中RTU模式下字符時(shí)間間隔的測量為例介紹μ程序設計中任務(wù)和中斷的劃分。 的RTU模式中規定[3]:RTU模式下必須以連續的字符流發(fā)送整個(gè)報文幀,同一個(gè) 幀中兩個(gè)字符之間的空閑時(shí)間Δt不能大于1.5個(gè)字符時(shí)間(稱(chēng)為t1.5),否則就認為報文幀不完 整;不同報文幀之間需要時(shí)長(cháng)至少為3.5個(gè)字符的空閑時(shí)間,這個(gè)時(shí)間區間被稱(chēng)為t3.5。RTU 模式下的信息幀如圖2所示。

  圖2 RTU模式的信息幀

  為了記錄RTU 幀中一個(gè)字符結束時(shí)間和另一個(gè)字符的起始時(shí)間,系統分別使用串口中 斷Uart_ISR 和IO 中斷PE24_ISR 分別對這兩個(gè)時(shí)刻進(jìn)行捕捉。這需要將HMS30C7202 的串 口中斷時(shí)機設置為接收完一個(gè)字符后,將通用I/O 端口線(xiàn)PE24 設為允許中斷、下降沿觸發(fā)。

  為了縮短關(guān)中斷時(shí)間和中斷處理時(shí)間,可將中斷的處理放在任務(wù)中進(jìn)行。在主任務(wù)中調 用OSTaskCreate函數分別建立串口接收處理任務(wù)Uart_Task和IO口處理任務(wù)PE24_Task。在 μC/OS-II中,有一個(gè)全局的系統時(shí)鐘,維護著(zhù)一個(gè)全局時(shí)間變量。在Uart_Task和PE24_Task這兩個(gè)任務(wù)中分別通過(guò)讀取當前全局時(shí)間變量來(lái)實(shí)現對字符起始時(shí)間和結束時(shí)間的連續測 量。系統利用μC/OS-II中信號量機制實(shí)現中斷與任務(wù)之間的同步[3][4],信號量必須在系統啟 動(dòng)的時(shí)候初始化,利用信號量實(shí)現任務(wù)與中斷同步的過(guò)程如圖3所示。

  圖 3 利用信號量實(shí)現任務(wù)與中斷同步



評論


相關(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>