wait.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include <inttypes.h>
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #if defined(__AVR__)
  7. # include <util/delay.h>
  8. # define wait_ms(ms) _delay_ms(ms)
  9. # define wait_us(us) _delay_us(us)
  10. #elif defined PROTOCOL_CHIBIOS
  11. # include <ch.h>
  12. # define wait_ms(ms) \
  13. do { \
  14. if (ms != 0) { \
  15. chThdSleepMilliseconds(ms); \
  16. } else { \
  17. chThdSleepMicroseconds(1); \
  18. } \
  19. } while (0)
  20. # define wait_us(us) \
  21. do { \
  22. if (us != 0) { \
  23. chThdSleepMicroseconds(us); \
  24. } else { \
  25. chThdSleepMicroseconds(1); \
  26. } \
  27. } while (0)
  28. #elif defined PROTOCOL_ARM_ATSAM
  29. # include "clks.h"
  30. # define wait_ms(ms) CLK_delay_ms(ms)
  31. # define wait_us(us) CLK_delay_us(us)
  32. #else // Unit tests
  33. void wait_ms(uint32_t ms);
  34. # define wait_us(us) wait_ms(us / 1000)
  35. #endif
  36. #ifdef __cplusplus
  37. }
  38. #endif