aboutsummaryrefslogtreecommitdiff
path: root/embassy-mspm0/src/int_group/g350x.rs
blob: 706ba20783ba1a7f7eb0275a9bb2e2c233e5423a (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
49
50
51
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::COMP0 => todo!("implement COMP0"),
        Group1::COMP1 => todo!("implement COMP1"),
        Group1::COMP2 => todo!("implement COMP2"),
        Group1::TRNG => todo!("implement TRNG"),
    }
}