37 template <hw_timer_clkdiv_t clkdiv, HardwareTimerMode mode>
52 return Clock::template TimeConst<NanoTime::Microseconds, MIN_HW_TIMER1_INTERVAL_US>::ticks();
57 return Clock::maxTicks();
67 assert(state == eTS_CallbackNotSet);
77 if(callback ==
nullptr) {
80 assert(state <= eTS_Disarmed);
89 Timer1Api::interval = interval;
97 __forceinline
static bool IRAM_ATTR
isArmed()
99 return state >= eTS_Armed;
102 __forceinline
static void IRAM_ATTR
arm(
bool repeating)
104 State newState = repeating ? eTS_ArmedAutoLoad : eTS_Armed;
105 if(state != newState) {
112 __forceinline
static void IRAM_ATTR
disarm()
116 state = eTS_Disarmed;
121 __forceinline
static void detach_interrupt()
124 if(state > eTS_CallbackNotSet) {
126 state = eTS_CallbackNotSet;
137 static uint8_t state;
147 template <hw_timer_clkdiv_t clkdiv = TIMER_CLKDIV_16, HardwareTimerMode mode = eHWT_NonMaskable>
Callback timer class template.
Definition: CallbackTimer.h:76
Class template for Timer1 API.
Definition: HardwareTimer.h:39
uint32_t TimeType
Definition: HardwareTimer.h:43
static TickType ticks()
Definition: HardwareTimer.h:60
Timer1Api()
Definition: HardwareTimer.h:65
static constexpr TickType minTicks()
Definition: HardwareTimer.h:50
static void arm(bool repeating)
Definition: HardwareTimer.h:102
uint32_t TickType
Definition: HardwareTimer.h:42
static constexpr const char * typeName()
Definition: HardwareTimer.h:45
static void disarm()
Definition: HardwareTimer.h:112
~Timer1Api()
Definition: HardwareTimer.h:70
static bool isArmed()
Definition: HardwareTimer.h:97
static void setCallback(TimerCallback callback, void *arg)
Definition: HardwareTimer.h:75
static void setInterval(TickType interval)
Definition: HardwareTimer.h:87
static constexpr TickType maxTicks()
Definition: HardwareTimer.h:55
static TickType getInterval()
Definition: HardwareTimer.h:92
void(*)(void *arg) TimerCallback
Interrupt-compatible C callback function pointer.
Definition: CallbackTimer.h:23
HardwareTimerMode
Hardware Timer interrupt mode.
Definition: HardwareTimer.h:28
@ eHWT_Maskable
Definition: HardwareTimer.h:29
@ eHWT_NonMaskable
Definition: HardwareTimer.h:30
void hw_timer1_attach_interrupt(hw_timer_source_type_t source_type, hw_timer_callback_t callback, void *arg)
Attach an interrupt for the timer.
void hw_timer1_detach_interrupt(void)
Detach interrupt from the timer.
Definition: Esp8266/Components/driver/include/driver/hw_timer.h:126
void hw_timer1_disable(void)
Disable the timer.
Definition: Esp8266/Components/driver/include/driver/hw_timer.h:117
void hw_timer1_enable(hw_timer_clkdiv_t div, hw_timer_intr_type_t intr_type, bool auto_load)
Enable the timer.
Definition: Esp8266/Components/driver/include/driver/hw_timer.h:90
void hw_timer1_write(uint32_t ticks)
Set the timer interval.
Definition: Esp8266/Components/driver/include/driver/hw_timer.h:109
void(* hw_timer_callback_t)(void *arg)
Definition: Esp32/Components/driver/include/driver/hw_timer.h:69
@ TIMER_EDGE_INT
Definition: Esp32/Components/driver/include/driver/hw_timer.h:78
@ TIMER_FRC1_SOURCE
Definition: Esp32/Components/driver/include/driver/hw_timer.h:83
@ TIMER_NMI_SOURCE
Definition: Esp32/Components/driver/include/driver/hw_timer.h:84
Callback timer API class template.
Definition: CallbackTimer.h:30
Clock implementation for Hardware Timer 1.
Definition: Clocks.h:30
static uint32_t ticks()
Definition: Clocks.h:44