#include #if defined(__LM4F120H5QR__) #include #include #include #include #elif defined(ESP8266) #include #include #include #endif #include "timed.h" #if defined(__LM4F120H5QR__) static handler_t client_handler; static void timer0isr(void) { ROM_TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); client_handler(); } void timer_create(unsigned freq, handler_t handler) { client_handler = handler; ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); ROM_TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC); TimerIntRegister(TIMER0_BASE, TIMER_A, timer0isr); ROM_TimerEnable(TIMER0_BASE, TIMER_A); ROM_IntEnable(INT_TIMER0A); ROM_TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); ROM_TimerLoadSet(TIMER0_BASE, TIMER_A, ROM_SysCtlClockGet() / freq); } #elif defined(ESP_PLATFORM) void timer_create(unsigned freq, handler_t handler) { hw_timer_t *timer = timerBegin(3, 80, true); // prescaler of 80 timerAttachInterrupt(timer, handler, true); timerAlarmWrite(timer, 1000000 / freq, true); timerAlarmEnable(timer); } #elif defined(ESP8266) void timer_create(unsigned freq, handler_t handler) { static os_timer_t t; os_timer_setfn(&t, (os_timer_func_t *)handler, 0); os_timer_arm(&t, 1000 / freq, true); } #endif