blob: 8857583df42234ff50b704aa4622f7305a1412ee (
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
|
const cpu = @import("cpu.zig");
const gpio = @import("gpio.zig");
const interrupt = @import("interrupt.zig");
const rcc: *[39]u32 = @ptrFromInt(0x40021000);
const gpioa = gpio.gpioa;
const gpioc = gpio.gpioc;
export fn _start() callconv(.C) noreturn {
cpu.interrupt_disable();
interrupt.initialize();
interrupt.register(.SVCall, svcall);
cpu.interrupt_enable();
rcc[19] |= 5; // gpio a and c
gpioa.set_mode(5, .output);
gpioc.set_mode(13, .input);
while (true) {
asm volatile("svc 0");
}
}
fn svcall() void {
const state = gpioc.read(13);
gpioa.write(5, state);
}
|