你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

mbed开发中,Timeout类的detach()作用是什么?

[复制链接]
adlu 提问时间:2016-11-24 14:33 /
本帖最后由 adlu 于 2016-11-24 18:23 编辑

NUCLEO-F103RB有一个例程中,定义了一个类Timeout timer;
然后有个函数调用timer.detach();(第25行)
请问是什么作用?全部代码如下
  1. #include "mbed.h"

  2. Timeout timer;
  3. DigitalOut my_led(LED1);
  4. DigitalOut my_pwm(D10); // IO used by pwm_io function

  5. int on_delay = 0;
  6. int off_delay = 0;

  7. void toggleOff(void);

  8. void toggleOn(void) {
  9.     my_pwm = 1;
  10.     timer.attach_us(toggleOff, on_delay);
  11. }

  12. void toggleOff(void) {
  13.     my_pwm = 0;
  14.     timer.attach_us(toggleOn, off_delay);
  15. }

  16. // p_us = signal period in micro_seconds
  17. // dc   = signal duty-cycle (0.0 to 1.0)
  18. void pwm_io(int p_us, float dc) {
  19.     timer.detach();
  20.     if ((p_us == 0) || (dc == 0)) {
  21.         my_pwm = 0;
  22.         return;
  23.     }
  24.     if (dc >= 1) {
  25.         my_pwm = 1;
  26.         return;
  27.     }
  28.     on_delay = (int)(p_us * dc);
  29.     off_delay = p_us - on_delay;
  30.     toggleOn();
  31. }

  32. int main() {
  33.    
  34.     pwm_io(20000, 0.25); // 20ms - 25%
  35.    
  36.     while(1) {
  37.         my_led = !my_led;
  38.         wait(0.5);
  39.     }
  40. }
复制代码


收藏 评论2 发布时间:2016-11-24 14:33

举报

2个回答
党国特派员 回答时间:2016-11-24 16:46:45
取消本对象需要执行的函数,调用detach()之后,你就可以再次调用attach来更换超时执行的函数。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

adlu 回答时间:2016-11-24 18:23:29
党国特派员 发表于 2016-11-24 16:46
取消本对象需要执行的函数,调用detach()之后,你就可以再次调用attach来更换超时执行的函数。 ...

好像明白了点。
谢谢解答!

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版