当前位置: 首页 > news >正文

ESP32-定时器中断

前言

一、关于ESP32定时器常用的代码

1.#include

2.#include

3.#include

 4.总结

二、可以使用的代码

1.代码

2.代码介绍

总结


前言

环境:Arduino

芯片:ESP32-WROOM-DA Module

更新时间:2024-09-25


一、关于ESP32定时器常用的代码

资料网上很多,我这里不在赘述,但是我要说下网上常见的代码,但是我今天行不同的代码.这应该是版本更新的问题.如果哪位大佬知道什么原因,欢迎在评论区说出来.谢谢

1.#include <Arduino.h>

代码如下:

#include <Arduino.h>hw_timer_t *tim1 = NULL;
int tim1_IRQ_count = 0;void tim1Interrupt()//中断操作函数
{Serial.println("haha");tim1_IRQ_count++;Serial.println(timerAlarmEnabled(tim1));
}void setup()//初始化函数
{Serial.begin(115200);tim1 = timerBegin(0, 80, true);timerAttachInterrupt(tim1, tim1Interrupt, true);timerAlarmWrite(tim1, 100000, true);timerAlarmEnable(tim1);
}void loop()//正常的循环函数
{if (tim1_IRQ_count > 10){Serial.println("count trigger");tim1_IRQ_count = 0;}
}

这个我今天尝试也不可以,但是网上关于这个代码的资料和视频都挺多.而且也是没问题的.但是我自己尝试就会报错,报错信息: 

too many arguments to function 'hw_timer_t* timerBegin(uint32_t)'

所以我尝试失败了.

2.#include <Timer.h>

代码和上面一样,但是头文件换成了#include <Timer.h>,我尝试了也不可以

报错信息:

too many arguments to function 'hw_timer_t* timerBegin(uint32_t)'

3.#include <MsTimer2.h>

代码如下:

//定时器库的 头文件
#include <MsTimer2.h>
//中断处理函数,改变灯的状态
void flash()
{                       static boolean output = HIGH;digitalWrite(13, output);output = !output;
}
void setup()
{pinMode(13, OUTPUT); // 中断设置函数,每 500ms 进入一次中断MsTimer2::set(500, flash);//开始计时MsTimer2::start(); 
}void loop(){}

 这也是我在网上找到的代码,但是尝试后也不可以

报错信息:

c:\Users\123\Documents\Arduino\libraries\MsTimer2/MsTimer2.h:9:2: error: #error MsTimer2 library only works on AVR architecture 9 | #error MsTimer2 library only works on AVR architecture

 4.总结

具体为什么不能实现,因为精力问题没去深究.初步怀疑是版本更新的问题,应为ESP32Arduino版本不兼容现象很严重.但是这确实是网上较为流行的几种软件定时器的设置方式.大家可以尝试下

二、可以使用的代码

1.代码

#define BTN_STOP_ALARM 0hw_timer_t *timer = NULL;void ARDUINO_ISR_ATTR onTimer() {//中断操作函数
}void setup() {Serial.begin(115200);// Set timer frequency to 1Mhztimer = timerBegin(1000000);// Attach onTimer function to our timer.timerAttachInterrupt(timer, &onTimer);// Set alarm to call onTimer function every second (value in microseconds).// Repeat the alarm (third parameter) with unlimited count = 0 (fourth parameter).timerAlarm(timer, 1000000, true, 0);
}void loop() {
}

2.代码介绍

1.代码内容为定时1S

2.timerAttachInterrupt(timer, &onTimer);,其中第二个参数需要带取地址符号,且地址是中断操作函数名

3.这是官方例程,在arduino的timer文件内,大家相关例程还是尽量从官方例程查找.符合当前版本且有效.


总结

关于ESP的定时器就这么多,主要说几点注意事项

1.版本不兼容情况严重

2.尽量多看官方例程

3.不要有错别字和大小写错误

相关文章:

  • uniapp vue3 使用echarts绘制图表 柱状图等
  • 缓存穿透 问题(缓存空对象)
  • Java | Leetcode Java题解之第436题寻找右区间
  • Python 如何使用 unittest 模块编写单元测试
  • Vue75 编程式路由导航
  • Azure Data Box 80 TB 现已在中国区正式发布
  • Vue使用axios二次封装、解决跨域问题
  • LabVIEW闪退
  • Java项目实战II基于Java+Spring Boot+MySQL的汽车销售网站(文档+源码+数据库)
  • 2.1 HuggingFists系统架构(一)
  • 快讯:腾讯轻量服务器四周年,最低一折续费,还有免费升配
  • [Redis][主从复制][中]详细讲解
  • 在什么时候需要用到常引用const---情景
  • Java中的JDK8及后续的重要新特性
  • 【NumPy】专题学习
  • Hibernate最全面试题
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • js面向对象
  • maven工程打包jar以及java jar命令的classpath使用
  • Odoo domain写法及运用
  • Redis在Web项目中的应用与实践
  • SAP云平台里Global Account和Sub Account的关系
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Wamp集成环境 添加PHP的新版本
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 从零搭建Koa2 Server
  • 缓存与缓冲
  • 聊聊sentinel的DegradeSlot
  • 前端知识点整理(待续)
  • 区块链将重新定义世界
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 我建了一个叫Hello World的项目
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 如何用纯 CSS 创作一个货车 loader
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (第30天)二叉树阶段总结
  • (二)丶RabbitMQ的六大核心
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (面试必看!)锁策略
  • (三)c52学习之旅-点亮LED灯
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (已解决)vscode如何选择python解释器
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • .htaccess 强制https 单独排除某个目录
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)