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 硬件支持
9,647 每月下载量
用于 15 crate
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-pico
、cargo add cortex-m-rt
和 cargo 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闪烁示例,但使用计数模式下的定时器。
pico_pwm_blink
使用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。
贡献
贡献使开源社区成为一个如此令人惊叹的学习、灵感和创造的地方。您所做出的任何贡献都将受到 高度赞赏。
步骤如下
- 通过点击页面顶部的“Fork”按钮来分叉项目。
- 创建您的功能分支(
git checkout -b feature/AmazingFeature
) - 对代码或文档进行一些修改。
- 提交您的更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到功能分支 (
git push origin feature/AmazingFeature
) - 创建一个 新的拉取请求
- 管理员将审查拉取请求,并讨论可能需要的任何更改。
- 一旦所有人都满意,管理员可以合并拉取请求,您的工作将成为我们项目的一部分!
行为准则
对该仓库的贡献受 Rust 行为准则 的规范,该仓库的维护者 rp-rs 团队 承诺将介入维护该行为准则。
许可协议
本存储库的内容采用 MIT OR Apache 2.0 许可协议双许可。这意味着您可以在重新使用此代码时选择 MIT 许可证或 Apache-2.0 许可证。有关每个特定许可证的更多信息,请参阅 MIT
或 APACHE2.0
。
对本项目的任何提交(例如,作为拉取请求)都必须在这些条款下提供。
依赖项
~8MB
~157K SLoC