wait.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. #elif defined(__arm__)
  34. # include "wait_api.h"
  35. #else // Unit tests
  36. void wait_ms(uint32_t ms);
  37. # define wait_us(us) wait_ms(us / 1000)
  38. #endif
  39. #ifdef __cplusplus
  40. }
  41. #endif
  42. #endif