|
|
@@ -1,429 +0,0 @@
|
|
|
-# RT-Thread MicroPython 基础模块
|
|
|
-
|
|
|
-### **Basis Module**
|
|
|
-
|
|
|
-下面是 micropython 的基本模块,运用这些模块,你可以使用 MicroPython 的基本功能。
|
|
|
-
|
|
|
-#### **rtthread** – 系统相关函数
|
|
|
-`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** – 时间相关函数
|
|
|
-`utime` 模块提供获取当前时间和日期、测量时间间隔和延迟的功能。
|
|
|
-
|
|
|
-更多内容可参考 [`time`](http://docs.micropython.org/en/latest/pyboard/library/utime.html#module-utime) 。
|
|
|
-
|
|
|
-`函数`
|
|
|
-
|
|
|
-- 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](http://docs.micropython.org/en/latest/pyboard/library/sys.html) 。
|
|
|
-
|
|
|
-`函数`
|
|
|
-
|
|
|
-- 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** – 数学函数
|
|
|
-`math` 模块提供了对 C 标准定义的数学函数的访问。
|
|
|
-
|
|
|
-**注意** : 需要带有硬件FPU,精度是32位,这个模块需要浮点功能支持。
|
|
|
-
|
|
|
-更多内容可参考 [math](https://docs.python.org/3.5/library/math.html?highlight=math#module-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` 模块包含流类型 (类似文件) 对象和帮助函数,
|
|
|
-更多内容可参考 [uio](http://docs.micropython.org/en/latest/pyboard/library/uio.html) 。
|
|
|
-
|
|
|
-`函数`
|
|
|
-
|
|
|
-- uio.open(name, mode='r', **kwargs)
|
|
|
-打开一个文件,关联到内建函数``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** – 收集和容器类型
|
|
|
-`ucollections` 模块实现了专门的容器数据类型,它提供了 Python 的通用内置容器的替代方案,包括了字典、列表、集合和元组。
|
|
|
-
|
|
|
-更多的内容可参考 [ucollections](http://docs.micropython.org/en/latest/pyboard/library/ucollections.html) 。
|
|
|
-
|
|
|
-`类`
|
|
|
-
|
|
|
-- ucollections.namedtuple(name, fields)
|
|
|
-这是工厂函数创建一个新的 namedtuple 型与一个特定的字段名称和集合。namedtuple 是元组允许子类要访问它的字段不仅是数字索引,而且还具有属性使用符号字段名访问语法。 字段是字符串序列指定字段名称。为了兼容的实现也可以用空间分隔的字符串命名的字段(但效率较低) 使用示例:
|
|
|
-
|
|
|
-```python
|
|
|
-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返回的顺序被加入:
|
|
|
-
|
|
|
-```python
|
|
|
-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** – 打包和解包原始数据类型
|
|
|
-
|
|
|
-`ustruct` 模块在 Python 值和以 Python 字节对象表示的 C 结构之间执行转换。
|
|
|
-
|
|
|
-更多的内容可参考 [struct](https://docs.python.org/3/library/struct.html) 。
|
|
|
-
|
|
|
-支持 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`` 模块定义了一个对象类型,它可以简洁地表示基本值的数组:字符、整数、浮点数。
|
|
|
-更多内容可参考 [array](https://docs.python.org/3/library/array.html) 。
|
|
|
-
|
|
|
-支持代码格式: 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](https://docs.python.org/3.5/library/gc.html#module-gc) 。
|
|
|
-
|
|
|
-`函数`
|
|
|
-
|
|
|
-- gc.enable()
|
|
|
-启动自动垃圾回收。
|
|
|
-
|
|
|
-- gc.disable()
|
|
|
-禁用自动垃圾回收。 堆内存仍然可以分配,垃圾回收仍然可以手动启动使用 gc.collect().
|
|
|
-
|
|
|
-- gc.collect()
|
|
|
-运行垃圾回收。
|
|
|
-
|
|
|
-- gc.mem_alloc()
|
|
|
-返回分配的堆RAM的字节数。
|
|
|
-
|
|
|
-- gc.mem_free()
|
|
|
-返回可用堆内存的字节数。
|
|
|
-
|
|
|
-----------
|