timer.c 667 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "timer.h"
  2. #include "io.h"
  3. static uint64_t __time_us;
  4. static uint64_t __delta_time_us;
  5. unsigned long time_micros()
  6. {
  7. #ifdef __linux__
  8. return 0;
  9. #else
  10. return millis()*1000;
  11. #endif
  12. }
  13. void micro_sleep(unsigned long x)
  14. {
  15. #ifdef __linux__
  16. usleep(x);
  17. #else
  18. delay(x/1000);
  19. #endif
  20. }
  21. void timer_init()
  22. {
  23. __time_us=0;
  24. }
  25. uint64_t get_time_us()
  26. {
  27. #ifdef __linux__
  28. uint64_t ret;
  29. struct timespec t;
  30. clock_gettime(CLOCK_REALTIME, &t);
  31. ret=(t.tv_nsec+t.tv_sec*1000000000)/1000;
  32. return ret;
  33. #else
  34. return 0;
  35. #endif
  36. }
  37. void set_delta()
  38. {
  39. __delta_time_us=__time_us;
  40. }
  41. uint64_t get_delta()
  42. {
  43. return __time_us-__delta_time_us;
  44. }