You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.2 KiB

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