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