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闪存(已映射到存储器)中执行代码,此功能控制位置。如果 start 和 length 都是
None
,那么将本机代码位置设置为iRAM1区域末尾的内存未使用部分。 这个未使用部分的大小取决于固件,通常是相当小(大约500 bytes),足以存储一些非常小的函数。 使用这个iRAM1区域的优点是它不会因为写入而被磨损。如果 start 和 length 都不是``None``,那么它们应该是整数。 start 应该指定从flash开始的字节偏移量,本机代码应该存储在这个位置。 length 指定从 start 开始可以使用多少个flash bytes来存储本地代码。 start 和 length 应该是扇区大小的倍数(为4096 bytes)。 在写入闪存之前,闪存将被自动擦除,因此请确保使用闪存中没有其他用途的区域,例如固件或文件系统。
使用flash存储本机代码时 start+length 必须小于或等于1MByte。 注意,如果反复擦除(和写),flash可能会被磨损,所以要谨慎使用这个功能。 特别是,本地代码需要在每次启动时重新编译和重写到flash中(包括从深度睡眠中唤醒)。
在上述两种情况下,使用iRAM1或flash,如果在指定的区域没有更多的空间,那么在函数上 使用本机装饰器将导致在编译该函数期间引发`MemoryError`异常。