mbed os 5 C++ 编程

mbed os 5 c++ programming

void rise_handler() { timer.start();}
void fall_handler() { timer.stop(); }
void signal() {
     while(1) {
              if (num > 0.5) {
                 rise_handler();
              } 
              else {
                 fall_handler();
              }
     }
}

我有一个来自传感器的输入,它随时间变化。 num大于0.5while循环只会调用一次怎么办?

添加布尔标志。当条件为真时设置标志,当条件为假时清除标志。

结合条件使用这个标志来知道什么时候调用哪个函数。

示例:

bool flag = false;

while (1)
{
    if (num > 0.5)
    {
        if (!flag)
        {
            // First time above the threshold
            flag = true;
            rise_handler();
        }
    }
    else
    {
        if (flag)
        {
            // First time below the threshold
            flag = false;
            fall_handler();
        }
    }
}