summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/stm32/systick.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/ports/stm32/systick.h b/ports/stm32/systick.h
index d1b59c574..3ae6be7e0 100644
--- a/ports/stm32/systick.h
+++ b/ports/stm32/systick.h
@@ -26,9 +26,18 @@
#ifndef MICROPY_INCLUDED_STM32_SYSTICK_H
#define MICROPY_INCLUDED_STM32_SYSTICK_H
-#define SYSTICK_DISPATCH_NUM_SLOTS (2)
-#define SYSTICK_DISPATCH_DMA (0)
-#define SYSTICK_DISPATCH_STORAGE (1)
+// Works for x between 0 and 16 inclusive
+#define POW2_CEIL(x) ((((x) - 1) | ((x) - 1) >> 1 | ((x) - 1) >> 2 | ((x) - 1) >> 3) + 1)
+
+enum {
+ SYSTICK_DISPATCH_DMA = 0,
+ #if MICROPY_HW_ENABLE_STORAGE
+ SYSTICK_DISPATCH_STORAGE,
+ #endif
+ SYSTICK_DISPATCH_MAX
+};
+
+#define SYSTICK_DISPATCH_NUM_SLOTS POW2_CEIL(SYSTICK_DISPATCH_MAX)
typedef void (*systick_dispatch_t)(uint32_t);