aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/common/mbed/timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/common/mbed/timer.c')
-rw-r--r--tmk_core/common/mbed/timer.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/tmk_core/common/mbed/timer.c b/tmk_core/common/mbed/timer.c
new file mode 100644
index 000000000..c357ceb78
--- /dev/null
+++ b/tmk_core/common/mbed/timer.c
@@ -0,0 +1,41 @@
1#include "cmsis.h"
2#include "timer.h"
3
4/* Mill second tick count */
5volatile uint32_t timer_count = 0;
6
7/* Timer interrupt handler */
8void SysTick_Handler(void) {
9 timer_count++;
10}
11
12void timer_init(void)
13{
14 timer_count = 0;
15 SysTick_Config(SystemCoreClock / 1000); /* 1ms tick */
16}
17
18void timer_clear(void)
19{
20 timer_count = 0;
21}
22
23uint16_t timer_read(void)
24{
25 return (uint16_t)(timer_count & 0xFFFF);
26}
27
28uint32_t timer_read32(void)
29{
30 return timer_count;
31}
32
33uint16_t timer_elapsed(uint16_t last)
34{
35 return TIMER_DIFF_16(timer_read(), last);
36}
37
38uint32_t timer_elapsed32(uint32_t last)
39{
40 return TIMER_DIFF_32(timer_read32(), last);
41}