You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MicroPython(Raspberry Pi Pico)软件终止开关实现求助

解决Raspberry Pi Pico MicroPython死循环无法终止的问题

核心问题原因

你的while True: pass是纯空死循环,会占满Pico的CPU,导致MicroPython虚拟机没时间处理Thonny发送的终止信号,所以点击停止按钮无效。

实现键盘触发终止的方案

给循环加入非阻塞键盘输入检查和短延时,让系统有机会响应信号,同时支持按键触发退出:

修改后的代码

import sys
import time

def main():
    #time.sleep(5)
    H_bridge.init_motor_data()
    mpu6050.configure_mpu()
    #adxl345.configure_adxl()
    get_offsets()
    
    general_timer.init_general_timer(pid_control)

    while True:
        # 检查是否有键盘输入(非阻塞)
        if sys.stdin.readable():
            key = sys.stdin.read(1)
            # 输入q(大小写均可)就终止程序
            if key.lower() == 'q':
                print("程序已终止")
                break
        # 短延时,给系统留出处理Thonny停止信号的时间
        time.sleep(0.01)
        
if __name__ == "__main__":
    main()

关键点说明

  • sys.stdin.readable()检查是否有键盘输入,read(1)读取单个字符,非阻塞方式不会卡住程序
  • time.sleep(0.01)仅占用10ms,几乎不影响你的定时器和PID逻辑,但能让CPU腾出时间处理后台信号
  • 按下Thonny控制台的q键再回车,或者直接输入q,就能触发程序退出;同时Thonny的停止按钮也能正常响应了

内容的提问来源于stack exchange,提问作者Cosmin Cristea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 06:30:55