fix(esp_timer): fix system time statistical error

This commit is contained in:
Dong Heng
2020-04-24 20:30:25 +08:00
parent 0799a0d8a6
commit 4fc88828c8

View File

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