Reset(复位)功能用于重启 MicroPython 设备,类似于手动按下复位按钮。
import machine
# 软件复位
machine.reset()
| 复位类型 | 说明 | 适用场景 |
|---|---|---|
| 软复位 | 通过软件触发的复位 | 程序错误恢复、配置更新 |
| 硬复位 | 通过硬件触发的复位 | 系统完全重启 |
| 深度复位 | 包括外设在内的完全复位 | 严重错误恢复 |
import machine
print('准备复位...')
# 延迟 2 秒后复位
import time
time.sleep(2)
machine.reset()
import machine
import time
# 检查条件后复位
def check_reset_condition():
# 这里可以添加复位条件检查
# 例如:检查配置文件是否需要更新
return True # 模拟需要复位
print('系统运行中...')
if check_reset_condition():
print('满足复位条件,准备复位...')
time.sleep(1)
machine.reset()
else:
print('无需复位,继续运行')
import machine
import time
print('系统准备复位...')
# 执行清理工作
print('执行清理工作...')
# 关闭文件
# 释放资源
# 保存配置等
print('清理完成,准备复位...')
time.sleep(2)
# 复位
machine.reset()
import machine
import time
# 运行时间(秒)
runtime = 300 # 5分钟
print(f'系统将在 {runtime} 秒后自动复位')
start_time = time.time()
while True:
current_time = time.time()
elapsed = current_time - start_time
if elapsed >= runtime:
print('运行时间到,准备复位...')
time.sleep(2)
machine.reset()
print(f'已运行 {elapsed:.0f} 秒')
time.sleep(10)
import machine
import time
print('系统启动')
try:
# 执行可能出错的代码
print('执行任务...')
# 模拟错误
# x = 1 / 0
print('任务执行成功')
except Exception as e:
print(f'发生错误: {e}')
print('准备复位以恢复...')
time.sleep(2)
machine.reset()
# 正常运行
while True:
print('系统正常运行')
time.sleep(1)
from machine import Pin, reset
import time
# 假设有一个远程触发引脚
reset_pin = Pin(14, Pin.IN, Pin.PULL_UP)
print('系统运行中,等待复位触发...')
while True:
# 检查复位引脚
if reset_pin.value() == 0: # 引脚被拉低
print('检测到复位触发信号')
print('准备复位...')
time.sleep(2)
reset()
print('系统正常运行')
time.sleep(1)
| 板子 | 复位特性 |
|---|---|
| Raspberry Pi Pico | 支持软件复位,复位后从 main.py 开始执行 |
| ESP32 | 支持多种复位模式,包括软复位和硬复位 |
| Arduino boards | 部分型号支持软件复位 |
| STM32 | 支持软件复位,功能丰富 |
Q: 复位后程序从哪里开始执行?
A: 复位后通常从 main.py 开始执行,或者从 REPL 启动。
Q: 复位会影响文件系统吗? A: 复位不会影响文件系统,文件会保持不变。
Q: 如何区分复位和首次启动? A: 可以通过检查复位原因或使用 RTC 来判断是否是首次启动。
Q: 复位前如何保存数据? A: 可以在复位前将重要数据写入文件系统或 RTC 的备份寄存器。