libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
ch32_dma.cpp
1#include "ch32_dma.hpp"
2
3#include "ch32_uart.hpp"
4
5/* UART/USART TX DMA */
6
7extern "C" void DMA1_Channel4_IRQHandler(void) __attribute__((interrupt));
8extern "C" void DMA1_Channel7_IRQHandler(void) __attribute__((interrupt));
9extern "C" void DMA1_Channel2_IRQHandler(void) __attribute__((interrupt));
10
11extern "C" void DMA1_Channel4_IRQHandler(void)
12{
13 LibXR::CH32UART::TxDmaIRQHandler(DMA1_Channel4, ch32_uart_id_t::CH32_USART1);
14}
15
16extern "C" void DMA1_Channel7_IRQHandler(void)
17{
18 LibXR::CH32UART::TxDmaIRQHandler(DMA1_Channel7, ch32_uart_id_t::CH32_USART2);
19}
20
21extern "C" void DMA1_Channel2_IRQHandler(void)
22{
23 LibXR::CH32UART::TxDmaIRQHandler(DMA1_Channel2, ch32_uart_id_t::CH32_USART3);
24}
25
26#if !defined(DMA2_BASE)
27extern "C" void DMA1_Channel8_IRQHandler(void) __attribute__((interrupt));
28extern "C" void DMA1_Channel8_IRQHandler(void)
29{
30 LibXR::CH32UART::RxDmaIRQHandler(DMA1_Channel8, ch32_uart_id_t::CH32_UART4);
31}
32
33extern "C" void DMA1_Channel1_IRQHandler(void) __attribute__((interrupt));
34extern "C" void DMA1_Channel1_IRQHandler(void)
35{
36 LibXR::CH32UART::TxDmaIRQHandler(DMA1_Channel1, ch32_uart_id_t::CH32_UART4);
37}
38#endif
39
40#if defined(DMA2_BASE)
41
42extern "C" void DMA2_Channel5_IRQHandler(void) __attribute__((interrupt));
43extern "C" void DMA2_Channel4_IRQHandler(void) __attribute__((interrupt));
44extern "C" void DMA2_Channel6_IRQHandler(void) __attribute__((interrupt));
45extern "C" void DMA2_Channel8_IRQHandler(void) __attribute__((interrupt));
46extern "C" void DMA2_Channel10_IRQHandler(void) __attribute__((interrupt));
47
48extern "C" void DMA2_Channel5_IRQHandler(void)
49{
50 LibXR::CH32UART::TxDmaIRQHandler(DMA2_Channel5, ch32_uart_id_t::CH32_UART4);
51}
52
53extern "C" void DMA2_Channel4_IRQHandler(void)
54{
55 LibXR::CH32UART::TxDmaIRQHandler(DMA2_Channel4, ch32_uart_id_t::CH32_UART5);
56}
57
58extern "C" void DMA2_Channel6_IRQHandler(void)
59{
60 LibXR::CH32UART::TxDmaIRQHandler(DMA2_Channel6, ch32_uart_id_t::CH32_UART6);
61}
62
63extern "C" void DMA2_Channel8_IRQHandler(void)
64{
65 LibXR::CH32UART::TxDmaIRQHandler(DMA2_Channel8, ch32_uart_id_t::CH32_UART7);
66}
67
68extern "C" void DMA2_Channel10_IRQHandler(void)
69{
70 LibXR::CH32UART::TxDmaIRQHandler(DMA2_Channel10, ch32_uart_id_t::CH32_UART8);
71}
72
73/* UART/USART RX DMA */
74
75extern "C" void DMA2_Channel3_IRQHandler(void) __attribute__((interrupt));
76extern "C" void DMA2_Channel2_IRQHandler(void) __attribute__((interrupt));
77extern "C" void DMA2_Channel7_IRQHandler(void) __attribute__((interrupt));
78extern "C" void DMA2_Channel9_IRQHandler(void) __attribute__((interrupt));
79extern "C" void DMA2_Channel11_IRQHandler(void) __attribute__((interrupt));
80
81extern "C" void DMA2_Channel3_IRQHandler(void)
82{
83 LibXR::CH32UART::RxDmaIRQHandler(DMA2_Channel3, ch32_uart_id_t::CH32_UART4);
84}
85
86extern "C" void DMA2_Channel2_IRQHandler(void)
87{
88 LibXR::CH32UART::RxDmaIRQHandler(DMA2_Channel2, ch32_uart_id_t::CH32_UART5);
89}
90
91extern "C" void DMA2_Channel7_IRQHandler(void)
92{
93 LibXR::CH32UART::RxDmaIRQHandler(DMA2_Channel7, ch32_uart_id_t::CH32_UART6);
94}
95
96extern "C" void DMA2_Channel9_IRQHandler(void)
97{
98 LibXR::CH32UART::RxDmaIRQHandler(DMA2_Channel9, ch32_uart_id_t::CH32_UART7);
99}
100
101extern "C" void DMA2_Channel11_IRQHandler(void)
102{
103 LibXR::CH32UART::RxDmaIRQHandler(DMA2_Channel11, ch32_uart_id_t::CH32_UART8);
104}
105
106#endif
107
108extern "C" void DMA1_Channel5_IRQHandler(void) __attribute__((interrupt));
109extern "C" void DMA1_Channel6_IRQHandler(void) __attribute__((interrupt));
110extern "C" void DMA1_Channel3_IRQHandler(void) __attribute__((interrupt));
111
112extern "C" void DMA1_Channel5_IRQHandler(void)
113{
114 LibXR::CH32UART::RxDmaIRQHandler(DMA1_Channel5, ch32_uart_id_t::CH32_USART1);
115}
116
117extern "C" void DMA1_Channel6_IRQHandler(void)
118{
119 LibXR::CH32UART::RxDmaIRQHandler(DMA1_Channel6, ch32_uart_id_t::CH32_USART2);
120}
121
122extern "C" void DMA1_Channel3_IRQHandler(void)
123{
124 LibXR::CH32UART::RxDmaIRQHandler(DMA1_Channel3, ch32_uart_id_t::CH32_USART3);
125}
126
127ch32_dma_channel_t CH32_DMA_GetID(DMA_Channel_TypeDef *channel)
128{
129#if defined(DMA1_Channel1)
130 if (channel == DMA1_Channel1)
131 {
132 return CH32_DMA1_CHANNEL1;
133 }
134#endif
135
136#if defined(DMA1_Channel2)
137 if (channel == DMA1_Channel2)
138 {
139 return CH32_DMA1_CHANNEL2;
140 }
141#endif
142
143#if defined(DMA1_Channel3)
144 if (channel == DMA1_Channel3)
145 {
146 return CH32_DMA1_CHANNEL3;
147 }
148#endif
149
150#if defined(DMA1_Channel4)
151 if (channel == DMA1_Channel4)
152 {
153 return CH32_DMA1_CHANNEL4;
154 }
155#endif
156
157#if defined(DMA1_Channel5)
158 if (channel == DMA1_Channel5)
159 {
160 return CH32_DMA1_CHANNEL5;
161 }
162#endif
163
164#if defined(DMA1_Channel6)
165 if (channel == DMA1_Channel6)
166 {
167 return CH32_DMA1_CHANNEL6;
168 }
169#endif
170
171#if defined(DMA1_Channel7)
172 if (channel == DMA1_Channel7)
173 {
174 return CH32_DMA1_CHANNEL7;
175 }
176#endif
177
178#if defined(DMA1_Channel8)
179 if (channel == DMA1_Channel8)
180 {
181 return CH32_DMA1_CHANNEL8;
182 }
183#endif
184
185#if defined(DMA2_Channel1)
186 if (channel == DMA2_Channel1)
187 {
188 return CH32_DMA2_CHANNEL1;
189 }
190#endif
191
192#if defined(DMA2_Channel2)
193 if (channel == DMA2_Channel2)
194 {
195 return CH32_DMA2_CHANNEL2;
196 }
197#endif
198
199#if defined(DMA2_Channel3)
200 if (channel == DMA2_Channel3)
201 {
202 return CH32_DMA2_CHANNEL3;
203 }
204#endif
205
206#if defined(DMA2_Channel4)
207 if (channel == DMA2_Channel4)
208 {
209 return CH32_DMA2_CHANNEL4;
210 }
211#endif
212
213#if defined(DMA2_Channel5)
214 if (channel == DMA2_Channel5)
215 {
216 return CH32_DMA2_CHANNEL5;
217 }
218#endif
219
220#if defined(DMA2_Channel6)
221 if (channel == DMA2_Channel6)
222 {
223 return CH32_DMA2_CHANNEL6;
224 }
225#endif
226
227#if defined(DMA2_Channel7)
228 if (channel == DMA2_Channel7)
229 {
230 return CH32_DMA2_CHANNEL7;
231 }
232#endif
233
234#if defined(DMA2_Channel8)
235 if (channel == DMA2_Channel8)
236 {
237 return CH32_DMA2_CHANNEL8;
238 }
239#endif
240
241#if defined(DMA2_Channel9)
242 if (channel == DMA2_Channel9)
243 {
244 return CH32_DMA2_CHANNEL9;
245 }
246#endif
247
248#if defined(DMA2_Channel10)
249 if (channel == DMA2_Channel10)
250 {
251 return CH32_DMA2_CHANNEL10;
252 }
253#endif
254
255#if defined(DMA2_Channel11)
256 if (channel == DMA2_Channel11)
257 {
258 return CH32_DMA2_CHANNEL11;
259 }
260#endif
261
262 return CH32_DMA_CHANNEL_NONE;
263}
264
265DMA_Channel_TypeDef *CH32_DMA_GetChannel(ch32_dma_channel_t id)
266{
267#if defined(DMA1_Channel1)
268 if (id == CH32_DMA1_CHANNEL1)
269 {
270 return DMA1_Channel1;
271 }
272#endif
273
274#if defined(DMA1_Channel2)
275 if (id == CH32_DMA1_CHANNEL2)
276 {
277 return DMA1_Channel2;
278 }
279#endif
280
281#if defined(DMA1_Channel3)
282 if (id == CH32_DMA1_CHANNEL3)
283 {
284 return DMA1_Channel3;
285 }
286#endif
287
288#if defined(DMA1_Channel4)
289 if (id == CH32_DMA1_CHANNEL4)
290 {
291 return DMA1_Channel4;
292 }
293#endif
294
295#if defined(DMA1_Channel5)
296 if (id == CH32_DMA1_CHANNEL5)
297 {
298 return DMA1_Channel5;
299 }
300#endif
301
302#if defined(DMA1_Channel6)
303 if (id == CH32_DMA1_CHANNEL6)
304 {
305 return DMA1_Channel6;
306 }
307#endif
308
309#if defined(DMA1_Channel7)
310 if (id == CH32_DMA1_CHANNEL7)
311 {
312 return DMA1_Channel7;
313 }
314#endif
315
316#if defined(DMA2_Channel1)
317 if (id == CH32_DMA2_CHANNEL1)
318 {
319 return DMA2_Channel1;
320 }
321#endif
322
323#if defined(DMA2_Channel2)
324 if (id == CH32_DMA2_CHANNEL2)
325 {
326 return DMA2_Channel2;
327 }
328#endif
329
330#if defined(DMA2_Channel3)
331 if (id == CH32_DMA2_CHANNEL3)
332 {
333 return DMA2_Channel3;
334 }
335#endif
336
337#if defined(DMA2_Channel4)
338 if (id == CH32_DMA2_CHANNEL4)
339 {
340 return DMA2_Channel4;
341 }
342#endif
343
344#if defined(DMA2_Channel5)
345 if (id == CH32_DMA2_CHANNEL5)
346 {
347 return DMA2_Channel5;
348 }
349#endif
350
351#if defined(DMA2_Channel6)
352 if (id == CH32_DMA2_CHANNEL6)
353 {
354 return DMA2_Channel6;
355 }
356#endif
357
358#if defined(DMA2_Channel7)
359 if (id == CH32_DMA2_CHANNEL7)
360 {
361 return DMA2_Channel7;
362 }
363#endif
364
365#if defined(DMA2_Channel8)
366 if (id == CH32_DMA2_CHANNEL8)
367 {
368 return DMA2_Channel8;
369 }
370#endif
371
372#if defined(DMA2_Channel9)
373 if (id == CH32_DMA2_CHANNEL9)
374 {
375 return DMA2_Channel9;
376 }
377#endif
378
379#if defined(DMA2_Channel10)
380 if (id == CH32_DMA2_CHANNEL10)
381 {
382 return DMA2_Channel10;
383 }
384#endif
385
386#if defined(DMA2_Channel11)
387 if (id == CH32_DMA2_CHANNEL11)
388 {
389 return DMA2_Channel11;
390 }
391#endif
392
393 return NULL;
394}