API Documentation
These are the libraries supplied in the Raspberry Pi Pico SDK
[detail level 1234]
 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_async_contextAn 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_poll
 async_context_threadsafe_background
 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_i2c_slaveFunctions providing an interrupt driven I2C slave interface
 pico_randRandom Number Generator API
 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. The TinyUSB documentation site can be found here
 tinyusb_hostTinyUSB Host-mode support for the RP2040
 Networking LibrariesFunctions for implementing networking
 pico_btstackIntegration/wrapper libraries for BTstack the documentation for which is here
 pico_lwipIntegration/wrapper libraries for lwIP the documentation for which is here
 pico_lwip_archLwIP compiler adapters. This is not included by default in pico_lwip in case you wish to implement your own
 pico_lwip_freertosGlue library for integration lwIP in NO_SYS=0 mode with the SDK. Simple init and deinit are all that is required to hook up lwIP (with full blocking API support) via an async_context instance
 pico_lwip_nosysGlue library for integration lwIP in NO_SYS=1 mode with the SDK. Simple init and deinit are all that is required to hook up lwIP via an async_context instance
 pico_cyw43_driverA wrapper around the lower level cyw43_driver, that integrates it with pico_async_context for handling background work
 Pico_bstack_cyw43Low-level Bluetooth HCI support
 pico_cyw43_archArchitecture 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_driverDriver used for Pico W wireless
 cyw43_llLow Level CYW43 driver interface
 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