RTOS 时间管理篇- 软定时器 esp_timer 的使用

RTOS 时间管理篇- 软定时器 esp_timer 的使用

概述

RTOS 中提供了软定时器 xTimer,但该软件定时器存在一些缺点:

1) 最大分辨率(最小定时精度)等于RTOS 的 SysTick。

2)其定时器回调函数是从低优先级任务 TimerTask 中被调用的。

esp_timer 是 ESP-IDF 中实现的软件定时器,提供微秒级别的时间分辨率和 64bit 的最大计时数值。

软件定时器 esp_timer 的运作机制

esp_timer 与前述 RTOS 提供的 xTimer 软定时器类似,其提供单次和周期定时器功能。不同的是,xTimer 的回调只能在任务中被调用,而 esp_timer 的回调可以在 task 或者 中断 ISR 中被调用。

1)esp_timer 的回调函数默认从高优先级(默认优先级为 22)的 esp_timer task 中调度。由于所有回调都是在同一个任务中被执行的,因此建议只从回调本身执行尽可能少的工作量,而使用队列将事件发送到较低优先级的任务。如果其他优先级高于 esp_timer task 的任务正在运行,则定时器回调函数将被延迟,直到 esp_timer 任务有机会运行为止。

2)如在配置菜单中选中了如下选项,则 esp_timer 的回调函数在中断中运行。

猜你喜欢

转载自blog.csdn.net/wangyx1234/article/details/128377601
今日推荐