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_time
本文详细介绍了 ESP-IDF 中的 esp_timer 软定时器,它提供了微秒级别的精度和 64 位的最大计时值。与 FreeRTOS 的 xTimer 相比,esp_timer 允许在任务或中断中调用回调,具有更高的分辨率,但需要注意回调函数应尽量简洁以避免影响其他任务。内容包括 esp_timer 的运作机制、API、应用场景及其与 xTimer 的区别。
订阅专栏 解锁全文

2304

被折叠的 条评论
为什么被折叠?



