aboutsummaryrefslogtreecommitdiff
path: root/embassy-mspm0/src/int_group/g310x.rs
blob: ad508d3a288f4c1d6686d963b8085bd3ef1ff8f7 (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
use crate::pac;
use crate::pac::interrupt;

#[cfg(feature = "rt")]
#[interrupt]
fn GROUP0() {
    use mspm0_metapac::Group0;

    let group = pac::CPUSS.int_group(0);

    // Must subtract by 1 since NO_INTR is value 0
    let iidx = group.iidx().read().stat().to_bits() - 1;

    let Ok(group) = pac::Group0::try_from(iidx as u8) else {
        debug!("Invalid IIDX for group 0: {}", iidx);
        return;
    };

    match group {
        Group0::WWDT0 => todo!("implement WWDT0"),
        Group0::WWDT1 => todo!("implement WWDT1"),
        Group0::DEBUGSS => todo!("implement DEBUGSS"),
        Group0::FLASHCTL => todo!("implement FLASHCTL"),
        Group0::SYSCTL => todo!("implement SYSCTL"),
    }
}

#[cfg(feature = "rt")]
#[interrupt]
fn GROUP1() {
    use mspm0_metapac::Group1;

    let group = pac::CPUSS.int_group(1);

    // Must subtract by 1 since NO_INTR is value 0
    let iidx = group.iidx().read().stat().to_bits() - 1;

    let Ok(group) = pac::Group1::try_from(iidx as u8) else {
        debug!("Invalid IIDX for group 1: {}", iidx);
        return;
    };

    match group {
        Group1::GPIOA => crate::gpio::gpioa_interrupt(),
        Group1::GPIOB => crate::gpio::gpiob_interrupt(),
        Group1::TRNG => todo!("implement TRNG"),
    }
}