栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

esp32 Timer实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

esp32 Timer实现

Timer功能实现

Timer主要有四个方法
timerBegin:创建
timerAttachInterrupt:中断设置
timerAlarmWrite:时间设置
timerAlarmEnable:使能

#include 

int interruptCounter = 0;
hw_timer_t *timer = NULL;

//  为使编译器将代码分配到IRAM内,中断处理程序应该具有 IRAM_ATTR 属性
void IRAM_ATTR TimerEvent()
{
    Serial.println(interruptCounter++);
    if (interruptCounter > 5)
    {
        interruptCounter = 1;
    }
}

void setup() {
  Serial.begin(9600);
  //	函数名称:timerBegin()
  //	函数功能:Timer初始化,分别有三个参数
  //	函数输入:
  //          1. 定时器编号(0到3,对应全部4个硬件定时器)
  //          2. 预分频器数值(ESP32计数器基频为80M,80分频单位是微秒)
  //          3. 计数器向上(true)或向下(false)计数的标志
  //	函数返回:一个指向 hw_timer_t 结构类型的指针
  timer = timerBegin(0, 80, true);

  //	函数名称:timerAttachInterrupt()
  //	函数功能:绑定定时器的中断处理函数,分别有三个参数
  //	函数输入:
  //          1. 指向已初始化定时器的指针(本例子:timer)
  //			    2. 中断服务函数的函数指针
  //			    3. 表示中断触发类型是边沿(true)还是电平(false)的标志
  //	函数返回:无
  timerAttachInterrupt(timer, &TimerEvent, true);

  //	函数名称:timerAlarmWrite()
  //	函数功能:指定触发定时器中断的计数器值,分别有三个参数
  //	函数输入:
  //          1. 指向已初始化定时器的指针(本例子:timer)
  //			    2. 第二个参数是触发中断的计数器值(1000000 us -> 1s)
  //			    3. 定时器在产生中断时是否重新加载的标志
  //	函数返回:无
  timerAlarmWrite(timer, 1000000, true);
  timerAlarmEnable(timer); //	使能定时器
}

void loop() {

}

实现效果是不停的重复打印1-5数字

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号