跳到主要内容

Raspberry Pi Pico C/C++ 开发入门教程

本教程将介绍如何使用 Pico VS Code 扩展进行 C/C++ 开发,并指导您配置基于 Pico SDK 的 C/C++ 开发环境。

重要提示:关于开发板的兼容性

本教程的核心逻辑适用于所有 RP2040、RP2350 系列开发板,但所有操作步骤均以 Raspberry Pi Pico 2 为例进行讲解。如果您使用其他型号的开发板,请根据实际情况修改相应设置。

1. 什么是 Pico C/C++ 开发​

Raspberry Pi Pico 的 C/C++ 开发基于官方的 Pico SDK,这是一套专为 RP2040、RP2350 等系列芯片设计的 C/C++ 软件开发工具包。Pico SDK 提供了丰富的 API 库,用于控制 GPIO、I2C、SPI、PWM、ADC 等外设,以及多核处理、定时器、DMA 等高级功能。

为了简化 C/C++ 开发环境的搭建和使用,Raspberry Pi 官方推出了 Pico VS Code 扩展。该扩展集成了以下功能:

  • 一键安装:自动安装和管理 Pico SDK、CMake、编译工具链等开发依赖
  • 工程管理:通过图形化向导快速创建、导入和配置 C/C++ 工程
  • 编译构建:集成 CMake 和 Ninja 构建系统,一键编译生成 UF2 固件
  • 烧录调试:支持 UF2 固件烧录,并可通过 OpenOCD 实现断点调试、单步执行和变量查看
  • 跨平台支持:在 Windows、macOS 和 Linux 上提供统一的开发体验
适用范围
  • 本教程适用于树莓派 Pico、Pico 2 与微雪电子开发的所有 RP 系列开发板
  • 安装教程默认以 Windows 11 为例,其他操作系统请参考 树莓派官方教程

2. 安装 Visual Studio Code 编辑器​

  1. 下载并安装 Visual Studio Code。

  2. 安装时建议勾选 通过 Code 打开操作添加到 Windows 资源管理器文件上下文菜单, 以便快速打开项目文件夹。

    提示

    如果已安装 VS Code,注意检查版本是否为 v1.87.0 或更高版本

3. 安装 Pico 扩展​

  1. 点击下载并解压 pico-vscode 安装包

  2. 打开 VS Code,点击扩展,选择从 VSIX 安装

  3. 选择 pico-vscode 安装包中 vsix 后缀文件,点击安装

  4. 随后 VS Code 会自动安装 Raspberry Pi Pico 及其依赖扩展,可以点击刷新查看安装进度

  5. 完成安装后,右下角会弹出提示

  6. 安装包提供的扩展版本为 0.21.0,可根据需要更新至最新版本

4. 配置 C/C++ 开发环境​

  1. 打开 C:\Users\用户名 目录,将安装包中整个 .pico-sdk 拷贝至该目录

  2. 拷贝完成,效果如下

  3. 打开 VS Code,对 Raspberry Pi Pico 扩展中各个路径进行配置

    配置如下:

    Cmake Path:
    ${HOME}/.pico-sdk/cmake/v3.28.6/bin/cmake.exe

    Git Path:
    ${HOME}/.pico-sdk/git/cmd/git.exe

    Ninja Path:
    ${HOME}/.pico-sdk/ninja/v1.12.1/ninja.exe

    Python3 Path:
    ${HOME}/.pico-sdk/python/3.12.1/python.exe

5. 创建 C/C++ 工程​

  1. 配置完成后,可以创建一个新工程进行测试。输入工程名称、选择保存路径,然后点击 Create 创建工程。如需使用官方示例代码,可以点击工程名旁的 Example 进行选择

  2. 成功创建工程

