From 4fc88828c8dc4b58a9afb5b659b0d2841493a062 Mon Sep 17 00:00:00 2001 From: Dong Heng Date: Fri, 24 Apr 2020 20:30:25 +0800 Subject: [PATCH] fix(esp_timer): fix system time statistical error --- components/esp8266/source/esp_timer.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/components/esp8266/source/esp_timer.c b/components/esp8266/source/esp_timer.c index f44f1cb0..cb4c1f67 100644 --- a/components/esp8266/source/esp_timer.c +++ b/components/esp8266/source/esp_timer.c @@ -246,21 +246,21 @@ esp_err_t esp_timer_delete(esp_timer_handle_t timer) int64_t esp_timer_get_time() { - extern esp_tick_t g_cpu_ticks; extern uint64_t g_os_ticks; esp_irqflag_t flag; - esp_tick_t diff_ticks, ticks; + uint64_t diff_ticks, ticks, prev_ticks; uint64_t time; flag = soc_save_local_irq(); time = g_os_ticks * portTICK_PERIOD_MS * 1000; + prev_ticks = soc_get_ccompare() - _xt_tick_divisor; ticks = soc_get_ticks(); - if (ticks >= g_cpu_ticks) { - diff_ticks = ticks - g_cpu_ticks; + if (ticks >= prev_ticks) { + diff_ticks = ticks - prev_ticks; } else { - diff_ticks = ESP_TICKS_MAX - g_cpu_ticks + ticks; + diff_ticks = ESP_TICKS_MAX - prev_ticks + ticks; } time += diff_ticks / (_xt_tick_divisor * configTICK_RATE_HZ / (1000 * 1000));