pub struct Swt<T> { /* private fields */ }
Expand description
软件定时器对象结构体
Implementations§
source§impl<T> Swt<T>
impl<T> Swt<T>
sourcepub fn once(&'static self, origin: XwTm, period: XwTm, cb: fn(_: &Swt<T>))
pub fn once(&'static self, origin: XwTm, period: XwTm, cb: fn(_: &Swt<T>))
启动软件定时器,并且软件定时器只运行一次
软件定时器的超时时间由 origin
+ period
决定。
origin
是时间的起点, period
是时间的增量。
超时后,回调函数 cb
会被调用,且 cb
运行在中断上下文或中断底半部上下文。其中不可使用任何会导致阻塞睡眠的方法。
例如 Mutex::lock()
, Sem::wait()
, cthd::sleep()
, println!()
等。
cb
只能是函数或不捕获任何东西的闭包。
§参数说明
- origin: 时间的起点
- period: 时间的增量
- cb: 定时器回调函数
§示例
pub fn xwrust_example_swt() {
SWT.once(xwtm::now(), xwtm::ms(200), |swt| {
// 回调函数
});
}
sourcepub fn repeat(&'static self, origin: XwTm, period: XwTm, cb: fn(_: &Swt<T>))
pub fn repeat(&'static self, origin: XwTm, period: XwTm, cb: fn(_: &Swt<T>))
启动软件定时器,并且软件定时器可重复运行
软件定时器的超时时间由 origin
+ period
决定。
origin
是时间的起点, period
是时间的增量。
超时后软件定时器会在超时的时间点上再次增加 period
重启软件定时器并执行回调函数 cb
,
也就是 cb
会以 period
为周期重复执行。
回调函数 cb
运行在中断上下文或中断底半部上下文。其中不可使用任何会导致阻塞睡眠的方法。
例如 Mutex::lock()
, Sem::wait()
, cthd::sleep()
, println!()
等。
cb
只能是函数或不捕获任何东西的闭包。
§参数说明
- origin: 时间的起点
- period: 时间的增量
- cb: 定时器回调函数
§示例
pub fn xwrust_example_swt() {
SWT.repeat(xwtm::now(), xwtm::ms(200), |swt| {
// 回调函数
});
}