时间

utime 模块提供获取当前时间和日期、测量时间间隔和延迟的函数。

笔记

utime模块是标准 Python time 模块的 MicroPython 实现 。它可以同时使用和 导入,但模块是相同的。 import utime import time

职能

utime.sleep(seconds)

睡眠给定的秒数。您可以使用浮点数休眠小数秒,或使用 utime.sleep_ms()utime.sleep_us() 函数。

utime.sleep_ms(ms)

给定毫秒数的延迟,应为正数或 0。

utime.sleep_us(us)

给定微秒数的延迟,应为正数或 0。

utime.ticks_ms()

返回带有任意参考点的递增毫秒计数器,该计数器在某个值之后环绕。

utime.ticks_us()

就像 utime.ticks_ms()上面一样,但以微秒为单位。

utime.ticks_add(ticks, delta)

按给定数字偏移刻度值,可以是正数也可以是负数。给定一个刻度值,此函数允许根据刻度值的模算术定义计算它之前或之后的刻度值增量刻度。

例子:

# Find out what ticks value there was 100ms ago
print(ticks_add(time.ticks_ms(), -100))

# Calculate deadline for operation and test for it
deadline = ticks_add(time.ticks_ms(), 200)
while ticks_diff(deadline, time.ticks_ms()) > 0:
    do_a_little_of_something()

# Find out TICKS_MAX used by this port
print(ticks_add(0, -1))
utime.ticks_diff(ticks1, ticks2)

测量从utime.ticks_ms()ticks_us() 函数返回的值之间的刻度差异 ,作为可能环绕的带符号值。

参数顺序与减法运算符相同,与 具有相同的含义。ticks_diff(ticks1, ticks2) ticks1 - ticks2.

utime.ticks_diff()旨在适应各种使用模式,其中包括:

轮询超时。在这种情况下,事件的顺序是已知的,您将只处理以下的积极结果 utime.ticks_diff():

# Wait for GPIO pin to be asserted, but at most 500us
start = time.ticks_us()
while pin.value() == 0:
    if time.ticks_diff(time.ticks_us(), start) > 500:
        raise TimeoutError

安排活动。在这种情况下,utime.ticks_diff()如果事件逾期,结果可能为负:

# This code snippet is not optimized
now = time.ticks_ms()
scheduled_time = task.scheduled_time()
if ticks_diff(scheduled_time, now) > 0:
    print("Too early, let's nap")
    sleep_ms(ticks_diff(scheduled_time, now))
    task.run()
elif ticks_diff(scheduled_time, now) == 0:
    print("Right at time!")
    task.run()
elif ticks_diff(scheduled_time, now) < 0:
    print("Oops, running late, tell task to run faster!")
    task.run(run_faster=true)