esp8266学习笔记④:timer模块

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42573320/article/details/86427985

Timer模块

tmr模块允许访问简单的定时器,系统计数器和正常运行时间。
它旨在建立定期发生的任务,超时操作,并提供低分辨率的增量。
然而,tmr模块不是一个计时模块。 虽然大多数超时以毫秒或甚至微秒表示,但准确性有限,并且复合错误将导致相当不准确的时间保持。 考虑将rtctime模块用于“挂钟”时间。
NodeMCU提供7个静态定时器,编号为0-6,以及动态定时器创建功能

tmr.delay()
功能:延迟 us 微秒
语法:tmr.delay(us)
参数:us: 延迟时间,单位:微秒
返回值:nil
示例:tmr.delay(100)——延时100us

tmr.time()
功能:以秒为单位返回系统正常运行时间。类型:uint31,单位:s
语法:tmr.time()
参数:nil
返回值:系统正常运行的时间

tmr.now()
功能:返回系统计数器的当前值,类型:uint31,单位:us
语法:tmr.now()
参数:nil
返回值:计数器的值
示例:print(tmr.now)——打印计数器的当前值

tmr.create()
功能:创建动态计时器对象。可以在控制功能中使用动态计时器代替数字ID。 也可以以面向对象的方式进行控制。
语法:
timer=tmr.creat()
timer对象所支持的函数有:
timer:alarm()
timer:interval()
timer:register()
timer:start()
timer:state()
timer:stop()
timer:unregister()
参数:nil
返回值:计时器对象

tmr.interval()
功能:更改已注册的定时器的到期时间间隔,即tmr.alarm()中的interval参数
语法:tmr.interval(id,interval_ms)
参数:
id: 定时器的 id,0~6
interval_ms:修改的定时时间,单位:毫秒,范围:0-6870947
返回值:nil

tmr.register()
功能:配置定时器并注册回调函数以在定时时间到期时调用。
语法:tmr.register(id,interval_ms,mode,function())
参数:
id: 定时器的 id,0~6.
Interval: 定时时间,单位:毫秒,范围:0-6870947
mode: 定时器的模式,0tmr.ALARM_SINGLE:一次性闹钟;1tmr.ALARM_AUTO:重复闹钟。
function (): 注册定时器的回调函数,注册的时候不会启动定时器。
返回值:nil
注:要在使用它时先调用tmr.unregister()取消其他的定时器的回调函数,释放系统资源。 对于一次性定时器tmr.ALARM_SINGLE,则不需要,除非它们在到期之前被停止。
示例:

t=tmr.creat()
t:register(0,1000,tmr.ALARM_AUTO,function()
 	print("hello world")
  end )	--设置为每秒打印一次
t:interval(0,10000)	--修改为每10秒打印一次
t:start()
--每10秒打印一次“hello world”

tmr.unregister()
功能:停止计时器(如果正在运行)且取消注册关联的回调。
语法:tmr.unregister(id)
参数:id: 定时器的 id,0~6
返回值:nil

tmr.alarm()
功能:闹钟函数相当于定时器。这是一个将tmr.register()tmr.start()组合成一个调用的便捷函数。
语法:tmr.alarm(id, interval,mode, function ())
参数:
id: 定时器的 id,0~6.
Interval: 定时时间,单位:毫秒,范围:0-6870947
mode: 定时器的模式,0tmr.ALARM_SINGLE:一次性定时;1tmr.ALARM_AUTO:重复定时。
function (): 定时器到时回调函数。
返回值:
如果计时器已启动,则为true,错误时为false

tmr.stop()
功能:停止定时功能。
语法:tmr.stop(id)
参数:
id: 定时器的 id,0~6.
返回值:nil

tmr.stat()
功能:启动或重新启动先前配置的计时器。
语法:tmr.start(id)
参数:
id: 定时器的 id,0~6.
返回值:
如果计时器已启动,则为true,错误时为false

示例:

tmr.alarm(0, 1000, 1, function()
 	print("hello world")
  end )
--每秒打印一个“hello world”
tmr.stop(0)
--停止打印
tmr.start(0)
--重新开始打印

tmr.wdclr()
功能:清除看门狗计数器。
语法:tmr.wdclr()
参数:nil
返回值:nil
一个长时间的循环或者事务,需内部调用 tmr.wdclr() 清除看门 狗计数器,防止重启。
示例:

for i=0,1000,1 do	
	print(i)
	tmr.wdclr()
end
展开阅读全文

没有更多推荐了,返回首页