7个版本
0.3.2 | 2024年8月15日 |
---|---|
0.3.1 | 2024年8月15日 |
0.2.1 | 2024年8月13日 |
0.1.1 | 2024年8月12日 |
0.1.0 | 2024年7月19日 |
在无标准库中排名第79
每月下载量486次
68KB
1.5K SLoC
bind-hal
本项目旨在提供更完整的HAL(硬件抽象层)。
本项目使用厂商提供的C SDK,通过绑定操作外设,然后对这些C API进行包装,以便在Rust中方便使用。
用户也可以直接使用FFI执行复杂操作,而无需操作寄存器。
支持的MCU
---PY32F0xx系列---
Puya PY32F002A, PY32F003, PY32F030
Xinlinggo XL32F003*, XL32F002A*
Luat AIR001
外设/功能 | 绑定 | 易于使用的函数 | 嵌入式-HAL |
---|---|---|---|
GPIO | ✔ | ✔ | ✔ |
RCC | ✔ | ✔ | ✖ |
电源 | ✔ | ✔(仅休眠/停止) | ✖ |
PWM/TIMER | ✔ | ||
RTC | ✔ | ||
WDG | ✔ |
外设/功能 | 绑定 | 易于使用的函数 | 嵌入式-HAL | 嵌入式-Async | 轮询 | DMA | IT |
---|---|---|---|---|---|---|---|
EXTI | ✔ | ✔ | ✔ | ✔ | ✖ | ✖ | ✔ |
I2C | ✔ | ✔ | ✔ | ✔ | |||
ADC | ✔ | ✔(仅轮询) | ✖ | ✖ | ✔ | ✔ | |
USART | ✔ | WIP | |||||
SPI | ✔ | ||||||
LED | ✔ | ||||||
✖: mcu或嵌入式-hal不支持
WIP: 进行中
其他
中断(cortex-m-rt) | Embassy 时间驱动 | HAL-Ticks |
---|
为什么使用绑定?
以STM32为例,有许多优秀的HAL: embassy stm32-rs
该crate的性能、ROM和RAM使用量远低于这些HAL。
然而,大多数Rust HAL由社区或爱好者维护,并且没有厂商支持。特别是对于用户较少的微控制器,维护HAL的人很少,最终只能使用基本功能。
该crate维护较少,无需处理寄存器。即使有未包装的函数,其他人也可以轻松补充或直接调用FFI。
在不久的将来,该crate将主要更新类似STM32 HAL CSDK的微控制器的SDK,旨在在类似的SDK上重用代码。
py32csdk-hal-sys
py32的CSDK和绑定维护在此: py32csdk-hal-sys,该包已包括预编译的静态库文件和bindings.rs
,以便快速使用。但是,如果您想重新编译并生成绑定,将会麻烦,请查看其文档。您需要启用recompile
功能。
依赖项
~7MB
~115K SLoC