API Documentation
These are the libraries supplied in the Raspberry Pi Pico SDK
[detail level 123]
 Hardware APIsThis group of libraries provides a thin and efficient C API / abstractions to access the RP2040 hardware without having to read and write hardware registers directly
 hardware_adcAnalog to Digital Converter (ADC) API
 hardware_baseLow-level types and (atomic) accessors for memory-mapped hardware registers
 hardware_claimLightweight hardware resource management
 hardware_clocksClock Management API
 hardware_dividerLow-level hardware-divider access
 hardware_dmaDMA Controller API
 channel_configDMA channel configuration
 hardware_exceptionMethods for setting processor exception handlers
 hardware_flashLow level flash programming and erase API
 hardware_gpioGeneral Purpose Input/Output (GPIO) API
 hardware_i2cI2C Controller API
 hardware_interpHardware Interpolator API
 interp_configInterpolator configuration
 hardware_irqHardware interrupt handling
 hardware_pioProgrammable I/O (PIO) API
 sm_configPIO state machine configuration
 pio_instructionsPIO instruction encoding
 hardware_pllPhase Locked Loop control APIs
 hardware_pwmHardware Pulse Width Modulation (PWM) API
 hardware_resetsHardware Reset API
 hardware_rtcHardware Real Time Clock API
 hardware_spiHardware SPI API
 hardware_syncLow level hardware spin locks, barrier and processor event APIs
 hardware_timerLow-level hardware timer API
 hardware_uartHardware UART API
 hardware_vregVoltage Regulation API
 hardware_watchdogHardware Watchdog Timer API
 hardware_xoscCrystal Oscillator (XOSC) API
 High Level APIsThis group of libraries provide higher level functionality that isn't hardware related or provides a richer set of functionality above the basic hardware interfaces
 pico_multicoreAdds support for running code on the second processor core (core 1)
 fifoFunctions for the inter-core FIFOs
 lockoutFunctions to enable one core to force the other core to pause execution in a known state
 pico_stdlibAggregation of a core subset of Raspberry Pi Pico SDK libraries used by most executables along with some additional utility methods. Including pico_stdlib gives you everything you need to get a basic program running which prints to stdout or flashes a LED
 pico_syncSynchronization primitives and mutual exclusion
 critical_sectionCritical Section API for short-lived mutual exclusion safe for IRQ and multi-core
 lock_coreBase synchronization/lock primitive support
 mutexMutex API for non IRQ mutual exclusion between cores
 semSemaphore API for restricting access to a resource
 pico_timeAPI for accurate timestamps, sleeping, and time based callbacks
 timestampTimestamp functions relating to points in time (including the current time)
 sleepSleep functions for delaying execution in a lower power state
 alarmAlarm functions for scheduling future execution
 repeating_timerRepeating Timer functions for simple scheduling of repeated execution
 pico_unique_idUnique device ID access API
 pico_utilUseful data structures and utility functions
 datetimeDate/Time formatting
 pheapPairing Heap Implementation
 queueMulti-core and IRQ safe queue implementation
 Third-party LibrariesThird party libraries for implementing high level functionality
 tinyusb_deviceTinyUSB Device-mode support for the RP2040
 tinyusb_hostTinyUSB Host-mode support for the RP2040
 Runtime InfrastructureLibraries that are used to provide efficient implementation of certain language level and C library functions, as well as CMake INTERFACE libraries abstracting the compilation and link steps in the SDK
 boot_stage2Second stage boot loaders responsible for setting up external flash
 pico_baseCore types and macros for the Raspberry Pi Pico SDK. This header is intended to be included by all source code as it includes configuration headers and overrides in the correct order
 pico_binary_infoBinary info is intended for embedding machine readable information with the binary in FLASH
 pico_bit_opsOptimized bit manipulation functions. Additionally provides replacement implementations of the compiler built-ins __builtin_popcount, __builtin_clz and __bulitin_ctz
 pico_bootromAccess to functions and data in the RP2040 bootrom
 pico_bootsel_via_double_resetWhen the 'pico_bootsel_via_double_reset' library is linked, a function is injected before main() which will detect when the system has been reset twice in quick succession, and enter the USB ROM bootloader (BOOTSEL mode) when this happens. This allows a double tap of a reset button on a development board to be used to enter the ROM bootloader, provided this library is always linked
 pico_cxx_optionsNon-code library controlling C++ related compile options
 pico_dividerOptimized 32 and 64 bit division functions accelerated by the RP2040 hardware divider. Additionally provides integration with the C / and % operators
 pico_doubleOptimized double-precision floating point functions
 pico_floatOptimized single-precision floating point functions
 pico_int64_opsOptimized replacement implementations of the compiler built-in 64 bit multiplication
 pico_mallocMulti-core safety for malloc, calloc and free
 pico_mem_opsProvides optimized replacement implementations of the compiler built-in memcpy, memset and related functions:
 pico_platformMacros 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_printfCompact replacement for printf by Marco Paland (info@.nosp@m.pala.nosp@m.nd.co.nosp@m.m)
 pico_runtimeAggregate runtime support including pico_bit_ops, pico_divider, pico_double, pico_int64_ops, pico_float, pico_malloc, pico_mem_ops and pico_standard_link
 pico_stdioCustomized stdio support allowing for input and output from UART, USB, semi-hosting etc
 pico_stdio_semihostingExperimental support for stdout using RAM semihosting
 pico_stdio_uartSupport for stdin/stdout using UART
 pico_stdio_usbSupport for stdin/stdout over USB serial (CDC)
 pico_standard_linkStandard link step providing the basics for creating a runnable binary
 External API HeadersHeaders for interfaces that are shared with code outside of the SDK
 boot_picobootHeader file for the PICOBOOT USB interface exposed by an RP2040 in BOOTSEL mode
 boot_uf2Header file for the UF2 format supported by an RP2040 in BOOTSEL mode
 pico_usb_reset_interfaceDefinition for the reset interface that may be exposed by the pico_stdio_usb library