diff --git a/stm/systick.c b/stm/systick.c
index fb872ac9d5eb4f8e733e7c1d246fab5102bfe8cd..40ae53279363915f48203c8e810c89ac7ac80dd4 100644
--- a/stm/systick.c
+++ b/stm/systick.c
@@ -33,10 +33,12 @@ void sys_tick_wait_at_least(uint32_t stc, uint32_t delay_ms) {
     if (stc_wait < stc) {
         // stc_wait wrapped around
         while (stc <= sys_tick_counter || sys_tick_counter < stc_wait) {
+            __WFI(); // enter sleep mode, waiting for interrupt
         }
     } else {
         // stc_wait did not wrap around
         while (stc <= sys_tick_counter && sys_tick_counter < stc_wait) {
+            __WFI(); // enter sleep mode, waiting for interrupt
         }
     }
 }