如何在 Rust 中访问系统计时器中断



似乎 Rust 有一种简单的方法来访问系统计时器中断,但是,唉,我没有找到它。

我正在从Raspberry Pi Compute 3+模块运行步进电机,Debian通过Rust lang实现。我需要"脉冲"GPIO引脚来移动步进电机(基本上是PWM)。

在粒子的光子上,这是这样完成的:

Timer timerPeriodic(100, []() {   pulseStepper();   });
timerPeriodic.start();

这将每秒执行 10 次。我在 Rust 中需要这样的东西。

是的,我知道我可以设置一个循环并使用如下内容进行持续轮询:

if (millis() - this->old_time >= this->speed) { ... }

但我宁愿远离轮询并使用事件驱动的架构(当然,我愿意接受为什么在这种情况下轮询可能更好的建议)。

虽然不清楚它在实现中使用了系统计时器中断,但以下内容可能适合您的需求。

let timer = timer::Timer::new();

let _guard = timer.schedule_repeating(chrono::Duration::milliseconds(100), move || {
pulseStepper();
});

有关更多详细信息,请参阅文档中的文档

https://docs.rs/timer/latest/timer/struct.Timer.html

最新更新