我的ESP32学习(2)-定时器中断

定时器中断学习

计时60s

#include <Arduino.h>

int interrupt_counter=0;
hw_timer_t *timer=NULL;
// put function declarations here:
// int myFunction(int, int);
void IRAM_ATTR TimerEvent()
{
  Serial.println(interrupt_counter++);
  if(interrupt_counter>59)
  {interrupt_counter=0;}
}
void setup() {
// put your setup code here, to run once:
// //设置波特率
Serial.begin(115200);
// timerbegin有三个参数
// 1.定时器编号,esp32有4个定时器
// 2.基频80m,0~79有80个数,相当于1us
// 3.计数器向上计数
timer=timerBegin(0,79,true);
//用于绑定定时器的中断处理函数
//1. 指向已初始化定时器的指针timer
//2. 指向处理函数的地址
//3. 表示中断触发类型是边沿(true)还是电平(false)的标志
timerAttachInterrupt(timer,&TimerEvent,true);
//触发中断
//参数1:定时器初始化的指针timer
//参数2: 计数值1000000*1us=1s
//参数3: 完成一次计数归零 true
timerAlarmWrite(timer,1000000,true);
//定时器使能
timerAlarmEnable(timer);
}
void loop() {
delay(20);
}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ESP32-S2官方IDE提供了丰富的定时器中断功能,可以通过编写代码来配置和使用定时器,并执行相应的中断操作。 首先,需要在代码中包含<esp_timer.h>头文件,该头文件包含了ESP32-S2定时器的相关函数和常量。 接下来,可以使用esp_timer_create()函数来创建一个定时器。该函数需要传入一个esp_timer_create_args_t类型的参数,该参数包含了定时器的配置参数,如定时周期、中断处理函数等。其中,定时周期单位为微秒。 然后,可以使用esp_timer_start_periodic()函数启动定时器,并开始定期触发中断。该函数需要传入之前创建的定时器实例以及一个周期参数,用于指定定时器每隔多久触发一次中断。 当定时器触发中断时,会自动调用之前设置的中断处理函数。可以通过esp_timer_create_args_t结构体的arg字段来传递额外的参数给中断处理函数,以满足特定需求。 在中断处理函数中,可以执行特定的操作,如修改其他设备状态、发送数据等。需要注意的是,在中断处理函数中尽量避免执行耗时较长的操作,以避免影响定时器的精度和系统的稳定性。 最后,可以使用esp_timer_stop()函数停止定时器的工作,以及使用esp_timer_delete()函数释放定时器的资源。 总之,ESP32-S2官方IDE提供了方便易用的定时器中断功能,可以通过简洁的代码配置和使用定时器,并执行相应的中断操作,满足实际应用的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值