aboutsummaryrefslogtreecommitdiff
path: root/src/bsp/drivers/gpio/mod.rs
blob: a94c6e5a19b3ae3b3a6a682469503b95f4be7b8f (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
/// # GPIO Register
pub mod GPPUD {
    const ADDR: u32 = 0x3F200094;
    pub fn set(v: u32) {
        use crate::cpu::store32;
        store32(ADDR, v)
    }
    pub fn clear() {
        set(0)
    }
}
/// # GPIO Clock 0 Register
pub mod GPPUDCLK0 {
    const ADDR: u32 = 0x3F200098;
    const MASK: u32 = (1 << 14) | (1 << 15);
    pub fn set(v: u32) {
        use crate::cpu::store32;
        store32(ADDR, v)
    }
    pub fn init() {
        use crate::cpu::spin_for_n_cycles;
        super::GPPUD::clear();
        spin_for_n_cycles(150);
        set(MASK);
        spin_for_n_cycles(150);
        set(0);
    }
}