FSM/test_on_28377/main.c

122 lines
2.2 KiB
C
Raw Normal View History

#include "F28x_Project.h"
#include <stdio.h>
#include "keyFSM.h"
#include "childFSM.h"
#include "parentFSM.h"
#include "FSM_public.h"
#define LED_BLINKY_GPIO 2
#define INPUT_GPIO 15
2024-06-28 22:39:41 +08:00
#pragma diag_suppress 303
uint32_t exec_time[50];
uint32_t stop_time;
int index = 0;
inline void tic(){
CpuTimer1Regs.TCR.bit.TSS = 1; // stop the timer
CpuTimer1Regs.TCR.bit.TRB = 1; // 1 = reload timer
CpuTimer1Regs.TCR.bit.TSS = 0; // start the timer
}
inline void toc(uint16_t index){
stop_time = CpuTimer1.RegsAddr->TIM.all;
CpuTimer1Regs.TCR.bit.TSS = 1;
exec_time[index] = CpuTimer1.RegsAddr->PRD.all - stop_time;
}
int isDown = 0;
KeyFSM* keyFSM;
KeyFSMData* data;
KeyIn keystat;
void keyFSMTest(){
keyFSM = createKeyFSM();
printf("hello 28377\n");
while(1){
keystat = !GPIO_ReadPin(INPUT_GPIO);
tic();
Step(keyFSM);
2024-04-23 15:11:06 +08:00
toc(index++);
2024-06-28 22:39:41 +08:00
KeyOut out = readKeyFSMOut(keyFSM);
if(out != Idle){
printf("\t\t\t\t%d\n", out);
}
else{
2024-04-23 15:11:06 +08:00
index--;
}
DELAY_US(20*1000);
}
}
ChildFSM *cFSM;
ParentFSM *pFSM;
enum ParentFSMSignals i[20] = {0, Signal_toA, Signal_toB,0,0,0,0,0, Signal_toC, Signal_toA, Signal_toB, Signal_toA};
enum ChildFSMSignals j[20] = {0,0,Signal_toD,0,0,Signal_toE, Signal_toD, Signal_toE,0,0,0,0};
void childFSMTest(){
cFSM = createChildFSM();
pFSM = createParentFSM();
bind_ParentFSM_ChildFSMs(pFSM, (FSM *)cFSM);
((ParentFSMData *)GetData(cFSM))->external.x = 1;
for (int k = 0; k < 15; k++)
{
2024-07-02 16:42:07 +08:00
printf("i: ",k+1);
SetSignal(pFSM, i[k]);
SetSignal(cFSM, j[k]);
if(k > 5){
((ParentFSMData *)GetData(cFSM))->external.x = 0;
}
tic();
Step(pFSM);
toc(index++);
printf("\n");
}
}
void main(void)
{
InitSysCtrl();
InitGpio();
InitCpuTimers();
ConfigCpuTimer(&CpuTimer1, 200, 100000);
CpuTimer1Regs.TCR.all = 0x0000;
GPIO_SetupPinOptions(LED_BLINKY_GPIO, GPIO_OUTPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(LED_BLINKY_GPIO, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(INPUT_GPIO, GPIO_INPUT, GPIO_PULLUP);
// keyFSMTest();
childFSMTest();
}