6. 编译 C/C++ 工程​

  1. 首次编译时,需要选择 Pico SDK 版本,安装包中已包含 Pico SDK 2.0、2.2 和 2.3 版本

  2. 选择 Yes 进行高级配置

  3. 选择交叉编译工具链:

    • ARM 核心工具链(支持 RP2040、RP2350 系列开发板):
      • 13.2.Rel1
      • 14_2_Rel1
      • 15_2_Rel1
    • RISC-V 核心工具链(支持 RP2350 系列开发板):
      • RISCV.13.3
      • RISCV_ZCB_RPI_2_2_0_3
      • RISCV_ZCB_RPI_2_3_0_0

    根据您的开发板和需求选择对应的工具链

  4. CMake 版本选择 Default(使用前面配置的路径)

  5. Ninja 构建工具版本选择 Default(使用前面配置的路径)

  6. 选择开发板

  7. 配置完成后,点击 Compile 按钮开始编译

  8. 编译成功后,会在工程的 build 目录下生成 .uf2 格式的固件文件

7. 烧录固件​

提供两种方法将编译好的固件烧录到开发板:

  1. 使用 Pico VS Code 插件烧录

    将开发板通过 USB 连接到电脑,然后点击 Run 按钮直接烧录固件

  2. 手动烧录固件

    1. 按住开发板上的 BOOT 按键
    2. 将开发板通过 USB 连接到电脑
    3. 电脑会将开发板识别为一个 U 盘设备
    4. 将 uf2 格式的固件文件拖拽到 U 盘中
    5. 设备会自动重启,完成固件烧录

8. 导入 C/C++ 工程​

  1. 在 Pico VS Code 插件中选择导入工程,然后选择工程所在的目录

  2. 注意事项:导入的工程中,CMakeLists.txt 文件不能包含中文(包括注释),否则可能导致导入失败

  3. 开发板配置:导入工程后,需要检查 CMakeLists.txt 文件是否包含开发板配置代码。只有包含以下配置,才能正常切换 Pico 和 Pico 2:

    set(PICO_BOARD pico2 CACHE STRING "Board type")
    提示

    如果 CMakeLists.txt 中没有此配置,即使在 VS Code 中选择了 Pico 2,编译出的固件仍然是针对 Pico 的

9. 调试 C/C++ 工程​

Pico/Pico 2 支持外接调试器进行程序烧录及调试,方便进行断点分析和运行状态查看。调试 Pico/Pico 2 需通过 SWD(Serial Wire Debug)接口配合外部调试器使用。

您可以选择 RP2350-GEEK、Raspberry Pi Debug Probe 或 Pico/Pico 2 开发板作为外部调试器,下面我们介绍使用不同调试器,连接 Pico/Pico 2 的调试接口进行程序烧录及调试的步骤。

  1. 硬件连接

    RP2350-GEEK 是一款微雪 (Waveshare) 为极客设计的开发板,板载 USB-A 公口、1.14 寸 LCD 屏幕、Micro SD 卡槽等外设,并引出了 SWD 接口、UART 接口和 I2C 接口。烧录对应 Debugprobe 固件 后,RP2350-GEEK 将转换为 USB → SWD 和 UART 桥接器,连接 Pico/Pico 2 调试时按下图方式进行连接。

    RP2350-GEEK (左) Pico (右),详细的连接关系如下:

    RP2350-GEEK GND -> Pico GND
    RP2350-GEEK GP2 -> Pico SWCLK
    RP2350-GEEK GP3 -> Pico SWDIO
    RP2350-GEEK GP4/UART1 TX -> Pico GP1/UART0 RX
    RP2350-GEEK GP5/UART1 RX -> Pico GP0/UART0 TX
  2. 导入工程

    在新建或导入工程时,选择 DebugProbe 调试方式

  3. 烧录程序

    连接调试器后,可以直接使用调试器烧录程序

    • ①进入 Pico VS Code 插件页面
    • ②点击 SWD 烧录程序
  4. 调试程序

    • ①点击调试程序
    • ②选择 Pico Debug
  5. 界面说明

    • ①重启设备
    • ②继续运行程序
    • ③单步执行
    • ④进入函数运行
    • ⑤跳出函数运行
    • ⑥重新开始调试
    • ⑦停止调试
    • ⑧串口监视器
    • ⑨变量窗口
    • ⑩监视窗口
  6. 断点调试

    • ①点击行号前可添加或删除断点
    • ②调试过程中可随时添加或删除断点
    • ③在多核调试时使用断点可以在多个核心间切换

10. 参考链接​