提供和硬件相关的函数
这个模块包含了和特定硬件相关的各种函数,它可以不受限制地直接访问系统的硬件功能(如CPU、定时器、总线等)。如果使用不当,会导致系统故障、死机、崩溃,甚至造成硬件损坏。 (BOOM)
使用回调函数时需要注意,所有的回调函数都将在中断里面运行,包括真实设备(ID大于0)和虚拟设备(ID是-1)。更多内容请参考编 写中断处理程序部分。
复位相关函数
函数 | 说明 |
---|---|
machine.reset() |
此函数功能是复位系统,就像按下了复位键一样。注意当使用 USB_VCP作为REPL时,执行此函数会丢失USB连接 |
machine.reset_cause() |
获取复位的原因 |
复位相关常量
复位原因 | 说明 |
---|---|
machine.PWRON_RESET | 电源复位 |
machine.HARD_RESET | 硬重置(断电) |
machine.WDT_RESET | 看门狗复位 |
machine.DEEPSLEEP_RESET | 深度睡眠 |
machine.SOFT_RESET | 软复位 |
中断相关函数
函数 | 说明 |
---|---|
machine.disable_irq() |
禁止中断。返回值是调用函数前的IRQ状态,它可以作为 enable_irq()函数的参数,用来恢复以前的中断状态。 |
machine.enable_irq(state) |
允许(恢复)中断。state参数应该由上次调用disable_irq()函数 获取。 |
中断唤醒常量
中断唤醒值 | 说明 |
---|---|
machine.IDLE | CPU时钟停止 |
machine.SLEEP | 休眠 |
machine.DEEPSLEEP | 深度休眠 |
功率管理函数
函数 | 说明 |
---|---|
machine.freq() |
返回 CPU 频率(Hz)。 |
machine.idle() |
停止 CPU 的时钟,减少系统功耗。外设继续工作,发生任意中断后恢复运行 (大部分版本中,包括了系统定时器中断)。 |
machine.sleep() |
停止CPU并禁用除了WLAN(如果存在)之外的全部外设。 |
machine.deepsleep() |
停止 CPU 和所有外设 (包括网络)。唤醒后从main开始运行,就像复位一样,可以通过 reset_cause 查看从什么地方运行。 |
注解:
不推荐使用
.sleep()
,请使用.lightsleep ()
代替没有参数的函数
在尝试进入低功耗状态时停止执行,如果指定时间 ms,那么这将是以毫秒为单位的睡眠持续时间的最大值。
不管有没有延时,如果有需要处理的事件,执行都可以随时恢复。 这些事件或唤醒源应该在睡眠之前进行配置,比如 pin change 或 rtc timeout。
lightsleep 和 deepsleep 的精确行为和节能能力高度依赖于底层硬件,一般特性是:
- lightsleep 具有完整的内存和状态保持。 在唤醒执行时,从请求休眠的地方恢复,所有子系统操作。
- deepsleep深度睡眠可能不保留内存或系统的任何其他状态(例如外围设备或网络接口)。 在唤醒执行是恢复从主脚本,类似于硬或电源重置。函数
reset cause ()
将返回machine.deepsleep
,这可用于区分 deepsleep 唤醒和其他重置。
唤醒常量
唤醒原因 | 说明 |
---|---|
machine.WLAN_WAKE | WLAN |
machine.PIN_WAKE | 引脚电平 |
machine.RTC_WAKE | RTC 超时 |
其它函数
machine.unique_id()
获取 board/SoC 的唯一序列号。如果底层硬件允许这个功能,每个板的 ID 都是不同的,ID 的长度由硬件决定 (如果希望使用较短的 id,可使用完整值的子字符串)。在一些微 python 端口中,使用网络 MAC 地址代表 ID。
例如:我用的pyboard。有的朋友们可以试试(K210的我也试了)
#pyboard显示
machine.unique_id()
b'L\x00@\x00\x05PMMN97 '
#下面的图是K210的
machine.time_pulse_us(pin, pulse_level, timeout_us=1000000)
在指定引脚上输出脉冲, 返回脉冲持续时间(微秒)。 脉冲电平参数应该是0到时间低脉冲或1到时间高脉冲。
如果引脚上的电平和 pulse_level 不同,将先等待电平相同后再开始测量,否则将立即开始测量脉冲时间。函数在等待时间超时后会引发ETIMEDOUT 异常。
如果等待电平相同过程中超时,函数将返回-2;如果测量脉冲超 时,将返回-1。两种情况的超时时间都通过timeout_us参数设置。
相关类
这里介绍machine模块中包含的一些类及使用方法。有些功能和pyb模块类似,但是并不完全相同
类 | 说明 |
---|---|
class Pin – control I/O pins | IO控制 |
class UART – duplex serial communication bus | 双工串行通信总线 |
class I2C – a two-wire serial protocol | 两线串行协议 |
class RTC – real time clock | 实时时钟 |
class Timer – control hardware timers | 控制硬件定时器 |
class WDT – watchdog timer | 看门狗定时器 |
class SPI – a Serial Peripheral Interface bus protocol (master side) | 串口外接设备总线(SPI,主设备端) |
class SD – secure digital memory card (cc3200 port only) | 只有 cc3200端口的储存卡 |
class SDCard – secure digital memory card | 安全数字存储卡 |
参考资料:
micropython.org:docs.micropython.org/en
有不对的地方欢迎指正