From a89c36b5e1c44ce308b30cf621d32278352a289e Mon Sep 17 00:00:00 2001 From: jflyper Date: Tue, 4 Oct 2016 03:53:59 +0900 Subject: [PATCH] Cache sysTickPending inside ATOMIC_BLOCK --- src/main/drivers/system.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/drivers/system.c b/src/main/drivers/system.c index a05a73bd14..13c7a04152 100644 --- a/src/main/drivers/system.c +++ b/src/main/drivers/system.c @@ -78,7 +78,7 @@ void SysTick_Handler(void) uint32_t microsISR(void) { - register uint32_t ms, cycle_cnt; + register uint32_t ms, pending, cycle_cnt; ATOMIC_BLOCK(NVIC_PRIO_MAX) { cycle_cnt = SysTick->VAL; @@ -97,9 +97,10 @@ uint32_t microsISR(void) } ms = sysTickUptime; + pending = sysTickPending; } - return ((ms + sysTickPending) * 1000) + (usTicks * 1000 - cycle_cnt) / usTicks; + return ((ms + pending) * 1000) + (usTicks * 1000 - cycle_cnt) / usTicks; } uint32_t micros(void)