7个不稳定版本

0.4.1 2022年12月5日
0.4.0 2022年9月11日
0.3.0 2022年1月26日
0.2.2 2020年4月23日
0.1.0 2017年7月22日

#717 in 嵌入式开发

Download history 130/week @ 2024-03-14 167/week @ 2024-03-21 210/week @ 2024-03-28 117/week @ 2024-04-04 165/week @ 2024-04-11 248/week @ 2024-04-18 163/week @ 2024-04-25 139/week @ 2024-05-02 150/week @ 2024-05-09 165/week @ 2024-05-16 138/week @ 2024-05-23 178/week @ 2024-05-30 90/week @ 2024-06-06 137/week @ 2024-06-13 177/week @ 2024-06-20 66/week @ 2024-06-27

每月499次下载
用于53个crate (20 直接)

MIT/Apache

16KB
185

crates.io crates.io

msp430

对MSP430微控制器的低级访问

此crate基于Jorge Aparicio (@japaric)的cortex-m crate。

此crate由于使用了新的asm! (0.3.0及以上版本), llvm_asm! (0.2.2)或旧的asm! (0.2.1及以下版本)宏,因此需要nightly rust。以下表格包含已知可工作的编译器

msp430版本 rustc编译器
0.3.0 nightly-2022-01-24
0.2.2 nightly-2020-04-22
0.2.1 nightly-2020-01-04

特性

critical-section-single-core特性提供了一个基于禁用中断的临界区实现。

通过禁用中断来访问临界区是安全访问I/O和共享数据的有价值方法。然而,rustc/LLVM并不总是很好地优化临界区以节省空间。例如,有时rustc/LLVM会在退出包含分支的临界区时创建两个中断启用汇编代码副本——一个用于分支已执行/未执行。

此crate提供了三个特性,以向rustc/LLVM提供有关如何优化临界区以节省空间的提示。支持使用和未使用上述critical-section特性的critical_section::withinterrupt::free临界区。

  • outline-cs-acq:提示给rustc/LLVM,每个临界区入口应调用单个acquire函数(禁用中断)。
  • outline-cs-rel:提示给rustc/LLVM,每个临界区退出应调用单个release函数(如果不在嵌套的临界区中,则启用中断)。
  • outline-cs:同时启用上述两个功能的便利特性。

如果您的应用程序中节省空间是一个关注点,您应该尝试哪种功能可以提供最佳的大小节省,并权衡由于概述而产生的额外函数调用的执行开销。启用每个提示的执行开销约为每个临界区5 + 2个时钟周期 - 至少一个CALLRET指令。

文档

许可证

许可方式:

任选其一。

贡献

除非您明确声明,否则您提交给包括在作品中并由Apache-2.0许可证定义的任何贡献,将按照上述方式双许可,无需任何附加条款或条件。

依赖

~32KB