我在写一个led灯上的数字代码,每5秒减少1
我现在的代码是

FiveSecDelay+=1;
if (FiveSecDelay ==100)
{
count2--; //decrement count2

for (uint32_t x = 0; x < 4; x++) //split count to to individual digits
{
new_value[x] = count2 % 10;
count2 = count2 / 10;
}

for (uint32_t i = 0; i < 4; i++)
{

Segment_Write(Digit[i],new_value[i]); assign  value to segments
}
FiveSecDelay =0;
}

我使用一个schedular每毫秒调用一个函数,理论上这应该和我使用相同的技术给段赋值一样有效,
结果是,我的起始值是8,它应该是7,6,5,4,等等,直到0,但是由于某种原因,它从8变为42,一直保持在那里
我试过修,但没修好。
任何帮助都很好
谢谢你

最佳答案

void check() {
  static int array[] = {142}; // why are you using an array here?
  (*array)--;
}

int main() {
  while(true)
  {
    check();
    usleep(5000); // approximate
  }
  return 0;
}

10-06 04:11