13 个版本 (8 个重大变更)

0.9.0 2024年4月7日
0.8.0 2023年9月2日
0.7.0 2023年2月18日
0.6.0 2022年12月11日
0.1.3 2021年2月3日

#22 in 硬件支持

Download history 2739/week @ 2024-04-27 1710/week @ 2024-05-04 1658/week @ 2024-05-11 1740/week @ 2024-05-18 1811/week @ 2024-05-25 1628/week @ 2024-06-01 1930/week @ 2024-06-08 2017/week @ 2024-06-15 1822/week @ 2024-06-22 1790/week @ 2024-06-29 1662/week @ 2024-07-06 1954/week @ 2024-07-13 2853/week @ 2024-07-20 1838/week @ 2024-07-27 2469/week @ 2024-08-03 2122/week @ 2024-08-10

9,647 每月下载量
用于 15 crate

MIT/Apache

47KB
316 代码行

rp-pico - 为 Raspberry Pi Pico 提供板级支持

如果您正在编写希望在 Raspberry Pi Pico 上运行的代码,应包含此crate - 这是RP2040芯片的原版启动PCB。

此crate包括 rp2040-hal,但还根据Pico上的连接方式配置RP2040芯片的每个引脚。

使用方法

要使用此crate,您的 Cargo.toml 文件应包含

rp-pico = "0.9.0"

在您的程序中,您需要调用 rp_pico::Pins::new 来创建一个新的 Pins 结构。这将设置所有板上设备的GPIO。有关更多详细信息,请参阅 示例 文件夹。

示例

一般说明

要编译示例,克隆 rp-hal-boards 仓库并运行

rp-hal-boards/boards/rp-pico $ cargo build --release --example <name>

您将得到一个名为 ./target/thumbv6m-none-eabi/release/examples/<name> 的ELF文件,其中 target 文件夹位于 rp-hal-boards 仓库签出的顶部。通常您还需要指定 --target=thumbv6m-none-eabi,但在此git仓库中构建示例时,这被设置为默认值。

如果您想将ELF文件转换为UF2并自动将其复制到RP2040引导加载程序导出的USB驱动器,只需将板子引导到引导加载程序模式并运行

rp-hal-boards/boards/rp-pico $ cargo run --release --example <name>

如果您遇到无法找到 elf2uf2-rs 的错误,请尝试

$ cargo install elf2uf2-rs

然后尝试重复上面的 cargo run 命令。

从头开始

要从头开始创建一个基本项目,请使用 cargo new project-name 创建项目。在项目目录中,运行 cargo add rp-picocargo add cortex-m-rtcargo add panic-halt。第一个命令将引入HAL(硬件抽象层),第二个是用于 #[entry] 宏的必需品,而 panic-halt 创建了一个简单的panic函数,它只是停止。

您还需要从 repo 复制cargo配置文件。它指定了链接器的目标和优化标志。您还需要将 memory.x 复制到您的项目根目录。此文件告知链接器闪存和RAM布局,因此它不会覆盖引导加载程序或写入超出范围的内存地址。

最简单的运行示例,它什么也不做,只是无限循环,是

#![no_std]
#![no_main]
use rp_pico::entry;
use panic_halt as _;
#[entry]
fn see_doesnt_have_to_be_called_main() -> ! {
  loop {}
}

它可以放在 /src/main.rs 中。

您可以使用 cargo run 编译并安装它。注意:由于此程序什么都不做,您不会看到任何活动。您可以使用提供的示例添加更多功能。

pico_blinky

闪烁Pico板上的LED。

pico_gpio_in_out

读取连接到GPIO 15的按钮,并使板载LED与之匹配(即按下时打开,不按下时关闭)。

pico_rtic

演示了在Raspberry Pi Pico上使用 Real-Time Interrupt-driven Concurrency Framework

pico_countdown_blinky

另一个LED闪烁示例,但使用计数模式下的定时器。

使用PWM硬件在GPIO 25输出模拟“三角波”。

pico_pwm_servo

演示使用PWM硬件处理微型伺服器。

pico_usb_serial

在Pico板上创建USB串行设备。

USB串行设备在启动时打印 HelloWorld,然后回显任何传入的字符 - 但任何小写ASCII字符都被转换为相应的uppercase字符。

pico_usb_serial_interrupt

在Pico板上创建USB串行设备,但演示了在USB数据到达时处理中断。

pico_usb_twitchy_mouse

演示模拟USB Human Input Device (HID) 鼠标。鼠标光标将上下跳动。

pico_spi_sd_card

示例说明如何使用 embedded_sdmmc crate 与Raspberry Pi Pico。

贡献

贡献使开源社区成为一个如此令人惊叹的学习、灵感和创造的地方。您所做出的任何贡献都将受到 高度赞赏

步骤如下

  1. 通过点击页面顶部的“Fork”按钮来分叉项目。
  2. 创建您的功能分支(git checkout -b feature/AmazingFeature
  3. 对代码或文档进行一些修改。
  4. 提交您的更改 (git commit -m 'Add some AmazingFeature')
  5. 推送到功能分支 (git push origin feature/AmazingFeature)
  6. 创建一个 新的拉取请求
  7. 管理员将审查拉取请求,并讨论可能需要的任何更改。
  8. 一旦所有人都满意,管理员可以合并拉取请求,您的工作将成为我们项目的一部分!

行为准则

对该仓库的贡献受 Rust 行为准则 的规范,该仓库的维护者 rp-rs 团队 承诺将介入维护该行为准则。

许可协议

本存储库的内容采用 MIT OR Apache 2.0 许可协议双许可。这意味着您可以在重新使用此代码时选择 MIT 许可证或 Apache-2.0 许可证。有关每个特定许可证的更多信息,请参阅 MITAPACHE2.0

对本项目的任何提交(例如,作为拉取请求)都必须在这些条款下提供。

依赖项

~8MB
~157K SLoC