21 #ifndef __STM32F1xx_LL_DMA_H
22 #define __STM32F1xx_LL_DMA_H
35 #if defined (DMA1) || defined (DMA2)
47 static const uint8_t CHANNEL_OFFSET_TAB[] =
62 #if defined(USE_FULL_LL_DRIVER)
72 #if defined(USE_FULL_LL_DRIVER)
78 uint32_t PeriphOrM2MSrcAddress;
83 uint32_t MemoryOrM2MDstAddress;
101 uint32_t PeriphOrM2MSrcIncMode;
107 uint32_t MemoryOrM2MDstIncMode;
113 uint32_t PeriphOrM2MSrcDataSize;
119 uint32_t MemoryOrM2MDstDataSize;
137 } LL_DMA_InitTypeDef;
151 #define LL_DMA_IFCR_CGIF1 DMA_IFCR_CGIF1
152 #define LL_DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1
153 #define LL_DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1
154 #define LL_DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1
155 #define LL_DMA_IFCR_CGIF2 DMA_IFCR_CGIF2
156 #define LL_DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2
157 #define LL_DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2
158 #define LL_DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2
159 #define LL_DMA_IFCR_CGIF3 DMA_IFCR_CGIF3
160 #define LL_DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3
161 #define LL_DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3
162 #define LL_DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3
163 #define LL_DMA_IFCR_CGIF4 DMA_IFCR_CGIF4
164 #define LL_DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4
165 #define LL_DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4
166 #define LL_DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4
167 #define LL_DMA_IFCR_CGIF5 DMA_IFCR_CGIF5
168 #define LL_DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5
169 #define LL_DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5
170 #define LL_DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5
171 #define LL_DMA_IFCR_CGIF6 DMA_IFCR_CGIF6
172 #define LL_DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6
173 #define LL_DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6
174 #define LL_DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6
175 #define LL_DMA_IFCR_CGIF7 DMA_IFCR_CGIF7
176 #define LL_DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7
177 #define LL_DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7
178 #define LL_DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7
187 #define LL_DMA_ISR_GIF1 DMA_ISR_GIF1
188 #define LL_DMA_ISR_TCIF1 DMA_ISR_TCIF1
189 #define LL_DMA_ISR_HTIF1 DMA_ISR_HTIF1
190 #define LL_DMA_ISR_TEIF1 DMA_ISR_TEIF1
191 #define LL_DMA_ISR_GIF2 DMA_ISR_GIF2
192 #define LL_DMA_ISR_TCIF2 DMA_ISR_TCIF2
193 #define LL_DMA_ISR_HTIF2 DMA_ISR_HTIF2
194 #define LL_DMA_ISR_TEIF2 DMA_ISR_TEIF2
195 #define LL_DMA_ISR_GIF3 DMA_ISR_GIF3
196 #define LL_DMA_ISR_TCIF3 DMA_ISR_TCIF3
197 #define LL_DMA_ISR_HTIF3 DMA_ISR_HTIF3
198 #define LL_DMA_ISR_TEIF3 DMA_ISR_TEIF3
199 #define LL_DMA_ISR_GIF4 DMA_ISR_GIF4
200 #define LL_DMA_ISR_TCIF4 DMA_ISR_TCIF4
201 #define LL_DMA_ISR_HTIF4 DMA_ISR_HTIF4
202 #define LL_DMA_ISR_TEIF4 DMA_ISR_TEIF4
203 #define LL_DMA_ISR_GIF5 DMA_ISR_GIF5
204 #define LL_DMA_ISR_TCIF5 DMA_ISR_TCIF5
205 #define LL_DMA_ISR_HTIF5 DMA_ISR_HTIF5
206 #define LL_DMA_ISR_TEIF5 DMA_ISR_TEIF5
207 #define LL_DMA_ISR_GIF6 DMA_ISR_GIF6
208 #define LL_DMA_ISR_TCIF6 DMA_ISR_TCIF6
209 #define LL_DMA_ISR_HTIF6 DMA_ISR_HTIF6
210 #define LL_DMA_ISR_TEIF6 DMA_ISR_TEIF6
211 #define LL_DMA_ISR_GIF7 DMA_ISR_GIF7
212 #define LL_DMA_ISR_TCIF7 DMA_ISR_TCIF7
213 #define LL_DMA_ISR_HTIF7 DMA_ISR_HTIF7
214 #define LL_DMA_ISR_TEIF7 DMA_ISR_TEIF7
223 #define LL_DMA_CCR_TCIE DMA_CCR_TCIE
224 #define LL_DMA_CCR_HTIE DMA_CCR_HTIE
225 #define LL_DMA_CCR_TEIE DMA_CCR_TEIE
233 #define LL_DMA_CHANNEL_1 0x00000001U
234 #define LL_DMA_CHANNEL_2 0x00000002U
235 #define LL_DMA_CHANNEL_3 0x00000003U
236 #define LL_DMA_CHANNEL_4 0x00000004U
237 #define LL_DMA_CHANNEL_5 0x00000005U
238 #define LL_DMA_CHANNEL_6 0x00000006U
239 #define LL_DMA_CHANNEL_7 0x00000007U
240 #if defined(USE_FULL_LL_DRIVER)
241 #define LL_DMA_CHANNEL_ALL 0xFFFF0000U
250 #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U
251 #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CCR_DIR
252 #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM
260 #define LL_DMA_MODE_NORMAL 0x00000000U
261 #define LL_DMA_MODE_CIRCULAR DMA_CCR_CIRC
269 #define LL_DMA_PERIPH_INCREMENT DMA_CCR_PINC
270 #define LL_DMA_PERIPH_NOINCREMENT 0x00000000U
278 #define LL_DMA_MEMORY_INCREMENT DMA_CCR_MINC
279 #define LL_DMA_MEMORY_NOINCREMENT 0x00000000U
287 #define LL_DMA_PDATAALIGN_BYTE 0x00000000U
288 #define LL_DMA_PDATAALIGN_HALFWORD DMA_CCR_PSIZE_0
289 #define LL_DMA_PDATAALIGN_WORD DMA_CCR_PSIZE_1
297 #define LL_DMA_MDATAALIGN_BYTE 0x00000000U
298 #define LL_DMA_MDATAALIGN_HALFWORD DMA_CCR_MSIZE_0
299 #define LL_DMA_MDATAALIGN_WORD DMA_CCR_MSIZE_1
307 #define LL_DMA_PRIORITY_LOW 0x00000000U
308 #define LL_DMA_PRIORITY_MEDIUM DMA_CCR_PL_0
309 #define LL_DMA_PRIORITY_HIGH DMA_CCR_PL_1
310 #define LL_DMA_PRIORITY_VERYHIGH DMA_CCR_PL
334 #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
342 #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
357 #define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \
358 (((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)DMA1_Channel7)) ? DMA2 : DMA1)
360 #define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (DMA1)
369 #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
370 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \
371 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \
372 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \
373 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \
374 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \
375 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \
376 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \
377 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \
378 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \
379 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \
380 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \
383 #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
384 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \
385 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \
386 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \
387 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \
388 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \
389 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \
400 #define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \
401 ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \
402 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA2_Channel1 : \
403 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \
404 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA2_Channel2 : \
405 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \
406 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA2_Channel3 : \
407 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \
408 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA2_Channel4 : \
409 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \
410 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA2_Channel5 : \
411 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \
414 #define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \
415 ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \
416 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \
417 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \
418 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \
419 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \
420 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \
650 PeriphOrM2MSrcIncMode);
695 MemoryOrM2MDstIncMode);
741 PeriphOrM2MSrcDataSize);
788 MemoryOrM2MDstDataSize);
932 uint32_t DstAddress, uint32_t Direction)
935 if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH)
1926 #if defined(USE_FULL_LL_DRIVER)
1931 uint32_t LL_DMA_Init(
DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct);
1932 uint32_t LL_DMA_DeInit(
DMA_TypeDef *DMAx, uint32_t Channel);
1933 void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct);