v2.0.0
API Documentation
These are the libraries supplied in the Raspberry Pi Pico SDK
[detail level 1234]

▼Hardware APIs |
hardware_adc | Analog to Digital Converter (ADC) API
hardware_base | Low-level types and (atomic) accessors for memory-mapped hardware registers
hardware_claim | Lightweight hardware resource management API
hardware_clocks | Clock Management API
hardware_divider | RP2040 Low Low-level hardware-divider API. Non-RP2040 platforms provide software versions of all the functions
hardware_dcp | Assembly macros for the Double Coprocessor
►hardware_dma | DMA Controller API
channel_config | DMA channel configuration
hardware_exception | Methods for setting processor exception handlers
hardware_flash | Low level flash programming and erase API
hardware_gpio | General Purpose Input/Output (GPIO) API
hardware_hazard3 | Accessors for Hazard3-specific RISC-V CSRs, and intrinsics for Hazard3 custom instructions
hardware_i2c | I2C Controller API
►hardware_interp | Hardware Interpolator API
interp_config | Interpolator configuration
hardware_irq | Hardware interrupt handling API
►hardware_pio | Programmable I/O (PIO) API
sm_config | PIO state machine configuration
pio_instructions | PIO instruction encoding
hardware_pll | Phase Locked Loop control APIs
hardware_powman | Power Management API
hardware_pwm | Hardware Pulse Width Modulation (PWM) API
hardware_resets | Hardware Reset API
hardware_riscv | Accessors for standard RISC-V hardware (mainly CSRs)
hardware_riscv_platform_timer | Accessors for standard RISC-V platform timer (mtime/mtimecmp), available on Raspberry Pi microcontrollers with RISC-V processors
hardware_rtc | Hardware Real Time Clock API
hardware_rcp | Inline functions and assembly macros for the Redundancy Coprocessor
hardware_spi | Hardware SPI API
hardware_sha256 | Hardware SHA-256 Accelerator API
hardware_sync | Low level hardware spin locks, barrier and processor event APIs
hardware_ticks | Hardware Tick API
hardware_timer | Low-level hardware timer API
hardware_uart | Hardware UART API
hardware_vreg | Voltage Regulation API
hardware_watchdog | Hardware Watchdog Timer API
hardware_xosc | Crystal Oscillator (XOSC) API
▼High Level APIs |
pico_aon_timer | High Level "Always on Timer" Abstraction
►pico_async_context | An async_context provides a logically single-threaded context for performing work, and responding to asynchronous events. Thus an async_context instance is suitable for servicing third-party libraries that are not re-entrant
async_context_freertos | Async_context_freertos provides an implementation of async_context that handles asynchronous work in a separate FreeRTOS task
async_context_poll | Async_context_poll provides an implementation of async_context that is intended for use with a simple polling loop on one core. It is not thread safe
async_context_threadsafe_background | Async_context_threadsafe_background provides an implementation of async_context that handles asynchronous work in a low priority IRQ, and there is no need for the user to poll for work
pico_bootsel_via_double_reset | Optional support to make fast double reset of the system enter BOOTSEL mode
pico_flash | High level flash API
pico_i2c_slave | Functions providing an interrupt driven I2C slave interface
►pico_multicore | Adds support for running code on, and interacting with the second processor core (core 1)
fifo | Functions for the inter-core FIFOs
doorbell | Functions related to doorbells which a core can use to raise IRQs on itself or the other core
lockout | Functions to enable one core to force the other core to pause execution in a known state
pico_rand | Random Number Generator API
pico_sha256 | SHA-256 Hardware Accelerated implementation
pico_stdlib | Aggregation of a core subset of Raspberry Pi Pico SDK libraries used by most executables along with some additional utility methods
►pico_sync | Synchronization primitives and mutual exclusion
critical_section | Critical Section API for short-lived mutual exclusion safe for IRQ and multi-core
lock_core | Base synchronization/lock primitive support
mutex | Mutex API for non IRQ mutual exclusion between cores
sem | Semaphore API for restricting access to a resource
►pico_time | API for accurate timestamps, sleeping, and time based callbacks
timestamp | Timestamp functions relating to points in time (including the current time)
sleep | Sleep functions for delaying execution in a lower power state
alarm | Alarm functions for scheduling future execution
repeating_timer | Repeating Timer functions for simple scheduling of repeated execution
pico_unique_id | Unique device ID access API
►pico_util | Useful data structures and utility functions
datetime | Date/Time formatting
pheap | Pairing Heap Implementation
queue | Multi-core and IRQ safe queue implementation
▼Third-party Libraries |
tinyusb_device | TinyUSB Device-mode support for the RP2040. The TinyUSB documentation site can be found here
tinyusb_host | TinyUSB Host-mode support for the RP2040
▼Networking Libraries |
pico_btstack | Integration/wrapper libraries for BTstack the documentation for which is here
►pico_lwip | Integration/wrapper libraries for lwIP the documentation for which is here
pico_lwip_arch | LwIP compiler adapters. This is not included by default in `pico_lwip in` case you wish to implement your own
pico_lwip_freertos | Glue library for integration lwIP in `NO_SYS=0` mode with the SDK
pico_lwip_nosys | Glue library for integration lwIP in `NO_SYS=1` mode with the SDK
►pico_cyw43_driver | A wrapper around the lower level cyw43_driver, that integrates it with pico_async_context for handling background work
pico_btstack_cyw43 | Low-level Bluetooth HCI support
►pico_cyw43_arch | Architecture for integrating the CYW43 driver (for the wireless on Pico W) and lwIP (for TCP/IP stack) into the SDK. It is also necessary for accessing the on-board LED on Pico W
►cyw43_driver | Driver used for Pico W wireless
cyw43_ll | Low Level CYW43 driver interface
▼Runtime Infrastructure |
boot_stage2 | Second stage boot loaders responsible for setting up external flash
pico_atomic | Helper implementations for C11 atomics
pico_base | Core types and macros for the Raspberry Pi Pico SDK
pico_binary_info | Binary info is intended for embedding machine readable information with the binary in FLASH
pico_bootrom | Access to functions and data in the bootrom
pico_bit_ops | Optimized bit manipulation functions
pico_cxx_options | Non-code library controlling C++ related compile options
pico_clib_interface | Provides the necessary glue code required by the particular C/C++ runtime being used
pico_crt0 | Provides the default linker scripts and the program entry/exit point
pico_divider | Optimized 32 and 64 bit division functions accelerated by the RP2040 hardware divider
pico_double | Optimized double-precision floating point functions
pico_float | Optimized single-precision floating point functions
pico_int64_ops | Optimized replacement implementations of the compiler built-in 64 bit multiplication
pico_malloc | Multi-core safety for malloc, calloc and free
pico_mem_ops | Provides optimized replacement implementations of the compiler built-in memcpy, memset and related functions
pico_platform | Macros and definitions (and functions when included by non assembly code) for the RP2 family device / architecture to provide a common abstraction over low level compiler / platform specifics
pico_printf | Compact replacement for printf by Marco Paland (info@.nosp@m.pala.nosp@m.nd.co.nosp@m.m)
pico_runtime | Basic runtime support for running pre-main initializers provided by other libraries
pico_runtime_init | Main runtime initialization functions required to set up the runtime environment before entering main
►pico_stdio | Customized stdio support allowing for input and output from UART, USB, semi-hosting etc
pico_stdio_semihosting | Experimental support for stdout using RAM semihosting
pico_stdio_uart | Support for stdin/stdout using UART
pico_stdio_rtt | Support for stdin/stdout using SEGGER RTT
pico_stdio_usb | Support for stdin/stdout over USB serial (CDC)
pico_standard_binary_info | Includes default information about the binary that can be displayed by picotool
pico_standard_link | Setup for link options for a standard SDK executable
▼External API Headers |
boot_picobin_headers | Constants for PICOBIN format
boot_picoboot_headers | Header file for the PICOBOOT USB interface exposed by an RP2xxx chip in BOOTSEL mode
boot_uf2_headers | Header file for the UF2 format supported by a RP2xxx chip in BOOTSEL mode
pico_usb_reset_interface_headers | Definition for the reset interface that may be exposed by the pico_stdio_usb library