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 - 串口

示例

  1. >>> import machine
  2. >>>
  3. >>> machine.info() # show information about the board
  4. ---------------------------------------------
  5. RT-Thread
  6. ---------------------------------------------
  7. total memory: 131048
  8. used memory : 4920
  9. maximum allocated memory: 5836
  10. thread pri status sp stack size max used left tick error
  11. ---------- --- ------- ---------- ---------- ------ ---------- ---
  12. elog_async 31 suspend 0x000000a8 0x00000400 26% 0x00000003 000
  13. tshell 20 ready 0x0000019c 0x00001000 39% 0x00000006 000
  14. tidle 31 ready 0x0000006c 0x00000100 50% 0x0000000b 000
  15. SysMonitor 30 suspend 0x000000a8 0x00000200 32% 0x00000005 000
  16. timer 4 suspend 0x0000007c 0x00000200 24% 0x00000009 000
  17. ---------------------------------------------
  18. qstr:
  19. n_pool=0
  20. n_qstr=0
  21. n_str_data_bytes=0
  22. n_total_bytes=0
  23. ---------------------------------------------
  24. GC:
  25. 16064 total
  26. 464 : 15600
  27. 1=14 2=6 m=3
  28. >>> machine.enable_irq() # enable interrupt
  29. >>> machine.disable_irq() # disable interrupt, WARNING: this operation is dangerous
  30. >>> machine.reset() # hard reset, like push RESET button

更多内容可参考 machine

评论

原文: https://www.rt-thread.org/document/site/submodules/micropython/docs/04-Hardware_Control_Module/01-machine/