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. Matlab 如何输入矩阵

    A=[1 2 3;4 5 6;7 8 9],每行之间用分号隔开 也可以用循环控制输入 n=input('请输入矩阵阶数:') for i=1:n     for j=1:n         a(i,j ...

  2. Django Rest Framework之权限

    基本代码结构 url.py: from django.conf.urls import url, include from app import views urlpatterns = [ url(r ...

  3. 7种html5css3网页图片展示特效代码

    鼠标拖拽图片渐变透明切换特效 mobile手机左右滑动切换幻灯片 游戏透明提示图层幻灯片特效 可以编辑滚动条灯片颜色的scroll插件 几种文字动画显示插件代码 360度背景图片旋转的css3动画 左 ...

  4. 浏览器兼容性问题——IE不支持却很实用的CSS属性Outline和Child

    1. Outline(适用范围:鼠标悬浮hover加外边框) 我们在布局的时候,常常会因为添加边框border影响宽高的布局. 那么,outline是完美的替代品,因为它可以在不影响文档流的情况下呈现 ...

  5. CSS之Medial Queries的另一用法:实现IE hack的方法

    所谓Medial Queries就是媒体查询. 随着Responsive设计的流行,Medial Queries可算是越来越让人观注了.他可以让Web前端工程实现不同设备下的样式选择,让站点在不同的设 ...

  6. JavaScript原型与原型链,原型的实际应用

    原型链是js面向对象的基础,非常重要. 一,创建对象的几种方法: 1,字面量 var o1 = { name:'o1' }; 2,构造函数 var M = function(name){ this.n ...

  7. 能用HTML/CSS解决的问题,就不要用JS

    原因:简单. 简单就意味着更快的开发速度,更小的维护成本,同时往往具有更好的体验. 一,导航高亮 效果图: 代码: <!DOCTYPE html> <html lang=" ...

  8. 安卓开发_深入理解Content Provider

    一.Content Provider概述 Content Provider用于保存和获取数据,并使其对所有应用程序可见,这是不同应用程序之间共享数据的唯一方式,因为在Android中没有提供所有应用可 ...

  9. (后台)There is already 'jy.controller.jyadmin.JyDealerPackingReturnController' bean method

    项目报了一个错误,百度翻译了一下: “我已经有jy.controller.jyadmin.jydealerpackingreturncontroller豆方法公共org.springframework ...

  10. 手把手教你撸一个简易的 webpack

    背景 随着前端复杂度的不断提升,诞生出很多打包工具,比如最先的grunt,gulp.到后来的webpack和Parcel.但是目前很多脚手架工具,比如vue-cli已经帮我们集成了一些构建工具的使用. ...