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
5extern "C" void CH32_UART_ISR_Handler_TX_CPLT(ch32_uart_id_t id);
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));
10extern "C" void DMA2_Channel5_IRQHandler(void) __attribute__((interrupt));
11extern "C" void DMA2_Channel4_IRQHandler(void) __attribute__((interrupt));
12extern "C" void DMA2_Channel6_IRQHandler(void) __attribute__((interrupt));
13extern "C" void DMA2_Channel8_IRQHandler(void) __attribute__((interrupt));
14extern "C" void DMA2_Channel10_IRQHandler(void) __attribute__((interrupt));
15
16extern "C" void DMA1_Channel4_IRQHandler(void)
17{
18 LibXR::CH32UART::DmaIRQHandler(DMA1_Channel4, ch32_uart_id_t::CH32_USART1);
19}
20
21extern "C" void DMA1_Channel7_IRQHandler(void)
22{
23 LibXR::CH32UART::DmaIRQHandler(DMA1_Channel7, ch32_uart_id_t::CH32_USART2);
24}
25
26extern "C" void DMA1_Channel2_IRQHandler(void)
27{
28 LibXR::CH32UART::DmaIRQHandler(DMA1_Channel2, ch32_uart_id_t::CH32_USART3);
29}
30
31extern "C" void DMA2_Channel5_IRQHandler(void)
32{
33 LibXR::CH32UART::DmaIRQHandler(DMA2_Channel5, ch32_uart_id_t::CH32_UART4);
34}
35
36extern "C" void DMA2_Channel4_IRQHandler(void)
37{
38 LibXR::CH32UART::DmaIRQHandler(DMA2_Channel4, ch32_uart_id_t::CH32_UART5);
39}
40
41extern "C" void DMA2_Channel6_IRQHandler(void)
42{
43 LibXR::CH32UART::DmaIRQHandler(DMA2_Channel6, ch32_uart_id_t::CH32_UART6);
44}
45
46extern "C" void DMA2_Channel8_IRQHandler(void)
47{
48 LibXR::CH32UART::DmaIRQHandler(DMA2_Channel8, ch32_uart_id_t::CH32_UART7);
49}
50
51extern "C" void DMA2_Channel10_IRQHandler(void)
52{
53 LibXR::CH32UART::DmaIRQHandler(DMA2_Channel10, ch32_uart_id_t::CH32_UART8);
54}
55
56ch32_dma_channel_t CH32_DMA_GetID(DMA_Channel_TypeDef *channel)
57{
58#if defined(DMA1_Channel1)
59 if (channel == DMA1_Channel1)
60 {
61 return CH32_DMA1_CHANNEL1;
62 }
63#endif
64
65#if defined(DMA1_Channel2)
66 if (channel == DMA1_Channel2)
67 {
68 return CH32_DMA1_CHANNEL2;
69 }
70#endif
71
72#if defined(DMA1_Channel3)
73 if (channel == DMA1_Channel3)
74 {
75 return CH32_DMA1_CHANNEL3;
76 }
77#endif
78
79#if defined(DMA1_Channel4)
80 if (channel == DMA1_Channel4)
81 {
82 return CH32_DMA1_CHANNEL4;
83 }
84#endif
85
86#if defined(DMA1_Channel5)
87 if (channel == DMA1_Channel5)
88 {
89 return CH32_DMA1_CHANNEL5;
90 }
91#endif
92
93#if defined(DMA1_Channel6)
94 if (channel == DMA1_Channel6)
95 {
96 return CH32_DMA1_CHANNEL6;
97 }
98#endif
99
100#if defined(DMA1_Channel7)
101 if (channel == DMA1_Channel7)
102 {
103 return CH32_DMA1_CHANNEL7;
104 }
105#endif
106
107#if defined(DMA2_Channel1)
108 if (channel == DMA2_Channel1)
109 {
110 return CH32_DMA2_CHANNEL1;
111 }
112#endif
113
114#if defined(DMA2_Channel2)
115 if (channel == DMA2_Channel2)
116 {
117 return CH32_DMA2_CHANNEL2;
118 }
119#endif
120
121#if defined(DMA2_Channel3)
122 if (channel == DMA2_Channel3)
123 {
124 return CH32_DMA2_CHANNEL3;
125 }
126#endif
127
128#if defined(DMA2_Channel4)
129 if (channel == DMA2_Channel4)
130 {
131 return CH32_DMA2_CHANNEL4;
132 }
133#endif
134
135#if defined(DMA2_Channel5)
136 if (channel == DMA2_Channel5)
137 {
138 return CH32_DMA2_CHANNEL5;
139 }
140#endif
141
142#if defined(DMA2_Channel6)
143 if (channel == DMA2_Channel6)
144 {
145 return CH32_DMA2_CHANNEL6;
146 }
147#endif
148
149#if defined(DMA2_Channel7)
150 if (channel == DMA2_Channel7)
151 {
152 return CH32_DMA2_CHANNEL7;
153 }
154#endif
155
156#if defined(DMA2_Channel8)
157 if (channel == DMA2_Channel8)
158 {
159 return CH32_DMA2_CHANNEL8;
160 }
161#endif
162
163#if defined(DMA2_Channel9)
164 if (channel == DMA2_Channel9)
165 {
166 return CH32_DMA2_CHANNEL9;
167 }
168#endif
169
170#if defined(DMA2_Channel10)
171 if (channel == DMA2_Channel10)
172 {
173 return CH32_DMA2_CHANNEL10;
174 }
175#endif
176
177#if defined(DMA2_Channel11)
178 if (channel == DMA2_Channel11)
179 {
180 return CH32_DMA2_CHANNEL11;
181 }
182#endif
183
184 return CH32_DMA_CHANNEL_NONE;
185}
186
187DMA_Channel_TypeDef *CH32_DMA_GetChannel(ch32_dma_channel_t id)
188{
189#if defined(DMA1_Channel1)
190 if (id == CH32_DMA1_CHANNEL1)
191 {
192 return DMA1_Channel1;
193 }
194#endif
195
196#if defined(DMA1_Channel2)
197 if (id == CH32_DMA1_CHANNEL2)
198 {
199 return DMA1_Channel2;
200 }
201#endif
202
203#if defined(DMA1_Channel3)
204 if (id == CH32_DMA1_CHANNEL3)
205 {
206 return DMA1_Channel3;
207 }
208#endif
209
210#if defined(DMA1_Channel4)
211 if (id == CH32_DMA1_CHANNEL4)
212 {
213 return DMA1_Channel4;
214 }
215#endif
216
217#if defined(DMA1_Channel5)
218 if (id == CH32_DMA1_CHANNEL5)
219 {
220 return DMA1_Channel5;
221 }
222#endif
223
224#if defined(DMA1_Channel6)
225 if (id == CH32_DMA1_CHANNEL6)
226 {
227 return DMA1_Channel6;
228 }
229#endif
230
231#if defined(DMA1_Channel7)
232 if (id == CH32_DMA1_CHANNEL7)
233 {
234 return DMA1_Channel7;
235 }
236#endif
237
238#if defined(DMA2_Channel1)
239 if (id == CH32_DMA2_CHANNEL1)
240 {
241 return DMA2_Channel1;
242 }
243#endif
244
245#if defined(DMA2_Channel2)
246 if (id == CH32_DMA2_CHANNEL2)
247 {
248 return DMA2_Channel2;
249 }
250#endif
251
252#if defined(DMA2_Channel3)
253 if (id == CH32_DMA2_CHANNEL3)
254 {
255 return DMA2_Channel3;
256 }
257#endif
258
259#if defined(DMA2_Channel4)
260 if (id == CH32_DMA2_CHANNEL4)
261 {
262 return DMA2_Channel4;
263 }
264#endif
265
266#if defined(DMA2_Channel5)
267 if (id == CH32_DMA2_CHANNEL5)
268 {
269 return DMA2_Channel5;
270 }
271#endif
272
273#if defined(DMA2_Channel6)
274 if (id == CH32_DMA2_CHANNEL6)
275 {
276 return DMA2_Channel6;
277 }
278#endif
279
280#if defined(DMA2_Channel7)
281 if (id == CH32_DMA2_CHANNEL7)
282 {
283 return DMA2_Channel7;
284 }
285#endif
286
287#if defined(DMA2_Channel8)
288 if (id == CH32_DMA2_CHANNEL8)
289 {
290 return DMA2_Channel8;
291 }
292#endif
293
294#if defined(DMA2_Channel9)
295 if (id == CH32_DMA2_CHANNEL9)
296 {
297 return DMA2_Channel9;
298 }
299#endif
300
301#if defined(DMA2_Channel10)
302 if (id == CH32_DMA2_CHANNEL10)
303 {
304 return DMA2_Channel10;
305 }
306#endif
307
308#if defined(DMA2_Channel11)
309 if (id == CH32_DMA2_CHANNEL11)
310 {
311 return DMA2_Channel11;
312 }
313#endif
314
315 return NULL;
316}