第172v9生成器在本章中就使用三個(gè)基本代碼生成模式V9進(jìn)行_第1頁(yè)
第172v9生成器在本章中就使用三個(gè)基本代碼生成模式V9進(jìn)行_第2頁(yè)
第172v9生成器在本章中就使用三個(gè)基本代碼生成模式V9進(jìn)行_第3頁(yè)
第172v9生成器在本章中就使用三個(gè)基本代碼生成模式V9進(jìn)行_第4頁(yè)
第172v9生成器在本章中就使用三個(gè)基本代碼生成模式V9進(jìn)行_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余201頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第17 1.關(guān)于V9............................................................1)概 2)Ver.9.2中的變更內(nèi) 2.由STM生成的源文 3.特定處 1)觸發(fā)特定處 4)調(diào)度特定處 5)狀態(tài)開(kāi)始特定處 6)狀態(tài)結(jié)束特定處 7)狀態(tài)模式特定處 8)事件發(fā)生時(shí)開(kāi)始特定處 9)事件發(fā)生時(shí)結(jié)束特定處 10)事件解析開(kāi)始特定處 11)事件解析結(jié)束特定處 4.手法與生成代 1)E型 ①E型 ④調(diào)度特定處 2)S型 ①S型 3)事 ①消息型事 ②標(biāo)記型事 ③內(nèi)部消息型事 ④中斷型事 ⑤自動(dòng)轉(zhuǎn)移型事 ⑥函數(shù)組型事 ⑦函數(shù)調(diào)用型事 ⑧缺省單元 ⑨存在多個(gè)事件類(lèi)別的情 ⑩注釋事 4)狀 ①排他狀 ②并列狀 ③狀態(tài)實(shí)體 ④缺省狀 5)動(dòng) ①處 ②轉(zhuǎn) 6)STM設(shè) ④庫(kù) ⑤子程序 7)系統(tǒng)調(diào) 8)其他設(shè)計(jì) ①函數(shù)設(shè)計(jì)書(shū) ②變量設(shè)計(jì)書(shū) ③只讀變量設(shè)計(jì)書(shū) ⑤內(nèi)存設(shè)計(jì)書(shū) ⑥定義設(shè)計(jì)書(shū) ⑦結(jié)構(gòu)體設(shè)計(jì)書(shū) ⑧代碼翻譯器定義 1)生成目標(biāo)設(shè) 2)任務(wù),句柄設(shè) 3)根STM設(shè) 4)STM設(shè) 5)全體設(shè) 6.缺省的C代碼生成設(shè) 1)概 2)設(shè)定步 ①設(shè)定方 ②設(shè)定值使用任務(wù)名、STM ③關(guān)于缺省值模式文件的導(dǎo) ④缺省值應(yīng)用的時(shí) ①V9..............................................................②ZIPC2001........................................................③ZIPC2000........................................................1.V91)概returnzret系統(tǒng)調(diào)用。?函數(shù)型、ESTM?內(nèi)部消息、中斷、SSTM?????庫(kù)STM的最事件存在函數(shù)型、函數(shù)組型之外的事件※V9不對(duì)應(yīng)反向2)Ver.9.2中的變更內(nèi)①#ifndef#define②STMvoidvoidZTsk_m1Init(void{unsignedcharfor(cln=0;cln<ZTsk_M1CLONEMAX;cln++{ZTsk_m1State【ZTsk_M1cln】=ZTsk_M1S0;ZTsk_m1State【ZTsk_M1_1clnZTsk_M1_1S0;}}#define #define #define voidZTsk_m1Call(voidZTsk_m1Call(uint8_tClone{if(Clone<(uint8_t)ZTsk_M1CLONEMAX{if(E1{ZTsk_m1e0(Clone}{}}{}}宏名(編譯器開(kāi)關(guān))名規(guī)則可參照“自動(dòng)生成的代碼識(shí)別標(biāo)記命名規(guī)則一覽③對(duì)只用來(lái)的參數(shù)附加const修飾使用克隆STM及內(nèi)部消息型事件時(shí)生成的函數(shù)參數(shù)中,對(duì)只用來(lái)的參數(shù)附加staticvoidZHdr_m1e0s0(staticvoidZHdr_m1e0s0(constunsignedcharClone{;ZHdr_m1State【ZHdr_M1Clone}unsignedcharStateGet(constunsignedcharunsignedcharStateGet(constunsignedcharClone{returnZTsk_m1State【ZTsk_M1Clone】}voidStateSet(unsignedcharstate,constunsignedchar{switch(state{caseZTsk_m1State【ZTsk_M1cloneZTsk_M1S0;}}voidZTsk_m1StateView(constunsignedvoidZTsk_m1StateView(constunsignedchar{switch(ZTsk_m1State【ZTsk_M1Clone{caseZNOTIFY_STM_STATE_ENTRY(0,Clone,ZNOTIFY_STM_STATE_NO(0,Clone,}}voidZTsk_0_InmailSend(constvoidZTsk_0_InmailSend(conststructZTsk_0_CtrlInmail*pInm,constchar_t【】{unsignedshorti=??2.STM生成的源文0STMSTM主函數(shù)。MAIN.C是在任務(wù)內(nèi)階層0的STM時(shí)生成的。STM的動(dòng)作主處理。?STMSTMSTMSTMSTM(or狀態(tài)判定函數(shù)STMvoidvoidZTSK_Main(void{/*TriggerActivity*/for(;;{/*STMMainStartActivity*//*STMMainEndActivity}}在同一任務(wù)中多個(gè)根STM時(shí),生成與該路徑總數(shù)相同的STM.C文件一般生成初始化函數(shù)、調(diào)用函數(shù)(事件解析函數(shù)或狀態(tài)判定函數(shù)、?STM對(duì)于根階層0的STM,在側(cè)會(huì)自動(dòng)調(diào)用初始化函數(shù),在用戶(hù)側(cè)需要調(diào)用其他STM相(初始狀態(tài)(初始狀態(tài)?調(diào)用函數(shù)(事件解析函數(shù)調(diào)用函數(shù)是用于執(zhí)行STM內(nèi)部處理的。STM內(nèi)部處理。(狀態(tài)判定函數(shù))調(diào)用函數(shù)(事件解析函數(shù))內(nèi)部消息標(biāo)記內(nèi)部消息標(biāo)記NY事件發(fā)生YN執(zhí)行缺省單元格(L?轉(zhuǎn)移(本地轉(zhuǎn)移動(dòng)作函數(shù)的生成代碼staticstaticvoidZTSK_m0e0s0(void{ZTSK_m0State【ZTSK_M0/*StateEndActivity/*StateStartActivity*/}255unsignedchar型生成;25665535下unsignedshort65535unsignedlong型生成。INM.C是在STM內(nèi)部消息型事件時(shí)生成的。INM.CSTM的根為單位生成的。3.特定處1)觸發(fā)特定處STM0STM(2)STM主開(kāi)始特定處3)STM主結(jié)束特定處4)調(diào)度特定處5)狀態(tài)開(kāi)始特定處6)狀態(tài)結(jié)束特定處7)狀態(tài)模式特定處ESTM和SSTM8)事件發(fā)生時(shí)開(kāi)始特定處9)事件發(fā)生時(shí)結(jié)束特定處10)事件解析開(kāi)始特定處11)事件解析結(jié)束特定處4.手法與生成1)E根※STMSTM※STMSTMSTM①EESTM(狀態(tài)模式特定處理除外的動(dòng)作。STM的類(lèi)型,因此類(lèi)型不同則動(dòng)作順序也不同。MainMainSTMSTMSTM(初始狀態(tài)TaskTSKmain#include"TSK_Inc.h"TSKmainfunctionvoidZTSK_Main(void){/*TriggerActivity*/for(;;{/*STMMainStartActivity*//*STMMainEndActivity}}Routelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){/*TriggerAction}TSKSample(level:0)State:0Event:1ActionstaticvoidZTSK_m0e1s0(void){ZTSK_m0State【ZTSK_M0/*S1StateEndActivity/*S2StateStartActivity}TSKSample(level:0)State:1Event:2ActionstaticvoidZTSK_m0e2s1(void){ZTSK_m0State【ZTSK_M0/*S2StateEndActivity/*S1StateStartActivity}TSKSample(level:0)Event:0EventstaticvoidZTSK_m0e0(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S0:}}TSKSample(level:0)Event:1EventstaticvoidZTSK_m0e1(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S0:}}TSKSample(level:0)Event:2EventstaticvoidZTSK_m0e2(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S1:casedefault:}}TSKSample(level:0)EventysisvoidZTSK_m0Call(void){/*Event ysisStartActivity*/if(E1){/*E1EventHitStartActivity*//*E1EventHitEndActivity}elseif(E2{/*E2EventHitStartActivity*//*E2EventHitEndActivity}/*EventysisEndActivity}TSKRoute0InitialvoidZTSK_m0Init(void){ZTSK_m0State【ZTSK_M0/*S1StateStartActivity*/}②ESTM調(diào)ESTM的格式為□【STM名orSTM階層號(hào))】STMRouteRoutelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】TSKSample(level:0)Event:0EventstaticvoidZTSK_m0e0(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S0:}}TSKSample(level:0) ysisvoidZTSK_m0Call(void){if(E1{}}TSKChild(level:0.1)State:0Event:0ActionstaticvoidZTSK_m0_1e0s0(void){;ZTSK_m0State【ZTSK_M0_1/*S1StateEndActivity/*S2StateStartActivity}TSKChild(level:0.1)Event:0EventstaticvoidZTSK_m0_1e0(void){switchZTSK_m0State【ZTSK_M0_1{caseZTSK_M0_1S0:}}TSKChild(level:0.1) ysisvoidZTSK_m0_1Call(void){if(E1{}}TSKRoute0InitialvoidZTSK_m0Init(void){ZTSK_m0State【ZTSK_M0/*S1StateStartActivity*/ZTSK_m0State【ZTSK_M0_1ZTSK_M0_1S0;/*S1StateStartActivity}③ESTM狀態(tài)模式特定處※不事件的話(huà),E型STM狀態(tài)模式特定處理不會(huì)被執(zhí)行mainmainSTM(初始狀態(tài)STMSTMRoutelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){ZTSK_m0State【ZTSK_M0/*S1StateEndActivity/*S2StateStartActivity}TSKSample(level:0)State:1Event:0ActionstaticvoidZTSK_m0e0s1(void){ZTSK_m0State【ZTSK_M0/*S2StateEndActivity/*S1StateStartActivity}TSKSample(level:0)EventTSKSample(level:0)Event:0EventstaticvoidZTSK_m0e0(void){switchZTSK_m0State【ZTSK_M0{case/*S1StateModeActivity*/caseZTSK_M0S1:/*S2StateModeActivity*/}}TSKSample(level:0) ysisvoidZTSK_m0Call(void){/*Event ysisStartActivity*/if(E1){/*E1EventHitStartActivity*//*E1EventHitEndActivity}/* ysisEndActivity}TSKRoute0InitialvoidZTSK_m0Init(void){ZTSK_m0State【ZTSK_M0/*S1StateStartActivity}④調(diào)度特定處※Ver2.0mainmainSTMSTMSTM(初始狀態(tài)Routelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){ZTSK_m0State【ZTSK_M0/*S1StateEndActivity/*S2StateStartActivity/*DispatchActivity}TSKSample(level:0)State:1Event:0ActionstaticvoidZTSK_m0e0s1(void){ZTSK_m0State【ZTSK_M0/*S2StateEndActivity/*S1StateStartActivity/*DispatchActivity}2)S※STMSTM※STMSTMSTM①SmainmainSTM(狀態(tài)函數(shù)STMSTM(初始狀態(tài)RouteRoutelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){ZTSK_m0State【ZTSK_M0/*S1StateEndActivity/*S2StateStartActivity}TSKSample(level:0)State:1Event:0ActionstaticvoidZTSK_m0e0s1(void){ZTSK_m0State【ZTSK_M0/*S2StateEndActivity/*S1StateStartActivity}TSKSample(level:0)State:S1 ysisstaticvoidZTSK_m0s0Event(void){/*EventysisStartActivity*/if(E1){/*E1EventHitStartActivity*//*E1EventHitEndActivity}/*EventysisEndActivity}TSKSample(level:0)StateTSKSample(level:0)State:S2 ysisstaticvoidZTSK_m0s1Event(void){/*Event ysisStartActivity*/if(E1){/*E1EventHitStartActivity*//*E1EventHitEndActivity}/* ysisEndActivity}TSKSample(level:0)StatevoidZTSK_m0Call(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S0:caseZTSK_M0S1:}}TSKRoute0InitialvoidZTSK_m0Init(void){ZTSK_m0State【ZTSK_M0/*S1StateStartActivity}②SSTM調(diào)將SSTMSTMSTM名STM階層號(hào)。SSTMbreak(參照4.4)②D)break)與狀態(tài)實(shí)體【STM名orSTM層號(hào))SSTM執(zhí)行轉(zhuǎn)移N③SSTM狀態(tài)模式特定處由于SSTMSSTME事件解析時(shí)執(zhí)行的事件解析特定處理、事件發(fā)生特定處理會(huì)在狀態(tài)模式特定處理之后執(zhí)行。另外跟ESTM不同的是,SSTMmainmain每個(gè)狀態(tài)下事件解析函數(shù)STM(狀態(tài)函數(shù)(初始狀態(tài)STMSTM初Routelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){ZTSK_m0State【ZTSK_M0/*S1StateEndActivity/*S2StateStartActivity}TSKSample(level:0)State:1Event:0ActionstaticvoidZTSK_m0e0s1(void){ZTSK_m0State【ZTSK_M0/*S2StateEndActivity/*S1StateStartActivity}TSKSample(level:0)State:S1 ysisstaticvoidZTSK_m0s0Event(void){/*EventysisStartActivity*/if(E1){/*E1EventHitStartActivity*//*E1EventHitEndActivity}/*EventysisEndActivity}TSKSample(level:0)StateTSKSample(level:0)State:S2 ysisstaticvoidZTSK_m0s1Event(void){/*Event ysisStartActivity*/if(E1){/*E1EventHitStartActivity*//*E1EventHitEndActivity}/* ysisEndActivity}TSKSample(level:0)StatevoidZTSK_m0Call(void){switchZTSK_m0State【ZTSK_M0{case/*S1ModeActivity*/case/*S2ModeActivity*/}}TSKRoute0InitialvoidZTSK_m0Init(void){ZTSK_m0State【ZTSK_M0/*S1StateStartActivity}④S型階層化狀態(tài)轉(zhuǎn)S例)缺省為狀態(tài)的(S型階層的STM狀態(tài)的S2S2⑤S型階層化狀態(tài)轉(zhuǎn)例)缺省為狀態(tài)的(S型階層的STM狀態(tài)的S1_1S1_1S2S23)事①消息型事C②標(biāo)記型事③內(nèi)部消息型事CSTM0息隊(duì)列。一個(gè)字節(jié)的大小被到內(nèi)部消息緩存中。因此,需要指定的數(shù)據(jù)大小。數(shù)據(jù)大小的指CSTM(或者二者均可CST內(nèi)部消息發(fā)送 內(nèi)部消息緩 內(nèi)部消息接收存內(nèi)部消息標(biāo)記內(nèi)部消息標(biāo)記Y內(nèi)部消息事件解析結(jié)內(nèi)部消息事件解析開(kāi)Routelevel0inmailprocedure#include"TSK_Inc.h"TSK(Route:0)InmailcharZTSK_0_Inmail;staticstructZTSK_0_CtrlInmailZTSK_0_InmailBuf【ZTSK_0_INMAIL_MAX】;staticshortZTSK_0_InmailNum;staticshortZTSK_0_Inmail_w;staticshortTSK(Route:0)InmailinitialvoidZTSK_0_InmailInit(void){ =ZTSK_0_InmailNum=ZTSK_0_Inmail_w=ZTSK_0_Inmail_r=}TSK(Route:0)InmailtransmissionvoidZTSK_0_InmailSend(conststructZTSK_0_CtrlInmail*pInm,char*pData{shorti=if(!pInm{}if(ZTSK_0_InmailNum>=ZTSK_0_INMAIL_MAX{}if(pData{for(i=0;i<ZTSK_0_INMAIL_DATA;i++{ZTSK_0_InmailBuf【ZTSK_0_Inmail_w】.data【i】=pData【i】}}if(++ZTSK_0_Inmail_w>=ZTSK_0_INMAIL_MAX)ZTSK_0_Inmail_w=0;}TSK(Route:0)InmailexecutionvoidZTSK_0_InmailExec(char*pSetData){shortif( {}while(ZTSK_0_InmailNum{if(pSetData{for(i=0;i<ZTSK_0_INMAIL_DATA;i++{pSetData【i】=ZTSK_0_InmailBuf【ZTSK_0_Inmail_r】.data【i】}}ZTSK_0_Inmail=(ZTSK_0_InmailBuf【ZTSK_0_Inmail_r】.if_p)();ZTSK_0_Inmail=0;--if(++ZTSK_0_Inmail_r>=ZTSK_0_INMAIL_MAX{ZTSK_0_Inmail_r=}}ZTSK_0_Inmail_r=ZTSK_0_Inmail_w=}RouteRoutelevel0inmailheadervoid(*if_p)(voidchardata【ZTSK_0_INMAIL_DATA】externvoidZTSK_0_InmailInit(voidexternvoidZTSK_0_InmailSend(conststructZTSK_0_CtrlInmail*pInm,char*pData);externvoidZTSK_0_InmailExec(char*pSetData);#ifndef#defineexterncharZTSK_0_Inmail#defineZTSK_0_INMAIL_DATA;1#defineZTSK_0_INMAIL_MAXstructZTSK_0_CtrlInmail{TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){{//TEV設(shè)計(jì)書(shū)中表述的用戶(hù)定義的數(shù)structZTSK_CtrlInmailM0inmWork.if_p=(void(*)(void)ZTSK_0_InmailSend(&inmWork,*消息翻譯器定義書(shū)中表述的發(fā)送數(shù)據(jù)*/}}TSKSample(level:0)Message ysisstaticvoidZTSK_m0Msg(void){if(E1{ZTSK_0_InmailExec(/*消息翻譯器定義書(shū)中表述的接收*/);}}TSKSample(level:0)InmailTSKSample(level:0)Inmail ysisstaticvoidZTSK_m0Inm(void){/*Inmail ysisStartActivity*/if(Inmail){/*InmailEventHitStartActivity*/ZTSK_0_InmailExec(/*消息翻譯器定義書(shū)中表述的接收區(qū)域*//*InmailEventHitEndActivity}/* ysisEndActivity}TSKSample(level:0) ysisvoidZTSK_m0Call(void){if( {}else}ZTSK_0_InmailExec(/**/}④中斷型事中斷型事件只有在到句柄的E型STM中才可以使用。HDLSample(level:0)State:0Event:0ActionstaticvoidZHDL_m0e0s0(void){ZHDL_m0State【ZHDL_M0/*S1StateEndActivity/*S2StateStartActivity}HDLSample(level:0)State:1Event:0ActionstaticvoidZHDL_m0e0s1(void){ZHDL_m0State【ZHDL_M0/*S2StateEndActivity/*S1StateStartActivity}HDLSample(level:0)Event:0EventinterruptvoidInterruptA(void){/*InterruptAEventHitStartActivity*/switch(ZHDL_m0State【ZHDL_M0】){caseZHDL_M0S0:caseZHDL_M0S1:}/*InterruptAEventHitEndActivity}⑤自動(dòng)轉(zhuǎn)移型事main

