#interrupt #crossbeam #hal #traits #run #package-manager #connect

nightly interrupture

一个类似于 crossbeam 的HAL trait 用于中断处理

2个版本

0.1.1 2019年4月29日
0.1.0 2019年4月29日

#1415 in 硬件支持


用于 interrupture-stm32f7x6

MIT/Apache

20KB
213

stm32f7-discovery

构建

  • 安装 thumbv7em-none-eabihf 目标:运行 rustup target add thumbv7em-none-eabihf.
  • 运行 cargo build

运行

首先需要安装一些依赖

然后您可以连接控制器并运行以下命令

  • 启动 openocd:在单独的终端窗口中,运行 openocd -f board/stm32f7discovery.cfg。您可能需要 sudo。如果您收到 "Can't find board/stm32f7discovery.cfg" 错误,则您的 openocd 版本可能太旧(它应该至少是 0.10.0)。
  • 运行 cargo run:这将连接到 openocd 实例并将您的二进制文件闪存到控制器。
  • 继续执行:默认情况下,GDB 在加载后暂停执行。要继续您的程序,请运行 continuec

要按发布模式运行(即带有优化),请运行 cargo run --release.

许可

根据您的要求,许可方式为

任选其一。

贡献

除非您明确声明,否则您根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,应按上述方式双授权,不附加任何额外条款或条件。


lib.rs:

安全和“无数据竞争”的中断系统。

中断系统特性包括:

  • 基于所有权的中断管理。中断表(InterruptTable)拥有nvic寄存器,因此它是唯一可以访问和更改中断控制器的一个。

  • 易于使用的基于闭包的ISR注册。闭包可以被注册为中断服务例程。

  • 无数据竞争。得益于Rust中的SendSync概念,中断系统无数据竞争。对一个变量的共享可变访问必须与PrimaskMutex同步,否则编译会失败。

  • 带有对环境访问的有限范围ISR。保证闭包在作用域结束时会被注销。因此,在中断服务例程中访问父栈是安全的。

依赖关系

~30KB