int main() { consoleDemoInit(); uint ticks = 0; TimerStates state = timerState_Stop; int down = keysDown(); while(!(down & KEY_START)) { swiWaitForVBlank(); consoleClear(); scanKeys(); down = keysDown(); if(state == timerState_Running) { ticks += timerElapsed(0); } if(down & KEY_A) { if(state == timerState_Stop) { timerStart(0, ClockDivider_1024, 0, NULL); state = timerState_Running; } else if(state == timerState_Pause) { timerUnpause(0); state = timerState_Running; } else if(state == timerState_Running) { ticks += timerPause(0); state = timerState_Pause; } } else if(down & KEY_B) { timerStop(0); ticks = 0; state = timerState_Stop; } iprintf("Press A to start and pause the \ntimer, B to clear the timer \nand start to quit the program.\n\n"); iprintf("ticks: %u\n", ticks); iprintf("second: %u:%u\n", ticks/TIMER_SPEED, ((ticks%TIMER_SPEED)*1000) /TIMER_SPEED); } if(state != timerState_Stop) { timerStop(0); } return 0; }
static portTASK_FUNCTION(Key_Press, pvParameters) { int down = keysDown(); while(!(down & KEY_START)) {int k=0; swiWaitForVBlank(); consoleClear(); scanKeys(); down = keysDown(); if(state == timerState_Running) { ticks += timerElapsed(0); } if(down & KEY_A) { if(state == timerState_Stop) { timerStart(0, ClockDivider_1024, 0, NULL); state = timerState_Running; } else if(state == timerState_Pause) { timerUnpause(0); state = timerState_Running; } else if(state == timerState_Running) { ticks += timerPause(0); state = timerState_Pause; sc[j] = ticks/TIMER_SPEED; scp[j] = ((ticks%TIMER_SPEED)*1000) /TIMER_SPEED; j++; } } else if(down & KEY_B) { timerStop(0); ticks = 0; state = timerState_Stop; j = 0; } iprintf("(A) : Start & Pause Timer.\n(B) : Clean Timer.\n(Start) : Exit Timer.\n\n"); iprintf("Time\n"); iprintf("ticks: %u\n", ticks); iprintf("second: %u:%u\n", ticks/TIMER_SPEED, ((ticks%TIMER_SPEED)*1000) /TIMER_SPEED); iprintf("LIST\n"); for(i = 0; i < j; i++) { iprintf(" [%d] : %u : %u \n",i+1, sc[i],scp[i]); } } if(state != timerState_Stop) { timerStop(0); } vTaskDelay(portMAX_DELAY); }