(初始狀態(tài)STM(初始狀態(tài)STMSTMSTM

已轉(zhuǎn)移YRoutelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(unsignedchar* {;ZTSK_m0State【ZTSK_M0*zAutoTrans=}TSKSample(level:0)State:1Event:1ActionstaticvoidZTSK_m0e1s1(void){;ZTSK_m0State【ZTSK_M0}TSKSample(level:0)Event:0EventstaticvoidZTSK_m0e0(void){unsignedchar ={zAutoTrans=switch(ZTSK_m0State【ZTSK_M0{casecaseZTSK_m0e0s0(&zAutoTrans);}}while(zAutoTrans}TSKSample(level:0)Event:1EventstaticvoidZTSK_m0e1(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S1:}}TSKSample(level:0)EventysisvoidZTSK_m0Call(void){if(E1{}TSKRoute0InitialvoidZTSK_m0Init(void){ZTSK_m0State【ZTSK_M0ZTSK_M0S0;}⑥函數(shù)組型事STM⑦函數(shù)調(diào)用型事STM⑧缺省單元defaultelse事件發(fā)生YNTSKSample(level:0) ysisvoidZTSK_m0Call(void){/*Event ysisStartActivity*/if(E1){/*E1EventHitStartActivity*//*E1EventHitEndActivity}{/*DefaultCell}/* ysisEndActivity}⑨存在多個(gè)事件類(lèi)別的情內(nèi)部消息標(biāo)記YN內(nèi)部消息事件解析函內(nèi)部消息事件解析函消息事件解析內(nèi)部消息事件解析結(jié)事件發(fā)生結(jié)動(dòng)事件發(fā)生開(kāi)標(biāo)記事件解析標(biāo)記事件解析標(biāo)記事件解析事件發(fā)生結(jié)動(dòng)事件發(fā)生開(kāi)標(biāo)記事件解析消息事件解析事件發(fā)生結(jié)消息事件解析動(dòng)事件發(fā)生開(kāi)標(biāo)記事件解析標(biāo)記事件解析TSKSample(level:0)Message ysisstaticvoidZTSK_m0Msg(void){/*Msg ysisStartActivity*/if(E1){/*E1EventHitStartActivity*//*E1EventHitEndActivityTSK_0_InmailExec(/*消息翻譯器定義書(shū)中表述的接收區(qū)域*/}/* ysisEndActivity}TSKSample(level:0)FlugeventysisstaticvoidZTSK_m0(void){/*ysisStartActivity*/if(==1){ ==1EventHitStartActivity*//*==1EventHitEndActivityTSK_0_InmailExec(/*消息翻譯器定義書(shū)中表述的接收區(qū)域*/}/*ysisEndActivity}TSKSample(level:0)Inmail ysisstaticvoidZTSK_m0Inm(void){/*Inmail ysisStartActivity*/if(Inm){/*InmEventHitStartActivity*//*InmEventHitEndActivityTSK_0_InmailExec(/*消息翻譯器定義書(shū)中表述的接收區(qū)域*/}/* ysisEndActivity}TSKSample(level:0) ysisvoidZTSK_m0Call(void){if(!ZTSK_0_Inmail{ TSK_0_InmailExec(/*消息翻譯器定義書(shū)中表述的接收區(qū)域*/}{}TSK_0_InmailExec(/**/}⑩注釋事C語(yǔ)言的注釋方式“/*~*/”或者“//~?事件實(shí)體事件實(shí)體框的生成代碼(實(shí)體部分在開(kāi)頭TskSample(level:0) ysisvoidZTsk_m0Call(void){if(E1{if(E1:E11{}elseif(E1:E12{}}}事件實(shí)體框的生成代碼(實(shí)體部分在最后TskSample(level:0) ysisvoidZTsk_m0Call(void){if(E1{if(E1:E11{}elseif(E1:E12{}}}?事件解析處理switch型生格式 (多個(gè)比較值的情況TskSample(level:0)EventysisvoidZTsk_m0Call(void){switch(val{casecase}}switch4)狀①排他狀②并列狀進(jìn)行向并列外的移N當(dāng)前激活態(tài)為并列狀態(tài),且行動(dòng)作的狀態(tài)YRoutelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】TSKSample(level:0)State:S21StartactivitystaticvoidZTSK_m0s1_2Entry(void){/*S21StateStartActivityswitchZTSK_m0State【ZTSK_M0S1_2F{case/*S211StateStartActivity*/case/*S212StateStartActivity*/}}TSKSample(level:0)State:S21EndactivitystaticvoidZTSK_m0s1_2Exit(void){switchZTSK_m0State【ZTSK_M0S1_2F{case/*S211StateEndActivity*/case/*S212StateEndActivity*/}/*S21StateEndActivity}TSKSample(level:0)State:S22StartactivitystaticvoidZTSK_m0s3_4Entry(void){/*S22StateStartActivityswitchZTSK_m0State【ZTSK_M0S3_4F{case/*S221StateStartActivity*/case/*S222StateStartActivity*/}}TSKSample(level:0)State:S22EndactivitystaticvoidZTSK_m0s3_4Exit(void){switchZTSK_m0State【ZTSK_M0S3_4F{case/*S221StateEndActivity*/case/*S222StateEndActivity*/}/*S22StateEndActivity}TSKSample(level:0)State:S2StartactivitystaticvoidZTSK_m0s1_4Entry(void){/*S2StateStartActivity*/}TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){AZTSK_m0State【ZTSK_M0/*S1StateEndActivity*/}TSKSample(level:0)State:1Event:0ActionstaticvoidZTSK_m0e0s1(unsignedchar*zTrans1_4{BZTSK_m0State【ZTSK_M0S1_2FZTSK_m0State【ZTSK_M0/*S211StateEndActivity/*S212StateStartActivity}TSKSample(level:0)State:2Event:0ActionstaticvoidZTSK_m0e0s2(unsignedchar*zTrans1_4{CZTSK_m0State【ZTSK_M0/*S212StateEndActivity/*S21StateEndActivity*//*S2StateEndActivity/*S1StateStartActivity 1_4=}TSKSample(level:0)State:3Event:0ActionstaticvoidZTSK_m0e0s3(void){DZTSK_m0State【ZTSK_M0S3_4FZTSK_m0State【ZTSK_M0/*S221StateEndActivity/*S222StateStartActivity}TSKSample(level:0)State:4Event:0ActionstaticvoidZTSK_m0e0s4(void){EZTSK_m0State【ZTSK_M0/*S222StateEndActivity/*S22StateEndActivity*//*S2StateEndActivity/*S1StateStartActivity}TSKSample(level:0)Event:0EventstaticvoidZTSK_m0e0(void){unsignedcharzTrans 1_4=0;switchZTSK_m0State【ZTSK_M0){caseZTSK_M0S0:case/*S2StateModeActivity/*S21StateModeActivityswitch(ZTSK_m0State【ZTSK_M0S1_2F{case/*S211StateModeActivity*/ZTSK_m0e0s1(&zTrans1_4);case/*S212StateModeActivity*/ZTSK_m0e0s2(&zTrans1_4);}if(zTrans1_4{}/*S22StateModeActivityswitch(ZTSK_m0State【ZTSK_M0S3_4F{case/*S221StateModeActivity*/caseZTSK_M0S4:/*S222StateModeActivity*/}}}TSKSample(level:0)EventysisvoidZTSK_m0Call(void){if(E1{}}TSKRoute0InitialvoidZTSK_m0Init(void){ZTSK_m0State【ZTSK_M0】=ZTSK_M0S0;ZTSK_m0State【ZTSK_M0S1_2FZTSK_M0S1;ZTSK_m0State【ZTSK_M0S3_4F/*S1StateStartActivity}A)向并列狀態(tài)中轉(zhuǎn)并列父狀態(tài)開(kāi)始特定處理(并列狀態(tài)并列父狀態(tài)開(kāi)始特定處理(并列狀態(tài),因S121S121S12S111S11S1B)向并列狀態(tài)外的轉(zhuǎn)(并列狀態(tài)的父狀態(tài)并列狀態(tài)結(jié)束特定處理(并列狀態(tài)S1S1S12S112S11S111C)在并列狀態(tài)中的狀態(tài)模式特定處S2:S21:S211S2:S22:S221為事件時(shí)的動(dòng)作S221S22S211S21S2S211break”的話(huà),S22S221的狀態(tài)模式特定break將在下一節(jié)進(jìn)行說(shuō)明。D)breakS2:S21:S211S2:S22:S221事件時(shí)的動(dòng)作如下所示。S211相對(duì)應(yīng)的(1:0的)動(dòng)作單元格由于是向并列狀態(tài)中(S212)的break。S221相對(duì)應(yīng)的(3:0的)動(dòng)作單元格時(shí),最終的激活狀S211相對(duì)應(yīng)的(1:0的)動(dòng)作單元格由于是向并列狀態(tài)外(S1)的轉(zhuǎn)break。S221相對(duì)應(yīng)的(3:0的)動(dòng)作單元格不執(zhí)行,最終的激活狀態(tài)E)并列狀態(tài)的日程STMS12→S11③狀態(tài)實(shí)體狀態(tài)實(shí)體框工作流程圖(事件驅(qū)動(dòng)型執(zhí)行轉(zhuǎn)移了NRoutelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){ZTSK_m0State【ZTSK_M0}TSKSample(level:0)State:2Event:0ActionstaticvoidZTSK_m0e0s2(void){ZTSK_m0State【ZTSK_M0S1_3FZTSK_m0State【ZTSK_M0}TSKSample(level:0)State:3Event:0ActionstaticvoidZTSK_m0e0s3(void){ZTSK_m0State【ZTSK_M0S1_3FZTSK_m0State【ZTSK_M0}TSKSample(level:0)State:1Event:1ActionstaticvoidZTSK_m0e1s1(unsignedchar* {ZTSK_m0State【ZTSK_M0 =}TSKSample(level:0)Event:0EventstaticvoidZTSK_m0e0(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S0:caseswitch(ZTSK_m0State【ZTSK_M0S1_3F{caseZTSK_M0S2:caseZTSK_M0S3:}}}TSKSample(level:0)Event:1EventstaticvoidZTSK_m0e1(void){unsignedchar =switchZTSK_m0State【ZTSK_M0{caseZTSK_m0e1s1(&zTrans if(zTrans {}switch(ZTSK_m0State【ZTSK_M0S1_3F{caseZTSK_M0S2:caseZTSK_M0S3:}caseZTSK_M0S0:}}TSKSample(level:0) ysisvoidZTSK_m0Call(void){if(E1{}elseif(E2{}}TSKRoute0InitialvoidZTSK_m0Init(void){ZTSK_m0State【ZTSK_M0】=ZTSK_M0S0;ZTSK_m0State【ZTSK_M0S1_3FZTSK_M0S2;}④缺省狀S1S2S3”處于激活狀態(tài)。0120S11S12”處于激活態(tài)。0120在下例中,最開(kāi)始“變量a的值為1的話(huà)狀態(tài)為S1“其他條件下?tīng)顟B(tài)為S2”處于激活狀態(tài)。S1激活的時(shí)候,依照變量b的值來(lái)決定S11、S12、S13這三個(gè)子狀態(tài)哪個(gè)處于當(dāng)前激01230else條件,該設(shè)計(jì)是為了避免發(fā)生此類(lèi)的事項(xiàng)。0120缺省狀態(tài)的生成代碼(無(wú)條件TskRoute0InitialvoidZTsk_m0Init(void){ZTsk_m0State【ZTsk_M0}缺省狀態(tài)的生成代碼(有條件TskRoute0InitialvoidZTsk_m0Init(void){if(val==1{ZTsk_m0State【ZTsk_M0}elseif(val==2{ZTsk_m0State【ZTsk_M0}{ZTsk_m0State【ZTsk_M0}}5)動(dòng)if、switch以及循環(huán)等條件分割。 ①處switchTskSample(level:0)State:0Event:0ActionstaticvoidZTsk_m0e0s0(void){switch(value{caseAcasecaseB}}②轉(zhuǎn)A)轉(zhuǎn)移符【轉(zhuǎn)移目標(biāo)狀態(tài)名or號(hào))B)轉(zhuǎn)移類(lèi)狀態(tài)(哪個(gè)狀態(tài)處于激活狀態(tài)。STM中不存在向狀態(tài)框的轉(zhuǎn)移和狀態(tài)框本身的話(huà),指定轉(zhuǎn)移【轉(zhuǎn)移目標(biāo)狀態(tài)名or號(hào))】ⅱ)轉(zhuǎn)【轉(zhuǎn)移目標(biāo)狀態(tài)名or號(hào))】ⅲ)轉(zhuǎn)【轉(zhuǎn)移目標(biāo)狀態(tài)名or號(hào))】各轉(zhuǎn)移類(lèi)型(固定轉(zhuǎn)移、轉(zhuǎn)移、轉(zhuǎn)移)的應(yīng)用準(zhǔn)備S22“S2222.在狀態(tài)S2:S22:S222下再次事件E1,向先頭的S1轉(zhuǎn)移。上述情況下,E2、E3、E4各事件時(shí),被激活的狀態(tài)如下所示?事件E2(轉(zhuǎn)移?事件E3(轉(zhuǎn)移?事件E4(固定轉(zhuǎn)移各轉(zhuǎn)移類(lèi)型(固定轉(zhuǎn)移、轉(zhuǎn)移、轉(zhuǎn)移)的生成代Routelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】TSKSample(level:0)State:S21StartactivitystaticvoidZTSK_m0s1_2Entry(void){/*S21StateStartActivityswitchZTSK_m0State【ZTSK_M0S1_2F{case/*S211StateStartActivity*/case/*S212StateStartActivity*/}}TSKSample(level:0)State:S22StartactivitystaticvoidZTSK_m0s3_4Entry(void){/*S22StateStartActivityswitchZTSK_m0State【ZTSK_M0S3_4F{case/*S221StateStartActivity*/case/*S222StateStartActivity*/}}TSKSample(level:0)State:S2StartactivitystaticvoidZTSK_m0s1_4Entry(void){/*S2StateStartActivityswitchZTSK_m0State【ZTSK_M0S1_4F{caseZTSK_M0S1_2:caseZTSK_M0S3_4:}}TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){ZTSK_m0State【ZTSK_M0S3_4FZTSK_m0State【ZTSK_M0S1_4FZTSK_M0S3_4;ZTSK_m0State【ZTSK_M0】=ZTSK_M0S1_4;/*S1StateEndActivity*/}TSKSample(level:0)State:4Event:0ActionstaticvoidZTSK_m0e0s4(void){ZTSK_m0State【ZTSK_M0/*S222StateEndActivity/*S22StateEndActivity/*S2StateEndActivity/*S1StateStartActivity}TSKSample(level:0)State:0Event:1ActionstaticvoidZTSK_m0e1s0(void){ZTSK_m0State【ZTSK_M0/*S1StateEndActivity*/}TSKSample(level:0)State:0Event:2ActionstaticvoidZTSK_m0e2s0(void){ZTSK_m0State【ZTSK_M0ZTSK_M0S1_4;switchZTSK_m0State【ZTSK_M0S1_4F{caseZTSK_m0State【ZTSK_M0S1_2FcaseZTSK_m0State【ZTSK_M0S3_4F}/*S1StateEndActivity*/}TSKSample(level:0)State:0Event:3ActionstaticvoidZTSK_m0e3s0(void){ZTSK_m0State【ZTSK_M0】=ZTSK_M0S1_4;ZTSK_m0State【ZTSK_M0S1_4FZTSK_M0S1_2;ZTSK_m0State【ZTSK_M0S1_2F】=ZTSK_M0S1;/*S1StateEndActivity*/}TSKSample(level:0)Event:0EventstaticvoidZTSK_m0e0(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S0:caseswitch(ZTSK_m0State【ZTSK_M0S1_4F{caseswitch(ZTSK_m0State【ZTSK_M0S3_4F{caseZTSK_M0S4:}}}}TSKSample(level:0)Event:1EventstaticvoidZTSK_m0e1(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S0:}}TSKSample(level:0)Event:2EventstaticvoidZTSK_m0e2(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S0:}}TSKSample(level:0)Event:3EventstaticvoidZTSK_m0e3(void){switchZTSK_m0State【ZTSK_M0{caseZTSK_M0S0:}}TSKSample(level:0)EventysisvoidZTSK_m0Call(void){/*Event ysisStartActivity*/if(E1){/*E1EventHitStartActivity*//*E1EventHitEndActivity}elseif(E2{}elseif(E3{}elseif(E4{}/*EventysisEndActivity}TSKRoute0InitialvoidZTSK_m0Init(void){ZTSK_m0State【ZTSK_M0】=ZTSK_M0S0;ZTSK_m0State【ZTSK_M0S1_4FZTSK_M0S1_2;ZTSK_m0State【ZTSK_M0S1_2F】=ZTSK_M0S1;ZTSK_m0State【ZTSK_M0S3_4F】=ZTSK_M0S3;/*S1StateStartActivity}ⅳ)【轉(zhuǎn)移目標(biāo)的狀態(tài)名稱(chēng)or號(hào))】(*X)※XX表示同步組,同一同步組中的轉(zhuǎn)移目標(biāo)狀態(tài)必須相同。例如,S1(*1)和S2(*1)這兩種表其他的同步轉(zhuǎn)全部YN并列狀態(tài)中的同步轉(zhuǎn)移ONE1:S1動(dòng)作→同步轉(zhuǎn)移標(biāo)記AE2:S2動(dòng)作→同步轉(zhuǎn)移標(biāo)記B狀態(tài)變量更新E0ABAC狀態(tài)變量更新BC同步轉(zhuǎn)移標(biāo)記AOFF同步轉(zhuǎn)移標(biāo)記BOFFE1Routelevel0procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m0State【ZTSK_M0STATEMAX】static{unsignedcharm_synchro unsignedchar TSKSample(level:0)SynchronizedclearstaticvoidZTSK_m0SynchroClear(void){ _e1s1_1_1=0; _e1s4_1_1=}TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){;ZTSK_m0State【ZTSK_M0}TSKSample(level:0State:1Event:0ActionstaticvoidZTSK_m0e0s1(unsignedchar*zTrans{;ZTSK_m0State【ZTSK_M0S1_2FZTSK_m0State【ZTSK_M0})TSKSample(level:0State:2Event:0ActionstaticvoidZTSK_m0e0s2(unsignedchar*zTrans{;ZTSK_m0State【ZTSK_M0S1_2FZTSK_m0State【ZTSK_M0})TSKSample(level:0State:3Event:0ActionstaticvoidZTSK_m0e0s3(void){;ZTSK_m0State【ZTSK_M0S3_4FZTSK_m0State【ZTSK_M0}TSKSample(level:0)State:4Event:0ActionstaticvoidZTSK_m0e0s4(void){;ZTSK_m0State【ZTSK_M0S3_4FZTSK_m0State【ZTSK_M0}TSKSample(level:0)State:0Event:1ActionstaticvoidZTSK_m0e1s0(void){;}TSKSample(level:0State:1Event:1ActionstaticvoidZTSK_m0e1s1(unsignedchar*zTrans{;)if( _e1s4_1_1{ZTSK_m0State【ZTSK_M0 1_4=1;}{ _e1s1_1_1=}}TSKSample(level:0)State:4Event:1ActionstaticvoidZTSK_m0e1s4(void){;if(ZTSK_m0Synchro.m_synchro_e1s1_1_1{ZTSK_m0State【ZTSK_M0ZTSK_M0S0;}{ZTSK_m0Synchro.m_synchro_e1s4_1_1=}}TSKSample(level:0)Event:0EventstaticvoidZTSK_m0e0(void){unsignedcharzTrans1_4=0;switchZTSK_m0State【ZTSK_M0){caseZTSK_M0S0:caseswitch(ZTSK_m0State【ZTSK_M0S1_2F{caseZTSK_m0e0s1(&zTrans1_4);caseZTSK_m0e0s2(&zTrans1_4);}if( 1_4{}switch(ZTSK_m0State【ZTSK_M0S3_4F{caseZTSK_M0S3:caseZTSK_M0S4:}}}TSKSample(level:0)Event:1EventstaticvoidZTSK_m0e1(void){unsignedcharzTrans 1_4=0;switchZTSK_m0State【ZTSK_M0){caseZTSK_M0S0:caseswitch(ZTSK_m0State【ZTSK_M0S1_2F{caseZTSK_m0e1s1(&zTrans1_4);caseZTSK_m0e1s0(&zTrans1_4);}if(zTrans1_4{}switch(ZTSK_m0State【ZTSK_M0S3_4F{caseZTSK_M0S3:caseZTSK_M0S4:}}}TSKSample(level:0)EventysisvoidZTSK_m0Call(void){if(E1{}elseif(E2{}}TSKRoute0InitialvoidZTSK_m0Init(void){ZTSK_m0State【ZTSK_M0】=ZTSK_M0S0;ZTSK_m0State【ZTSK_M0S1_2FZTSK_M0S1;ZTSK_m0State【ZTSK_M0S3_4F}C)全局轉(zhuǎn)※STM狀STM狀STM狀轉(zhuǎn)移(局部轉(zhuǎn)移TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e1s0(void){ZTSK_m0State【ZTSK_M0/*S1StateEndActivity/*S2StateStartActivity*/}TSKChild(level:0.1)State:SADeepgrobaltransitionvoidZTSK_m0_1gS0EntryDeep(void){switchZTSK_m0State【ZTSK_M0_1{case/*SAStateEndActivity*/}ZTSK_m0State【ZTSK_M0_1/*SAStateStartActivity}D)自轉(zhuǎn)例)S11S11S1S1S11S11S11S11S11TSKSample(level:0)StateTSKSample(level:0)State:S1StartactivitystaticvoidZTSK_m0s0_1Entry(void){/*S1StateStartActivityswitchZTSK_m0State【ZTSK_M0S0_1F{case/*S11StateStartActivity*/case/*S12StateStartActivity*/}}TSKSample(level:0)State:0Event:0ActionstaticvoidZTSK_m0e0s0(void){ZTSK_m0State【ZTSK_M0S0_1FZTSK_m0State【ZTSK_M0/*S11StateEndActivity/*S11StateStartActivity}TSKSample(level:0)State:1Event:0ActionstaticvoidZTSK_m0e0s1(void){ZTSK_m0State【ZTSK_M0/*S12StateEndActivity/*S1StateEndActivity*/}6)STM設(shè)STM設(shè)定相關(guān)的各個(gè)項(xiàng)。①STM返回指STMSTM返回(return述※返回類(lèi)型:short返回值缺省設(shè)置Routelevel1procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m1State【ZTSK_M1STATEMAX】TSKSample(level:1)State:0Event:0ActionstaticshortZTSK_m1e0s0(void){return}TSKSample(level:1)Event:0EventstaticshortZTSK_m1e0(void){shortzRet=switchZTSK_m1State【ZTSK_M1{casezRet=ZTSK_m1e0s0();}return(zRet}TSKSample(level:1) ysisshortZTSK_m1Call(void){shortzRet=7;if(E1){Ret=}return(zRet}②STM參數(shù)指STM□【STM名orSTM等級(jí)號(hào))】【參數(shù)】參數(shù):shortRoutelevel1procedure#include"TSK_Inc.h"staticunsignedcharZTSK_m1State【ZTSK_M1STATEMAX】TSKSample(level:1)State:0Event:0ActionstaticvoidZTSK_m1e0s0(shortarg){return}TSKSample(level:1)Event:0EventstaticvoidZTSK_m1e0(shortarg){shortswitchZTSK_m1State【ZTSK_M1{casezRet=ZTSK_m1e0s0(arg);}return(zRet}TSKSample(level:1) ysisvoidZTSK_m1Call(shortarg){shortzRet;if(E1){zRet=ZTSK_m1e0(arg}return(zRet}TSKRoute1InitialvoidZTSK_m1Init(shortarg){ZTSK_m1State【ZTSK_M1}③STM克隆指STMSTMSTMSTMSTM中為STM的克隆數(shù)指定為“2STM也需要指定為“2□【STM名orSTM等級(jí)號(hào))n】※n0STMSTM克隆數(shù)超過(guò)范圍嗎

對(duì)與STM【n】的克隆STM,調(diào)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論