ARM7嵌入式系統(tǒng)在車輛調(diào)度中的應(yīng)用范疇
基于狀態(tài)機(jī)的程序執(zhí)行過(guò)程是這樣的:在任何時(shí)候都存在一個(gè)或者多個(gè)狀態(tài)機(jī)活動(dòng)的狀態(tài)。如果一個(gè)狀態(tài)是活動(dòng)的,那么離開(kāi)這個(gè)狀態(tài)的轉(zhuǎn)換可能會(huì)激發(fā),引起一個(gè)事件的執(zhí)行,并使得另一個(gè)狀態(tài)或位于初始狀態(tài)位置的狀態(tài)激活(下一個(gè)狀態(tài)處于初始狀態(tài))。
本文引用地址:http://www.ex-cimer.com/article/272601.htm狀態(tài)機(jī)它是說(shuō)明狀態(tài)機(jī)的對(duì)象在對(duì)象自己的生命期中事件的所經(jīng)歷的狀態(tài)序列以及它們對(duì)那些事件的響應(yīng)。可以這樣理解狀態(tài)機(jī)狀態(tài)機(jī)是對(duì)象的狀態(tài)在事件的作用下從一個(gè)狀態(tài)轉(zhuǎn)移到另一個(gè)狀態(tài)。
狀態(tài)機(jī)中的幾個(gè)基本概念:
1.狀態(tài)(state):是指在對(duì)象的生命期中的一個(gè)條件或狀況,在此期間對(duì)象將滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件。
2.事件(event)是對(duì)一個(gè)在時(shí)間和空間上占有一定位置的有意義的事情的說(shuō)明。在狀態(tài)機(jī)中一個(gè)事件的產(chǎn)生可以引起一次狀態(tài)轉(zhuǎn)換。
3.轉(zhuǎn)換(transition)是兩個(gè)狀態(tài)之間的一種關(guān)系,它指明對(duì)象在第一個(gè)狀態(tài)中執(zhí)行的一定的動(dòng)作,并當(dāng)特定事件或特定條件滿足時(shí)進(jìn)入第二個(gè)狀態(tài)。
在嵌入式系統(tǒng)的程序設(shè)計(jì)中,應(yīng)該注意的另一個(gè)問(wèn)題是函數(shù)的可重入問(wèn)題, 可重入函數(shù)可以被遞歸調(diào)用,可以同時(shí)被兩個(gè)或多個(gè)進(jìn)程調(diào)用,這就要求在編譯的時(shí)候要為可重入函數(shù)提供一個(gè)模擬堆棧區(qū)。
圖二是設(shè)計(jì)中采用狀態(tài)機(jī)這種設(shè)計(jì)方法設(shè)計(jì)的系統(tǒng)程序中LCD顯示部份。下面是對(duì)圖二的解釋。
其中菜單1是顯示歡迎界面(就是上面提到的狀態(tài));菜單2是發(fā)送短消息;菜單3是記錄發(fā)送短消息內(nèi)容的;菜單4是用來(lái)讀取接收到的短消息。具體的狀態(tài)轉(zhuǎn)移過(guò)程是這樣的,當(dāng)顯示處于歡迎界面的時(shí)候,在這個(gè)狀態(tài)下,如向下的按鍵被按下(這就是一個(gè)事件)或發(fā)送短消息的鍵被按下,則系統(tǒng)狀態(tài)轉(zhuǎn)移到菜單2(發(fā)生了一次狀態(tài)轉(zhuǎn)移,下面和這是類似的,故相應(yīng)的分析省略了。);在這個(gè)狀態(tài)下,當(dāng)向下按鍵被按下或系統(tǒng)要輸入發(fā)送短消息的內(nèi)容時(shí)候,系統(tǒng)狀態(tài)從菜單2進(jìn)入菜單3;在這個(gè)狀態(tài)下,當(dāng)向下的鍵盤(pán)被按下,系統(tǒng)的狀態(tài)轉(zhuǎn)移到菜單4;讀取短消息結(jié)束時(shí),系統(tǒng)狀態(tài)返回到歡迎界面。實(shí)際的系統(tǒng)還有返回按鍵等,這里只是用這個(gè)圖簡(jiǎn)單說(shuō)明采用狀態(tài)機(jī)的程序設(shè)計(jì)方法。
評(píng)論