ESP32有两组硬件计时器组,每组包含两个通用硬件计时器。这些计时器都是64位的可双向计数的计数器;

下面的步骤是典型的配置和操作定时器流程:

第一:初始化;

初始化定时器通过函数:timer_init()来进行,但是这个初始化函数要求先定义一个结构体timer_config_t,这个结构体包含的内部的变量就是定时器初始化必须的一些变量;

第一个变量:divider:APB_CLK的时钟频率是80MHz,divider就是几分频的意思;

第二个变量:MODE 计数器是双向计数的,那么用counter_dir可以定义计数方向,couter_dir中的参数timer_count_dir_t是直接决定计数方向的参数;

第三个变量是:使能定时器;这个使能操作是通过count_en的参数timer_start_t来直接操作的,使能之后就可以通过timer_init()来立即开始使用定时器;

第四个变量是:使能报警,这个是通过alarm_en来实现的;

第五个参数:自动重载;

第六个参数:中断类型;

当一个定时器设置并使能之后,就开始计数了。

timer_get_counter_value() or timer_get_counter_time_sec().这两个API均可检查实时的计数器的值是多少;

timer_set_counter_value()这个API可以设定定时器的起始值;

timer_pause(). 这个API可以随时停止定时器;

timer_start().这个API可以重新开始计时;

警告:

timer_set_alarm_value() 这个API用来设置一个报警;

timer_set_alarm() 这个API被用来使能一个报警;起始timer_init()也可以使能报警;

在报警使能的情况下,定时器到了报警器设置的值的时候,会发生如下情况:

中断被触发;

在自动重载的情况下,定时器会自动重载并从初始值或者已经定义好的初始值重新开始计数;定义初始值的函数是:timer_set_counter_value().

当一个报警已经触发过中断之后,就会自动的编程失能状态,如果你还想用的话,你的重新设置报警;

中断:

timer_isr_register().通过这个API定义指定定时器的中断函数;

timer_group_intr_enable(). 这个API被用来使能中断函数,这个使能的是一个定时器组的;

timer_enable_intr()这个API被用来使能特定的定时器的中断函数;

timer_group_intr_disable()         timer_disable_intr().都可以被用来失能定时器中断;


ESP32 TIMER的更多相关文章

  1. C# - 计时器Timer

    System.Timers.Timer 服务器计时器,允许指定在应用程序中引发事件的重复时间间隔. using System.Timers: // 在应用程序中生成定期事件 public class ...

  2. winform 用户控件、 动态创建添加控件、timer控件、控件联动

    用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...

  3. 【WPF】 Timer与 dispatcherTimer 在wpf中你应该用哪个?

    源:Roboby 1.timer或重复生成timer事件,dispatchertimer是集成到队列中的一个时钟.2.dispatchertimer更适合在wpf中访问UI线程上的元素 3.Dispa ...

  4. STM32F10xxx 之 System tick Timer(SYSTICK Timer)

    背景 研究STM32F10xxx定时器的时候,无意间看到了System tick Timer,于是比较深入的了解下,在此做个记录. 正文 System tick Timer是Cotex-M内核的24位 ...

  5. 本地数据Store。Cookie,Session,Cache的理解。Timer类主要用于定时性、周期性任务 的触发。刷新Store,Panel

    本地数据Store var monthStore = Ext.create('Ext.data.Store', { storeId : 'monthStore', autoLoad : false, ...

  6. WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日

    好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3       0 0     用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...

  7. java Timer 定时每天凌晨1点执行任务

    import java.util.TimerTask;/** * 执行内容 * @author admin_Hzw * */public class Task extends TimerTask {  ...

  8. [C#].NET中几种Timer的使用

    这篇博客将梳理一下.NET中4个Timer类,及其用法. 1. System.Threading.Timer public Timer(TimerCallback callback, object s ...

  9. 使用系统自带的GCD的timer倒计时模板语句遇到的小坑。。

    今天折腾了下系统gcd的 但是如果不调用这句dispatch_source_cancel()那么这个timer根本不工作....解决方法如下: 实现一个倒计时用自带的gcd如此简洁.. 原因可能是如果 ...

随机推荐

  1. Java String的简单介绍

    一.String类的构造方法(先粗略介绍三种 分别是s1,s2,s3) 二.String的常用判断方法 三.String类的常用获取方法 三.Sting的常用转换方法 四.String其他功能   五 ...

  2. canvas-5Bezier-QuadraticCurveTo.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 在线客服兼容谷歌Chrome、苹果Safari、Opera浏览器的修改

    纵览全网提供的众多号称兼容多浏览器的自动收缩在线客服,其实只兼容了IE和FF两种,当遇到谷歌Chrome.苹果Safari.Opera浏览器时鼠标还没点到客服按钮就会自动缩回,实用效果完全打折 以下代 ...

  4. Node.js+Koa开发微信公众号个人笔记(一)准备工作

    本人也是在学习过程中,所以文章只作为学习笔记,如果能帮到你,那就更好啦~当然也难免会有错误,请不吝指出~ 一.准备工作 1.本人学习教程:慕课网Scott老师的<Node.js七天搞定微信公众号 ...

  5. 【读书笔记】iOS-设计简单的Frenzic式益智游戏

    如果你决定用UIView动画或Core Animation,一定要编写一些测试用例,模拟游戏可能遇到的要求最高的动画,另外不要忘记播放声音.不要等到最后才增加声音,因为在iPhone上播放音乐和音效确 ...

  6. js 复制文本到粘贴板

    //html 在iOS Safari中,剪贴板API有一些限制(实际上是安全措施):   于安全原因,iOS Safari只允许容器中的document.execCommand('copy')文本co ...

  7. VUE 实现复制内容到剪贴板功能

    注: 依赖第三方插件 clipboard 一.安装插件 npm install vue-clipboard2 --save 二.全局注入(main.js) import VueClipboard fr ...

  8. IDEA项目搭建八——使用MybatisPlus简化数据库交互

    一.MybatisPlus简化数据库交互 我们使用Mybatis发现需要在mapper.xml中写很多重复的简单CRUD(增删改查),使用MybatisPlus可以大大简化这部分代码,官方文档http ...

  9. 搜狐eHR团队-曾经一起奋斗过的~

    昨天所有搜狐eHR团队同事再相聚(在职+离职),大家聊的都很开心,共同回顾了eHR项目从无到有的过程. 非常感谢在搜狐的工作经历,自己成长很多,目前大家分布在各个公司为eHR做着贡献,大家都注意身体~ ...

  10. Android 动态渐变按钮

    先上个图 看着特别炫酷吧 其实就是自定义颜色两秒轮播动画 AnimationDrawable animationDrawable = (AnimationDrawable) button.getBac ...