mirror of
https://github.com/esp-rs/esp-idf-hal.git
synced 2025-09-29 21:31:17 +00:00

* Upgrade to e-hal 1.0-rc1 * e-hal is no longer alpha * Fix for ESP IDF < 5 * Unite all delay impls in a single module * Model delays between transactions * SPI: Make queueing it a bit more readable * SPI: Plug delays * Shorten the threshold for the Delay provider * Clippy * Fix the examples * SPI: Detect last transaction in the presence of delays * SPI: Introduce CsPin * SPI: Introduce CsPin * SPI: Mark delays with TODO * Clippy * SPI: Rename CsPin to CsCtl * Transfer_transaction not necessary
34 lines
1.0 KiB
Rust
34 lines
1.0 KiB
Rust
//! Turn an LED on/off depending on the state of a button
|
|
//!
|
|
//! This assumes that a LED is connected to GPIO4.
|
|
//! Additionally this assumes a button connected to GPIO9.
|
|
//! On an ESP32C3 development board this is the BOOT button.
|
|
//!
|
|
//! Depending on your target and the board you are using you should change the pins.
|
|
//! If your board doesn't have on-board LEDs don't forget to add an appropriate resistor.
|
|
|
|
use esp_idf_hal::delay::FreeRtos;
|
|
use esp_idf_hal::gpio::*;
|
|
use esp_idf_hal::peripherals::Peripherals;
|
|
|
|
fn main() -> anyhow::Result<()> {
|
|
esp_idf_hal::sys::link_patches();
|
|
|
|
let peripherals = Peripherals::take().unwrap();
|
|
let mut led = PinDriver::output(peripherals.pins.gpio4)?;
|
|
let mut button = PinDriver::input(peripherals.pins.gpio9)?;
|
|
|
|
button.set_pull(Pull::Down)?;
|
|
|
|
loop {
|
|
// we are using thread::sleep here to make sure the watchdog isn't triggered
|
|
FreeRtos::delay_ms(10);
|
|
|
|
if button.is_high() {
|
|
led.set_low()?;
|
|
} else {
|
|
led.set_high()?;
|
|
}
|
|
}
|
|
}
|