From f5b68838f72ebf00df1bc2f62fbb658d51bd9b2b Mon Sep 17 00:00:00 2001 From: anschrammh Date: Thu, 13 Apr 2023 13:23:46 +0200 Subject: [PATCH] Added two new functions performing a precise blocking delay in micro and milli seconds --- app/app_lib/app_utils.c | 42 +++++++++++++++++++++++++++++++++++++++++ app/app_lib/app_utils.h | 4 ++++ 2 files changed, 46 insertions(+) diff --git a/app/app_lib/app_utils.c b/app/app_lib/app_utils.c index ddfecaa..ce983a6 100644 --- a/app/app_lib/app_utils.c +++ b/app/app_lib/app_utils.c @@ -10,4 +10,46 @@ uint32_t millis(void) void millis_run_cb(void *arg) { millis_cnt++; +} + +void us_delay(uint32_t us) +{ + struct tls_timer_cfg timer_config = + { + .is_repeat = false, + .unit = TLS_TIMER_UNIT_US, + .timeout = 0xFFFFFFFF, + }; + + uint8_t timer_id = tls_timer_create(&timer_config); + + if(WM_TIMER_ID_INVALID == timer_id) return; + + tls_timer_start(timer_id); + + // Perform a blocking delay + while(tls_timer_read(timer_id) < us); + + tls_timer_destroy(timer_id); +} + +void ms_delay(uint32_t ms) +{ + struct tls_timer_cfg timer_config = + { + .is_repeat = false, + .unit = TLS_TIMER_UNIT_MS, + .timeout = 0xFFFFFFFF, + }; + + uint8_t timer_id = tls_timer_create(&timer_config); + + if(WM_TIMER_ID_INVALID == timer_id) return; + + tls_timer_start(timer_id); + + // Perform a blocking delay + while(tls_timer_read(timer_id) < ms); + + tls_timer_destroy(timer_id); } \ No newline at end of file diff --git a/app/app_lib/app_utils.h b/app/app_lib/app_utils.h index 620d864..2be832c 100644 --- a/app/app_lib/app_utils.h +++ b/app/app_lib/app_utils.h @@ -7,4 +7,8 @@ uint32_t millis(void); void millis_run_cb(void *arg); +void us_delay(uint32_t us); + +void ms_delay(uint32_t ms); + #endif //APP_UTILS_H \ No newline at end of file