下面是 micropython 的基本模块,运用这些模块,你可以使用 MicroPython 的基本功能。
rtthread 模块提供了与 rt-thread 操作系统相关的功能,如查看栈使用情况等。
rtthread.current_tid() 返回当前线程的 id 。
rtthread.is_preempt_thread() 返回是否是可抢占线程。
rtthread.stacks_analyze() 返回当前系统线程和栈使用信息。
example:
>>> import rtthread
>>>
>>> rtthread.is_preempt_thread() # determine if code is running in a preemptible thread
True
>>> rtthread.current_tid() # current thread id
268464956
>>> rtthread.stacks_analyze() # show thread information
thread pri status sp stack size max used left tick error
---------- --- ------- ---------- ---------- ------ ---------- ---
elog_async 31 suspend 0x000000a8 0x00000400 26% 0x00000003 000
tshell 20 ready 0x00000260 0x00001000 39% 0x00000003 000
tidle 31 ready 0x00000070 0x00000100 51% 0x0000000f 000
SysMonitor 30 suspend 0x000000a4 0x00000200 32% 0x00000005 000
timer 4 suspend 0x00000080 0x00000200 25% 0x00000009 000
>>>
utime 模块提供获取当前时间和日期、测量时间间隔和延迟的功能。
更多内容可参考 time 。
函数
utime.sleep(seconds)
休眠指定的时间(秒),Seconds 可以是浮点数。注意有些版本的 MicroPython不支持浮点数,为了兼容可以使用 sleep_ms() 和 sleep_us()函数。
utime.sleep_ms(ms) 延时指定毫秒,参数不能小于0。
utime.sleep_us(us) 延时指定微秒,参数不能小于0。
utime.ticks_ms()
返回不断递增的毫秒计数器,在某些值后会重新计数(未指定)。计数值本身无特定意义,只适合用在ticks_diff()。
注:执行标准数学运算(+,-)或关系运算符(<,>,>,> =)直接在这些值上会导致无效结果。执行数学运算然后传递结果作为论据来ticks_diff() 或 ticks_add() 也将导致后一个函数的无效结果。
utime.ticks_us() 和上面 ticks_ms() 类似,只是返回微秒。
utime.ticks_cpu() 与 ticks_ms() 和 ticks_us() 类似,具有更高精度 (使用 CPU 时钟)。
可用性:并非每个端口都实现此功能。
example:
>>> import time
>>>
>>> time.sleep(1) # sleep for 1 second
>>> time.sleep_ms(500) # sleep for 500 milliseconds
>>> time.sleep_us(10) # sleep for 10 microseconds
>>> start = time.ticks_ms() # get value of millisecond counter
>>> delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
sys 模块提供系统相关的功能。
更多内容可参考 sys 。
函数
sys.exit(retval=0) 终止当前程序给定的退出代码。 函数会抛出 SystemExit 异常。
sys.print_exception(exc, file=sys.stdout) 打印异常与追踪到一个类似文件的对象 file (或者缺省 sys.stdout ).
常数
sys.argv 当前程序启动时参数的可变列表。
sys.byteorder 系统字节顺序 (“little” or “big”).
sys.implementation 使用当前Python实现的。对于micropython,它具有以下属性:
sys.modules 加载模块字典。在一部分环境中它可能不包含内置模块。
sys.path 搜索导入模块的可变目录列表。
sys.platform 返回当前操作系统信息。
sys.stderr 标准错误流。
sys.stdin 标准输入流。
sys.stdout 标准输出流。
sys.version 符合的Python语言版本,如字符串。
sys.version_info Python 语言版本,实现符合,作为一个元组的值。
example:
>>> import uos
>>> uos. # Tab
__name__ uname chdir getcwd
listdir mkdir remove rmdir
stat unlink mount umount
>>> uos.mkdir("rtthread")
>>> uos.getcwd()
'/'
>>> uos.chdir("rtthread")
>>> uos.getcwd()
'/rtthread'
>>> uos.listdir()
['web_root', 'rtthread', '11']
>>> uos.rmdir("11")
>>> uos.listdir()
['web_root', 'rtthread']
>>>
math 模块提供了对 C 标准定义的数学函数的访问。
注意 : 需要带有硬件FPU,精度是32位,这个模块需要浮点功能支持。
更多内容可参考 math 。
函数
math.acos(x)
返回 x 的反余弦。
math.acosh(x)
返回 x 的逆双曲余弦。
math.asin(x)
返回 x 的反正弦。
math.asinh(x)
返回x 的逆双曲正弦。
math.atan(x)
返回 x 的逆切线。
math.atan2(y, x) Return the principal value of the inverse tangent of y/x.
math.atanh(x) Return the inverse hyperbolic tangent of x.
math.ceil(x) Return an integer, being x rounded towards positive infinity.
math.copysign(x, y) Return x with the sign of y.
math.cos(x) Return the cosine of x.
math.cosh(x) Return the hyperbolic cosine of x.
math.degrees(x) Return radians x converted to degrees.
math.erf(x) Return the error function of x.
math.erfc(x) Return the complementary error function of x.
math.exp(x) Return the exponential of x.
math.expm1(x) Return exp(x) - 1.
math.fabs(x) Return the absolute value of x.
math.floor(x) Return an integer, being x rounded towards negative infinity.
math.fmod(x, y) Return the remainder of x/y.
math.frexp(x) Decomposes a floating-point number into its mantissa and exponent. The returned value is the tuple (m, e) such that x == m * 2**e exactly. If x == 0 then the function returns (0.0, 0), otherwise the relation 0.5 <= abs(m) < 1 holds.
math.gamma(x) Return the gamma function of x.
math.isfinite(x) Return True if x is finite.
math.isinf(x) Return True if x is infinite.
math.isnan(x) Return True if x is not-a-number
math.ldexp(x, exp) Return x * (2**exp).
math.lgamma(x) Return the natural logarithm of the gamma function of x.
math.log(x) Return the natural logarithm of x.
math.log10(x) Return the base-10 logarithm of x.
math.log2(x) Return the base-2 logarithm of x.
math.modf(x) Return a tuple of two floats, being the fractional and integral parts of x. Both return values have the same sign as x.
math.pow(x, y) Returns x to the power of y.
math.radians(x) Return degrees x converted to radians.
math.sin(x) Return the sine of x.
math.sinh(x) Return the hyperbolic sine of x.
math.sqrt(x) Return the square root of x.
math.tan(x) Return the tangent of x.
math.tanh(x) Return the hyperbolic tangent of x.
math.trunc(x) 返回一个整数, x 接近于0。
常数
math.e 自然对数的底
math.pi 圆周率
uio 模块包含流类型 (类似文件) 对象和帮助函数,
更多内容可参考 uio 。
函数
open()。所有端口 (用于访问文件系统) 需要支持模式参数,但支持其他参数不同的端口。类
class uio.FileIO(...)
这个文件类型用二进制方式打开文件,等于使用open(name, “rb”)。 不应直接使用这个实例。
class uio.TextIOWrapper(...)
这个类型以文本方式打开文件,等同于使用open(name, “rt”)不应直接使用这个实例。
class uio.StringIO([string])
class uio.BytesIO([string]) 内存文件对象。StringIO 用于文本模式 I/O (用 “t” 打开文件),BytesIO 用于二进制方式 (用 “b” 方式)。文件对象的初始内容可以用字符串参数指定(stringio用普通字符串,bytesio用byets对象)。所有的文件方法,如 read(), write(), seek(), flush(), close() 都可以用在这些对象上,包括下面方法:
getvalue() 获取缓存区内容。
ucollections 模块实现了专门的容器数据类型,它提供了 Python 的通用内置容器的替代方案,包括了字典、列表、集合和元组。
更多的内容可参考 ucollections 。
类
ucollections.namedtuple(name, fields) 这是工厂函数创建一个新的 namedtuple 型与一个特定的字段名称和集合。namedtuple 是元组允许子类要访问它的字段不仅是数字索引,而且还具有属性使用符号字段名访问语法。 字段是字符串序列指定字段名称。为了兼容的实现也可以用空间分隔的字符串命名的字段(但效率较低) 使用示例:
from ucollections import namedtuple
MyTuple = namedtuple("MyTuple", ("id", "name"))
t1 = MyTuple(1, "foo")
t2 = MyTuple(2, "bar")
print(t1.name)
assert t2.name == t2[1]
ucollections.OrderedDict(...)
dict 类型的子类,记住并保留键的追加顺序。keys/items返回的顺序被加入:
from ucollections import OrderedDict
# To make benefit of ordered keys, OrderedDict should be initialized
# from sequence of (key, value) pairs.
d = OrderedDict([("z", 1), ("a", 2)])
# More items can be added as usual
d["w"] = 5
d["b"] = 3
for k, v in d.items():
print(k, v)
输出:
z 1 a 2 w 5 b 3
ustruct 模块在 Python 值和以 Python 字节对象表示的 C 结构之间执行转换。
更多的内容可参考 struct 。
支持 size/byte 的前缀: @, <, >, !. 支持的格式代码: b, B, h, H, i, I, l, L, q, Q, s, P, f, d (最后2个需要浮点库支持).
函数
ustruct.calcsize(fmt)
返回需要的字节数fmt。
ustruct.pack(fmt, v1, v2, ...)
按照字符串格式fmt 压缩参数 v1, v2, ... 。 返回值是参数编码后的字节对象。
ustruct.pack_into(fmt, buffer, offset, v1, v2, ...)
按照字符串格式fmt 压缩参数 v1, v2, ... 到缓冲区buffer,开始位置是offset。offset可以是负数,从缓冲区末尾开始计数。
ustruct.unpack(fmt, data)
按照字符串格式fmt解压数据data。 返回值是解压后参数的元组。
ustruct.unpack_from(fmt, data, offset=0) 从 fmt 的 offset 开始解压数据,如果 offset 是负数就是从缓冲区末尾开始计算。 返回值是解压后参数元组。
array 模块定义了一个对象类型,它可以简洁地表示基本值的数组:字符、整数、浮点数。
更多内容可参考 array 。
支持代码格式: b, B, h, H, i, I, l, L, q, Q, f, d (后2个支持浮点数)。
类
class array.array(typecode[, iterable]) 指定类型创建数组元素。用可选项[]做为数组的初始值,可选项[]未指定的,则创建空数组。
append(val) 将新元素添加到数组的结尾,并将其扩展。
extend(iterable) 使用迭代方式将新元素添加到数组的结尾,并将其扩展。
gc 模块提供了垃圾收集器的控制接口。
更多内容可参考 gc 。
函数
gc.enable() 启动自动垃圾回收。
gc.disable() 禁用自动垃圾回收。 堆内存仍然可以分配,垃圾回收仍然可以手动启动使用 gc.collect().
gc.collect() 运行垃圾回收。
gc.mem_alloc() 返回分配的堆RAM的字节数。
gc.mem_free() 返回可用堆内存的字节数。