From 4d214edae89ce178765c63f83b67c099019ef5db Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 8 Feb 2019 15:10:13 +1100 Subject: [PATCH] stm32/systick: Provide better compile-time configurability of slots. --- ports/stm32/systick.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ports/stm32/systick.h b/ports/stm32/systick.h index d1b59c574b..3ae6be7e02 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);