diff --git a/FSM_OOP/usr/keyFSM_private.h b/FSM_OOP/usr/keyFSM_private.h index dfac4d5..33edc8c 100644 --- a/FSM_OOP/usr/keyFSM_private.h +++ b/FSM_OOP/usr/keyFSM_private.h @@ -70,6 +70,7 @@ static void actionFcn(exit, Downing)(KeyFSM *pFSM) static void actionFcn(during, UpDebouncing)(KeyFSM *pFSM){ KeyFSMData * data = pFSM->base.data; data->countDelay++; + printf(" during开启消抖 "); } @@ -91,6 +92,8 @@ typedef enum _Event{ static State transitionHandler(PhsicalDown)(KeyFSM *pFSM) { printf(" 物理按键按下 "); + KeyFSMData * data = pFSM->base.data; + data->countDelay = 0; switch (getFSMCurState((FSM_Ptr)pFSM)) { case Waiting: @@ -109,6 +112,8 @@ static State transitionHandler(PhsicalDown)(KeyFSM *pFSM) static State transitionHandler(PhsicalUp)(KeyFSM *pFSM) { printf(" 物理按键松开 "); + KeyFSMData * data = pFSM->base.data; + data->countDelay = 0; switch (getFSMCurState((FSM_Ptr)pFSM)) { case DownDebouncing: diff --git a/main.c b/main.c index 103e577..b163f59 100644 --- a/main.c +++ b/main.c @@ -3,9 +3,10 @@ #include "keyFSM.h" #include "FSM_public.h" -#define NUM 30 +#define NUM 35 KeyIn testin[NUM] = { - Up,Up,Up,Up,Up,Up, pDown,pDown,pDown, Up,Up, pDown,pDown,pDown,pDown,pDown,pDown,pDown,pDown + Up,Up,Up,Up,Up, Up,pDown,pDown,pDown,Up, pDown,pDown,pDown,pDown,pDown, + pDown,pDown,pDown,Up,Up, pDown,pDown, }; @@ -15,7 +16,7 @@ int main(){ for (int i = 0; i < NUM; i++) { - printf("第%d次: ",i); + printf("第%d次: ",i+1); KeyFSMData* data = getData((FSM_Ptr)keyFSM); data->in = testin[i]; setEvent((FSM_Ptr)keyFSM);