Added two new functions performing a precise blocking delay in micro and milli seconds

This commit is contained in:
anschrammh 2023-04-13 13:23:46 +02:00
parent 338c7e18e6
commit f5b68838f7
2 changed files with 46 additions and 0 deletions

View File

@ -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);
}

View File

@ -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