咸鱼Micropython— machine库

本文介绍了Micropython的machine库,提供了与硬件相关的函数,包括复位、中断、功率管理和其它功能。详细解释了各类函数的作用,如复位系统、管理中断、调整CPU频率和进入低功耗模式,并列举了相关的类,如Pin、UART、I2C等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提供和硬件相关的函数

这个模块包含了和特定硬件相关的各种函数,它可以不受限制地直接访问系统的硬件功能(如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.IDLECPU时钟停止
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_WAKEWLAN
machine.PIN_WAKE引脚电平
machine.RTC_WAKERTC 超时
其它函数

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 pinsIO控制
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

有不对的地方欢迎指正

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼桨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值