machine – 与硬件相关的功能
简介
machine 模块包含与特定开发板上的硬件相关的特定函数。 在这个模块中的大多数功能允许实现直接和不受限制地访问和控制系统上的硬件块(如CPU,定时器,总线等)。如果使用不当,会导致故障,死机,崩溃,在极端的情况下,硬件会损坏。
函数
复位相关函数
machine.info()
显示关于系统介绍和内存占用等信息。
machine.rest()
重启设备,类似于按下复位按钮。
machine.reset_cause()
获得复位的原因,查看可能的返回值的常量。
中断相关函数
machine.disable_irq()
禁用中断请求。返回先前的 IRQ
状态,该状态应该被认为是一个未知的值。这个返回值应该在 disable_irq
函数被调用之前被传给 enable_irq
函数来重置中断到初始状态。
machine.enable_irq(state)
重新使能中断请求。状态参数应该是从最近一次禁用功能的调用中返回的值。
功耗相关函数
machine.freq()
返回 CPU
的运行频率。
machine.idle()
阻断给 CPU
的时钟信号,在较短或者较长的周期里减少功耗。当中断发生时,外设将继续工作。
machine.sleep()
停止 CPU
并禁止除了 WLAN
之外的所有外设。系统会从睡眠请求的地方重新恢复工作。为了确保唤醒一定会发生,应当首先配置中断源。
machine.deepsleep()
停止 CPU
和所有外设(包括网络接口)。执行从主函数中恢复,就像被复位一样。复位的原因可以检查 machine.DEEPSLEEP
参数获得。为了确保唤醒一定会发生,应该首先配置中断源,比如一个引脚的变换或者 RTC
的超时。
常数
machine.IDLE
machine.SLEEP
machine.DEEPSLEEP
IRQ
的唤醒值。
machine.PWRON_RESET
machine.HARD_RESET
machine.WDT_RESET
machine.DEEPSLEEP_RESET
machine.SOFT_RESET
复位的原因。
machine.WLAN_WAKE
machine.PIN_WAKE
machine.RTC_WAKE
唤醒的原因。
类
class Pin - 控制 I/O 引脚
class I2C - I2C 协议
class SPI - SPI 协议
class UART - 串口
示例
- >>> import machine
- >>>
- >>> machine.info() # show information about the board
- ---------------------------------------------
- RT-Thread
- ---------------------------------------------
- total memory: 131048
- used memory : 4920
- maximum allocated memory: 5836
- thread pri status sp stack size max used left tick error
- ---------- --- ------- ---------- ---------- ------ ---------- ---
- elog_async 31 suspend 0x000000a8 0x00000400 26% 0x00000003 000
- tshell 20 ready 0x0000019c 0x00001000 39% 0x00000006 000
- tidle 31 ready 0x0000006c 0x00000100 50% 0x0000000b 000
- SysMonitor 30 suspend 0x000000a8 0x00000200 32% 0x00000005 000
- timer 4 suspend 0x0000007c 0x00000200 24% 0x00000009 000
- ---------------------------------------------
- qstr:
- n_pool=0
- n_qstr=0
- n_str_data_bytes=0
- n_total_bytes=0
- ---------------------------------------------
- GC:
- 16064 total
- 464 : 15600
- 1=14 2=6 m=3
- >>> machine.enable_irq() # enable interrupt
- >>> machine.disable_irq() # disable interrupt, WARNING: this operation is dangerous
- >>> machine.reset() # hard reset, like push RESET button
更多内容可参考 machine 。