<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于LPC2292的汽車智能組合儀表設計

          基于LPC2292的汽車智能組合儀表設計

          作者: 時間:2012-05-30 來源:網(wǎng)絡 收藏

          每個任務在建立時均分配一個優(yōu)先級(范圍為0 ~63, 0為最高,63為最低)。這6個任務的優(yōu)先級依次分配為1, 2, 3, 4, 5, 6;報警任務需要及時響應,具有最高的優(yōu)先級;而里程顯示、存儲任務優(yōu)先級最低。較高優(yōu)先級的任務必須調用至少一項系統(tǒng)服務而暫時放棄CPU的使用權,否則低優(yōu)先級任務無法得到運行。

          任務的一般結構如下:

          void UserTask (void *pdata)

          { for(;;)

          {調用μC /OS II的某種系統(tǒng)服務:

          OSMboxPend ( )/OSMboxPost ( );(1)

          OSQPend ( )/OSQPost ( ); (2)

          OSSemPend ( )/OSSemPend ( ): (3)

          OSTaskDel (OS PRIG SELF);(4)

          OSTaskSuspend (OS_ PR工OSELF); (5)

          OSTimeDly( )/OSTimeDlyHMSM(); (6)

          }}

          (1)-(6)是一些主要的系統(tǒng)服務函數(shù),這些函數(shù)里均進行一次任務調度,或者可能會使當前任務放棄CPU使用權而運行其他的任務。用戶任務必須至少調用一個服務函數(shù)。

          另外程序還有5個用C語言編寫的用戶中斷服務程序:一個CAN接收中斷(用于接收總線信息)、4個定時器輸出比較中斷(用于產(chǎn)生驅動步進電機的周期性脈沖)。

          因此本例程序可以這樣規(guī)劃,首先調用OSInit(),對μC /OS-II做初始化,然后創(chuàng)建一個信號量,因為后面的任務都要用到Printp( )函數(shù),而Printp( )是一個不可重入函數(shù),調用前要防止多個任務同時調用,這個信號量用于保護Printp()函數(shù)。接著創(chuàng)建6個任務,并對這6個任務分配優(yōu)先級,最后調用OSStart ( )以啟動內核,于是任務在操作系統(tǒng)的管理和調度下運行和切換。圖2是程序的簡要流程圖。


          圖2 程序流程圖

          4 結束語

          隨著汽車電氣系統(tǒng)的總線化,高集成、嵌入式、總線化是汽車儀表發(fā)展的必然趨勢?;?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/LPC2292">LPC2292的汽車智能,實時顯示和保存車速、發(fā)動機轉速、水溫、油位、總里程、子里程等車況參數(shù),使汽車具有“黑匣子”功能。并且采用建立通信網(wǎng)絡,集車輛儀表、視頻監(jiān)控、語音輸出于一體,解決了分開安裝不便、可靠性差的缺陷,提高了系統(tǒng)的可靠性。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();