HAL crates
HAL crates for many microcontrollers provide wrappers around various peripherals. These generally implement traits from embedded-hal.
#![no_main]#![no_std]extern crate panic_halt as _;use cortex_m_rt::entry;use embedded_hal::digital::OutputPin;use nrf52833_hal::gpio::{p0, Level};use nrf52833_hal::pac::Peripherals;#[entry]fn main() -> ! {let p = Peripherals::take().unwrap();// Create HAL wrapper for GPIO port 0.let gpio0 = p0::Parts::new(p.P0);// Configure GPIO 0 pins 21 and 28 as push-pull outputs.let mut col1 = gpio0.p0_28.into_push_pull_output(Level::High);let mut row1 = gpio0.p0_21.into_push_pull_output(Level::Low);// Set pin 28 low and pin 21 high to turn the LED on.col1.set_low().unwrap();row1.set_high().unwrap();loop {}}
set_lowandset_highare methods on theembedded_halOutputPintrait.- HAL crates exist for many Cortex-M and RISC-V devices, including various STM32, GD32, nRF, NXP, MSP430, AVR and PIC microcontrollers.
Run the example with:
cargo embed --bin hal