MCU_UART: full RX with ISR and DMA modes, ring buffer, blocking ReceiveByte, async ReceiveBuffer with request fulfillment, blocking ReceiveBufferBlocking. Per-byte RX callback (ISR mode). MCU_USB: blocking ReceiveByte via getchar_timeout_us, cached-byte peek for bIsRxDataAvailable. HAL_COM: RX function pointer types + dispatch (ReceiveByte, bIsRxDataAvailable) with USB wrappers in cfg. APP_CLSW: interactive command parser. Accumulates input into a buffer, parses on delimiter. Supports red/green/blue/help commands with echo and response. SYS_ECU tick reduced to 10ms for responsive input.
Color Switcher
A Raspberry Pi Pico project that sends commands over UART to a connected computer. Written entirely in C using the Pico SDK.
Prerequisites
- Docker and Docker Compose
No local toolchain installation needed — everything runs inside the container.
Building
# Build the Docker image (first time only, or after Dockerfile changes)
docker compose build
# Compile the firmware
docker compose up
The .uf2 firmware file will appear in build/.
Flashing
- Hold the BOOTSEL button on the Pico and plug it into USB
- It mounts as a USB mass storage device
- Drag the
.uf2file frombuild/onto the Pico - The Pico reboots and runs the firmware
Interactive Shell
To drop into the build container for debugging or manual commands:
docker compose run --rm pico-build bash
Description
Languages
CMake
48.5%
C
39.9%
Shell
6.8%
Dockerfile
4.8%