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

Arduino Leonardo代码上传失败求助:avrdude: butterfly_recv(): programmer is not responding

解决Arduino Leonardo/Microduino上传代码失败的问题

我完全懂你这种抓狂的感觉——明明代码已经修好了,别的板子都能正常上传,唯独之前跑过bug代码(比如数组越界)的Microduino(Leonardo核心)死活传不进去,连GND接RST复位都没用。别着急,这种情况大多是bug代码搞乱了板子的USB通信或者引导加载器状态,试试下面这几个针对性的解决办法:

1. 抓住引导加载器的激活窗口(最常用的解决方法)

Leonardo系列板子的引导加载器只会在开机后的几秒内激活,而有问题的代码可能让板子的USB通信一直处于异常状态,没法自动进入上传模式。按这个步骤操作:

  • 先把USB线接好,在Arduino IDE里选对板型(Tools > Board > Arduino Leonardo)和对应的串口端口(Tools > Port)
  • 点击IDE里的「上传」按钮,盯着右下角的编译进度条,看到开始编译的瞬间,快速按两下板子上的RST复位键(别长按,就是快速点两下)
  • 这时候IDE会抓住引导加载器激活的短暂窗口,顺利完成新代码的上传

这个方法的核心是,用快速复位强制板子跳过有问题的现有代码,进入可上传的引导模式。

2. 重新烧写引导加载器(如果第一步无效)

如果bug代码破坏了引导加载器的正常运行,就需要用ISP编程器重新烧写:

  • 准备一个USBasp或者用另一块Arduino做ISP编程器
  • 把编程器和Microduino的ISP引脚对应连接:SCK接SCK、MISO接MISO、MOSI接MOSI、VCC接VCC、GND接GND
  • 在Arduino IDE中,选择Tools > Programmer为你使用的编程器(比如USBasp)
  • 点击Tools > Burn Bootloader,等待烧写完成
  • 烧写完成后再尝试上传修复后的代码,应该就能正常工作了

3. 排查硬件和端口的小问题

有时候看似无关的小问题也会导致上传失败:

  • 换一根质量靠谱的USB数据线(有些廉价线只有充电功能,没有数据传输能力)
  • 关闭所有可能占用串口的软件(比如串口助手、其他编程IDE)
  • 在Windows的设备管理器或Mac的系统报告里,确认Microduino的端口是否被正常识别,有没有黄色感叹号的异常状态

补充:为什么GND接RST没用?

你之前试的GND接RST只是触发硬件复位,对于Leonardo来说,复位后还是会运行原来的bug代码,并不会进入引导加载器模式,所以才没法解决上传问题。必须配合上传时机快速按RST,才能让引导加载器接管系统。

要是上面的方法都不行,可以把上传时的详细报错日志贴出来,能帮你更精准定位问题,但大概率前面的步骤就能解决你的困扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:08:35