C中的数字时钟程序使用中断?

时间:2014-06-30 19:14:01

标签: c linux interrupt clock

我正在为计算机集群编写监控程序,在LCD屏幕上显示大量数据。作为显示器的一部分,我希望有一个数字时钟运行显示当前日期,小时,分钟和秒。问题是,我有一大堆任务在一个大循环(ping请求,A / D转换,文件扫描)中进行,我只是没有时间在循环期间更新时钟。

我在Linux下使用C(Debian)。

有关如何解决此问题的任何建议?我在考虑每秒钟可能会使用一个中断来更新时钟,但是如何在Linux下进行更新呢?我现在才真正使用微控制器中断。

1 个答案:

答案 0 :(得分:0)

您需要运行一些并行代码才能执行此操作。对于这个应用程序,我能想到的最好的方法是使用pthread_create()使用带有这样功能的线程:

void * clock_routine(void * args) {
    while(1) {
        // update clock
    }
}

在您的主要功能中将其与此类似地调用:

pthread_t clock_tid; // Clock thread handle
int rc = pthread_create(&clock_tid, NULL, clock_routine, NULL);

使用-lpthread标志编译文件。

clock_routine中的代码将与您的其他代码并行运行,并且由于它只是一个时钟,因此您不会遇到任何依赖/同步问题。

PS :(有点无用,但这里有:)我不确定,但在sleep循环中使用while(1)函数,睡眠几微秒,&#34 ;可能"改善您的计划,因为您不需要"真实"时钟更新,但只有几微秒的准确性。像这样不断更新时钟,"可能"被认为是忙碌的等待。如果有人对此有更多了解,请纠正我。