From 101cade4e3ec369874f4898d36cc3e46d2c2607c Mon Sep 17 00:00:00 2001 From: Senthil Ramakrishnan Date: Mon, 23 Jul 2018 11:07:17 -0500 Subject: [PATCH] Improved logic in wait_us to avoid division operation in sub-millisec case --- platform/mbed_wait_api_rtos.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/platform/mbed_wait_api_rtos.cpp b/platform/mbed_wait_api_rtos.cpp index b535937840..f24f58cbdd 100644 --- a/platform/mbed_wait_api_rtos.cpp +++ b/platform/mbed_wait_api_rtos.cpp @@ -39,11 +39,10 @@ void wait_us(int us) const ticker_data_t *const ticker = get_us_ticker_data(); uint32_t start = ticker_read(ticker); - // Use the RTOS to wait for millisecond delays if possible - int ms = us / 1000; - if ((ms > 0) && core_util_are_interrupts_enabled()) { + if ((us >= 1000) && core_util_are_interrupts_enabled()) { + // Use the RTOS to wait for millisecond delays if possible sleep_manager_lock_deep_sleep(); - Thread::wait((uint32_t)ms); + Thread::wait((uint32_t)us / 1000); sleep_manager_unlock_deep_sleep(); } // Use busy waiting for sub-millisecond delays, or for the whole