3 个不稳定版本
0.1.1 | 2023 年 9 月 7 日 |
---|---|
0.1.0 | 2021 年 8 月 27 日 |
0.0.1 | 2021 年 8 月 12 日 |
#1730 在 嵌入式开发
245KB
4K SLoC
nRF-HAL
此库提供了对 nRF-52 和 nRF-53 外设的高级访问。使用与 STM32-HAL 类似的 API;设计为可互换。
不支持旧版功能
此库不支持 TWI、SPI 和 UART 外设;它只支持它们的新版替代品:TWIM[S]、SPIM[S] 和 UARTE。
缺少许多功能
目前,此库旨在用于使用 nRF-52 的 AnyLeaf 项目所需的特定功能。将来某个时候可能会将其扩展为更通用,但这不在短期路线图上。请改用 nrf-rs 库。
目前基于 nrf-rs,大部分代码直接从中提取。
使用 ESB 库 用于 Nordic ShockBurst 无线通信。
(目前未实现,但可以在用户代码中设置时兼容。)
入门
红外温度发射器示例 是一个完整的简单生产固件示例。它使用 TWIM、定时器、RTC 和无线外围设备,使用 ESB 协议定期发送温度。它适用于长时间运行、电池供电的使用。
当在 Cargo.toml
中指定此 crate 作为依赖项时,您需要指定代表您的 MCU 的功能。如果是直接在 MCU 上运行的代码(即不是库),则还需要包含一个运行时功能,格式如下 52840-rt
。例如
cortex-m = "0.7.3"
cortex-m-rt = "0.6.13"
nrf-hal = { version = "^0.1.0", features = ["52840", "52840-rt"]}
如果您需要 embedded-hal
特性,请包含 embedded-hal
功能。
红外温度发射器示例 是一个完整的简单生产固件示例。它使用 TWIM、定时器、RTC 和无线外围设备,使用 ESB 协议定期发送温度。它适用于长时间运行、电池供电的使用。
示例亮点
use cortex_m::{self, asm};
use cortex_m_rt::entry;
use nrf_hal::{
clocks::Clocks,
gpio::{Pin, Port, Dir, Drive},
twim::{Twim, TwimFreq},
pac,
timer::{Timer, TimerMode},
};
#[entry]
fn main() -> ! {
let mut dp = pac::Peripherals::take().unwrap();
let _clocks = Clocks::new(dp.CLOCK);
let mut p15 = Pin::new(Port::P0, 15, Dir::Output);
p15.set_high();
let mut timer = Timer::new(dp.TIMER1, TimerMode::Timer, 1., 0);
timer.enable_interrupt(0);
let mut scl = Pin::new(Port::P0, 0, Dir::Input);
scl.drive(Drive::S0D1);
let mut sda = Pin::new(Port::P0, 1, Dir::Input);
sda.drive(Drive::S0D1);
let twim = Twim::new(dp.TWIM0, &scl, &sda, TwimFreq::K100);
loop {
asm::wfi();
}
}
依赖关系
~4–14MB
~361K SLoC