avr-hal-template
esp-idf-template


avr-hal-template | esp-idf-template | |
---|---|---|
3 | 15 | |
146 | 472 | |
4.8% | 3.2% | |
4.2 | 7.6 | |
about 1 month ago | 9 days ago | |
Rust | CMake | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
avr-hal-template
-
New crate "panic-serial": prints panic messages to a serial port on no_std targets
What bugged me right away was that the default panic handler (panic-halt) which comes with templates like this one gives no feedback whatsoever (I realize that's a very good default, and am not suggesting at all that it gets changed).
-
Learning Embedded rust
The best way to start your own project is by using the template: https://github.com/Rahix/avr-hal-template
-
Getting Started With Embedded Development Using Rust and Arduino
cargo generate --git https://github.com/Rahix/avr-hal-template.git
esp-idf-template
-
Rust on a $5 dev board
$> cargo generate esp-rs/esp-idf-template cargo ⚠️ Favorite `esp-rs/esp-idf-template` not found in config, using it as a git repository: https://github.com/esp-rs/esp-idf-template.git 🤷 Project Name: blink 🔧 Destination: .../blink ... 🔧 project-name: blink ... 🔧 Generating template ... ✔ 🤷 Which MCU to target? · esp32c3 ✔ 🤷 Configure advanced template options? · false 🔧 Moving generated files into: `/home/josh/Playground/esp-rust/blink`... 🔧 Initializing a fresh Git repository ✨ Done! New project created /home/josh/Playground/esp-rust/blink
- Mabez Rust on Espressif chips – update
- Edge IoT with Rust on ESP: MQTT Subscriber
- Edge IoT with Rust on ESP: NTP
-
ESP32 Standard Library Embedded Rust: GPIO Interrupts
use std::sync::atomic::AtomicBool; use std::sync::atomic::Ordering; use esp_idf_hal::gpio::*; use esp_idf_hal::peripherals::Peripherals; use esp_idf_sys::{self as _}; static FLAG: AtomicBool = AtomicBool::new(false); fn gpio_int_callback() { // Assert FLAG indicating a press button happened FLAG.store(true, Ordering::Relaxed); } fn main() -> ! { // It is necessary to call this function once. Otherwise some patches to the runtime // implemented by esp-idf-sys might not link properly. See https://github.com/esp-rs/esp-idf-template/issues/71 esp_idf_sys::link_patches(); // Take Peripherals let dp = Peripherals::take().unwrap(); // Configure button pin as input let mut button = PinDriver::input(dp.pins.gpio0).unwrap(); // Configure button pin with internal pull up button.set_pull(Pull::Up).unwrap(); // Configure button pin to detect interrupts on a positive edge button.set_interrupt_type(InterruptType::PosEdge).unwrap(); // Attach the ISR to the button interrupt unsafe { button.subscribe(gpio_int_callback).unwrap() } // Enable interrupts button.enable_interrupt().unwrap(); // Set up a variable that keeps track of press button count let mut count = 0_u32; loop { // Check if global flag is asserted if FLAG.load(Ordering::Relaxed) { // Reset global flag FLAG.store(false, Ordering::Relaxed); // Update Press count and print count = count.wrapping_add(1); println!("Press Count {}", count); } } }
- ESP32 Standard Library Embedded Rust: GPIO Control
-
Embedded Rust on ESP32: compatibility issue with esp_idf_hal and embedded_hal?
fn main() -> anyhow::Result<()> { // It is necessary to call this function once. Otherwise some patches to the runtime // implemented by esp-idf-sys might not link properly. See https://github.com/esp-rs/esp-idf-template/issues/71 esp_idf_sys::link_patches(); println!("Hello, world!");
-
Rust on Esp32
There is a template for how to use Rust from an idf.py cmake project where you can incrementally add Rust to your project by calling to from C. Instructions for it are at https://github.com/esp-rs/esp-idf-template/blob/master/README-cmake.md
-
ESP32 example project
Sorry for the poor way of supporting you, I am currently at the embedded world and I can't try much to reproduce your issue. I just merged: https://github.com/esp-rs/esp-idf-template/pull/84. Which can be what you were facing, can you use the latest template and see if the issue still persists? Let me know how it goes
-
Embedded Rust on ESP32C3 Board, a Hands-on Quickstart Guide
The awesome ESP IDF Template will save us the pain of configuring a fully functional project ourselves, use it like so:
What are some alternatives?
async-avr - async/await for AVR with Rust
esp-template - A minimal esp-hal application template for use with cargo-generate
panic-serial-example
espup - Tool for installing and maintaining Espressif Rust ecosystem.
PikaPython - An ultra-lightweight Python interpreter that runs with only 4KB of RAM, zero dependencies. It is ready to use out of the box without any configuration required and easy to extend with C. Similar project: MicroPython, JerryScript.
espflash - Serial flasher utility for Espressif SoCs and modules based on esptool.py
avr-device - Register access crate for AVR microcontrollers
templates - Templates for bootstrapping a Rust TUI application with Ratatui
esp-idf-template - Template application for https://github.com/espressif/esp-idf
embuild - Build support for embedded Rust: Cargo integration with other embedded build ecosystems & tools, like PlatformIO, CMake and kconfig.
embassy - Modern embedded framework, using Rust and async.
template - Template for a generic rust project hosted on GitHub

