Ich denke das Geheimnis findest du in der Pico C SDK. Ich weiß so viel, dass es 3 Wege gibt im Pico mit der C SDK über Serial zu kommunizieren:
- Die Serial Klasse, sendet wie du bereits herausgefunden hast über USB raus und wird irgendwie für dich transparent verpackt
- Die Serial1 Klasse verwendet den Hardware UART0 (Pins 1 & 2)
- Die Serial2 Klasse verwendet den Hardware UART1 (Pins 21 & 22)
Dem Datasheet des RP2040 vom Pico kann man entnehmen, dass das Gerät 2 Hardware UARTs besitzt, ergo kann man darauf schließen, dass die USB Kommunikation
nicht über einen dieser UARTs läuft sondern irgendwie anders vollzogen wird. Ich habe nirgendwo rausgefunden wie genau das läuft. Da man sein Projekt so kompilieren kann, dass stdout und stdin über USB umgeleitet werden, gehe ich fest davon aus dass die SDK das irgendwie für dich hübsch macht. Der RP2040 kann auch USB 1.1 Host/Client Mode, ich weiß jetzt aber nicht ob er dafür benutzt wird.
Die Beispiele die du gefunden hast mit den GPIO sind vermutlich die selben die ich auch gefunden habe, da sind die GPIO nur für Demozwecke benutzt worden um übers Serial eine LED ein und auszuschalten, aber nicht fürs Serial selbst.
edit: Ich hab nochmal
etwas gebuddelt. Die Arduino SDK benutzt TinyUSB fürs USB Serial also wird das alles "manuell" gemacht, bzw ohne Hilfe vom Chip selbst, heißt in Pascal müsstest du auch selbst das USB Serial Protokoll bauen.