【问题标题】:How to call an event after x minutes while still running?如何在 x 分钟后仍在运行时调用事件?
【发布时间】:2022-11-03 15:51:04
【问题描述】:

我是编程新手,所以请多多包涵。

我正在使用微控制器,因此我使用的是 Microchip Studio。

我的代码是这样简化的:

While(1){
 if(ErrorFlag==1)
   timer_restart++;
 else
   timer_restart=0;
 if (time_restart == 600000)
   restart()
//Remaining code
} // EndWhile

我的问题是我想在大约 5 分钟后致电restart()。现在我不知道需要多长时间。有没有更好的方法来实现它?

我试图用 clock() 函数找出 one-WhileLoop-Rotation 需要什么时间。但我收到一个错误消息“未定义的引用”。我认为 Microchip Studio 不知道这些功能。

我也许可以使用类似的东西:

while(1){
 while(ErrorFlag==1){
  delay_ms(5000);
  restart();
  ErrorFlag=0;
}}

但随后代码的其余部分被中断。有人可以给我任何建议吗?

【问题讨论】:

    标签: c microcontroller microchip atmel


    【解决方案1】:

    “忙时”或“忙延迟”很少是正确的解决方案。除了不准确之外,它们还会将您的 CPU 锁定为 100% 并不必要地消耗电流。

    您需要通过定期轮询定时器标志或使用中断来使用实际的片上硬件外围定时器。至于怎么做,就看具体的MCU了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2014-11-02
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多