libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
mspm0_group1_shared.cpp
1#include "mspm0_group1_shared.hpp"
2
3namespace LibXR::MSPM0Group1Shared
4{
5void EnableGroup1IRQ()
6{
7#if defined(GPIOA_BASE)
8 NVIC_EnableIRQ(GPIOA_INT_IRQn);
9#elif defined(GPIOB_BASE)
10 NVIC_EnableIRQ(GPIOB_INT_IRQn);
11#elif defined(GPIOC_BASE)
12 NVIC_EnableIRQ(GPIOC_INT_IRQn);
13#elif defined(COMP0_BASE)
14 NVIC_EnableIRQ(COMP0_INT_IRQn);
15#elif defined(COMP1_BASE)
16 NVIC_EnableIRQ(COMP1_INT_IRQn);
17#elif defined(COMP2_BASE)
18 NVIC_EnableIRQ(COMP2_INT_IRQn);
19#elif defined(TRNG_BASE)
20 NVIC_EnableIRQ(TRNG_INT_IRQn);
21#endif
22}
23} // namespace LibXR::MSPM0Group1Shared
24
25// NOLINTNEXTLINE(readability-identifier-naming)
26extern "C" void GROUP1_IRQHandler(void)
27{
28 uint32_t iidx = DL_Interrupt_getPendingGroup(DL_INTERRUPT_GROUP_1);
29 using namespace LibXR::MSPM0Group1Shared;
30
31 switch (iidx)
32 {
33#if defined(GPIOA_BASE)
34 case DL_INTERRUPT_GROUP1_IIDX_GPIOA:
35 if (auto fn = gpioa_irq_cb)
36 {
37 fn();
38 }
39 break;
40#endif
41#if defined(GPIOB_BASE)
42 case DL_INTERRUPT_GROUP1_IIDX_GPIOB:
43 if (auto fn = gpiob_irq_cb)
44 {
45 fn();
46 }
47 break;
48#endif
49#if defined(COMP0_BASE)
50 case DL_INTERRUPT_GROUP1_IIDX_COMP0:
51 if (auto fn = comp0_irq_cb)
52 {
53 fn();
54 }
55 break;
56#endif
57#if defined(COMP1_BASE)
58 case DL_INTERRUPT_GROUP1_IIDX_COMP1:
59 if (auto fn = comp1_irq_cb)
60 {
61 fn();
62 }
63 break;
64#endif
65#if defined(COMP2_BASE)
66 case DL_INTERRUPT_GROUP1_IIDX_COMP2:
67 if (auto fn = comp2_irq_cb)
68 {
69 fn();
70 }
71 break;
72#endif
73#if defined(TRNG_BASE)
74 case DL_INTERRUPT_GROUP1_IIDX_TRNG:
75 if (auto fn = trng_irq_cb)
76 {
77 fn();
78 }
79 break;
80#endif
81#if defined(GPIOC_BASE)
82 case DL_INTERRUPT_GROUP1_IIDX_GPIOC:
83 if (auto fn = gpioc_irq_cb)
84 {
85 fn();
86 }
87 break;
88#endif
89 default:
90 break;
91 }
92}