Full hardware UART driver with config-driven per-instance setup. Non-blocking SendBuffer supports DMA (zero-CPU) and ISR (FIFO-fill) modes selectable per instance in MCU_UART_cfg.h. Both modes and blocking SendBufferBlocking invoke a configurable TX-complete callback (STD_NULL to ignore). All public functions take a u8 instance parameter. Config uses struct-of-arrays pattern for runtime state, designated-initializer array for per-instance settings, and value enums in the public header for parity/data bits/stop bits/async mode. Added hardware_dma to CMake link list.
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%