It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center
8年前关闭。
有谁能告诉我如何实现差分定时器的概念。
我在一个移动平台上工作,它只提供或支持一个硬件定时器。使用这个我必须维护不同的应用程序要求的计时器。
有谁能建议一种最好的方法来实现这个软件定时器使用一个硬件定时器

最佳答案

我是否正确地理解了您的问题:“我只有一个硬件计时器,但我的应用程序需要几个计时器,一个慢的,一个快的,一些其他的”?
你可以这样做:

typedef void (*timer_callback_fn)(void *);

// private
struct registered_timer {
  timer_callback_fn callback;
  void *data;
  unsigned long ticks; // hardware ticks between calls to this timer
};

void timer_register(timer_callback_fn cb, unsigned long ticks) {
  ...
}

static void interrupt on_hardware_timer(void) {
  static unsigned long ticks = 0;

  ... for each registered timer ...
  if (ticks % timer->ticks == 0) {
    timer->callback(timer->data);
  }
}

当然,你必须小心,你的所有软件定时器必须能够在一个滴答的硬件定时器处理。

关于c - 谁能让我知道如何实现差分计时器的概念。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6067868/

10-13 08:41