pyb --- 与开发板相关的函数

警告

pyb 模块已弃用。 新代码请使用跨平台的 machine 模块——无论 MCU 系列如何,它在每一款 OpenMV Cam 上都能提供相同的功能,而 pyb 仅存在于基于 STM32 的开发板上。pyb 保留下来仅为了与旧脚本保持向后兼容,不会再添加新功能,并且可能在未来的版本中被移除。

pyb 模块包含与开发板相关的 STM32 专用函数。

杂项函数

pyb.have_cdc() bool

如果 USB 作为串行设备已连接,则返回 True,否则返回 False。

备注

此函数已弃用。请改用 pyb.USB_VCP().isconnected()。

pyb.hid(data: Tuple[int, int, int, int]) None

接受一个 4 元组(或列表)并将其发送给 USB 主机(PC),以发出 HID 鼠标移动事件信号。

备注

此函数已弃用。请改用 pyb.USB_HID.send()

pyb.info(dump_alloc_table: bool | None = None) None

打印出关于开发板的大量信息。

pyb.main(filename: str) None

设置在 boot.py 完成后要运行的主脚本的文件名。如果未调用此函数,则将执行默认文件 main.py

只有在 boot.py 内部调用此函数才有意义。

pyb.mount(device: Any, mountpoint: str, *, readonly: bool = False, mkfs: bool = False) None

备注

此函数已弃用。请改用 vfs.mount() / vfs.umount() 以及一个派生自 vfs.AbstractBlockDev 的块设备。

mountpoint 下挂载一个块设备。device 必须实现旧版 pyb 块设备协议(同样已弃用——现代接口请参阅 vfs.AbstractBlockDev):

方法

用途

readblocks(self, blocknum, buf)

从块 blocknum 开始,从设备复制 buf 大小的字节。buf 的长度是 512 的倍数。

writeblocks(self, blocknum, buf) (可选)

从块 blocknum 开始,将 buf 写入设备。如果省略,则设备以只读方式挂载。

count(self)

返回设备上 512 字节块的数量。

sync(self) (可选)

刷新所有缓存的写入。

mountpoint 是文件系统根目录中用于挂载设备的路径;它必须以正斜杠开头。readonly 强制以只读方式挂载。mkfs 在不存在文件系统时创建一个新的文件系统。

pyb.repl_uart(uart: UART | None = None) UART | None

获取或设置 REPL 在其上重复输出的 UART 对象。

pyb.rng() int

返回一个 30 位的硬件生成随机数。

pyb.sync() None

同步所有文件系统。

pyb.unique_id() bytes

返回一个 12 字节(96 位)的字符串,即 MCU 的唯一 ID。

pyb.usb_mode(modestr: str | None = None, port: int = -1, vid: int = 0xf055, pid: int = -1, msc: Tuple = (), hid: Tuple = pyb.hid_mouse, high_speed: bool = False) str | None

如果不带参数调用,则以字符串形式返回当前的 USB 模式。

如果调用时提供了 modestr,则尝试配置 USB 模式。可识别以下 modestr 值:

modestr

配置

None

禁用 USB。

'VCP'

仅 VCP(虚拟 COM 端口)。

'MSC'

仅 MSC(USB 大容量存储类)。

'VCP+MSC'

VCP 和 MSC。

'VCP+HID'

VCP 和 HID(人机接口设备)。

'VCP+MSC+HID'

VCP、MSC 和 HID 一起。并非所有 OpenMV Cam 都支持。

为了向后兼容,'CDC' 被理解为 'VCP'(对于 'CDC+MSC''CDC+HID' 也类似)。

port 参数应为整数(0、1……),用于在开发板支持多个 USB 端口时选择使用哪个端口。值为 -1 时使用默认或自动选择的端口。

vidpid 参数允许你指定 VID(厂商 ID)和 PID(产品 ID)。pid 值为 -1 时将根据 modestr 的值选择 PID。

如果启用 MSC 模式,可以使用 msc 参数指定要在大容量存储接口上公开的 SCSI LUN 列表。例如 msc=(pyb.Flash(), pyb.SDCard())

如果启用 HID 模式,你还可以通过传递 hid 关键字参数来指定 HID 详细信息。它接受一个 (子类, 协议, 最大数据包长度, 轮询间隔, 报告描述符) 的元组。默认情况下,它将为 USB 鼠标设置适当的值。还有一个 pyb.hid_keyboard 常量,它是适用于 USB 键盘的合适元组。

high_speed 参数设置为 True 时,如果硬件支持,则启用 USB HS 模式。

常量

下面的两个常量都是现成的 5 元组,形式为

(subclass, protocol, max_packet_size, polling_interval_ms, report_descriptor)

适合作为 usb_mode()hid 参数传入,使 OpenMV Cam 在主机看来是一个 USB HID 设备。subclass = 1 表示“启动接口(boot interface)”,protocol 选择启动设备类(1 = 键盘,2 = 鼠标)。第五个元素是一个 bytes 对象,保存主机枚举设备时使用的 HID 报告描述符。

pyb.hid_mouse: tuple

预构建的 HID 描述符,用于具有相对 X/Y 移动的 3 键启动鼠标。该元组为 (1, 2, 4, 8, <mouse report descriptor>):启动子类、鼠标协议、4 字节输入报告(按键掩码 + X + Y + 滚轮)、每 8 ms 轮询一次。内置的报告描述符即 pyb.USB_HID().send((buttons, dx, dy, wheel)) 所使用的那个。

pyb.hid_keyboard: tuple

预构建的 HID 描述符,用于 USB 启动键盘。该元组为 (1, 1, 8, 8, <keyboard report descriptor>):启动子类、键盘协议、8 字节输入报告(修饰键字节、一个保留字节、六个并发按键代码)、每 8 ms 轮询一次。内置的报告描述符与标准的 8 字节 HID 启动键盘布局匹配,因此通过 USB_HID.send() 发送的报告应为形式如 (modifiers, 0, key1, key2, key3, key4, key5, key6)bytes