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. 如何把SVG小图片转换为 html字体图表

    自制作的简单字体图表使用案例:查看demo 制作步骤: 1:登录制作工具在线网站 https://icomoon.io/ 2:右上角红色 按钮进入到:https://icomoon.io/app/#/ ...

  2. 外边距塌陷 margin collapsing

    块的顶部外边距和底部外边距有时被组合(折叠)为单个外边距,其大小是组合到其中的最大外边距, 这种行为称为外边距塌陷(margin collapsing),有的地方翻译为外边距合并. 1.相邻的兄弟姐妹 ...

  3. jQuery动画切换引擎插件Velocity.js

    Velocity.js 官网 Velocity.js实现弹出式相框 慕课网 极棒的jquery动画切换引擎插件Velocity.js jQ库 (function($){ // 普通调用 /*$('#d ...

  4. css居中的方法

  5. win10系统彻底卸载Mysql

    本文介绍,在Windows10系统下,如何彻底删除卸载MySQL... 1>停止MySQL服务 开始->所有应用->Windows管理工具->服务,将MySQL服务停止. 2& ...

  6. CSS之 :before && :after的用法,伪类和伪元素的区别

    一::before && :after的用法 :before 如同对伪元素的名称一样,:before 是用来给指定的元素的内容前面插入新的内容.举例说明: .before:before ...

  7. SPOJ GSS3 (动态dp)

    题意 题目链接 Sol 这题可以动态dp做. 设\(f[i]\)表示以\(i\)为结尾的最大子段和,\(g[i]\)表示\(1-i\)的最大子段和 那么 \(f[i] = max(f[i - 1] + ...

  8. 【代码笔记】Web-HTML-标题

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  9. Vue Router滚动行为 scrollBehavior

    滚动行为 使用前端路由,当切换到新路由时,想要页面滚动到顶部或者是保持原先的滚动位置,就像重新加载页面那样. vue-router能做到,而且更好,它让你可以自定义路由切换时页面如何滚动. 注意:这个 ...

  10. 转载--tomcat调优

    转载  https://www.cnblogs.com/wangsen/p/9337969.html