Raspberry Pi Pico SDK
Raspberry Pi Pico SDK(以下简称 SDK)提供了为基于 RP 系列微控制器的设备(如 Raspberry Pi Pico 或 Raspberry Pi Pico 2)编写 C、C++ 或汇编语言程序所需的头文件、库和构建系统。
SDK 旨在为嵌入式和非嵌入式 C 开发者提供熟悉的 API 和编程环境。
同一时间设备上只运行一个程序,并以常规的 main() 方法启动。支持标准 C/C++ 库,以及用于访问 RP 系列微控制器所有硬件(包括 PIO(可编程 IO))的 C 级库/API。
此外,SDK 提供了用于处理定时器、同步、Wi-Fi 和蓝牙网络、USB 和多核编程的高级库。这些库应足够全面,使得您的应用程序代码很少或根本不需要直接访问硬件寄存器。但是,如果您需要或偏好访问原始硬件寄存器,您也可以在 SDK 中找到完整且注释详尽的寄存器定义头文件。无需在数据手册中查找地址。
SDK 可用于构建从简单应用程序、完整的运行时环境(如 MicroPython)到 RP 系列微控制器片上 bootrom 本身的底层软件。
整个 SDK 的设计目标是简单但强大。
尚未准备好纳入 SDK 的其他库/API 可在 pico-extras 中找到。
文档
请参阅 Raspberry Pi Pico 系列入门指南,了解如何设置硬件、IDE/环境,以及如何为 Raspberry Pi Pico 和其他基于 RP 系列微控制器的设备构建和调试软件。
请参阅 使用 Raspberry Pi Pico W 连接互联网,了解如何编写可连接互联网的 Raspberry Pi Pico W 应用程序。
请参阅 Raspberry Pi Pico 系列 C/C++ SDK,了解如何使用 SDK 进行编程,探索更多高级功能,并获取完整的基于 PDF 的 API 文档。
请参阅 在线 Raspberry Pi Pico SDK API 文档,获取基于 HTML 的 API 文档。
示例代码
请参阅 pico-examples,获取可构建的示例代码。
获取最新的 SDK 代码
GitHub 上 pico-sdk 的 master 分支包含 SDK 的
最新稳定版本。如果您需要或希望测试即将推出的功能,可以尝试
develop 分支。
快速启动您的项目
使用 Visual Studio Code
您可以在 VS Code 中安装 Raspberry Pi Pico Visual Studio Code 扩展。
Unix 命令行
这些说明非常简略,且仅适用于基于 Linux 的系统。对于详细步骤、 其他平台的说明以及总体建议,我们建议您参阅 Raspberry Pi Pico 系列 C/C++ SDK
- Install CMake (at least version 3.13), python 3, a native compiler, and a GCC cross compiler
sudo apt install cmake python3 build-essential gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib - Set up your project to point to use the Raspberry Pi Pico SDK
-
通过本地克隆 SDK(最常见): 1.
git clone此 Raspberry Pi Pico SDK 仓库 1. 将 pico_sdk_import.cmake 从 SDK 复制到您的项目目录 2. 在您的环境中将PICO_SDK_PATH设置为 SDK 位置,或稍后将其(-DPICO_SDK_PATH=)传递给 cmake。 3. 设置一个CMakeLists.txt,例如:```cmake cmake_minimum_required(VERSION 3.13...3.27) # initialize the SDK based on PICO_SDK_PATH # note: this must happen before project() include(pico_sdk_import.cmake) project(my_project) # initialize the Raspberry Pi Pico SDK pico_sdk_init() # rest of your project ``` -
或者将 Raspberry Pi Pico SDK 作为子模块: 1. 将 SDK 克隆为名为
pico-sdk的子模块 1. 设置一个CMakeLists.txt,例如:```cmake cmake_minimum_required(VERSION 3.13...3.27) # initialize pico-sdk from submodule # note: this must happen before project() include(pico-sdk/pico_sdk_init.cmake) project(my_project) # initialize the Raspberry Pi Pico SDK pico_sdk_init() # rest of your project ``` -
或从 GitHub 自动下载: 1. 将 pico_sdk_import.cmake 从 SDK 复制到您的项目目录 1. 设置一个
CMakeLists.txt,例如:```cmake cmake_minimum_required(VERSION 3.13) # initialize pico-sdk from GIT # (note this can come from environment, CMake cache etc) set(PICO_SDK_FETCH_FROM_GIT on) # pico_sdk_import.cmake is a single file copied from this SDK # note: this must happen before project() include(pico_sdk_import.cmake) project(my_project) # initialize the Raspberry Pi Pico SDK pico_sdk_init() # rest of your project ``` -
或者通过本地克隆 SDK,但不复制
pico_sdk_import.cmake: 1.git clone此 Raspberry Pi Pico SDK 仓库 2. 设置一个CMakeLists.txt,例如:```cmake cmake_minimum_required(VERSION 3.13) # initialize the SDK directly include(/path/to/pico-sdk/pico_sdk_init.cmake) project(my_project) # initialize the Raspberry Pi Pico SDK pico_sdk_init() # rest of your project ```
- Write your code (see pico-examples or the Raspberry Pi Pico-Series C/C++ SDK documentation for more information)
最简单的做法是仅使用一个源文件(例如 hello_world.c)
#include <stdio.h>
#include "pico/stdlib.h"
int main() {
stdio_init_all();
printf("Hello, world!\n");
return 0;
}
并将以下内容添加到您的 CMakeLists.txt 中:
add_executable(hello_world
hello_world.c
)
# Add pico_stdlib library which aggregates commonly used features
target_link_libraries(hello_world pico_stdlib)
# create map/bin/hex/uf2 file in addition to ELF.
pico_add_extra_outputs(hello_world)
注意此示例使用默认的 UART 作为 stdout; 如果你想使用默认的 USB,请参阅 hello-usb 示例。
-
设置 CMake 构建目录。 例如,如果不使用 IDE:
$ cmake -S . -B buildcmake -S 标志指示源目录,而 -B 标志告诉 cmake 要创建的输出目录的名称。它不必命名为 "build",你可以将其命名为任何你喜欢的名称。
当为 Raspberry Pi Pico 以外的板卡构建时,你应该向上述
cmake命令传递-DPICO_BOARD=board_name,例如cmake -S . -B build -DPICO_BOARD=pico2或cmake -S . -B build -DPICO_BOARD=pico_w,以便针对该特定板卡相应地配置 SDK 和构建选项。指定
PICO_BOARD=<boardname>会设置各种编译器定义(例如 UART 和其他硬件的默认引脚号),并且在某些 情况下还会启用额外库的使用(例如,为PICO_BOARD=pico_w构建时启用无线支持),这些库 在没有提供所需硬件功能的板卡上无法构建。要查看 SDK 本身中定义的板卡列表,请查看 此目录,其中包含 每个命名板卡的头文件。
-
从你创建的构建目录中构建你的目标。
$ cmake --build build --target hello_world提供给
--build标志的目录名称必须与之前 cmake 命令中传递给-B标志的目录名称相匹配。 -
现在你有了可以通过调试器加载的
hello_world.elf,或者可以通过拖放方式安装并在你的 Raspberry Pi Pico 系列设备上运行的hello_world.uf2。
RP2350 上的 RISC-V 支持
有关在 RP2350 上设置 RISC-V 构建环境的信息,请参阅 Raspberry Pi Pico 系列 C/C++ SDK。
RISC-V 快速入门
pico-sdk-tools 仓库包含一些预编译的 RISC-V 编译器版本。
例如,您可以使用这些工具在 Raspberry Pi OS 上获得一个可用的 RISC-V 编译器。
wget https://github.com/raspberrypi/pico-sdk-tools/releases/download/v2.0.0-5/riscv-toolchain-14-aarch64-lin.tar.gz
sudo mkdir -p /opt/riscv/riscv-toolchain-14
sudo chown $USER /opt/riscv/riscv-toolchain-14
tar xvf riscv-toolchain-14-aarch64-lin.tar.gz -C /opt/riscv/riscv-toolchain-14
要使用 RISC-V 编译器构建代码,您需要设置几个环境变量并从头运行 cmake。
export PICO_TOOLCHAIN_PATH=/opt/riscv/riscv-toolchain-14/
export PICO_PLATFORM=rp2350-riscv