c中的定时器滴答实现

时间:2014-03-09 05:21:08

标签: c

我正在做一些嵌入式系统工作并且有一些问题。我有一个定时器功能,每100ms发射一次。我现在需要在系统启动后获得实际时间。

目前我的代码是这样的:

struct timer
{

uint8_t millis_100;
uint8_t minute_455;
}


void tick()
{
//fires evry 100ms
timer_task.millis_100++;
}

但是我很困惑,如果这是正确的方法,因为我需要检查millis_100是否溢出到0然后在ISR例程内增加它。如果我需要超过455 * 2 ^ 8-1那么我需要在ISR中添加另一个if语句。这是系统滴答用于制作软件定时器的方法吗?还是有更优雅的解决方案?

1 个答案:

答案 0 :(得分:0)

如果您担心计时器溢出,为什么不使用unsigned long变量? 检查linux内核timer.ctimer.h

中的计时器实现

有关详情,请参阅LDD3/ch07

中的 The Timer API 部分