gpioc.set_mode(13, .input);
while (true) {
- //asm volatile("svc 0");
- gpioa.toggle(5);
- const next = tick.ticks() + 1000;
- while (tick.ticks() < next) {
- asm volatile("nop");
- }
+ asm volatile("svc 0");
+ tick.delay(500);
}
}
self.lld.initialize(freq);
}
- pub fn ticks(self: driver) u32 {
+ pub fn count(self: driver) u32 {
_ = self;
return @atomicLoad(u32, &ticks_raw, .acquire);
}
+
+ pub fn delay(self: driver, ticks: u32) void {
+ const now = self.count();
+ while (self.count() - now < ticks) {}
+ }
};
pub const systick = driver { .lld = @ptrFromInt(0xE000E010) };