ESP-Timer入门(基于ESP-IDF-5.4)

主要参考资料:
ESP 定时器(高分辨率定时器): https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32s3/api-reference/system/esp_timer.html

目录

  • ESP-Timer与FreeRTOS Timer
  • API 使用
    • 1.创建定时器
    • 2.启动定时器
    • 3.管理定时器
    • 4.时间管理

ESP-Timer与FreeRTOS Timer

ESP-Timer 是 ESP-IDF 中提供的高精度定时器组件,专为精确时间控制和低功耗设计优化。它取代了传统的 FreeRTOS 定时器,在 ESP32 系统中提供更精确、更灵活的时间管理能力。

与FreeRTOS定时器比较:
在这里插入图片描述

API 使用

1.创建定时器

#include "esp_timer.h"// 定义回调函数
void timer_callback(void* arg) {int* counter = (int*)arg;(*counter)++;ESP_LOGI("TIMER", "Callback called %d times", *counter);
}// 创建定时器配置
esp_timer_create_args_t timer_args = {.callback = &timer_callback,.arg = &counter,.name = "my_timer",.dispatch_method = ESP_TIMER_TASK // 或 ESP_TIMER_ISR
};esp_timer_handle_t timer_handle;
ESP_ERROR_CHECK(esp_timer_create(&timer_args, &timer_handle));

2.启动定时器

// 单次定时器 (50ms后触发)
ESP_ERROR_CHECK(esp_timer_start_once(timer_handle, 50 * 1000));// 周期定时器 (每100ms触发)
ESP_ERROR_CHECK(esp_timer_start_periodic(timer_handle, 100 * 1000));

3.管理定时器

// 停止定时器
ESP_ERROR_CHECK(esp_timer_stop(timer_handle));// 删除定时器
ESP_ERROR_CHECK(esp_timer_delete(timer_handle));// 获取剩余时间
int64_t remaining = esp_timer_get_next_alarm();
ESP_LOGI("TIMER", "Next alarm in %lld us", remaining);

4.时间管理

// 获取精确时间戳 (微秒)
int64_t now = esp_timer_get_time();
ESP_LOGI("TIME", "Current time: %lld us", now);// 延迟执行 (非阻塞)
esp_rom_delay_us(500); // 精确500μs延迟

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88833.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

014_批处理与大规模任务

批处理与大规模任务 目录 批处理概述核心优势技术规格API使用管理和监控应用场景最佳实践 批处理概述 什么是批处理 批处理(Batch Processing)是一种异步处理大量Claude API请求的方法,允许您一次性提交多个消息请求,系统将在…

Python淘宝拍立淘按图搜索API接口,json数据示例参考

淘宝拍立淘按图搜索API接口示例淘宝的拍立淘(图片搜索)功能通常是通过淘宝开放平台提供的API实现的。以下是一个模拟的JSON数据示例和接口调用参考:模拟API请求示例import requestsimport base64# 示例图片路径image_path "example.jpg"# 读取图片并编码…

静默的田野革命—人工智能重构农业生态的技术风暴与文明悖论

一、饥饿困局的数字突围当全球粮食损失率高达30%(约13亿吨)与8亿人营养不良并存,当农药滥用导致传粉昆虫种群崩溃与地下水资源枯竭,传统农业的生态死结日益收紧。这场危机的核心是生物复杂性对工业化农业的报复:小麦基…

【大模型推理论文阅读】 Thinking Tokens are Information Peaks in LLM Reasoning

Demystifying Reasoning Dynamics with Mutual Information:Thinking Tokens are Information Peaks in LLM Reasoning 摘要 大语言推理模型(LRM)在复杂问题解决方面展现出了令人瞩目的能力,但其内部推理机制仍未得到充分理解。…

【TCP/IP】14. 远程登录协议

14. 远程登录协议14. 远程登录协议14.1 基本概念14.2 Telnet 命令14.3 Telnet 选项及协商14.4 Telnet 子选项协商14.5 Telnet 操作模式本章要点14. 远程登录协议 14.1 基本概念 Telnet 协议是 TCP/IP 协议族的重要成员,核心功能是实现本地计算机对远程主机的终端仿…

Flink1.20.1集成Paimon遇到的问题

flinkcdc mysql 到paimon 1:Caused by: java.lang.ClassNotFoundException: org.apache.kafka.connect.data.Schema 可以参考这个文章 明确指出了flink-connector-mysql-cdc-3.4.0.jar存在这个包,但是flink-sql-connector-mysql-cdc-3.4.0.jar中没有这个…

C++高频知识点(十)

