5 ch32_dma_callback_t fun;
7} ch32_dma_callback_map[CH32_DMA_CHANNEL_NUMBER] = {};
9void CH32_DMA_RegisterCallback(ch32_dma_channel_t
id, ch32_dma_callback_t callback,
12 ASSERT(
id < CH32_DMA_CHANNEL_NUMBER);
13 ch32_dma_callback_map[id] = {callback, arg};
16ch32_dma_channel_t CH32_DMA_GetID(DMA_Channel_TypeDef *channel)
18#if defined(DMA1_Channel1)
19 if (channel == DMA1_Channel1)
21 return CH32_DMA1_CHANNEL1;
25#if defined(DMA1_Channel2)
26 if (channel == DMA1_Channel2)
28 return CH32_DMA1_CHANNEL2;
32#if defined(DMA1_Channel3)
33 if (channel == DMA1_Channel3)
35 return CH32_DMA1_CHANNEL3;
39#if defined(DMA1_Channel4)
40 if (channel == DMA1_Channel4)
42 return CH32_DMA1_CHANNEL4;
46#if defined(DMA1_Channel5)
47 if (channel == DMA1_Channel5)
49 return CH32_DMA1_CHANNEL5;
53#if defined(DMA1_Channel6)
54 if (channel == DMA1_Channel6)
56 return CH32_DMA1_CHANNEL6;
60#if defined(DMA1_Channel7)
61 if (channel == DMA1_Channel7)
63 return CH32_DMA1_CHANNEL7;
67#if defined(DMA1_Channel8)
68 if (channel == DMA1_Channel8)
70 return CH32_DMA1_CHANNEL8;
74#if defined(DMA2_Channel1)
75 if (channel == DMA2_Channel1)
77 return CH32_DMA2_CHANNEL1;
81#if defined(DMA2_Channel2)
82 if (channel == DMA2_Channel2)
84 return CH32_DMA2_CHANNEL2;
88#if defined(DMA2_Channel3)
89 if (channel == DMA2_Channel3)
91 return CH32_DMA2_CHANNEL3;
95#if defined(DMA2_Channel4)
96 if (channel == DMA2_Channel4)
98 return CH32_DMA2_CHANNEL4;
102#if defined(DMA2_Channel5)
103 if (channel == DMA2_Channel5)
105 return CH32_DMA2_CHANNEL5;
109#if defined(DMA2_Channel6)
110 if (channel == DMA2_Channel6)
112 return CH32_DMA2_CHANNEL6;
116#if defined(DMA2_Channel7)
117 if (channel == DMA2_Channel7)
119 return CH32_DMA2_CHANNEL7;
123#if defined(DMA2_Channel8)
124 if (channel == DMA2_Channel8)
126 return CH32_DMA2_CHANNEL8;
130#if defined(DMA2_Channel9)
131 if (channel == DMA2_Channel9)
133 return CH32_DMA2_CHANNEL9;
137#if defined(DMA2_Channel10)
138 if (channel == DMA2_Channel10)
140 return CH32_DMA2_CHANNEL10;
144#if defined(DMA2_Channel11)
145 if (channel == DMA2_Channel11)
147 return CH32_DMA2_CHANNEL11;
151 return CH32_DMA_CHANNEL_NONE;
154DMA_Channel_TypeDef *CH32_DMA_GetChannel(ch32_dma_channel_t
id)
156#if defined(DMA1_Channel1)
157 if (
id == CH32_DMA1_CHANNEL1)
159 return DMA1_Channel1;
163#if defined(DMA1_Channel2)
164 if (
id == CH32_DMA1_CHANNEL2)
166 return DMA1_Channel2;
170#if defined(DMA1_Channel3)
171 if (
id == CH32_DMA1_CHANNEL3)
173 return DMA1_Channel3;
177#if defined(DMA1_Channel4)
178 if (
id == CH32_DMA1_CHANNEL4)
180 return DMA1_Channel4;
184#if defined(DMA1_Channel5)
185 if (
id == CH32_DMA1_CHANNEL5)
187 return DMA1_Channel5;
191#if defined(DMA1_Channel6)
192 if (
id == CH32_DMA1_CHANNEL6)
194 return DMA1_Channel6;
198#if defined(DMA1_Channel7)
199 if (
id == CH32_DMA1_CHANNEL7)
201 return DMA1_Channel7;
205#if defined(DMA2_Channel1)
206 if (
id == CH32_DMA2_CHANNEL1)
208 return DMA2_Channel1;
212#if defined(DMA2_Channel2)
213 if (
id == CH32_DMA2_CHANNEL2)
215 return DMA2_Channel2;
219#if defined(DMA2_Channel3)
220 if (
id == CH32_DMA2_CHANNEL3)
222 return DMA2_Channel3;
226#if defined(DMA2_Channel4)
227 if (
id == CH32_DMA2_CHANNEL4)
229 return DMA2_Channel4;
233#if defined(DMA2_Channel5)
234 if (
id == CH32_DMA2_CHANNEL5)
236 return DMA2_Channel5;
240#if defined(DMA2_Channel6)
241 if (
id == CH32_DMA2_CHANNEL6)
243 return DMA2_Channel6;
247#if defined(DMA2_Channel7)
248 if (
id == CH32_DMA2_CHANNEL7)
250 return DMA2_Channel7;
254#if defined(DMA2_Channel8)
255 if (
id == CH32_DMA2_CHANNEL8)
257 return DMA2_Channel8;
261#if defined(DMA2_Channel9)
262 if (
id == CH32_DMA2_CHANNEL9)
264 return DMA2_Channel9;
268#if defined(DMA2_Channel10)
269 if (
id == CH32_DMA2_CHANNEL10)
271 return DMA2_Channel10;
275#if defined(DMA2_Channel11)
276 if (
id == CH32_DMA2_CHANNEL11)
278 return DMA2_Channel11;
285#if defined(DMA1_Channel1)
286extern "C" void DMA1_Channel1_IRQHandler(
void) __attribute__((interrupt));
287extern "C" void DMA1_Channel1_IRQHandler(
void)
289 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL1].fun !=
nullptr)
291 ch32_dma_callback_map[CH32_DMA1_CHANNEL1].fun(
292 ch32_dma_callback_map[CH32_DMA1_CHANNEL1].arg);
297#if defined(DMA1_Channel2)
298extern "C" void DMA1_Channel2_IRQHandler(
void) __attribute__((interrupt));
299extern "C" void DMA1_Channel2_IRQHandler(
void)
301 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL2].fun !=
nullptr)
303 ch32_dma_callback_map[CH32_DMA1_CHANNEL2].fun(
304 ch32_dma_callback_map[CH32_DMA1_CHANNEL2].arg);
309#if defined(DMA1_Channel3)
310extern "C" void DMA1_Channel3_IRQHandler(
void) __attribute__((interrupt));
311extern "C" void DMA1_Channel3_IRQHandler(
void)
313 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL3].fun !=
nullptr)
315 ch32_dma_callback_map[CH32_DMA1_CHANNEL3].fun(
316 ch32_dma_callback_map[CH32_DMA1_CHANNEL3].arg);
321#if defined(DMA1_Channel4)
322extern "C" void DMA1_Channel4_IRQHandler(
void) __attribute__((interrupt));
323extern "C" void DMA1_Channel4_IRQHandler(
void)
325 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL4].fun !=
nullptr)
327 ch32_dma_callback_map[CH32_DMA1_CHANNEL4].fun(
328 ch32_dma_callback_map[CH32_DMA1_CHANNEL4].arg);
333#if defined(DMA1_Channel5)
334extern "C" void DMA1_Channel5_IRQHandler(
void) __attribute__((interrupt));
335extern "C" void DMA1_Channel5_IRQHandler(
void)
337 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL5].fun !=
nullptr)
339 ch32_dma_callback_map[CH32_DMA1_CHANNEL5].fun(
340 ch32_dma_callback_map[CH32_DMA1_CHANNEL5].arg);
345#if defined(DMA1_Channel6)
346extern "C" void DMA1_Channel6_IRQHandler(
void) __attribute__((interrupt));
347extern "C" void DMA1_Channel6_IRQHandler(
void)
349 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL6].fun !=
nullptr)
351 ch32_dma_callback_map[CH32_DMA1_CHANNEL6].fun(
352 ch32_dma_callback_map[CH32_DMA1_CHANNEL6].arg);
357#if defined(DMA1_Channel7)
358extern "C" void DMA1_Channel7_IRQHandler(
void) __attribute__((interrupt));
359extern "C" void DMA1_Channel7_IRQHandler(
void)
361 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL7].fun !=
nullptr)
363 ch32_dma_callback_map[CH32_DMA1_CHANNEL7].fun(
364 ch32_dma_callback_map[CH32_DMA1_CHANNEL7].arg);
369#if defined(DMA1_Channel8)
370extern "C" void DMA1_Channel8_IRQHandler(
void) __attribute__((interrupt));
371extern "C" void DMA1_Channel8_IRQHandler(
void)
373 if (ch32_dma_callback_map[CH32_DMA1_CHANNEL8].fun !=
nullptr)
375 ch32_dma_callback_map[CH32_DMA1_CHANNEL8].fun(
376 ch32_dma_callback_map[CH32_DMA1_CHANNEL8].arg);
381#if defined(DMA2_Channel1)
382extern "C" void DMA2_Channel1_IRQHandler(
void) __attribute__((interrupt));
383extern "C" void DMA2_Channel1_IRQHandler(
void)
385 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL1].fun !=
nullptr)
387 ch32_dma_callback_map[CH32_DMA2_CHANNEL1].fun(
388 ch32_dma_callback_map[CH32_DMA2_CHANNEL1].arg);
393#if defined(DMA2_Channel2)
394extern "C" void DMA2_Channel2_IRQHandler(
void) __attribute__((interrupt));
395extern "C" void DMA2_Channel2_IRQHandler(
void)
397 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL2].fun !=
nullptr)
399 ch32_dma_callback_map[CH32_DMA2_CHANNEL2].fun(
400 ch32_dma_callback_map[CH32_DMA2_CHANNEL2].arg);
405#if defined(DMA2_Channel3)
406extern "C" void DMA2_Channel3_IRQHandler(
void) __attribute__((interrupt));
407extern "C" void DMA2_Channel3_IRQHandler(
void)
409 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL3].fun !=
nullptr)
411 ch32_dma_callback_map[CH32_DMA2_CHANNEL3].fun(
412 ch32_dma_callback_map[CH32_DMA2_CHANNEL3].arg);
417#if defined(DMA2_Channel4)
418extern "C" void DMA2_Channel4_IRQHandler(
void) __attribute__((interrupt));
419extern "C" void DMA2_Channel4_IRQHandler(
void)
421 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL4].fun !=
nullptr)
423 ch32_dma_callback_map[CH32_DMA2_CHANNEL4].fun(
424 ch32_dma_callback_map[CH32_DMA2_CHANNEL4].arg);
429#if defined(DMA2_Channel5)
430extern "C" void DMA2_Channel5_IRQHandler(
void) __attribute__((interrupt));
431extern "C" void DMA2_Channel5_IRQHandler(
void)
433 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL5].fun !=
nullptr)
435 ch32_dma_callback_map[CH32_DMA2_CHANNEL5].fun(
436 ch32_dma_callback_map[CH32_DMA2_CHANNEL5].arg);
441#if defined(DMA2_Channel6)
442extern "C" void DMA2_Channel6_IRQHandler(
void) __attribute__((interrupt));
443extern "C" void DMA2_Channel6_IRQHandler(
void)
445 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL6].fun !=
nullptr)
447 ch32_dma_callback_map[CH32_DMA2_CHANNEL6].fun(
448 ch32_dma_callback_map[CH32_DMA2_CHANNEL6].arg);
453#if defined(DMA2_Channel7)
454extern "C" void DMA2_Channel7_IRQHandler(
void) __attribute__((interrupt));
455extern "C" void DMA2_Channel7_IRQHandler(
void)
457 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL7].fun !=
nullptr)
459 ch32_dma_callback_map[CH32_DMA2_CHANNEL7].fun(
460 ch32_dma_callback_map[CH32_DMA2_CHANNEL7].arg);
465#if defined(DMA2_Channel8)
466extern "C" void DMA2_Channel8_IRQHandler(
void) __attribute__((interrupt));
467extern "C" void DMA2_Channel8_IRQHandler(
void)
469 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL8].fun !=
nullptr)
471 ch32_dma_callback_map[CH32_DMA2_CHANNEL8].fun(
472 ch32_dma_callback_map[CH32_DMA2_CHANNEL8].arg);
477#if defined(DMA2_Channel9)
478extern "C" void DMA2_Channel9_IRQHandler(
void) __attribute__((interrupt));
479extern "C" void DMA2_Channel9_IRQHandler(
void)
481 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL9].fun !=
nullptr)
483 ch32_dma_callback_map[CH32_DMA2_CHANNEL9].fun(
484 ch32_dma_callback_map[CH32_DMA2_CHANNEL9].arg);
489#if defined(DMA2_Channel10)
490extern "C" void DMA2_Channel10_IRQHandler(
void) __attribute__((interrupt));
491extern "C" void DMA2_Channel10_IRQHandler(
void)
493 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL10].fun !=
nullptr)
495 ch32_dma_callback_map[CH32_DMA2_CHANNEL10].fun(
496 ch32_dma_callback_map[CH32_DMA2_CHANNEL10].arg);
501#if defined(DMA2_Channel11)
502extern "C" void DMA2_Channel11_IRQHandler(
void) __attribute__((interrupt));
503extern "C" void DMA2_Channel11_IRQHandler(
void)
505 if (ch32_dma_callback_map[CH32_DMA2_CHANNEL11].fun !=
nullptr)
507 ch32_dma_callback_map[CH32_DMA2_CHANNEL11].fun(
508 ch32_dma_callback_map[CH32_DMA2_CHANNEL11].arg);