esp — 与ESP8266和ESP32相关的函数

esp 模块包含与ESP8266和ESP32模块相关的特地函数。有些函数只能在其中一个或另一个上使用这些接口。

函数

esp.sleep_type([sleep_type])

Note: ESP8266 only

获取或设置睡眠类型。

若给定 sleep_type 参数,则将睡眠类型设置为其值。若调用函数未给定参数,则返回当前的睡眠类型。

可用的睡眠类型被定义为常量:

  • SLEEP_NONE – 所有函数启用

  • SLEEP_MODEM – 调制解调器睡眠,关闭WiFi调制解调器电路

  • SLEEP_LIGHT – 轻度睡眠,关闭WiFi调制解调器电路,并定期暂停处理器。

条件允许时,系统会自动进入设定的睡眠模式。

esp.deepsleep(time=0)

Note: ESP8266 only - 在ESP32上使用 machine.deepsleep()

进入深度睡眠。

除RTC时钟电路外的整个模块断电。指定时间后,若引脚16与重置引脚相连接,RTC时钟电路可用于重启模块。 否则该模块将始终处于睡眠状态,直至手动重启。

esp.flash_id()

Note: ESP8266 only

读取闪存的设备ID。

esp.flash_size()

读取闪存的总大小。

esp.flash_user_start()

读取用户闪存空间开始的内存偏移量。

esp.flash_read(byte_offset, length_or_buffer)
esp.flash_write(byte_offset, bytes)
esp.flash_erase(sector_no)
esp.set_native_code_location(start, length)

Note: ESP8266 only

设置本机代码在编译后将被放置执行的位置。当将 @micropython.native@micropython.viper@micropython.asm_xtensa 修饰符应用于函数时,将发出本机代码。 ESP8266必须从iRAM或较低的1MByte闪存(已映射到存储器)中执行代码,此功能控制位置。

如果 startlength 都是 None ,那么将本机代码位置设置为iRAM1区域末尾的内存未使用部分。 这个未使用部分的大小取决于固件,通常是相当小(大约500 bytes),足以存储一些非常小的函数。 使用这个iRAM1区域的优点是它不会因为写入而被磨损。

如果 startlength 都不是``None``,那么它们应该是整数。 start 应该指定从flash开始的字节偏移量,本机代码应该存储在这个位置。 length 指定从 start 开始可以使用多少个flash bytes来存储本地代码。 startlength 应该是扇区大小的倍数(为4096 bytes)。 在写入闪存之前,闪存将被自动擦除,因此请确保使用闪存中没有其他用途的区域,例如固件或文件系统。

使用flash存储本机代码时 start+length 必须小于或等于1MByte。 注意,如果反复擦除(和写),flash可能会被磨损,所以要谨慎使用这个功能。 特别是,本地代码需要在每次启动时重新编译和重写到flash中(包括从深度睡眠中唤醒)。

在上述两种情况下,使用iRAM1或flash,如果在指定的区域没有更多的空间,那么在函数上 使用本机装饰器将导致在编译该函数期间引发`MemoryError`异常。