<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>USB-CDC :: 标签 :: yafeng 的博客</title><link>http://yafengabc.github.io/tags/usb-cdc/index.html</link><description/><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 19 Sep 2026 14:36:30 +0800</lastBuildDate><atom:link href="http://yafengabc.github.io/tags/usb-cdc/index.xml" rel="self" type="application/rss+xml"/><item><title>RP2040踩坑记 USB CDC串口无法下载程序(驱动)+不发送数据（DTR）</title><link>http://yafengabc.github.io/cnblogs/p18573354/index.html</link><pubDate>Thu, 28 Nov 2024 00:05:00 +0800</pubDate><guid>http://yafengabc.github.io/cnblogs/p18573354/index.html</guid><description>这几天买个两块INA226自己搞了个简易功率计（C表），如下图：&#10;当时画板子就考虑兼容的板子多一点，支持Mini跟Super Mini类型的板子，一块搞了一个ESP32 C3（左），当时看RP2040-Zero便宜，就手贱又买了片RP2040-zero（右）。&#10;一开始RP2040是刷Micropython用的，测试很成功，功率计能正常读到电压电流。后来嫌micropython慢，所以打算换到Arduino平台重写一下，这一换不打紧，踩了两个大坑。&#10;我用的IDE是VScode+PlatformIO插件，支持巨量的板子，并且C++补全（Arduino）做的非常好，强烈吐血推荐：&#10;看里边也有RP2040的支持，新建一个，从串口调起，下边代码：&#10;#include &lt;Arduino.h&gt; void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: Serial.println("Hello im from RP2040"); sleep_ms(1000); } 这算是Arduino的Hello world了，没理由跑不起来……&#10;然后……&#10;编译成功，下载失败……&#10;看了看Arduino生成的文件，有uf2，那就好说了，按住BOOT-&gt;按住RESET-&gt;松开RESET-&gt;松开BOOT，U盘出来了。把uf2丢进去，板子重启了，这时候出现一个串口，用串口助手连上去，咦？啥都没有？&#10;这就抽象了……难道……USB串口不是默认的Serial，是Serial1或者Serial2？然后去翻官方文档：&#10;Arduino-Pico 核心使用 USB ACM-CDC 模型实现基于软件的串行 USB 端口，以支持各种各样的操作系统。 Serial是 USB 串行端口，虽然Serial.begin()允许指定波特率，但由于它是基于 USB 的，因此会忽略该速率。（还请注意，此 USBSerial端口负责在上传过程中重置 RP2040，遵循 Arduino 标准 1200bps = 重置为引导加载程序）。 RP2040 提供两个基于硬件的 UART，具有可配置引脚选择。 Serial1是UART0，且Serial2是UART1。 这这这这……没错啊，就是默认的Serial……</description></item></channel></rss>