在C中以微秒为单位进行定时循环

时间:2018-11-19 02:32:54

标签: c arduino raspberry-pi

我想做个像

   int prev = 0;
   int delay = 1500;
   void loop(){
       int now = micros();
       if(now - prev > delay){
           //
       }
   }

那是针对Arduino的。 我如何在C中使用clock_gettime(CLOCK_REALTIME, &gettime_now);就像上面的arduino代码中的micros()一样工作?在Raspberry pi中

1 个答案:

答案 0 :(得分:1)

我不会真正在C程序中使用繁忙的轮询时钟,而是系统调用。它适用于µController,但不适用于OS。您可以只使用usleep。

无论如何clock_gettime timespec如此做,请仔细进行计算(注意不要溢出多头)。 (long)(now.tv_sec-prev.tv_sec)* 1000 * 1000 +(now.tv_nsec-prev.tv_nsec)/ 1000

P.S。 您不应该在代码中初始化prev吗?