utime.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. """
  2. utime 模块提供获取当前时间和日期、测量时间间隔和延迟的功能。
  3. """
  4. from typing import Any, Dict, List, Optional, Sequence, Tuple, Union
  5. def localtime(secs : int) -> Tuple:
  6. return Tuple
  7. """
  8. 从初始时间的秒转换为元组: (年, 月, 日, 时, 分, 秒, 星期, yearday) 。如果 secs 是空或者 None,那么使用当前时间。
  9. year 年份包括世纪(例如2014)。
  10. - month 范围 1-12
  11. - day 范围 1-31
  12. - hour 范围 0-23
  13. - minute 范围 0-59
  14. - second 范围 0-59
  15. - weekday 范围 0-6 对应周一到周日
  16. - yearday 范围 1-366
  17. """
  18. ...
  19. def mktime(time : tuple) -> int:
  20. return time
  21. """时间的反函数,它的参数是完整8参数的元组,返回值一个整数自2000年1月1日以来的秒数。"""
  22. ...
  23. def sleep(seconds) -> None:
  24. """休眠指定的时间(秒),Seconds 可以是浮点数。注意有些版本的 MicroPython不支持浮点数,为了兼容可以使用 sleep_ms() 和 sleep_us()函数。"""
  25. ...
  26. def sleep_ms(ms) -> None:
  27. """延时指定毫秒,参数不能小于0。"""
  28. ...
  29. def sleep_us(us) -> None:
  30. """延时指定微秒,参数不能小于0。"""
  31. ...
  32. def ticks_ms() -> int:
  33. return time
  34. """
  35. 返回不断递增的毫秒计数器,在某些值后会重新计数(未指定)。
  36. 计数值本身无特定意义,只适合用在ticks_diff()。
  37. 注: 直接在这些值上执行标准数学运算(+,-)或关系运算符(<,>,>,> =)会导致无效结果。
  38. 执行数学运算然后传递结果作为参数给ticks_diff() 或 ticks_add() 也将导致函数产生无效结果。
  39. """
  40. ...
  41. def ticks_us() -> int:
  42. return time
  43. """
  44. 返回不断递增的微秒计数器,在某些值后会重新计数(未指定)。
  45. 计数值本身无特定意义,只适合用在ticks_diff()。
  46. 注: 直接在这些值上执行标准数学运算(+,-)或关系运算符(<,>,>,> =)会导致无效结果。
  47. 执行数学运算然后传递结果作为参数给ticks_diff() 或 ticks_add() 也将导致函数产生无效结果。
  48. """
  49. ...
  50. def ticks_cpu() -> None:
  51. """与 ticks_ms() 和 ticks_us() 类似,具有更高精度 (使用 CPU 时钟),并非每个端口都实现此功能。"""
  52. ...
  53. def ticks_add(ticks, delta) -> int:
  54. return time
  55. """
  56. 给定一个数字作为节拍的偏移值 delta,这个数字的值是正数或者负数都可以。
  57. 给定一个 ticks 节拍值,本函数允许根据节拍值的模算数定义来计算给定节拍值之前或者之后 delta 个节拍的节拍值 。
  58. ticks 参数必须是 ticks_ms(), ticks_us(), or ticks_cpu() 函数的直接返回值。
  59. 然而,delta 可以是一个任意整数或者是数字表达式。ticks_add 函数对计算事件/任务的截至时间很有用。
  60. (注意:必须使用 ticksdiff() 函数来处理 最后期限)。
  61. """
  62. ...
  63. def ticks_diff(ticks1, ticks2) -> int :
  64. return time
  65. """
  66. 计算两次调用 ticksms(), ticks_us(), 或 ticks_cpu()之间的时间。
  67. 因为这些函数的计数值可能会回绕,所以不能直接相减,需要使用 ticks_diff() 函数。
  68. “旧” 时间需要在 “新” 时间之前,否则结果无法确定。
  69. 这个函数不要用在计算很长的时间 (因为 ticks*() 函数会回绕,通常周期不是很长)。
  70. 通常用法是在带超时的轮询事件中调用:
  71. 代码示例:
  72. # 等待 GPIO 引脚有效,但是最多等待500微秒
  73. - start = time.ticks_us()
  74. - while pin.value() == 0:
  75. - if time.ticks_diff(time.ticks_us(), start) > 500:
  76. - raise TimeoutError
  77. """
  78. ...
  79. def time() -> int:
  80. return time
  81. """
  82. 返回从开始时间的秒数(整数),假设 RTC 已经按照前面方法设置好。
  83. 如果 RTC 没有设置,函数将返回参考点开始计算的秒数 (对于 RTC 没有后备电池的板子,上电或复位后的情况)。
  84. 如果你开发便携版的 MicroPython 应用程序,你不要依赖函数来提供超过秒级的精度。
  85. 如果需要高精度,使用 ticks_ms() 和 ticks_us() 函数。
  86. 如果需要日历时间,使用不带参数的 localtime() 是更好选择。"""
  87. ...