:mod:`esp` --- 与ESP8266和ESP32相关的函数 =============================================== .. module:: esp :synopsis: 与ESP8266和ESP32相关的函数 ``esp`` 模块包含与ESP8266和ESP32模块相关的特地函数。有些函数只能在其中一个或另一个上使用这些接口。 函数 --------- .. function:: sleep_type([sleep_type]) **Note**: ESP8266 only 获取或设置睡眠类型。 若给定 *sleep_type* 参数,则将睡眠类型设置为其值。若调用函数未给定参数,则返回当前的睡眠类型。 可用的睡眠类型被定义为常量: * ``SLEEP_NONE`` -- 所有函数启用 * ``SLEEP_MODEM`` -- 调制解调器睡眠,关闭WiFi调制解调器电路 * ``SLEEP_LIGHT`` -- 轻度睡眠,关闭WiFi调制解调器电路,并定期暂停处理器。 条件允许时,系统会自动进入设定的睡眠模式。 .. function:: deepsleep(time=0) **Note**: ESP8266 only - 在ESP32上使用 `machine.deepsleep()` 进入深度睡眠。 除RTC时钟电路外的整个模块断电。指定时间后,若引脚16与重置引脚相连接,RTC时钟电路可用于重启模块。 否则该模块将始终处于睡眠状态,直至手动重启。 .. function:: flash_id() **Note**: ESP8266 only 读取闪存的设备ID。 .. function:: flash_size() 读取闪存的总大小。 .. function:: flash_user_start() 读取用户闪存空间开始的内存偏移量。 .. function:: flash_read(byte_offset, length_or_buffer) .. function:: flash_write(byte_offset, bytes) .. function:: flash_erase(sector_no) .. function:: 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`异常。