blob: 21151c77494ca16254280ac59fd32bb63ec6b53c (
plain)
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
|
const interrupt = @import("interrupt.zig");
const sys_tick_type = packed struct {
enable: u1,
tickint: u1,
unused: u30,
rvr: u32,
cvr: u32,
calib: u32,
};
var sys_tick: *volatile sys_tick_type = @ptrFromInt(0xE000E010);
pub var ticks_raw: u32 = 0;
pub fn initialize(freq: u32) void {
interrupt.register(.SysTick, tick);
sys_tick.rvr = 4000000 / 8 / freq;
sys_tick.tickint = 1;
sys_tick.enable = 1;
}
fn tick() void {
ticks_raw += 1;
}
pub fn ticks() u32 {
return @atomicLoad(u32, &ticks_raw, .acquire);
}
|