跳到主要内容

C/C++ SDK

SDK安装

要全面了解如何使用 C/C++ SDK,请阅读我们的 "入门" 文档。不过,如果您打算在树莓派OS上为 Pico 进行开发,可以通过命令行运行我们的安装脚本来快速设置 C/C++ 工具链。

注意

在运行设置脚本之前,应确保树莓派上的操作系统是最新的

树莓派Pico C/C++ SDK

我们的官方 C SDK 可在命令行中使用,也可在常用的集成开发环境(如 Visual Studio Code、Eclipse 和 CLion)中使用。要开始使用,请下载我们的 C/C++ SDK 和示例,并查看我们的"入门"文档。如需快速安装,请参阅下一节。

您可以在以下网址找到有关 C/C++ SDK 的文档;

开始使用树莓派Pico
  使用树莓派Pico和其他基于 RP2040 的微控制器板进行 C/C++ 开发

使用树莓派Pico W连接互联网
  使用 C/C++ 或 MicroPython 联机树莓派Pico W

树莓派Pico C/C++ SDK
  用于在 RP2040 微控制器上进行 C/C++ 开发的库和工具

API文档
  树莓派co C/C++ SDK 文档

注意

如果您使用 C/C++ SDK 构建应用程序,并且目标板不是树莓派Pico,则需要向 CMake 传递 -DPICO_BOARD=boardname。这里的 boardname 是指电路板的名称,例如,对于 Adafruit Feather RP2040,您应该传递 -DPICO_BOARD=adafruit_feather_rp2040 。有关详细信息,请参阅树莓派Pico SDK 中的 boards/ 目录论坛

注意

有关在树莓派Pico W 上使用 C/C++ 或 MicroPython 处理 Wi-Fi 和蓝牙的文档,请参阅《使用树莓派Pico W 连接到互联网》一书。

注意

如果您使用树莓派Pico W的 C/C++ SDK 构建应用程序,并且要连接到网络,则需要向 CMake 传递 -DPICO_BOARD=pico_w -DWIFI_SSID="Your Network" -DWIFI_PASSWORD="Your Password"。如果只需启用蓝牙支持,则无需传递 SSID 和密码,但仍需向 CMake 传递 -DPICO_BOARD=pico_w 字符串。

你的第一个二进制文件

警告

如果您使用的是苹果 Mac 并运行 macOS Ventura,Finder 的工作方式会发生变化,导致拖放失败。请参阅我们的博文了解完整解释和解决方法,并查看 Github 问题跟踪了解当前状态。

LED闪烁

任何人在使用新微控制器时编写的第一个程序都是打开或关闭 LED。树莓派Pico 板载了一个 LED。Pico 的 LED 连接到树莓派 RP2040 板上的 GP25,而 Pico W 的 LED 则连接到英飞凌 43439 无线芯片上的 WL_GPIO0

LED闪烁

您可以通过以下方式打开或关闭闪烁、

  1. 下载适用于树莓派PicoPico W的 Blink UF2。
  2. 按住 BOOTSEL 按钮,将 Pico 插入树莓派或其他电脑的 USB 端口。
  3. 它将挂载为名为 RPI-RP2 的大容量存储设备。
  4. 将 Blink UF2 二进制文件拖放到 RPI-RP2 卷上。Pico 将重新启动。

你会看到板载 LED 指示灯闪烁。

您可以在 Github 上查看 树莓派 PicoPico W 版本的代码。

说 "Hello World"

任何人编写的下一个程序都是通过 USB 串行连接说 "Hello World"。

Hello World
  1. "Hello World" UF2
  2. 按住 BOOTSEL 按钮,将 Pico 插入树莓派或其他计算机的 USB 端口。
  3. 它将挂载为名为 RPI-RP2 的大容量存储设备。
  4. 将 "Hello World" UF2 二进制文件拖放到 RPI-RP2 卷上。Pico 将重新启动。
  5. 打开终端窗口并键入
sudo apt install minicom
minicom -b 115200 -o -D /dev/ttyACM0

你应该会看到 "Hello, world!"打印到终端。

您可以在 Github 上查看代码

快速启动自己的项目

注意

以下说明较为简短,且仅基于 Linux。有关其他平台的详细步骤和一般说明,我们建议您参阅《树莓派Pico 入门》《树莓派Pico C/C++ SDK》两本书。

安装 CMake(至少 3.13 版)和 GCC 交叉编译器

sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib

在本地克隆树莓派Pico SDK,将项目设置为使用树莓派Pico SDK:

git clone https://github.com/raspberrypi/pico-sdk.git

将 SDK 中的 external/pico_sdk_import.cmake 复制到项目目录中

PICO_SDK_PATH 设置为环境中的 SDK 位置,或稍后将其传递给 cmake (-DPICO_SDK_PATH=)。

设置 CMakeLists.txt,如

cmake_minimum_required(VERSION 3.13)

# 根据 PICO_SDK_PATH 初始化 SDK
# 注意:这必须在 project() 之前进行
include(pico_sdk_import.cmake)

project(my_project)

# 初始化 树莓派Pico SDK
pico_sdk_init()

# 项目的其余部分

继续编写代码,有关如何编写代码的更多信息,请参阅 pico-examples树莓派Pico C/C++ SDK 一书。

最简单的方法是编写一个源文件(例如 hello_world.c

#include <stdio.h> #include "pico/stdio.h
#include "pico/stdlib.h"

int main() {
setup_default_uart()
printf("Hello, world!\n")
return 0
}

并在 CMakeLists.txt 中添加以下内容:

add_executable(hello_world
hello_world.c
)

# 添加聚合常用功能的 pico_stdlib 库
target_link_libraries(hello_world pico_stdlib)

# 除 ELF 文件外,创建 map/bin/hex/uf2 文件。
pico_add_extra_outputs(hello_world)
注意

本示例使用默认 UART 作为 stdout;如果要使用默认 USB,请参阅 hello-usb 示例。

设置 CMake 生成目录。例如,如果不使用集成开发环境:

mkdir build
cd build
cmake .

为树莓派Pico之外的其他板构建时,应在上述 cmake 命令中传递 -DPICO_BOARD=board_name ,例如 cmake -DPICO_BOARD=pico_w ..,以便为该特定板配置相应的 SDK 和构建选项。

这样做可以设置各种编译器定义(例如 UART 和其他硬件的默认引脚编号),在某些情况下还可以使用额外的库(例如为 PICO_BOARD=pico_w 构建时的无线支持),如果没有提供必要功能的板,就无法构建这些库。

有关 SDK 本身定义的板卡的列表,请查看此目录,其中包含每个指定板卡的头文件。

从创建的联编目录中制作目标程序。

make hello_world

现在,您可以通过调试器加载 hello_world.elf,也可以通过拖放方式在 树莓派Pico 上安装和运行 hello_world.uf2


中文翻译版以英文版相同知识授权方式共享:CC-BY-SA 4.0。交流 Q群:498908352