mbed开发中,Timeout类的detach()作用是什么?
本帖最后由 adlu 于 2016-11-24 18:23 编辑NUCLEO-F103RB有一个例程中,定义了一个类Timeout timer;
然后有个函数调用timer.detach();(第25行)
请问是什么作用?全部代码如下
#include "mbed.h"
Timeout timer;
DigitalOut my_led(LED1);
DigitalOut my_pwm(D10); // IO used by pwm_io function
int on_delay = 0;
int off_delay = 0;
void toggleOff(void);
void toggleOn(void) {
my_pwm = 1;
timer.attach_us(toggleOff, on_delay);
}
void toggleOff(void) {
my_pwm = 0;
timer.attach_us(toggleOn, off_delay);
}
// p_us = signal period in micro_seconds
// dc = signal duty-cycle (0.0 to 1.0)
void pwm_io(int p_us, float dc) {
timer.detach();
if ((p_us == 0) || (dc == 0)) {
my_pwm = 0;
return;
}
if (dc >= 1) {
my_pwm = 1;
return;
}
on_delay = (int)(p_us * dc);
off_delay = p_us - on_delay;
toggleOn();
}
int main() {
pwm_io(20000, 0.25); // 20ms - 25%
while(1) {
my_led = !my_led;
wait(0.5);
}
}
取消本对象需要执行的函数,调用detach()之后,你就可以再次调用attach来更换超时执行的函数。 党国特派员 发表于 2016-11-24 16:46
取消本对象需要执行的函数,调用detach()之后,你就可以再次调用attach来更换超时执行的函数。 ...
好像明白了点。
谢谢解答!
页:
[1]