19 个版本 (10 个重大更新)
0.13.0 | 2024年5月5日 |
---|---|
0.12.0 | 2023年11月16日 |
0.11.1 | 2023年7月14日 |
0.7.0 | 2022年8月29日 |
0.1.3 | 2021年3月6日 |
#139 在 硬件支持
34KB
572 行
嵌入式 HAL 兼容层
一个用于在不同嵌入式-hal 版本之间平滑过渡的兼容层(特别是 0.2.x
和 1.0.0-alpha.X
系列)。
这解决了 HAL 实现(即您的处理器的实现)和您打算使用的驱动程序不匹配的问题。
该 crate 旨在跟踪 1.0.0-alpha
版本,并在发布时更新到 1.0.0
,在 1.0.0-alpha.x
发布之间不提供适配(尽管如果认为这样做值得,我们 可以 做到这一点)
支持的版本
由于 1.0.0-alpha
的变化,每个 embedded-hal-compat
版本支持一个(左右)对 e-h 发布,请使用
embedded-hal-compat = "0.13.0"
对于=1.0.0
和^0.2.7
嵌入式-hal-兼容= "0.12.0"
对应于=1.0.0-rc.1
和^0.2.7
嵌入式-hal-兼容= "0.11.0"
对应于=1.0.0-alpha.11
和^0.2.7
嵌入式-hal-兼容= "0.10.0"
对应于=1.0.0-alpha.10
和^0.2.7
嵌入式-hal-兼容= "0.7.0"
对应于=1.0.0-alpha.8
和^0.2.4
嵌入式-hal-兼容= "0.6.0"
对应于=1.0.0-alpha.7
和^0.2.4
嵌入式-hal-兼容= "0.5.0"
对应于=1.0.0-alpha.6
和^0.2.4
嵌入式-hal-兼容= "0.4.0"
对应于=1.0.0-alpha.5
和^0.2.4
嵌入式-hal-兼容= "0.3.0"
用于=1.0.0-alpha.4
和^0.2.4
状态
并非所有包装器都已完全实现,如果您发现缺少某些功能,请随时提交一个PR!
如何使用此工具
- 将
嵌入式-hal-兼容
添加到您的依赖项中 - 使用
use embedded_hal_compat::{ForwardCompat, ReverseCompat};
导入 - 在任意的
嵌入式-hal
类型不匹配上虚拟添加.forward()
或.reverse()
- 有关更多信息,请参阅 docs.rs
我如何知道我需要这个?
类型错误。很多类型错误。
(例如,使用 cargo tree -i embedded-hal
返回两个版本)
这被诅咒了吗?!
至少有一点,因为特质的名称相同,您可能会遇到一些诅咒的错误,我们不得不在错误和错误类型周围的一些差异上铺路...
什么类型的错误?
因为您可能具有具有相同名称的符号,您最终会得到像这样的错误
error[E0599]: no method named `delay_ms` found for mutable reference `&mut Compat<atsamd_hal::delay::Delay>` in the current scope
--> src/main.rs:351:27
|
351 | tlv.inner_delay().delay_ms(10u32);
| ^^^^^^^^ method not found in `&mut Compat<atsamd_hal::delay::Delay>`
warning: unused import: `embedded_hal::blocking::delay::DelayMs`
--> src/main.rs:22:5
|
22 | use embedded_hal::blocking::delay::DelayMs;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
建议您缺少一个显然存在的导入,因为您有 0.2.x
导入而不是 1.0.0-alpha.x
导入,并且方法在更新后的 HAL 中被调用为 try_delay_ms
(一个相当常见的重命名)。
您可以通过导入正确的特质来修复此问题,例如: use embedded_hal_compat::eh1_0::blocking::delay::{DelayMs as _};
(这必须使用 as
重命名,您不能使用预定义,因为名称重叠),并通过交换方法以使用正确的 try_
名称。
依赖项
~240KB