Rust嵌入式开发库rp2040-hal-macros的使用:Raspberry Pi Pico RP2040芯片HAL宏与硬件抽象层支持
rp2040-hal-macros
用于rp2040-hal的宏。
Entry宏
cortex-m-rt
中#[entry]
的扩展,带有rp2040特定的初始化代码。目前它只是在调用入口函数之前解锁所有自旋锁。
许可证
可以选择以下任一许可证:
- Apache License, Version 2.0 (
APACHE2.0
) - MIT license (
MIT
)
贡献
除非您明确说明,否则您有意提交的贡献将被视为上述双重许可,无需任何附加条款或条件。
安装
在项目目录中运行以下Cargo命令:
cargo add rp2040-hal-macros
或在Cargo.toml中添加:
rp2040-hal-macros = "0.1.0"
完整示例代码
// 使用rp2040-hal-macros的示例代码
#![no_std]
#![no_main]
use cortex_m_rt::entry;
use rp2040_hal_macros::entry; // 导入rp2040特定的entry宏
use panic_halt as _;
// 使用#[rp2040_hal_macros::entry]替代标准#[entry]
#[rp2040_hal_macros::entry]
fn main() -> ! {
// 初始化代码
// 这里会自动解锁所有自旋锁
// 主循环
loop {
// 你的应用代码
}
}
这个示例展示了如何使用rp2040-hal-macros
中的#[entry]
宏来初始化Raspberry Pi Pico RP2040芯片。该宏会在调用你的主函数之前处理一些RP2040特定的初始化工作,特别是解锁所有自旋锁。
注意:实际使用时需要配合其他rp2040-hal库功能一起使用。
更完整示例代码
// 更完整的RP2040 HAL宏使用示例
#![no_std]
#![no_main]
// 引入必要的库
use cortex_m_rt::entry;
use rp2040_hal_macros::entry; // 导入RP2040特定的entry宏
use panic_halt as _; // 简易panic处理
use rp2040_hal::{
clocks::init_clocks_and_plls,
gpio::Pins,
pac,
sio::Sio,
watchdog::Watchdog,
};
// RP2040硬件启动设置
#[rp2040_hal_macros::entry]
fn main() -> ! {
// 获取外围设备
let mut pac = pac::Peripherals::take().unwrap();
let core = pac::CorePeripherals::take().unwrap();
// 初始化SIO
let sio = Sio::new(pac.SIO);
// 设置时钟
let mut watchdog = Watchdog::new(pac.WATCHDOG);
let clocks = init_clocks_and_plls(
rp2040_hal::XOSC_CRYSTAL_FREQ,
pac.XOSC,
pac.CLOCKS,
pac.PLL_SYS,
pac.PLL_USB,
&mut pac.RESETS,
&mut watchdog,
)
.ok()
.unwrap();
// 初始化GPIO引脚
let _pins = Pins::new(
pac.IO_BANK0,
pac.PADS_BANK0,
sio.gpio_bank0,
&mut pac.RESETS,
);
// 主程序循环
loop {
// 在这里添加你的应用代码
// 例如闪烁LED或读取传感器
}
}
这个更完整的示例展示了如何结合rp2040-hal-macros
和rp2040-hal
库来初始化RP2040芯片的全部主要功能。它包括了:
- 时钟系统初始化
- 看门狗设置
- GPIO引脚初始化
- 基本程序结构
使用时需要确保你的Cargo.toml
中包含了所有必要的依赖项。
1 回复