计时器滴答声在c语言中的实现

计时器滴答声在c语言中的实现,c,C,我正在做一些嵌入式系统的工作,有几个问题。我有一个定时器功能,每100毫秒触发一次。我现在需要得到系统启动后的实际时间 目前我的代码是这样的: struct timer { uint8_t millis_100; uint8_t minute_455; } void tick() { //fires evry 100ms timer_task.millis_100++; } 但是,我不知道这是否是正确的方法,因为我需要检查millis_100是否溢出到0,然后在ISR例程中递增它。如果我

我正在做一些嵌入式系统的工作,有几个问题。我有一个定时器功能,每100毫秒触发一次。我现在需要得到系统启动后的实际时间

目前我的代码是这样的:

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语句。这就是系统时钟用来制作软件定时器的方式吗?或者有更优雅的解决方案吗?

如果您担心计时器溢出,为什么不使用无符号长变量?? 检查linux内核中的计时器实现


有关更多详细信息,请阅读

中的计时器API部分。您知道对于基于微控制器的小型系统,有什么更易于实现的方法吗?对于初学者,如果担心溢出,请使用uint32\t。如果它仍然不能满足你的要求,那就保留另一个变量,当这个变量溢出时,你就增加这个变量,就像你在问题中提到的那样。