亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        有軌電車軌道模塊中實時操作系統(tǒng)的應用

        2014-07-28 11:29:07趙升艷令曉明
        電腦知識與技術 2014年18期

        趙升艷++令曉明

        摘要:該文主要介紹將實時操作系統(tǒng)應用于有軌電車軌道模塊控制系統(tǒng),通過實時系統(tǒng)彌補離散控制系統(tǒng)實時性差的問題。采取基于LPC1700的實時多任務操作系統(tǒng)μC/OS-Ⅱ進行有軌電車軌道模塊的通信控制,從而實現(xiàn)了各個模塊通信的實時性。

        關鍵詞:實時操作系統(tǒng);軌道模塊;LPC1700;μC/OS-Ⅱ

        中圖分類號: TP31 文獻標識碼:A 文章編號:1009-3044(2014)18-4341-03

        The Application of Real-time Operating System in the Track Module of the Tram

        ZHAO Sheng-yan, LING Xiao-ming

        (Lanzhou Jiaotong University, Lanzhou 730070, China)

        Abstract: In this paper, a real-time control system was used to the orbital module control system of the tram's main track,, through the real-time system we solved the problem of poor real-time in discrete control system.By using the real-time multitasking operating system named μC/OS-Ⅱwhich based on LPC1700,we control the communication of the tram's track module and implement the real-time communication of the modules.

        Key words: RTOS(real-time operating system); orbital module; LPC1700; μC/OS-Ⅱ

        1 概述

        在城市各種公共交通工具中,城市軌道交通具有運量大、速度快、安全可靠、污染底等特點[1]。而在軌道交通控制系統(tǒng)中,軌道模塊控制系統(tǒng)是交通運營方面極為重要的一個環(huán)節(jié)。傳統(tǒng)的軌道模塊控制系統(tǒng)是離散模塊,離散模塊無法實現(xiàn)各個模塊的通信的實時性。因此,為了更好地提高系統(tǒng)的實時性,研究將實時操作系統(tǒng)應用于軌道模塊,已成為完善控制系統(tǒng)十分重要的一個方面?;谝陨显?,該文研究了有軌電車軌道模塊控制中實時多任務操作系統(tǒng)μC/OS-Ⅱ的應用,并通過實際應用驗證了其可行性。

        采用基于LPC1700的實時多任務操作系統(tǒng)μC/OS-Ⅱ進行有軌電車軌道模塊控制時,首先要將μC/OS-Ⅱ移植到LPC1700微處理器上。μC/OS-Ⅱ是一個完整的,可移植、固化、裁剪的占先式實時多任務內(nèi)核。μC/OS-Ⅱ是在PC機上開發(fā)和測試的,但μC/OS-Ⅱ的實際對象是嵌入式系統(tǒng),并且很容易移植到不同架構的微處理器上[2]。該文將簡單介紹如何將μC/OS-Ⅱ移植到LPC1700上并且實現(xiàn)有軌電車軌道模塊控制系統(tǒng)中多任務的運行。

        計算機在執(zhí)行應用程序時,經(jīng)常要用I/O設備進行數(shù)據(jù)的輸入和輸出,而I/O設備在工作時總是需要一段時間的。于是在I/O設備工作期間,如果CPU沒有其他任務,那么就只能等待,因此就會使計算機運行一個應用程序所花的時間比較長,也就是說,這種系統(tǒng)的實時性較差。多任務運行的實現(xiàn)實際上是靠CPU在許多任務之間轉換和調(diào)度。CPU只有一個,輪番服務于一系列任務中的某一個。多任務運行使CPU的利用率達到最高,并使應用程序模塊化[3]。該文就是使用了多任務,將一個大的應用程序分成相對獨立的多個任務來完成,從而給應用程序的設計和維護也提供了極大的方便。

        2 基于LPC1700的μC/OS-Ⅱ的移植

        1) 移植要求

        在將實時操作系統(tǒng)應用在有軌電車軌道模塊控制系統(tǒng)中時,我們采用了LPC1700微處理器,移植過程在Keil μVision4集成開發(fā)環(huán)境上完成。由于LPC1700微處理器支持并能產(chǎn)生中斷、具有堆棧指針、具有CPU內(nèi)部寄存器入棧和出棧指令,并且Keil μVision4的C編譯器可直接在C語言中開關中斷,并支持內(nèi)嵌匯編指令[4]。所以,以Keil μVision4為開發(fā)平臺,以LPC1700作為目標微處理器來移植μC/OS-Ⅱ是完全可行的。

        2) 需要移植的主要內(nèi)容

        需移植的μC/OS-Ⅱ的軟件體系結構如圖1所示。

        從圖中我們可以明確知道對于μC/OS-Ⅱ的移植主要是編寫OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM三個文件中的代碼[5]。

        3) 移植后的測試

        在驗證移植的μC/OS-Ⅱ是否正常工作時,首先不加任何應用代碼來測試移植好的μC/OS-Ⅱ,也就是說,應該先測試內(nèi)核自身的運行狀況。這樣做的好處是:如果有些部分沒有正常工作,我們可以明白是移植本身的問題,而不是應用代碼產(chǎn)生的問題。在進行此次移植代碼的測試時,采用了以下四個步驟[6]:

        ① 確保C編譯器、匯編編譯器及鏈接器正常工作;

        ② 驗證OSTaskStkInit()和OSStartHighRdy()函數(shù);

        ③ 驗證OSCtxSw()函數(shù);

        ④ 驗證OSIntCtxSw()和OSTickISR()函數(shù)。

        3 有軌電車正線聯(lián)鎖控制系統(tǒng)實時多任務的實現(xiàn)

        μC/OS-Ⅱ的任務有兩種:用戶任務和系統(tǒng)任務。由應用程序設計者編寫的任務,叫做用戶任務;由系統(tǒng)提供的任務叫做系統(tǒng)任務。用戶任務是為了解決應用問題而編寫的;系統(tǒng)任務是為應用程序提供某種服務或為系統(tǒng)本身服務的[6]。下面的任務就是針對有軌電車軌道模塊所設計的用戶任務,軌道模塊實現(xiàn)對軌道區(qū)段的狀態(tài)采集,將狀態(tài)信息傳至聯(lián)鎖CPU模塊進行聯(lián)鎖運算,確保行車安全,以下是軌道模塊相關功能的實現(xiàn)方式。endprint

        1) 雙ARM同步任務的實現(xiàn)

        在建立此任務時,由于每次任務執(zhí)行的時間必須相同,因此讓雙ARM同步任務的執(zhí)行時間是0.5ms。具體實現(xiàn)方法是:首先為雙ARM同步任務配置堆棧空間,其代碼為static OS_STK stkARM_synTask[256],并在main()函數(shù)中創(chuàng)建此任務,代碼為OSTaskCreate(CupledTask, (void *)0, &stkCupledTask[sizeof(stkCupledTask) / 4 - 1],12)。其次讓定時器0每隔0.5ms中斷一次,在每次中斷時,用消息郵箱發(fā)送消息給所有的任務。發(fā)送消息郵箱的具體步驟是:定義消息郵箱指針:OS_EVENT *Mybox;在main()函數(shù)中創(chuàng)建消息郵箱:Mybox = OSMboxCreate((void *)0),最后發(fā)送消息:OSMboxPostOpt(Mybox,(void *)1,OS_POST_OPT_BROADCAST)。當處于掛起狀態(tài)的雙ARM同步任務接收到消息時,就會立刻進入就緒態(tài),當其他更高優(yōu)先級的任務運行結束后,此任務即刻進入運行態(tài)。進入主機調(diào)試窗口觀察到的結果如圖2所示。進入從機調(diào)試窗口觀察到的結果如圖3所示。

        2) 采集外線狀態(tài)任務的實現(xiàn)

        由于信號采集任務的優(yōu)先級高于數(shù)據(jù)處理任務的優(yōu)先級,即信息傳遞的上游任務的優(yōu)先級高于下游任務的優(yōu)先級,所以讓采集外線狀態(tài)任務的優(yōu)先級高于雙ARM同步任務的優(yōu)先級[3]。在函數(shù)main()中創(chuàng)建此任務,其代碼為:OSTaskCreate(GatherTask, (void *)0, &stkGatherTask[sizeof(stkGatherTask) / 4 - 1], 8)。同樣地,當任務接收到消息郵箱發(fā)送來的消息后,且任務處于就緒態(tài)任務的最高優(yōu)先級時立刻進入運行態(tài)。其采集到的外線狀態(tài)的結果如圖4所示。

        3) 解析聯(lián)鎖命令任務的實現(xiàn)

        解析聯(lián)鎖命令任務是比較關鍵的任務,為避免由于聯(lián)鎖命令的漏解析,使得控制系統(tǒng)發(fā)出錯誤的控制指令,我們將此任務的優(yōu)先級設得比較高,創(chuàng)建任務的代碼為:OSTaskCreate(ParseTask, (void *)0, &stkParseTask[sizeof(stkParseTask) / 4 - 1], 6),當有新數(shù)據(jù)到達時,判斷第一路、第二路有無命令,如果有命令,判斷是否為請求命令,若是請求命令,且有請求數(shù)據(jù)時,讀取請求數(shù)據(jù)的幀序號。

        4) 驅動繼電器動作任務的實現(xiàn)

        將驅動繼電器動作任務創(chuàng)建為主任務,且優(yōu)先級為創(chuàng)建的任務中最高的優(yōu)先級:OSTaskCreate(mainTask, (void *)0, &stkMainTask[sizeof(stkMainTask) / 4 - 1],4),我們在安排任務的優(yōu)先級時,設計了一定的冗余,這樣就為以后增加新任務提供方便,即當要創(chuàng)建新的任務而不知道優(yōu)先級是多少時,就可以在不改變現(xiàn)有任務優(yōu)先級的情況下,很容易根據(jù)需要找到一個合適的空閑優(yōu)先級。驅動繼電器動作的命令如圖5所示。

        5) CPU運行燈控制任務的實現(xiàn)

        CPU運行燈控制任務的實現(xiàn)采用接收二值信號量的方法,二值信號量的使用范圍是:被控制方總能夠及時響應控制方發(fā)出的信號,完成相應處理器任務,并在下一次信號來到之前進入等待狀態(tài)[6]。OSTaskCreate(CupledTask, (void *)0, &stkCupledTask[sizeof(stkCupledTask) / 4 - 1],12)是創(chuàng)建CPU運行燈控制任務的代碼,中斷處理函數(shù)每到100ms時給CPU運行控制任務發(fā)送二值信號量:OSSemPost(CpuSem),當任務接收到二值信號量時,即刻進入就緒態(tài)。

        6) 串口2發(fā)送數(shù)據(jù)任務的實現(xiàn)

        與CPU運行燈控制任務類似,串口2發(fā)送數(shù)據(jù)任務也通過接收二值信號量的方法,當定時器0每隔50ms時,發(fā)送信號量,任務先進行發(fā)送數(shù)據(jù)的配置,包括幀頭、幀尾、第一路采集狀態(tài)數(shù)據(jù)、第二路采集狀態(tài)數(shù)據(jù)、數(shù)據(jù)校驗和等,待接收到信號量時即刻向CPU發(fā)送數(shù)據(jù)[7]。如圖6所示為執(zhí)行CPU通過串口2向監(jiān)測CPU發(fā)送的數(shù)據(jù),其中FE是幀頭,EF為幀尾,55和55分別是第一路和第二路軌道采集狀態(tài),33和44分別為第三路和第四路軌道采集狀態(tài),66為故障信息,78為校驗和。從圖中我們可以看出監(jiān)測CPU能成功地接收到執(zhí)行CPU發(fā)送的數(shù)據(jù)。

        4 總結

        針對有軌電車軌道模塊控制系統(tǒng)中,實時性較差的問題,采用了基于LPC1700的μC/OS-Ⅱ實時操作系統(tǒng),已實現(xiàn)各模塊通信的實時性。從文中通信數(shù)據(jù)結果中可以看出,采用了實時操作系統(tǒng)μC/OS-Ⅱ的各模塊能有效滿足有軌電車軌道模塊控制系統(tǒng)實時性的要求,可以對軌道區(qū)段的狀態(tài)信息進行實時采集,并將狀態(tài)信息傳至聯(lián)鎖CPU模塊進行聯(lián)鎖運算,確保了行車安全,具有一定的現(xiàn)實意義。

        參考文獻:

        [1] 耿幸福,徐新玉,張國保.城市軌道交通行車組織[M].北京:人民交通出版社,2010:2-10.

        [2] Jean J.Labrosse.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ[M].邵貝貝,等,譯.北京:北京航空航天大學出版社,2003:116-281.

        [3] 任哲.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ原理及應用[M].北京:北京航空航天大學出版社,2009:42-187.

        [4] 周立功等.深入淺出Cortex-M3—LPC1700(上冊)[M].廣州:廣州致遠電子有限公司,2009:213-377.

        [5] 顧鳳玉,施國梁,楊濤.基于LPC2478的μC/OS-Ⅱ的移植及多任務的實現(xiàn)[J].電腦知識與技術,2009,5(7):1776-1779.

        [6] 周航慈.基于嵌入式實時操作系統(tǒng)的程序設計技術[M].北京:北京航空航天大學出版社,2011:50-160.

        [7] 周立功,等.深入淺出Cortex-M3—LPC1700(下冊)[M].廣州:廣州致遠電子有限公司,2009:142-200.endprint

        1) 雙ARM同步任務的實現(xiàn)

        在建立此任務時,由于每次任務執(zhí)行的時間必須相同,因此讓雙ARM同步任務的執(zhí)行時間是0.5ms。具體實現(xiàn)方法是:首先為雙ARM同步任務配置堆??臻g,其代碼為static OS_STK stkARM_synTask[256],并在main()函數(shù)中創(chuàng)建此任務,代碼為OSTaskCreate(CupledTask, (void *)0, &stkCupledTask[sizeof(stkCupledTask) / 4 - 1],12)。其次讓定時器0每隔0.5ms中斷一次,在每次中斷時,用消息郵箱發(fā)送消息給所有的任務。發(fā)送消息郵箱的具體步驟是:定義消息郵箱指針:OS_EVENT *Mybox;在main()函數(shù)中創(chuàng)建消息郵箱:Mybox = OSMboxCreate((void *)0),最后發(fā)送消息:OSMboxPostOpt(Mybox,(void *)1,OS_POST_OPT_BROADCAST)。當處于掛起狀態(tài)的雙ARM同步任務接收到消息時,就會立刻進入就緒態(tài),當其他更高優(yōu)先級的任務運行結束后,此任務即刻進入運行態(tài)。進入主機調(diào)試窗口觀察到的結果如圖2所示。進入從機調(diào)試窗口觀察到的結果如圖3所示。

        2) 采集外線狀態(tài)任務的實現(xiàn)

        由于信號采集任務的優(yōu)先級高于數(shù)據(jù)處理任務的優(yōu)先級,即信息傳遞的上游任務的優(yōu)先級高于下游任務的優(yōu)先級,所以讓采集外線狀態(tài)任務的優(yōu)先級高于雙ARM同步任務的優(yōu)先級[3]。在函數(shù)main()中創(chuàng)建此任務,其代碼為:OSTaskCreate(GatherTask, (void *)0, &stkGatherTask[sizeof(stkGatherTask) / 4 - 1], 8)。同樣地,當任務接收到消息郵箱發(fā)送來的消息后,且任務處于就緒態(tài)任務的最高優(yōu)先級時立刻進入運行態(tài)。其采集到的外線狀態(tài)的結果如圖4所示。

        3) 解析聯(lián)鎖命令任務的實現(xiàn)

        解析聯(lián)鎖命令任務是比較關鍵的任務,為避免由于聯(lián)鎖命令的漏解析,使得控制系統(tǒng)發(fā)出錯誤的控制指令,我們將此任務的優(yōu)先級設得比較高,創(chuàng)建任務的代碼為:OSTaskCreate(ParseTask, (void *)0, &stkParseTask[sizeof(stkParseTask) / 4 - 1], 6),當有新數(shù)據(jù)到達時,判斷第一路、第二路有無命令,如果有命令,判斷是否為請求命令,若是請求命令,且有請求數(shù)據(jù)時,讀取請求數(shù)據(jù)的幀序號。

        4) 驅動繼電器動作任務的實現(xiàn)

        將驅動繼電器動作任務創(chuàng)建為主任務,且優(yōu)先級為創(chuàng)建的任務中最高的優(yōu)先級:OSTaskCreate(mainTask, (void *)0, &stkMainTask[sizeof(stkMainTask) / 4 - 1],4),我們在安排任務的優(yōu)先級時,設計了一定的冗余,這樣就為以后增加新任務提供方便,即當要創(chuàng)建新的任務而不知道優(yōu)先級是多少時,就可以在不改變現(xiàn)有任務優(yōu)先級的情況下,很容易根據(jù)需要找到一個合適的空閑優(yōu)先級。驅動繼電器動作的命令如圖5所示。

        5) CPU運行燈控制任務的實現(xiàn)

        CPU運行燈控制任務的實現(xiàn)采用接收二值信號量的方法,二值信號量的使用范圍是:被控制方總能夠及時響應控制方發(fā)出的信號,完成相應處理器任務,并在下一次信號來到之前進入等待狀態(tài)[6]。OSTaskCreate(CupledTask, (void *)0, &stkCupledTask[sizeof(stkCupledTask) / 4 - 1],12)是創(chuàng)建CPU運行燈控制任務的代碼,中斷處理函數(shù)每到100ms時給CPU運行控制任務發(fā)送二值信號量:OSSemPost(CpuSem),當任務接收到二值信號量時,即刻進入就緒態(tài)。

        6) 串口2發(fā)送數(shù)據(jù)任務的實現(xiàn)

        與CPU運行燈控制任務類似,串口2發(fā)送數(shù)據(jù)任務也通過接收二值信號量的方法,當定時器0每隔50ms時,發(fā)送信號量,任務先進行發(fā)送數(shù)據(jù)的配置,包括幀頭、幀尾、第一路采集狀態(tài)數(shù)據(jù)、第二路采集狀態(tài)數(shù)據(jù)、數(shù)據(jù)校驗和等,待接收到信號量時即刻向CPU發(fā)送數(shù)據(jù)[7]。如圖6所示為執(zhí)行CPU通過串口2向監(jiān)測CPU發(fā)送的數(shù)據(jù),其中FE是幀頭,EF為幀尾,55和55分別是第一路和第二路軌道采集狀態(tài),33和44分別為第三路和第四路軌道采集狀態(tài),66為故障信息,78為校驗和。從圖中我們可以看出監(jiān)測CPU能成功地接收到執(zhí)行CPU發(fā)送的數(shù)據(jù)。

        4 總結

        針對有軌電車軌道模塊控制系統(tǒng)中,實時性較差的問題,采用了基于LPC1700的μC/OS-Ⅱ實時操作系統(tǒng),已實現(xiàn)各模塊通信的實時性。從文中通信數(shù)據(jù)結果中可以看出,采用了實時操作系統(tǒng)μC/OS-Ⅱ的各模塊能有效滿足有軌電車軌道模塊控制系統(tǒng)實時性的要求,可以對軌道區(qū)段的狀態(tài)信息進行實時采集,并將狀態(tài)信息傳至聯(lián)鎖CPU模塊進行聯(lián)鎖運算,確保了行車安全,具有一定的現(xiàn)實意義。

        參考文獻:

        [1] 耿幸福,徐新玉,張國保.城市軌道交通行車組織[M].北京:人民交通出版社,2010:2-10.

        [2] Jean J.Labrosse.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ[M].邵貝貝,等,譯.北京:北京航空航天大學出版社,2003:116-281.

        [3] 任哲.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ原理及應用[M].北京:北京航空航天大學出版社,2009:42-187.

        [4] 周立功等.深入淺出Cortex-M3—LPC1700(上冊)[M].廣州:廣州致遠電子有限公司,2009:213-377.

        [5] 顧鳳玉,施國梁,楊濤.基于LPC2478的μC/OS-Ⅱ的移植及多任務的實現(xiàn)[J].電腦知識與技術,2009,5(7):1776-1779.

        [6] 周航慈.基于嵌入式實時操作系統(tǒng)的程序設計技術[M].北京:北京航空航天大學出版社,2011:50-160.

        [7] 周立功,等.深入淺出Cortex-M3—LPC1700(下冊)[M].廣州:廣州致遠電子有限公司,2009:142-200.endprint

        1) 雙ARM同步任務的實現(xiàn)

        在建立此任務時,由于每次任務執(zhí)行的時間必須相同,因此讓雙ARM同步任務的執(zhí)行時間是0.5ms。具體實現(xiàn)方法是:首先為雙ARM同步任務配置堆??臻g,其代碼為static OS_STK stkARM_synTask[256],并在main()函數(shù)中創(chuàng)建此任務,代碼為OSTaskCreate(CupledTask, (void *)0, &stkCupledTask[sizeof(stkCupledTask) / 4 - 1],12)。其次讓定時器0每隔0.5ms中斷一次,在每次中斷時,用消息郵箱發(fā)送消息給所有的任務。發(fā)送消息郵箱的具體步驟是:定義消息郵箱指針:OS_EVENT *Mybox;在main()函數(shù)中創(chuàng)建消息郵箱:Mybox = OSMboxCreate((void *)0),最后發(fā)送消息:OSMboxPostOpt(Mybox,(void *)1,OS_POST_OPT_BROADCAST)。當處于掛起狀態(tài)的雙ARM同步任務接收到消息時,就會立刻進入就緒態(tài),當其他更高優(yōu)先級的任務運行結束后,此任務即刻進入運行態(tài)。進入主機調(diào)試窗口觀察到的結果如圖2所示。進入從機調(diào)試窗口觀察到的結果如圖3所示。

        2) 采集外線狀態(tài)任務的實現(xiàn)

        由于信號采集任務的優(yōu)先級高于數(shù)據(jù)處理任務的優(yōu)先級,即信息傳遞的上游任務的優(yōu)先級高于下游任務的優(yōu)先級,所以讓采集外線狀態(tài)任務的優(yōu)先級高于雙ARM同步任務的優(yōu)先級[3]。在函數(shù)main()中創(chuàng)建此任務,其代碼為:OSTaskCreate(GatherTask, (void *)0, &stkGatherTask[sizeof(stkGatherTask) / 4 - 1], 8)。同樣地,當任務接收到消息郵箱發(fā)送來的消息后,且任務處于就緒態(tài)任務的最高優(yōu)先級時立刻進入運行態(tài)。其采集到的外線狀態(tài)的結果如圖4所示。

        3) 解析聯(lián)鎖命令任務的實現(xiàn)

        解析聯(lián)鎖命令任務是比較關鍵的任務,為避免由于聯(lián)鎖命令的漏解析,使得控制系統(tǒng)發(fā)出錯誤的控制指令,我們將此任務的優(yōu)先級設得比較高,創(chuàng)建任務的代碼為:OSTaskCreate(ParseTask, (void *)0, &stkParseTask[sizeof(stkParseTask) / 4 - 1], 6),當有新數(shù)據(jù)到達時,判斷第一路、第二路有無命令,如果有命令,判斷是否為請求命令,若是請求命令,且有請求數(shù)據(jù)時,讀取請求數(shù)據(jù)的幀序號。

        4) 驅動繼電器動作任務的實現(xiàn)

        將驅動繼電器動作任務創(chuàng)建為主任務,且優(yōu)先級為創(chuàng)建的任務中最高的優(yōu)先級:OSTaskCreate(mainTask, (void *)0, &stkMainTask[sizeof(stkMainTask) / 4 - 1],4),我們在安排任務的優(yōu)先級時,設計了一定的冗余,這樣就為以后增加新任務提供方便,即當要創(chuàng)建新的任務而不知道優(yōu)先級是多少時,就可以在不改變現(xiàn)有任務優(yōu)先級的情況下,很容易根據(jù)需要找到一個合適的空閑優(yōu)先級。驅動繼電器動作的命令如圖5所示。

        5) CPU運行燈控制任務的實現(xiàn)

        CPU運行燈控制任務的實現(xiàn)采用接收二值信號量的方法,二值信號量的使用范圍是:被控制方總能夠及時響應控制方發(fā)出的信號,完成相應處理器任務,并在下一次信號來到之前進入等待狀態(tài)[6]。OSTaskCreate(CupledTask, (void *)0, &stkCupledTask[sizeof(stkCupledTask) / 4 - 1],12)是創(chuàng)建CPU運行燈控制任務的代碼,中斷處理函數(shù)每到100ms時給CPU運行控制任務發(fā)送二值信號量:OSSemPost(CpuSem),當任務接收到二值信號量時,即刻進入就緒態(tài)。

        6) 串口2發(fā)送數(shù)據(jù)任務的實現(xiàn)

        與CPU運行燈控制任務類似,串口2發(fā)送數(shù)據(jù)任務也通過接收二值信號量的方法,當定時器0每隔50ms時,發(fā)送信號量,任務先進行發(fā)送數(shù)據(jù)的配置,包括幀頭、幀尾、第一路采集狀態(tài)數(shù)據(jù)、第二路采集狀態(tài)數(shù)據(jù)、數(shù)據(jù)校驗和等,待接收到信號量時即刻向CPU發(fā)送數(shù)據(jù)[7]。如圖6所示為執(zhí)行CPU通過串口2向監(jiān)測CPU發(fā)送的數(shù)據(jù),其中FE是幀頭,EF為幀尾,55和55分別是第一路和第二路軌道采集狀態(tài),33和44分別為第三路和第四路軌道采集狀態(tài),66為故障信息,78為校驗和。從圖中我們可以看出監(jiān)測CPU能成功地接收到執(zhí)行CPU發(fā)送的數(shù)據(jù)。

        4 總結

        針對有軌電車軌道模塊控制系統(tǒng)中,實時性較差的問題,采用了基于LPC1700的μC/OS-Ⅱ實時操作系統(tǒng),已實現(xiàn)各模塊通信的實時性。從文中通信數(shù)據(jù)結果中可以看出,采用了實時操作系統(tǒng)μC/OS-Ⅱ的各模塊能有效滿足有軌電車軌道模塊控制系統(tǒng)實時性的要求,可以對軌道區(qū)段的狀態(tài)信息進行實時采集,并將狀態(tài)信息傳至聯(lián)鎖CPU模塊進行聯(lián)鎖運算,確保了行車安全,具有一定的現(xiàn)實意義。

        參考文獻:

        [1] 耿幸福,徐新玉,張國保.城市軌道交通行車組織[M].北京:人民交通出版社,2010:2-10.

        [2] Jean J.Labrosse.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ[M].邵貝貝,等,譯.北京:北京航空航天大學出版社,2003:116-281.

        [3] 任哲.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ原理及應用[M].北京:北京航空航天大學出版社,2009:42-187.

        [4] 周立功等.深入淺出Cortex-M3—LPC1700(上冊)[M].廣州:廣州致遠電子有限公司,2009:213-377.

        [5] 顧鳳玉,施國梁,楊濤.基于LPC2478的μC/OS-Ⅱ的移植及多任務的實現(xiàn)[J].電腦知識與技術,2009,5(7):1776-1779.

        [6] 周航慈.基于嵌入式實時操作系統(tǒng)的程序設計技術[M].北京:北京航空航天大學出版社,2011:50-160.

        [7] 周立功,等.深入淺出Cortex-M3—LPC1700(下冊)[M].廣州:廣州致遠電子有限公司,2009:142-200.endprint

        7777奇米四色成人眼影| 国产av一区二区网站| 日韩精品在线一二三四区| 无码人妻一区二区三区兔费 | 在线亚洲+欧美+日本专区| 国产尻逼视频| 国模一区二区三区白浆| 男人的天堂手机版av| 久久久国产乱子伦精品作者 | 欧洲乱码伦视频免费| 9lporm自拍视频区| 亚洲成a∨人片在线观看无码| 久久国产精品懂色av| 人妻少妇哀求别拔出来| 日韩精品视频免费在线观看网站| 人妻无码一区二区三区| 国产精品你懂的在线播放| 成人爽a毛片一区二区免费| 国产青青草自拍视频在线播放| 97精品人妻一区二区三区在线| 内地老熟女老少配视频| 久久99欧美| 国产成人精品免费视频大全| 国产精品亚洲二区在线| 国产日产亚洲系列最新| 天天做天天躁天天躁| 国产精品成人av电影不卡| 国产一区二区视频免费| 国内精品久久久久伊人av| 欧美日韩精品一区二区在线视频| 欧美片欧美日韩国产综合片| 中文字幕av永久免费在线| 色偷偷偷久久伊人大杳蕉| 99热免费精品| 日韩精品综合在线视频| 一个人看的www片免费高清视频| 国产av一区二区精品久久凹凸| 国内精品视频成人一区二区 | 国产日产久久福利精品一区| a级三级三级三级在线视频| 亚洲国产精品成人精品无码区在线|