esp-rs/esp-hal

GitHub: esp-rs/esp-hal

esp-hal 是面向 ESP32 系列微控制器的 Rust 裸机硬件抽象层,让开发者能在不依赖操作系统的前提下安全高效地控制底层硬件外设。

Stars: 1861 | Forks: 428

esp-rs logo

esp-hal

GitHub Actions Workflow Status GitHub Actions Workflow Status MIT/Apache-2.0 licensed Matrix

面向 Espressif 设备的裸机(`no_std`)硬件抽象层。目前支持以下设备: - ESP32 系列:_ESP32_ - ESP32-C 系列:_ESP32-C2, ESP32-C3, ESP32-C6_ - ESP32-H 系列:_ESP32-H2_ - ESP32-S 系列:_ESP32-S2, ESP32-S3_ 此外,还通过 [esp-lp-hal] 包提供了对 _ESP32-C6_、_ESP32-S2_ 和 _ESP32-S3_ 上低功耗 RISC-V 核心编程的支持。 有关此仓库中任何 crate 的更多信息,请参阅相应 crate 的 `README.md` 文件。如果您有任何问题、意见或疑虑,请[创建 issue],或加入我们的 [Matrix]。 如果您当前正在生产环境中使用(或正在考虑使用)`esp-hal`,并且有任何反馈或需要支持,请随时通过 联系我们。 ## 入门指南 有关在 ESP 设备上开发 Rust 应用程序的相关信息,请先阅读 [The Rust on ESP Book]。 有关 HAL 以及如何在你自己的项目中使用它的信息,请参阅[文档]。 在浏览示例时,我们建议您查看所使用的 `esp-hal` 发行版对应的标签以确保兼容性(例如 [esp-hal-v1.0.0]),因为 `main` 分支用于开发,其 API 可能在此期间已发生更改。 ## 资源 - [The Rust Programming Language](https://doc.rust-lang.org/book/) - [The Embedded Rust Book](https://docs.rust-embedded.org/book/index.html) - [The Embedonomicon](https://docs.rust-embedded.org/embedonomicon/) - [The Rust on ESP Book](https://docs.espressif.com/projects/rust/esp-hal/latest/) - [Embedded Rust (no_std) on Espressif](https://docs.espressif.com/projects/rust/no_std-training/) ## 支持策略 所有积极的开发都将在 `main` 分支上进行。 我们只会将修复反向移植到主要版本中_最新_的次要版本。例如,这意味着我们会在 `1.2.0` 发布之前向 `1.1.x` 应用补丁(错误修复),此后所有的补丁将只反向移植到 `1.2.x` 系列版本中。 如果您是 `unstable` API 的用户,我们绝不会在补丁版本中引入破坏性更改。但是,`unstable` 的更改_确实会_进入次要版本。这意味着作为 `unstable` 用户,从 `1.1.x` 更新到 `1.2.x` _可能_会引入破坏性更改。如果您依赖于 `unstable`,我们建议您按以下方式定义您的 esp-hal 依赖: ``` esp-hal = { version = "~1.1" } ``` 使用 [`~` 运算符](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#tilde-requirements) 将防止 cargo 自动更新到次要版本,从而允许您使用 `cargo update` 而不会破坏您的项目。 ## 发布策略 我们遵循一些关于发布的通用准则: - 发布是伴随开发自然进行的,而不是按照固定的时间表进行的。下表概述了我们对每种发布类型的一般处理方式以及何时可能进行发布。 - 在发布的 `rc` 阶段: - 我们的目标是让它们在发布前至少留出一周的时间供实际环境测试。 - 如果添加了重大更改(例如新增内容),我们必须至少再延长一个 `rc` 发布周期。 | 发布类型 | 频率 | 预发布要求 | | ------------ | ---------- | ----------------------------------------------- | | 补丁 | 频繁 | 无 | | 次要版本 | 定期 | 需要 `rc` 发布 | | 主要版本 | 不频繁 | 完整的预发布周期(可跳过 `alpha`) | ## AI 贡献策略 我们遵循与官方 Rust Embedded 工作组相同的策略,请在使用 AI 工具贡献之前查阅[该策略](https://github.com/rust-embedded/wg/blob/HEAD/CODE_OF_CONDUCT.md#ai-tool-use-policy)。 ## 贡献 我们有许多不断更新的文档来辅助为本项目做贡献,请在修改代码前阅读这些文档: - [开发者指南](https://github.com/esp-rs/esp-hal/blob/main/documentation/DEVELOPER-GUIDELINES.md) - [贡献指南](https://github.com/esp-rs/esp-hal/blob/main/documentation/CONTRIBUTING.md) ## 许可证 本仓库中的所有软件包均根据以下任一许可证获得许可: - Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) 或 http://www.apache.org/licenses/LICENSE-2.0) - MIT license ([LICENSE-MIT](LICENSE-MIT) 或 http://opensource.org/licenses/MIT) 由您选择。 ### 贡献须知 除非您明确声明,否则由您提交的旨在包含在本作品中的任何贡献, 根据 Apache-2.0 许可证的定义,均应按上述方式进行双重许可,不得附带任何 额外的条款或条件。
标签:Bare-metal, ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-H2, ESP32-S2, ESP32-S3, Espressif, esp-rs, HAL, IoT, Low-power, no_std, RISC-V, Rust, 单片机, 可视化界面, 嵌入式开发, 嵌入式系统, 底层驱动, 开源硬件, 微控制器, 智能硬件, 物联网, 硬件抽象层, 系统编程, 网络流量审计, 跨平台开发, 通知系统