libxr
1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
mspm0_group1_shared.hpp
1
#pragma once
2
3
#include <ti/driverlib/m0p/dl_interrupt.h>
4
5
namespace
LibXR::MSPM0Group1Shared
6
{
7
using
IrqFn = void (*)();
8
9
#if defined(GPIOA_BASE)
10
inline
constexpr
bool
K_HAS_GPIOA =
true
;
11
#else
12
inline
constexpr
bool
K_HAS_GPIOA =
false
;
13
#endif
14
15
#if defined(GPIOB_BASE)
16
inline
constexpr
bool
K_HAS_GPIOB =
true
;
17
#else
18
inline
constexpr
bool
K_HAS_GPIOB =
false
;
19
#endif
20
21
#if defined(GPIOC_BASE)
22
inline
constexpr
bool
K_HAS_GPIOC =
true
;
23
#else
24
inline
constexpr
bool
K_HAS_GPIOC =
false
;
25
#endif
26
27
#if defined(COMP0_BASE)
28
inline
constexpr
bool
K_HAS_COMP0 =
true
;
29
#else
30
inline
constexpr
bool
K_HAS_COMP0 =
false
;
31
#endif
32
33
#if defined(COMP1_BASE)
34
inline
constexpr
bool
K_HAS_COMP1 =
true
;
35
#else
36
inline
constexpr
bool
K_HAS_COMP1 =
false
;
37
#endif
38
39
#if defined(COMP2_BASE)
40
inline
constexpr
bool
K_HAS_COMP2 =
true
;
41
#else
42
inline
constexpr
bool
K_HAS_COMP2 =
false
;
43
#endif
44
45
#if defined(TRNG_BASE)
46
inline
constexpr
bool
K_HAS_TRNG =
true
;
47
#else
48
inline
constexpr
bool
K_HAS_TRNG =
false
;
49
#endif
50
51
inline
IrqFn gpioa_irq_cb{
nullptr
};
52
inline
IrqFn gpiob_irq_cb{
nullptr
};
53
inline
IrqFn gpioc_irq_cb{
nullptr
};
54
inline
IrqFn comp0_irq_cb{
nullptr
};
55
inline
IrqFn comp1_irq_cb{
nullptr
};
56
inline
IrqFn comp2_irq_cb{
nullptr
};
57
inline
IrqFn trng_irq_cb{
nullptr
};
58
59
// NOLINTNEXTLINE(readability-identifier-naming)
60
void
EnableGroup1IRQ();
61
62
// NOLINTNEXTLINE(readability-identifier-naming)
63
inline
void
RegisterGPIOA(IrqFn fn)
64
{
65
if
constexpr
(K_HAS_GPIOA)
66
{
67
gpioa_irq_cb = fn;
68
if
(fn !=
nullptr
)
69
{
70
EnableGroup1IRQ();
71
}
72
}
73
else
74
{
75
(void)fn;
76
}
77
}
78
79
// NOLINTNEXTLINE(readability-identifier-naming)
80
inline
void
RegisterGPIOB(IrqFn fn)
81
{
82
if
constexpr
(K_HAS_GPIOB)
83
{
84
gpiob_irq_cb = fn;
85
if
(fn !=
nullptr
)
86
{
87
EnableGroup1IRQ();
88
}
89
}
90
else
91
{
92
(void)fn;
93
}
94
}
95
96
// NOLINTNEXTLINE(readability-identifier-naming)
97
inline
void
RegisterGPIOC(IrqFn fn)
98
{
99
if
constexpr
(K_HAS_GPIOC)
100
{
101
gpioc_irq_cb = fn;
102
if
(fn !=
nullptr
)
103
{
104
EnableGroup1IRQ();
105
}
106
}
107
else
108
{
109
(void)fn;
110
}
111
}
112
113
// NOLINTNEXTLINE(readability-identifier-naming)
114
inline
void
RegisterCOMP0(IrqFn fn)
115
{
116
if
constexpr
(K_HAS_COMP0)
117
{
118
comp0_irq_cb = fn;
119
if
(fn !=
nullptr
)
120
{
121
EnableGroup1IRQ();
122
}
123
}
124
else
125
{
126
(void)fn;
127
}
128
}
129
130
// NOLINTNEXTLINE(readability-identifier-naming)
131
inline
void
RegisterCOMP1(IrqFn fn)
132
{
133
if
constexpr
(K_HAS_COMP1)
134
{
135
comp1_irq_cb = fn;
136
if
(fn !=
nullptr
)
137
{
138
EnableGroup1IRQ();
139
}
140
}
141
else
142
{
143
(void)fn;
144
}
145
}
146
147
// NOLINTNEXTLINE(readability-identifier-naming)
148
inline
void
RegisterCOMP2(IrqFn fn)
149
{
150
if
constexpr
(K_HAS_COMP2)
151
{
152
comp2_irq_cb = fn;
153
if
(fn !=
nullptr
)
154
{
155
EnableGroup1IRQ();
156
}
157
}
158
else
159
{
160
(void)fn;
161
}
162
}
163
164
// NOLINTNEXTLINE(readability-identifier-naming)
165
inline
void
RegisterTRNG(IrqFn fn)
166
{
167
if
constexpr
(K_HAS_TRNG)
168
{
169
trng_irq_cb = fn;
170
if
(fn !=
nullptr
)
171
{
172
EnableGroup1IRQ();
173
}
174
}
175
else
176
{
177
(void)fn;
178
}
179
}
180
}
// namespace LibXR::MSPM0Group1Shared
driver
mspm0
mspm0_group1_shared.hpp
Generated by
1.12.0