From a1c0ad21b7951410e3cb4631f349208d4c6fb939 Mon Sep 17 00:00:00 2001 From: Chuck McManis Date: Sun, 18 Aug 2019 20:19:25 -0700 Subject: [PATCH] Fix wrapping issue Delays in msleep are guaranteed to exit. --- .../stm32/f4/stm32f4-discovery/tick_blink/tick_blink.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/stm32/f4/stm32f4-discovery/tick_blink/tick_blink.c b/examples/stm32/f4/stm32f4-discovery/tick_blink/tick_blink.c index 1097a0a1..6a12c970 100644 --- a/examples/stm32/f4/stm32f4-discovery/tick_blink/tick_blink.c +++ b/examples/stm32/f4/stm32f4-discovery/tick_blink/tick_blink.c @@ -31,18 +31,22 @@ * overflows every 49 days if you're wondering */ volatile uint32_t system_millis; +volatile uint32_t delay_millis; /* Called when systick fires */ void sys_tick_handler(void) { system_millis++; + if (delay_millis != 0) { + delay_millis--; + } } /* sleep for delay milliseconds */ static void msleep(uint32_t delay) { - uint32_t wake = system_millis + delay; - while (wake > system_millis); + delay_millis = delay; + while (delay_millis); } /* Set up a timer to create 1mS ticks. */