
* feat: Avoid using nb::Result in spi * feat: Avoid using nb::Result in hmac * feat: Avoid using nb::Result in sha * feat: Avoid using nb::Result in usb_serial_jtag * feat: Avoid using nb::Result in adc::read_oneshot * feat: Avoid using nb::Result in rsa::ready * feat: Avoid using nb::Result in timer::wait * feat: Avoid using nb in uart and twai. Udpate examples and tests to avoid using block! * feat: Block on sha calls, remove Option<> results * feat: Block on hmac calls, remove Option<> results * fix: Clippy lints * feat: Block on spi calls, remove Option<> results * feat: Block on timer calls, remove Option<> results * feat: Block on twai calls, remove Option<> results * docs: Fix wait docstring * feat: Remove embedded_hal_nb traits * feat: Block on uart calls, remove Option<> results * feat: Remove nb stuff from usb_serial_jtag * feat: Block on rsa calls, remove Option<> results * feat: Clippy lints * feat: Make read_bytes return how many bytes it read from the fifo and fix docs/tests * fix: run_test_periodic_timer test * feat: Only remove nb from stabilizing drivers * feat: Remove unused functions * feat: Remove emnbedded-hal-nb * test: Adapt tests * docs: Update changelog and migration * test: Adapt tests * docs: Update migration guide * docs: Update migration Co-authored-by: Dániel Buga <bugadani@gmail.com> * docs: Update changelog and migration guide * feat: Make `write_bytes` return an Result --------- Co-authored-by: Dániel Buga <bugadani@gmail.com>
esp-hal
Bare-metal (no_std
) hardware abstraction layer for Espressif devices. Currently supports, to varying degrees, the following devices:
- ESP32 Series: ESP32
- ESP32-C Series: ESP32-C2, ESP32-C3, ESP32-C6
- ESP32-H Series: ESP32-H2
- ESP32-S Series: ESP32-S2, ESP32-S3
Additionally provides limited support for programming the low-power RISC-V cores found on the ESP32-C6, ESP32-S2, and ESP32-S3 via the esp-lp-hal package.
For additional information regarding any of the crates in this repository, please refer to the relevant crate's README.md
file. If you have any questions, comments, or concerns, please open an issue, start a new discussion, or join us on Matrix.
If you are currently using (or considering using) esp-hal
in a production environment and have any feedback or require support, please feel free to contact us at rust.support@espressif.com.
Note
This repository includes crates that are at various stages of maturity and stability. While many functionalities have already been implemented and are usable for most tasks, certain advanced or less common features may still be under development. Each crate may offer different levels of functionality and guarantees.
Getting Started
For information relating to the development of Rust applications on ESP devices, please first read The Rust on ESP Book.
For information about the HAL and how to use it in your own projects, please refer to the documentation.
When browsing the examples, we recommend viewing the tag for the esp-hal
release you are using to ensure compatibility, e.g. v0.23.1, as the main
branch is used for development and APIs may have changed in the meantime.
Resources
- The Rust Programming Language
- The Embedded Rust Book
- The Embedonomicon
- The Rust on ESP Book
- Embedded Rust (no_std) on Espressif
Contributing
We have a number of living documents to aid contributing to the project, please give these a read before modifying code:
License
All packages within this repository are licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution notice
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.