c++ - mbed os 5 c++ 编程

标签 c++ while-loop mbed

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.5时while循环只调用一次怎么办?

最佳答案

添加一个 bool 标志。当条件为真时设置标志,当条件为假时清除标志。

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

例子:

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();
        }
    }
}

关于c++ - mbed os 5 c++ 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50618867/

相关文章:

c++ - 为什么有两个不同的输出?

c++ - 专用内部类模板函数的类外定义?

c++ - 将我的服务器响应 char 数组转换为 wchar_t 数组是否是处理客户端收到的服务器消息的正确方法?

c++ - 将带有 DST 的时间字符串转换为 UTC 时间戳

c++ - 使用缓冲区和溢出缓冲区将 IMU 数据写入 csv 文件?

c++ - 车钩运动功能未发现中断

c - 尽管提供了适当的输入,循环仍无法终止

while-loop - 如何在液体/jekyll 中做一个while 循环?

python - 如何解决 IndexError : list assignment index out of range using array inside loop in Python

c - 使用 mbed 框架在 STM32 上运行 GMP 的串行 printf