diff options
-rw-r--r-- | board/keyborg/runtime.c | 2 | ||||
-rw-r--r-- | board/zinger/runtime.c | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/board/keyborg/runtime.c b/board/keyborg/runtime.c index e3a8021ef1..e86d591172 100644 --- a/board/keyborg/runtime.c +++ b/board/keyborg/runtime.c @@ -68,7 +68,7 @@ void tim2_interrupt(void) if (STM32_TIM_CNT(3) == last_deadline >> 16) { STM32_TIM_DIER(2) = 0; task_clear_pending_irq(STM32_IRQ_TIM2); - last_event = 1 << 29 /* task event wake */; + last_event = TASK_EVENT_TIMER; need_wfi = 0; } else { need_wfi = 1; diff --git a/board/zinger/runtime.c b/board/zinger/runtime.c index 775afdccec..deaa87d6ab 100644 --- a/board/zinger/runtime.c +++ b/board/zinger/runtime.c @@ -56,7 +56,7 @@ void tim2_interrupt(void) { STM32_TIM_DIER(2) = 0; /* disable match interrupt */ task_clear_pending_irq(STM32_IRQ_TIM2); - last_event = 1 << 29 /* task event wake */; + last_event = TASK_EVENT_TIMER; } DECLARE_IRQ(STM32_IRQ_TIM2, tim2_interrupt, 1); @@ -85,10 +85,12 @@ uint32_t task_wait_event(int timeout_us) asm volatile("wfi"); STM32_TIM_DIER(2) = 0; /* disable match interrupt */ - evt = last_event; - last_event = 0; asm volatile("cpsie i ; isb"); + /* note: interrupt that woke us up will run here */ + + evt = last_event; + last_event = 0; return evt; } |