libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
ch32_dma.hpp
1#pragma once
2
3#include "libxr.hpp"
4#include DEF2STR(LIBXR_CH32_CONFIG_FILE)
5
6typedef void (*ch32_dma_callback_t)(void *);
7
8typedef enum
9{
10#if defined(DMA1_Channel1)
11 CH32_DMA1_CHANNEL1,
12#endif
13#if defined(DMA1_Channel2)
14 CH32_DMA1_CHANNEL2,
15#endif
16#if defined(DMA1_Channel3)
17 CH32_DMA1_CHANNEL3,
18#endif
19#if defined(DMA1_Channel4)
20 CH32_DMA1_CHANNEL4,
21#endif
22#if defined(DMA1_Channel5)
23 CH32_DMA1_CHANNEL5,
24#endif
25#if defined(DMA1_Channel6)
26 CH32_DMA1_CHANNEL6,
27#endif
28#if defined(DMA1_Channel7)
29 CH32_DMA1_CHANNEL7,
30#endif
31#if defined(DMA1_Channel8)
32 CH32_DMA1_CHANNEL8,
33#endif
34#if defined(DMA2_Channel1)
35 CH32_DMA2_CHANNEL1,
36#endif
37#if defined(DMA2_Channel2)
38 CH32_DMA2_CHANNEL2,
39#endif
40#if defined(DMA2_Channel3)
41 CH32_DMA2_CHANNEL3,
42#endif
43#if defined(DMA2_Channel4)
44 CH32_DMA2_CHANNEL4,
45#endif
46#if defined(DMA2_Channel5)
47 CH32_DMA2_CHANNEL5,
48#endif
49#if defined(DMA2_Channel6)
50 CH32_DMA2_CHANNEL6,
51#endif
52#if defined(DMA2_Channel7)
53 CH32_DMA2_CHANNEL7,
54#endif
55#if defined(DMA2_Channel8)
56 CH32_DMA2_CHANNEL8,
57#endif
58#if defined(DMA2_Channel9)
59 CH32_DMA2_CHANNEL9,
60#endif
61#if defined(DMA2_Channel10)
62 CH32_DMA2_CHANNEL10,
63#endif
64#if defined(DMA2_Channel11)
65 CH32_DMA2_CHANNEL11,
66#endif
67
68 CH32_DMA_CHANNEL_NUMBER,
69 CH32_DMA_CHANNEL_NONE
70} ch32_dma_channel_t;
71
72static constexpr IRQn_Type CH32_DMA_IRQ_MAP[] = {
73#if defined(DMA1_Channel1)
74 DMA1_Channel1_IRQn,
75#endif
76#if defined(DMA1_Channel2)
77 DMA1_Channel2_IRQn,
78#endif
79#if defined(DMA1_Channel3)
80 DMA1_Channel3_IRQn,
81#endif
82#if defined(DMA1_Channel4)
83 DMA1_Channel4_IRQn,
84#endif
85#if defined(DMA1_Channel5)
86 DMA1_Channel5_IRQn,
87#endif
88#if defined(DMA1_Channel6)
89 DMA1_Channel6_IRQn,
90#endif
91#if defined(DMA1_Channel7)
92 DMA1_Channel7_IRQn,
93#endif
94#if defined(DMA2_Channel1)
95 DMA2_Channel1_IRQn,
96#endif
97#if defined(DMA2_Channel2)
98 DMA2_Channel2_IRQn,
99#endif
100#if defined(DMA2_Channel3)
101 DMA2_Channel3_IRQn,
102#endif
103#if defined(DMA2_Channel4)
104 DMA2_Channel4_IRQn,
105#endif
106#if defined(DMA2_Channel5)
107 DMA2_Channel5_IRQn,
108#endif
109#if defined(DMA2_Channel6)
110 DMA2_Channel6_IRQn,
111#endif
112#if defined(DMA2_Channel7)
113 DMA2_Channel7_IRQn,
114#endif
115#if defined(DMA2_Channel8)
116 DMA2_Channel8_IRQn,
117#endif
118#if defined(DMA2_Channel9)
119 DMA2_Channel9_IRQn,
120#endif
121#if defined(DMA2_Channel10)
122 DMA2_Channel10_IRQn,
123#endif
124#if defined(DMA2_Channel11)
125 DMA2_Channel11_IRQn,
126#endif
127};
128
129ch32_dma_channel_t CH32_DMA_GetID(DMA_Channel_TypeDef *channel);
130
131DMA_Channel_TypeDef *CH32_DMA_GetChannel(ch32_dma_channel_t id);
132
133void CH32_DMA_RegisterCallback(ch32_dma_channel_t id, ch32_dma_callback_t callback,
134 void *arg);