文章目录46. 智能指针是什么?怎么使用?1. std::unique_ptr2. std::shared_ptr3. std::weak_ptr47. 什么是野指针?1. 使用已释放的指针2. 未初始化的指针3. 指针超出作用域如何避免野指针1. 立即将指针置空2. 初始化指针3. 使用智能指针4. 避免返回局部变…

c#中Random类、DateTime类、String类

C# 中 Random 类分析Random 类用于生成伪随机数,位于 System 命名空间。它的核心机制是基于一个种子值 (seed),通过算法生成看似随机的数列。相同种子会生成相同的随机数序列,这在需要可重现的随机场景中很有用。核心特点种子与随机性默认构造…

Vscode 下载远程服务器失败解决方法

今天在使用 vscode 连接远程主机时,突然再次遇到这个问题,按照以往的经验,直接按照这个博主的文章其实就能解决,但是不知道为什么,今天这个方案失效了,然后卸载安装服务器和本机的vscode什么的也都试过了&a…

【算法】贪心算法:柠檬水找零C++

文章目录前言题目解析算法原理代码示例策略证明前言 题目的链接,大家可以先试着去做一下再来看一下思路。 860. 柠檬水找零 - 力扣(LeetCode) 题目解析 首先我们要认真去拿到题目中的关键有用信息。 认真的去阅读题目给的示例,然…

27.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--币种服务(一)

从本篇文章开始,我们将用两篇内容详细介绍币种服务的实现。币种服务本身结构较为简单,核心功能包括内置币种的初始化、币种汇率的同步以及汇率的查询。在本篇中,我们将重点讲解如何实现内置币种的初始化功能,为后续的服务打下基础…

(2)从零开发 Chrome 插件:实现 API 登录与本地存储功能

从零开发 Chrome 插件:实现 API 登录与本地存储功能 Chrome 插件作为浏览器功能的重要扩展,能极大提升用户的工作效率。本文将以一个「登录功能插件」为例,带你从零构建一个可调用 API 验证身份、并将用户信息存储在本地的 Chrome 插件。 基…

Flink时间窗口详解

一、引言在大数据流处理的领域中,Flink 的时间窗口是一项极为关键的技术,想象一下,你要统计一个电商网站每小时的订单数量。由于订单数据是持续不断产生的,这就形成了一个无界数据流。如果没有时间窗口的概念,你就需要…

宽带接入,网线插入电脑的经验

现在一般家里安装移动宽带,都会提供四个千兆接口的光猫路由器,但是要注意了 首先网线的两端看起来一样,实际上并不是,如果发现连接不成功,那么就要换一头重新尝试, 一般像说什么自动DHCP啊,因为…

crmeb多门店对接拉卡拉支付小程序聚合收银台集成全流程详解

一、商户注册与配置​​注册支付平台账号​​:在拉卡拉开放平台注册商户账号(私信联系注册)​​创建应用​​:获取小程序应用ID(AppID)​​配置支付参数​​:商户号(MID)终端号(TID)API密钥支付回调地址二、配置拉卡拉…

C#将树图节点展示到NetronLight图表中

之前写过NetronLight开源框架 C#使用开源框架NetronLight绘制流程图-CSDN博客 我们这里将TreeView树图的节点内容展示到NetronLight图表中,按照树的层次【深度Level】展示 新建窗体应用程序ShowTreeNodeToDiagram,将默认的Form1重命名为FormShowNode&…

精密模具大深径比微孔尺寸检测方案 —— 激光频率梳 3D 轮廓检测

引言精密模具中大深径比微孔(深径比>20:1,孔径<1mm)的尺寸精度直接影响注塑件、电子元件等产品的成型质量。此类微孔具有孔径小、深度大、表面质量要求高(Ra≤0.1μm)等特点,传统检测…

defer学习指南

一、源头:早期管理资源(如数据库连接、锁、文件句柄、网络连接)和状态清理异常麻烦。 必须在每个可能的返回点(return、err、panic)手动重复清理代码,极易遗漏且打断主要逻辑思路!像Java语言虽然…

NLP_知识图谱_大模型——个人学习记录

1. 自然语言处理、知识图谱、对话系统三大技术研究与应用 https://github.com/lihanghang/NLP-Knowledge-Graph 深度学习-自然语言处理(NLP)-知识图谱:知识图谱构建流程【本体构建、知识抽取(实体抽取、 关系抽取、属性抽取)、知识表示、知…

linux:进程详解(1)

目录 ​编辑 1.进程基本概念与基本操作 1.1 概念 1.2 描述进程-PCB 1.2.1PCB的基本概念 1.2.2 task_ struct 1.2.3 查看进程 2.进程状态 2.1 Linux内核源码展示 2.2 进程状态查看 ​编辑 2.3 Z(zombie)-僵⼫进程 2.4 僵尸进程的危害 2.5 孤儿进程 3.进程优先级 …