fix timer stop

pull/12/head
CloudSir 4 years ago
parent 4ea0d39162
commit 3a26279f23

@ -53,6 +53,7 @@ int MultiTimerStart(MultiTimer* timer, uint64_t timing, MultiTimerCallback_t cal
int MultiTimerStop(MultiTimer* timer)
{
MultiTimer** nextTimer = &timerList;
timer->is_repeated = 0;
/* Find and remove timer. */
for (; *nextTimer; nextTimer = &(*nextTimer)->next) {
MultiTimer* entry = *nextTimer;

@ -6,6 +6,7 @@
MultiTimer timer1;
MultiTimer timer2;
MultiTimer timer3;
MultiTimer timer4;
uint64_t PlatformTicksGetFunc(void)
{
@ -30,6 +31,17 @@ void exampleTimer3Callback(MultiTimer* timer, void *userData)
MultiTimerStart(timer, 4567, exampleTimer3Callback, userData, 0);
}
int count = 0;
void exampleTimer4Callback(MultiTimer* timer, void *userData)
{
count++;
printf("[%012ld] Timer:%p callback-> %s.\r\n", PlatformTicksGetFunc(), timer, (char*)userData);
if (count >= 3) {
printf("Timer 4 stop.\n");
MultiTimerStop(timer);
}
}
int main(int argc, char *argv[])
{
MultiTimerInstall(PlatformTicksGetFunc);
@ -37,6 +49,7 @@ int main(int argc, char *argv[])
MultiTimerStart(&timer1, 1000, exampleTimer1Callback, "1000ms CYCLE timer", 1);
MultiTimerStart(&timer2, 5000, exampleTimer2Callback, "5000ms ONCE timer", 0);
MultiTimerStart(&timer3, 3456, exampleTimer3Callback, "3456ms delay start, 4567ms CYCLE timer", 0);
MultiTimerStart(&timer4, 2000, exampleTimer4Callback, "2000ms timer - Timer4, loop 3 times", 1);
while (1) {
MultiTimerYield();

Loading…
Cancel
Save