#mcu #embedded-hal #py32 #abstraction-layer

无std bind-hal

使用绑定实现的MCU HALs,目前支持PY32

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

Download history 88/week @ 2024-07-15 11/week @ 2024-07-22 4/week @ 2024-07-29 468/week @ 2024-08-12

每月下载量486

自定义许可

68KB
1.5K SLoC

bind-hal

Crates.io

本项目旨在提供更完整的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