咸鱼Micropython— machine库

提供和硬件相关的函数

这个模块包含了和特定硬件相关的各种函数,它可以不受限制地直接访问系统的硬件功能(如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

有不对的地方欢迎指正

发布了166 篇原创文章 · 获赞 22 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45020839/article/details/102482582