没存完,再存一次。回去看状态图结构

This commit is contained in:
godcreator02 2024-04-20 20:05:33 +08:00
parent 23a07ea75e
commit 75ce4d1a9a
2 changed files with 42 additions and 33 deletions

View File

@ -37,6 +37,22 @@ typedef enum _State
#define DEFAULT_STATE Waiting
static Event selectNextStateFcn(Waiting)(KeyFSMData *data){
if(data->countDelay == 10){
return HoldCount4;
}
else if(data->countDelay == 5){
return DelayCount3;
}
else if(data->in == Up){
return PhsicalUp;
}
else{
return PhsicalDown;
}
}
static void actionFcn(enter, Waiting)(KeyFSMData* data){
data->out = Idle;

View File

@ -15,9 +15,11 @@ typedef struct _TemplateFSM
FSM base;
}TemplateFSM;
/*
action, exit, during
*/
/* -------------------------------------------------------------------------- */
/* 状态 */
/* -------------------------------------------------------------------------- */
typedef enum _State
{
@ -29,6 +31,17 @@ typedef enum _State
} State;
#define DEFAULT_STATE E
/* -------------------------------------------------------------------------- */
/* 下一个状态选择函数 */
/* -------------------------------------------------------------------------- */
static void selectNextStateFcn(D)(TemplateFSMData *data, TemplateFSMSignals *signals){
}
/* -------------------------------------------------------------------------- */
/* 对应的 action, exit, during 函数 */
/* -------------------------------------------------------------------------- */
static void actionFcn(enter, D)()
{
FSM_LOG(" enterD ");
@ -55,47 +68,33 @@ static void actionFcn(exit, E)()
FSM_LOG(" exitE ");
}
/*
*/
typedef enum _Event{
Idle_Event,
Idle2D,
Idle2E,
D2E,
E2D,
Count_Event,
}Event;
static State transitionHandler(Idle2D)()
/* -------------------------------------------------------------------------- */
/* 转移函数 */
/* -------------------------------------------------------------------------- */
static void transitionHandler(Idle, D)()
{
FSM_LOG(" Idle2D ");
return D;
}
static void delayHanlder(Idle2D)(TemplateFSMData *data){
static void delayHanlder(Idle, D)(TemplateFSMData *data){
FSM_LOG(" DelayIdle2D");
}
static State transitionHandler(Idle2E)()
static State transitionHandler(Idle, E)()
{
FSM_LOG(" Idle2E ");
return E;
}
static State transitionHandler(D2E)()
static State transitionHandler(D, E)()
{
FSM_LOG(" D2E ");
return E;
}
static State transitionHandler(E2D)()
static State transitionHandler(E, D)()
{
FSM_LOG(" E2D ");
return D;
}
@ -108,17 +107,11 @@ const static char *stateStr[] = {
"Idle",
"D",
"E",
};
const static char *eventStr[] = {
"Idle",
"Idle2D",
"Idle2E",
"D2E",
"E2D",
};
static void printFSM(TemplateFSM* pFSM){
FSM_LOG(" \tTemplateFSM: ");
FSM_LOG("上次事件:%s, 当前状态:%s, 预装载器溢出:%d ,动作:", eventStr[getFSMCurEvent((FSM *)pFSM)], stateStr[getFSMCurState((FSM *)pFSM)], _getPreloaderOverFlag((FSM *)pFSM));
FSM_LOG("下次状态:%s, 当前状态:%s, 预装载器溢出:%d ,动作:", stateStr[getFSMNextState((FSM *)pFSM)], stateStr[getFSMCurState((FSM *)pFSM)], _getPreloaderOverFlag((FSM *)pFSM));
}