我正在使用 NUCLEO F401R0 微控制器制作时钟。它有一个物理按钮,当通过我初始化的“按钮”对象按下时输出 1。有 3 个嵌套的四个循环来控制小时、分钟和秒的增量。我正在尝试在最里面的 for 循环中编写一个控制秒数的切换按钮。当按下按钮时,我想在将显示的两个变量之间切换。如何在最里面的 for 循环中进行切换操作,同时保持循环连续?
int oldstate;
string unit;
DigitalIn button(USER_BUTTON);
for(int hh = 12; hh <= 13; hh++)
{
for(int mm = 0; mm < 60; mm++)
{
for(int ss =0; ss < 60; ss++)
{
int currentState = button;
if (currentState == 1 && oldState == 0)
{
check = !check;
}
oldState = currentState ;
if(check == 0)
{
unit = "C";
}
else
{
unit = "F";
}
cout << "\n\r Time: " << hh << ":" << mm << ":" << ss << " " << unit << flush;
}
}
}
我目前对上述代码的问题是,如果我将 ss 的增量保留在 for 循环中,它会一次执行 60 次增量。我可以通过在按下按钮时递增来解决这个问题,但这意味着用户必须连续单击按钮才能运行时钟。