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
相关产品推荐
相关产品推荐

