ESP32 TIMER
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的更多相关文章
- C# - 计时器Timer
System.Timers.Timer 服务器计时器,允许指定在应用程序中引发事件的重复时间间隔. using System.Timers: // 在应用程序中生成定期事件 public class ...
- winform 用户控件、 动态创建添加控件、timer控件、控件联动
用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...
- 【WPF】 Timer与 dispatcherTimer 在wpf中你应该用哪个?
源:Roboby 1.timer或重复生成timer事件,dispatchertimer是集成到队列中的一个时钟.2.dispatchertimer更适合在wpf中访问UI线程上的元素 3.Dispa ...
- STM32F10xxx 之 System tick Timer(SYSTICK Timer)
背景 研究STM32F10xxx定时器的时候,无意间看到了System tick Timer,于是比较深入的了解下,在此做个记录. 正文 System tick Timer是Cotex-M内核的24位 ...
- 本地数据Store。Cookie,Session,Cache的理解。Timer类主要用于定时性、周期性任务 的触发。刷新Store,Panel
本地数据Store var monthStore = Ext.create('Ext.data.Store', { storeId : 'monthStore', autoLoad : false, ...
- WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日
好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...
- java Timer 定时每天凌晨1点执行任务
import java.util.TimerTask;/** * 执行内容 * @author admin_Hzw * */public class Task extends TimerTask { ...
- [C#].NET中几种Timer的使用
这篇博客将梳理一下.NET中4个Timer类,及其用法. 1. System.Threading.Timer public Timer(TimerCallback callback, object s ...
- 使用系统自带的GCD的timer倒计时模板语句遇到的小坑。。
今天折腾了下系统gcd的 但是如果不调用这句dispatch_source_cancel()那么这个timer根本不工作....解决方法如下: 实现一个倒计时用自带的gcd如此简洁.. 原因可能是如果 ...
随机推荐
- 解说css中的margin属性缩写方式
<html> <body> <div style="border: 1px solid red;"> <div style="b ...
- var声明变量
var操作符定义变量将成为定义该变量作用域的局部变量 举例说明: 例子1: function test(){ var message = "hi"; //message是函数内部局 ...
- node 链接mysql(自动链接)
Node.js与MySQL交互操作有很多库 felixge/node-mysql 常用 cnpm i mysql --save dev 1.打开mysql 必须要有,我这里面用的是wamp.可视化用的 ...
- mysql主从复制报错(一主一从):从库报错Last_SQL_Errno: 1008
配置完主从复制后(一主一从),在从库删了一个测试库,结果在从库上使用show slave status\G查看主从同步状态报如下错误:Last_Errno: 1008,经过排查得知:主从环境删除要先在 ...
- Loadrunner 脚本录制-通过代理录制脚本
脚本录制-通过代理录制脚本 by:授客 QQ:1033553122 版本:Loadruner 11.0 A.PC端录制Web应用程序 步骤1:根据实际情况,选择对应的协议 本例中选择Web(HTTP/ ...
- Oracle 使用SQL*Plus连接数据库
Oracle使用SQL*Plus连接数据库 by:授客 QQ:1033553122 使用sqlplus连接数据库 A 方式1 1.开启SQL*Plus,但不连接到数据库 $ sqlplus /NO ...
- Android View体系(三)属性动画
上一篇文章讲了View滑动的六种方法,其中一种是使用动画,这篇文章我们来讲一讲动画的其中一种:属性动画. 1.android视图动画和属性动画 视图动画我们都了解,它提供了AlphaAnimation ...
- 对JS作用域和作用域链的理解
理解好javascript的变量作用域和链式调用机制对用好变量起着关键的作用,下面我来谈谈这两个概念的理解. (1)链式调用机制 作用域链的定义:函数在调用参数时会从函数内部到函数外部逐个”搜索“参数 ...
- [20170927]hugepages与内核参数nr_overcommit_hugepages.txt
[20170927]hugepages与内核参数nr_overcommit_hugepages.txt /proc/sys/vm/nr_overcommit_hugepages specifies h ...
- Chrome及Chrome内核浏览器改变开发者工具字体大小
1.打开浏览器,按F12调用开发者工具 2.按Ctrl+数字加号键,可看到字体变大,按Ctrl+数字减号键,字体变小 3.重新启动浏览器后字体仍然保持修改后的字体大小