32#define COUNT_DOWN false
33#define EDGE_TRIGGERED true
34#define LEVEL_TRIGGERED false
36hw_timer_t* timer0 = NULL;
38portMUX_TYPE timerMux0 = portMUX_INITIALIZER_UNLOCKED;
45unsigned int u16CountDown0 = 0;
46unsigned int u16CountDown1 = 0;
47unsigned int u16CountDown2 = 0;
48unsigned int u16CountDown3 = 0;
49unsigned int u16CountDown4 = 0;
51void TickService0(
void)
53 if (u16CountDown0) u16CountDown0--;
54 if (u16CountDown1) u16CountDown1--;
55 if (u16CountDown2) u16CountDown2--;
56 if (u16CountDown3) u16CountDown3--;
57 if (u16CountDown4) u16CountDown4--;
60void IRAM_ATTR onTimer0() {
61 portENTER_CRITICAL_ISR(&timerMux0);
63 portEXIT_CRITICAL_ISR(&timerMux0);
68 timer0 = timerBegin(0, PRESCALE0, COUNT_UP);
69 timerAttachInterrupt(timer0, &onTimer0, EDGE_TRIGGERED);
70 timerAlarmWrite(timer0, 1000,
true);
73 timerAlarmEnable(timer0);