6 ch32_dma_callback_t fun;
8} ch32_dma_callback_map[CH32_DMA_CHANNEL_NUMBER] = {};
10void ch32_dma_register_callback(ch32_dma_channel_t
id, ch32_dma_callback_t callback,
13 ASSERT(
id < CH32_DMA_CHANNEL_NUMBER);
14 ch32_dma_callback_map[id] = {callback, arg};
17ch32_dma_channel_t ch32_dma_get_id(DMA_Channel_TypeDef* channel)
19#if defined(DMA1_Channel1)
20 if (channel == DMA1_Channel1)
22 return CH32_DMA1_CHANNEL1;
26#if defined(DMA1_Channel2)
27 if (channel == DMA1_Channel2)
29 return CH32_DMA1_CHANNEL2;
33#if defined(DMA1_Channel3)
34 if (channel == DMA1_Channel3)
36 return CH32_DMA1_CHANNEL3;
40#if defined(DMA1_Channel4)
41 if (channel == DMA1_Channel4)
43 return CH32_DMA1_CHANNEL4;
47#if defined(DMA1_Channel5)
48 if (channel == DMA1_Channel5)
50 return CH32_DMA1_CHANNEL5;
54#if defined(DMA1_Channel6)
55 if (channel == DMA1_Channel6)
57 return CH32_DMA1_CHANNEL6;
61#if defined(DMA1_Channel7)
62 if (channel == DMA1_Channel7)
64 return CH32_DMA1_CHANNEL7;
68#if defined(DMA1_Channel8)
69 if (channel == DMA1_Channel8)
71 return CH32_DMA1_CHANNEL8;
75#if defined(DMA2_Channel1)
76 if (channel == DMA2_Channel1)
78 return CH32_DMA2_CHANNEL1;
82#if defined(DMA2_Channel2)
83 if (channel == DMA2_Channel2)
85 return CH32_DMA2_CHANNEL2;
89#if defined(DMA2_Channel3)
90 if (channel == DMA2_Channel3)
92 return CH32_DMA2_CHANNEL3;
96#if defined(DMA2_Channel4)
97 if (channel == DMA2_Channel4)
99 return CH32_DMA2_CHANNEL4;
103#if defined(DMA2_Channel5)
104 if (channel == DMA2_Channel5)
106 return CH32_DMA2_CHANNEL5;
110#if defined(DMA2_Channel6)
111 if (channel == DMA2_Channel6)
113 return CH32_DMA2_CHANNEL6;
117#if defined(DMA2_Channel7)
118 if (channel == DMA2_Channel7)
120 return CH32_DMA2_CHANNEL7;
124#if defined(DMA2_Channel8)
125 if (channel == DMA2_Channel8)
127 return CH32_DMA2_CHANNEL8;
131#if defined(DMA2_Channel9)
132 if (channel == DMA2_Channel9)
134 return CH32_DMA2_CHANNEL9;
138#if defined(DMA2_Channel10)
139 if (channel == DMA2_Channel10)
141 return CH32_DMA2_CHANNEL10;
145#if defined(DMA2_Channel11)
146 if (channel == DMA2_Channel11)
148 return CH32_DMA2_CHANNEL11;
152 return CH32_DMA_CHANNEL_NONE;
155DMA_Channel_TypeDef* ch32_dma_get_channel(ch32_dma_channel_t
id)
157#if defined(DMA1_Channel1)
158 if (
id == CH32_DMA1_CHANNEL1)
160 return DMA1_Channel1;
164#if defined(DMA1_Channel2)
165 if (
id == CH32_DMA1_CHANNEL2)
167 return DMA1_Channel2;
171#if defined(DMA1_Channel3)
172 if (
id == CH32_DMA1_CHANNEL3)
174 return DMA1_Channel3;
178#if defined(DMA1_Channel4)
179 if (
id == CH32_DMA1_CHANNEL4)
181 return DMA1_Channel4;
185#if defined(DMA1_Channel5)
186 if (
id == CH32_DMA1_CHANNEL5)
188 return DMA1_Channel5;
192#if defined(DMA1_Channel6)
193 if (
id == CH32_DMA1_CHANNEL6)
195 return DMA1_Channel6;
199#if defined(DMA1_Channel7)
200 if (
id == CH32_DMA1_CHANNEL7)
202 return DMA1_Channel7;
206#if defined(DMA1_Channel8)
207 if (
id == CH32_DMA1_CHANNEL8)
209 return DMA1_Channel8;
213#if defined(DMA2_Channel1)
214 if (
id == CH32_DMA2_CHANNEL1)
216 return DMA2_Channel1;
220#if defined(DMA2_Channel2)
221 if (
id == CH32_DMA2_CHANNEL2)
223 return DMA2_Channel2;
227#if defined(DMA2_Channel3)
228 if (
id == CH32_DMA2_CHANNEL3)
230 return DMA2_Channel3;
234#if defined(DMA2_Channel4)
235 if (
id == CH32_DMA2_CHANNEL4)
237 return DMA2_Channel4;
241#if defined(DMA2_Channel5)
242 if (
id == CH32_DMA2_CHANNEL5)
244 return DMA2_Channel5;
248#if defined(DMA2_Channel6)
249 if (
id == CH32_DMA2_CHANNEL6)
251 return DMA2_Channel6;
255#if defined(DMA2_Channel7)
256 if (
id == CH32_DMA2_CHANNEL7)
258 return DMA2_Channel7;
262#if defined(DMA2_Channel8)
263 if (
id == CH32_DMA2_CHANNEL8)
265 return DMA2_Channel8;
269#if defined(DMA2_Channel9)
270 if (
id == CH32_DMA2_CHANNEL9)
272 return DMA2_Channel9;
276#if defined(DMA2_Channel10)
277 if (
id == CH32_DMA2_CHANNEL10)
279 return DMA2_Channel10;
283#if defined(DMA2_Channel11)
284 if (
id == CH32_DMA2_CHANNEL11)
286 return DMA2_Channel11;
293#if defined(DMA1_Channel1)
295extern "C" void DMA1_Channel1_IRQHandler(
void) __attribute__((interrupt));
297extern "C" void DMA1_Channel1_IRQHandler(
void)
299 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL1].fun !=
nullptr)
301 ch32_dma_callback_map[CH32_DMA1_CHANNEL1].fun(
302 ch32_dma_callback_map[CH32_DMA1_CHANNEL1].arg);
307#if defined(DMA1_Channel2)
309extern "C" void DMA1_Channel2_IRQHandler(
void) __attribute__((interrupt));
311extern "C" void DMA1_Channel2_IRQHandler(
void)
313 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL2].fun !=
nullptr)
315 ch32_dma_callback_map[CH32_DMA1_CHANNEL2].fun(
316 ch32_dma_callback_map[CH32_DMA1_CHANNEL2].arg);
321#if defined(DMA1_Channel3)
323extern "C" void DMA1_Channel3_IRQHandler(
void) __attribute__((interrupt));
325extern "C" void DMA1_Channel3_IRQHandler(
void)
327 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL3].fun !=
nullptr)
329 ch32_dma_callback_map[CH32_DMA1_CHANNEL3].fun(
330 ch32_dma_callback_map[CH32_DMA1_CHANNEL3].arg);
335#if defined(DMA1_Channel4)
337extern "C" void DMA1_Channel4_IRQHandler(
void) __attribute__((interrupt));
339extern "C" void DMA1_Channel4_IRQHandler(
void)
341 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL4].fun !=
nullptr)
343 ch32_dma_callback_map[CH32_DMA1_CHANNEL4].fun(
344 ch32_dma_callback_map[CH32_DMA1_CHANNEL4].arg);
349#if defined(DMA1_Channel5)
351extern "C" void DMA1_Channel5_IRQHandler(
void) __attribute__((interrupt));
353extern "C" void DMA1_Channel5_IRQHandler(
void)
355 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL5].fun !=
nullptr)
357 ch32_dma_callback_map[CH32_DMA1_CHANNEL5].fun(
358 ch32_dma_callback_map[CH32_DMA1_CHANNEL5].arg);
363#if defined(DMA1_Channel6)
365extern "C" void DMA1_Channel6_IRQHandler(
void) __attribute__((interrupt));
367extern "C" void DMA1_Channel6_IRQHandler(
void)
369 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL6].fun !=
nullptr)
371 ch32_dma_callback_map[CH32_DMA1_CHANNEL6].fun(
372 ch32_dma_callback_map[CH32_DMA1_CHANNEL6].arg);
377#if defined(DMA1_Channel7)
379extern "C" void DMA1_Channel7_IRQHandler(
void) __attribute__((interrupt));
381extern "C" void DMA1_Channel7_IRQHandler(
void)
383 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL7].fun !=
nullptr)
385 ch32_dma_callback_map[CH32_DMA1_CHANNEL7].fun(
386 ch32_dma_callback_map[CH32_DMA1_CHANNEL7].arg);
391#if defined(DMA1_Channel8)
393extern "C" void DMA1_Channel8_IRQHandler(
void) __attribute__((interrupt));
395extern "C" void DMA1_Channel8_IRQHandler(
void)
397 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL8].fun !=
nullptr)
399 ch32_dma_callback_map[CH32_DMA1_CHANNEL8].fun(
400 ch32_dma_callback_map[CH32_DMA1_CHANNEL8].arg);
405#if defined(DMA2_Channel1)
407extern "C" void DMA2_Channel1_IRQHandler(
void) __attribute__((interrupt));
409extern "C" void DMA2_Channel1_IRQHandler(
void)
411 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL1].fun !=
nullptr)
413 ch32_dma_callback_map[CH32_DMA2_CHANNEL1].fun(
414 ch32_dma_callback_map[CH32_DMA2_CHANNEL1].arg);
419#if defined(DMA2_Channel2)
421extern "C" void DMA2_Channel2_IRQHandler(
void) __attribute__((interrupt));
423extern "C" void DMA2_Channel2_IRQHandler(
void)
425 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL2].fun !=
nullptr)
427 ch32_dma_callback_map[CH32_DMA2_CHANNEL2].fun(
428 ch32_dma_callback_map[CH32_DMA2_CHANNEL2].arg);
433#if defined(DMA2_Channel3)
435extern "C" void DMA2_Channel3_IRQHandler(
void) __attribute__((interrupt));
437extern "C" void DMA2_Channel3_IRQHandler(
void)
439 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL3].fun !=
nullptr)
441 ch32_dma_callback_map[CH32_DMA2_CHANNEL3].fun(
442 ch32_dma_callback_map[CH32_DMA2_CHANNEL3].arg);
447#if defined(DMA2_Channel4)
449extern "C" void DMA2_Channel4_IRQHandler(
void) __attribute__((interrupt));
451extern "C" void DMA2_Channel4_IRQHandler(
void)
453 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL4].fun !=
nullptr)
455 ch32_dma_callback_map[CH32_DMA2_CHANNEL4].fun(
456 ch32_dma_callback_map[CH32_DMA2_CHANNEL4].arg);
461#if defined(DMA2_Channel5)
463extern "C" void DMA2_Channel5_IRQHandler(
void) __attribute__((interrupt));
465extern "C" void DMA2_Channel5_IRQHandler(
void)
467 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL5].fun !=
nullptr)
469 ch32_dma_callback_map[CH32_DMA2_CHANNEL5].fun(
470 ch32_dma_callback_map[CH32_DMA2_CHANNEL5].arg);
475#if defined(DMA2_Channel6)
477extern "C" void DMA2_Channel6_IRQHandler(
void) __attribute__((interrupt));
479extern "C" void DMA2_Channel6_IRQHandler(
void)
481 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL6].fun !=
nullptr)
483 ch32_dma_callback_map[CH32_DMA2_CHANNEL6].fun(
484 ch32_dma_callback_map[CH32_DMA2_CHANNEL6].arg);
489#if defined(DMA2_Channel7)
491extern "C" void DMA2_Channel7_IRQHandler(
void) __attribute__((interrupt));
493extern "C" void DMA2_Channel7_IRQHandler(
void)
495 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL7].fun !=
nullptr)
497 ch32_dma_callback_map[CH32_DMA2_CHANNEL7].fun(
498 ch32_dma_callback_map[CH32_DMA2_CHANNEL7].arg);
503#if defined(DMA2_Channel8)
505extern "C" void DMA2_Channel8_IRQHandler(
void) __attribute__((interrupt));
507extern "C" void DMA2_Channel8_IRQHandler(
void)
509 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL8].fun !=
nullptr)
511 ch32_dma_callback_map[CH32_DMA2_CHANNEL8].fun(
512 ch32_dma_callback_map[CH32_DMA2_CHANNEL8].arg);
517#if defined(DMA2_Channel9)
519extern "C" void DMA2_Channel9_IRQHandler(
void) __attribute__((interrupt));
521extern "C" void DMA2_Channel9_IRQHandler(
void)
523 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL9].fun !=
nullptr)
525 ch32_dma_callback_map[CH32_DMA2_CHANNEL9].fun(
526 ch32_dma_callback_map[CH32_DMA2_CHANNEL9].arg);
531#if defined(DMA2_Channel10)
533extern "C" void DMA2_Channel10_IRQHandler(
void) __attribute__((interrupt));
535extern "C" void DMA2_Channel10_IRQHandler(
void)
537 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL10].fun !=
nullptr)
539 ch32_dma_callback_map[CH32_DMA2_CHANNEL10].fun(
540 ch32_dma_callback_map[CH32_DMA2_CHANNEL10].arg);
545#if defined(DMA2_Channel11)
547extern "C" void DMA2_Channel11_IRQHandler(
void) __attribute__((interrupt));
549extern "C" void DMA2_Channel11_IRQHandler(
void)
551 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL11].fun !=
nullptr)
553 ch32_dma_callback_map[CH32_DMA2_CHANNEL11].fun(
554 ch32_dma_callback_map[CH32_DMA2_CHANNEL11].arg);