#hardware #stm32f4 #driver #sensors #reusable #composable #devices

bin+lib multi-mission-library-rs

该包旨在存放可组合、可重用的各种传感器和硬件输出设备的驱动程序代码/封装。目前它不支持不同的STM32型号,仅支持STM32F4,但未来将会支持。

3个版本

0.1.2 2024年2月13日
0.1.1 2024年2月13日
0.1.0 2024年2月11日

#657 in 硬件支持

MIT 许可证

26KB
548

多任务库(rs)

该包旨在存放可组合、可重用的各种传感器和硬件输出设备的驱动程序代码/封装。目前它不支持不同的STM32型号,仅支持STM32F4,但未来将会支持。

仓库结构

顶级

src 目录中的顶级模块是为可能需要驱动程序的设备的不同类别。目前只有一个 sensor 模块,但其他示例可以是 stepper_motorservodisplay 等。

二级

在顶级模块中,还有更具体的模块,但仍具有一定的通用性。例如,可以放入 sensor 模块中的模块有 barometerimumagnetometer 等。这些模块每个至少定义一个trait来定义所有子模块将遵循的行为。例如,在 barometer 模块中有一个 Barometer trait,它定义了所有气压计使用的功能,例如读取压力、温度和确定海拔。

三级

在下一级嵌套中,我们有针对特定硬件的模块。例如,在 sensor::barometer::bmp180 中有一个专门针对BMP180气压传感器的模块。该模块实现了上面模块中定义的所有trait,因此在这种情况下,它会实现 SensorBarometer trait。这允许具有极高的可预测性功能,并且在不修改任何代码的情况下(假设已经为新传感器编写了驱动程序)可以在物理传感器之间切换。

附加说明

当然,之前描述的一切都只是一个人(我自己)设定的初步指南。随着更多的人开始为这个包做出贡献,以及不同的子团队使用此代码为其项目服务,代码结构和指南将会(并且应该)发生变化。

要查看如何使用Rust编程STM32的工具链模板仓库,请参阅此链接

Blackpill 开发板特别说明

串行:

虽然该板子上确实包含USB端口,但我还没有能在Windows中将它枚举为USB设备。目前,将使用外部FTDI串行到UART桥接器进行USB通信。为了使其工作,时钟速率必须设置为25MHz。

依赖项

~54MB
~1.5M SLoC