-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathmillis.c
36 lines (32 loc) · 873 Bytes
/
millis.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "millis.h"
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <ti/drivers/Timer.h>
#include "ti_drivers_config.h"
Timer_Handle timer0;
Timer_Params params;
volatile uint64_t timeOverflows = 0;
void timerCallback(Timer_Handle myHandle, int_fast16_t status)
{
timeOverflows++;
}
uint32_t getMillis()
{
uint64_t ticks = ((uint64_t)((uint64_t)timeOverflows << (uint64_t)32) | (uint64_t)Timer_getCount(timer0));
return (uint64_t)((uint64_t)ticks/(uint64_t)48000);
}
void millisInit()
{
Timer_init();
Timer_Params_init(¶ms);
params.period = 0xffffffff;
params.periodUnits = Timer_PERIOD_COUNTS;
params.timerMode = Timer_CONTINUOUS_CALLBACK;
params.timerCallback = timerCallback;
timer0 = Timer_open(CONFIG_TIMER_0, ¶ms);
if (timer0 != NULL)
{
Timer_start(timer0);
}
}