Keyboard firmwares for Atmel AVR and Cortex-M
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.

timer.c 656B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "cmsis.h"
  2. #include "timer.h"
  3. /* Mill second tick count */
  4. volatile uint32_t timer_count = 0;
  5. /* Timer interrupt handler */
  6. void SysTick_Handler(void) {
  7. timer_count++;
  8. }
  9. void timer_init(void)
  10. {
  11. timer_count = 0;
  12. SysTick_Config(SystemCoreClock / 1000); /* 1ms tick */
  13. }
  14. void timer_clear(void)
  15. {
  16. timer_count = 0;
  17. }
  18. uint16_t timer_read(void)
  19. {
  20. return (uint16_t)(timer_count & 0xFFFF);
  21. }
  22. uint32_t timer_read32(void)
  23. {
  24. return timer_count;
  25. }
  26. uint16_t timer_elapsed(uint16_t last)
  27. {
  28. return TIMER_DIFF_16(timer_read(), last);
  29. }
  30. uint32_t timer_elapsed32(uint32_t last)
  31. {
  32. return TIMER_DIFF_32(timer_read32(), last);
  33. }