pyb — 跟板子相关的函数

pyb 模块包括了跟板子相关的特定函数

pyb.delay(ms)

延迟 ms 毫秒(milliseconds)

pyb.udelay(us)

延迟 us 微秒(microseconds)

Delay for the given number of .

pyb.millis()

返回开发板最近一次重置至今的毫秒数.

返回的数据类型是smallint 31-bit

计数器超过2^30的时候(大概是12.4天), 开始返回负数(最高位为1, 代表负数)

如果调用pyb.stop()函数之后, 在睡眠期间(sleep) counter会停止计数, 会影响pyb.elapsed_millis() 的输出

pyb.micros()

返回开发板最近一次重置至今的微秒数.

返回的数据类型是smallint 31-bit

计数器超过2^30的时候(大概是17.8分钟), 开始返回负数(最高位为1, 代表负数)

如果调用pyb.stop()函数之后, 在睡眠期间(sleep) counter会停止计数, 会影响pyb.elapsed_millis() 的输出

pyb.elapsed_millis(start)

start是一个smallint类型的数值, 代表开始时的毫秒数, elapsed_millis返回的是, 自开始到现在, 过去的时间.

函数考虑到溢出的情况, 总是返回一个正数.

使用样例

start = pyb.millis()
# 如果过去的时间小于1000ms
while pyb.elapsed_millis(start) < 1000:
    # Perform some operation
    pass

pyb.elapsed_micros(start)

start是一个smallint类型的数值, 代表开始时的微秒数, elapsed_micros返回的是, 自开始到现在, 过去的时间.

函数考虑到溢出的情况, 总是返回一个正数.

使用样例

start = pyb.micros()
while pyb.elapsed_micros(start) < 1000:
    # Perform some operation
    pass

pyb.hard_reset()

硬重启

重置pyboard或者OpenMV Cam, 方式类似直接按开发板上的RESET按钮.

pyb.bootloader()

激活引导程序(bootloader), 无需操作BOOT引脚.

pyb.disable_irq()

禁用中断请求.

返回值为之前的IRQ状态, 返回值可以传入到enable_irq函数中, 实现重复执行开启/关闭中断.

pyb.enable_irq(state=True)

设置是否允许中断(state)

state = True 允许中断

state = False 禁止中断

最常见的用法是传入disable_irq 的返回值.

TODO 例程演示

pyb.freq([sysclk[, hclk[, pclk1[, pclk2]]]])

如果传入参数为空, 则返回一个clock频率tuple

(sysclk, hclk, pclk1, pclk2)

名称 含义 频率最大值(MHz)
sysclk CPU频率 168
hclk AHB总线频率, 核心内存和DMA 168
pclk1 APB1总线频率 42
pclk2 APB2总线频率 84

hclk 分频 支持的

如果有参数传入, 函数的功能就变为了设定时钟.

演示示例

pyb.freq(120000000) # 设置主频为120MHZ freq参数的单位为hz ,所以要加6个0

不是所有的参数都可以, 系统时钟(sysclk)的有效频率为

8, 16, 24, 30, 32, 36, 40, 42, 48, 54, 56, 60, 64, 72, 84, 96, 108, 120, 144, 168

168MHZ是最大的系统时钟频率, 不可以大于这个值. 其他最大值见上表.

hclk, pclk1, pclk2这三个是从主频通过分频器分出来的

时钟 分频器(prescaler)
hclk 1, 2, 4, 8, 16, 64, 128, 256, 512
pclk1 1, 2, 4, 8
pclk2 1, 2, 4, 8

频率 = sysclk / prescaler

分频器会自动选择跟当前主频匹配的值.

HSE: 高速外部晶体振荡器 (准确性高)

HSI: 高速内部晶体振荡器 (备用)

PLL: 锁相环, 控制倍频或者分频

如果主频为8MHZ的时候, 直接使用HSE, 如果主频为16MHZ的时候, 直接使用HSI.

更高的频率, 则需要使用HSE驱动PLL, 使用PLL的输出.

[注意] 连接USB的时候,如果要变更频率的时候, USB在此时可能会不可靠. 最好的方式是在USB开启之前在boot.py中修改频率, 连接USB时必须大于36MHZ.

pyb.wfi()

wfi代表wait for interrupt 等待中断 (内部中断 or 外部中断)

执行wfi指令可以降低MCU(单片机)的功耗, 直到任何中断(内部中断或外部中断)出现.

然后继续执行接下来的动作.

 Note that the system-tick interrupt occurs once every millisecond (1000Hz) so this function will block for at most 1ms.

pyb.stop()

浅度睡眠

将pyboard或者OpenMV Cam进入睡眠状态. 此函数可以将耗电量减少至小于500 uA.

唤醒此睡眠, 需要一个外部中断, 或者一个实时时钟事件(real-time-clock event).

唤醒后继续执行后面的函数

pyb.standby()

深度睡眠

将pyboard或者OpenMV Cam进入深度睡眠状态 此函数可以将耗电量减少至小于50uA.

RTC处理器与CPU分开, 使用RTC或者外部中断唤醒.

外部中断需要连接 X1 (PA0=WKUP) 或者 X18 (PC13=TAMP1)

唤醒之后, 硬件会进行硬复位.

杂项 - Miscellaneous functions

pyb.have_cdc()

查看USB是否被连接为一个串口设备.

[注意] 此函数已被废弃. 请使用 pyb.USB_VCP().isconnected()

pyb.hid((buttons, x, y, z))

输入参数为4元组(或列表)

将其指令发送到USB主机(PC)以发出HID鼠标移动事件。多用于飞鼠功能

[注意] 此函数已被废弃. 请使用 pyb.USB_HID().send(...)

 pyb.info([dump_alloc_table])

打印许多关于开发板的信息.

pyb.main(filename)

在boot.py中设定main脚本的文件名, 改脚本在boot.py运行结束之后运行.

如果这个函数没有被调用, 则main脚本默认为main.py

pyb.mount(device, mountpoint, *, readonly=False, mkfs=False)

TODO 翻译

挂载一个块设备(block device)作为存储设备

device must be an object that provides the block protocol:readblocks(self, blocknum, buf)writeblocks(self, blocknum, buf) (optional)count(self)sync(self) (optional)readblocks and writeblocks should copy data between buf and the block device, starting from block number blocknum on the device. buf will be a bytearray with length a multiple of 512. Ifwriteblocks is not defined then the device is mounted read-only. The return value of these two functions is ignored.count should return the number of blocks available on the device. sync, if implemented, should sync the data on the device.The parameter mountpoint is the location in the root of the filesystem to mount the device. It must begin with a forward-slash.If readonly is True, then the device is mounted read-only, otherwise it is mounted read-write.If mkfs is True, then a new filesystem is created if one does not already exist.To unmount a device, pass None as the device and the mount location as mountpoint.

pyb.repl_uart(uart)

设置或者获取REPL(交互式编程环境)对应的UART对象

pyb.rng()

硬件随机生成一个30位的数字.

pyb.sync()

同步所有文件系统

pyb.unique_id()

返回设备的唯一序列号(STM32的芯片ID)

12位 , 96bits

Classes

Copyright 杭州云江科技有限公司 2017 all right reserved,powered by Gitbook该文件修订时间: 2018-04-02 09:53:12

results matching ""

    No results matching ""