forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-06 b39a40b0191e0a8b155db74e885ff66e17b91896
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
/**
  ******************************************************************************
  * @file    fm33a0xxev_dma.h
  * @author  FM33A0XXEV Application Team
  * @version V1.0.0
  * @date    16-April-2020
  * @brief   This file contains all the functions prototypes for the DMA firmware library.  
  ******************************************************************************
  */
  
/* Define to prevent recursive inclusion -------------------------------------*/
 
#ifndef __FM33A0XXEV_DMA_H
#define __FM33A0XXEV_DMA_H
 
 
#ifdef __cplusplus
 extern "C" {
#endif
 
/* Includes ------------------------------------------------------------------*/
 
#include "FM33A0XXEV.h" 
 
typedef enum {
    DMA_CH0 = 0, DMA_CH1 = 1, DMA_CH2 = 2, DMA_CH3 = 3, DMA_CH4 = 4, DMA_CH5 = 5, DMA_CH6 = 6, DMA_CH7 = 7,    
    DMA_CH8 = 8, DMA_CH9 = 9, DMA_CH10 = 10, DMA_CH11 = 11
}DMA_CH_Type;
 
typedef struct
{
    DMA_CH_Type CHx;            //DMAͨµÀºÅ
    uint32_t CHxTSIZE;          //ͨµÀ´«Ê䳤¶È
    uint32_t CHxPRI;            //ͨµÀÓÅÏȼ¶
    uint32_t CHxINC;            //CH0~CH10ͨµÀµØÖ·Ôö³¤·½Ïò,CH11ÎÞÒâÒå
    uint32_t CHxSSEL;           //CH0~CH10ÍâÉèͨµÀÑ¡Ôñ,CH11´«Ê䷽ʽѡÔñ
    uint32_t CHxDIR;            //CH0~CH10ͨµÀ´«Êä·½Ïò
    uint32_t CHxBDW;            //CH0~CH10ͨµÀ´«Êä´ø¿í
    FunState CHxCICR;           //CH0~CH10Ñ­»·»º³åģʽ
    FunState CHxFTIE;           //ͨµÀ´«ÊäÍê³ÉÖжÏʹÄÜ
    FunState CHxHTIE;           //ͨµÀ´«Êä°ë³ÌÖжÏʹÄÜ
    FunState CHxEN;             //ͨµÀʹÄÜ
    uint32_t CHxRAMAD;          //CH0~CH11ͨµÀRAMÖ¸ÕëµØÖ·,×¢ÒâCH11ʹÓõÄÊÇwordµØÖ·£¬Çý¶¯ÀïÒÑ´¦Àí¹ýÁË£¬
 
    uint32_t CH11RI;            // RAMµØÖ·Ôö³¤·½Ïò(½öFlashµ½RAMÓÐЧ)
    uint32_t CH11FI;            // FLSµØÖ·Ôö³¤·½Ïò(½öFlashµ½RAMÓÐЧ)
    uint32_t CH11FLSAD;            //ͨµÀFLASHÖ¸ÕëµØÖ·£¬½öÕë¶ÔͨµÀ11ÓÐÒâÒå    
}DMA_InitTypeDef;
 
#define    DMA_GCR_DMA_ADDRERR_EN_Pos    1    /* DMA´íÎóµØÖ·ÖжÏʹÄÜ
1£ºÔÊÐí´íÎóµØÖ·ÖжÏ
0£º½ûÖ¹´íÎóµØÖ·ÖжϠ*/
#define    DMA_GCR_DMA_ADDRERR_EN_Msk    (0x1U << DMA_GCR_DMA_ADDRERR_EN_Pos)
 
#define    DMA_GCR_DMAEN_Pos    0    /* DMAÈ«¾ÖʹÄÜ
1£ºDMAʹÄÜ
0£ºDMA¹Ø±Õ */
#define    DMA_GCR_DMAEN_Msk    (0x1U << DMA_GCR_DMAEN_Pos)
 
#define    DMA_CHxCR_CHxTSIZE_Pos    16    /* Channelx´«Ê䳤¶È£¬1-8192´Î´«Êä */
#define    DMA_CHxCR_CHxTSIZE_Msk    (0x1fffU << DMA_CHxCR_CHxTSIZE_Pos)
 
#define    DMA_CHxCR_CHxPRI_Pos    12    /* ChannelxÓÅÏȼ¶
00£ºLow
01£ºMedium
10£ºHigh
11£ºVery High */
#define    DMA_CHxCR_CHxPRI_Msk    (0x3U << DMA_CHxCR_CHxPRI_Pos)
#define    DMA_CHxCR_CHxPRI_LOW    (0x0U << DMA_CHxCR_CHxPRI_Pos)    /* Low */
#define    DMA_CHxCR_CHxPRI_MEDIUM    (0x1U << DMA_CHxCR_CHxPRI_Pos)    /* Medium */
#define    DMA_CHxCR_CHxPRI_HIGH    (0x2U << DMA_CHxCR_CHxPRI_Pos)    /* High */
#define    DMA_CHxCR_CHxPRI_VERY_HIGH    (0x3U << DMA_CHxCR_CHxPRI_Pos)    /* Very High */
 
#define    DMA_CHxCR_CHxINC_Pos    11    /* RAMµØÖ·Ôö¼õÉèÖÃ
1£ºRAMµØÖ·µÝÔö
0£ºRAMµØÖ·µÝ¼õ */
#define    DMA_CHxCR_CHxINC_Msk    (0x1U << DMA_CHxCR_CHxINC_Pos)
#define    DMA_CHxCR_CHxINC_INCREASE    (0x1U << DMA_CHxCR_CHxINC_Pos)    /* RAMµØÖ·µÝÔö */
#define    DMA_CHxCR_CHxINC_DECREASE    (0x0U << DMA_CHxCR_CHxINC_Pos)    /* RAMµØÖ·µÝ¼õ */
 
#define    DMA_CHxCR_CHxSSEL_Pos    8    /* ChannelxÍâÉèÇëÇóÓ³Éä
ÿ¸öͨµÀ¿ÉÒÔ½ÓÊÜ8¸öÍâÉèÇëÇó£¬ÍâÉèÇëÇóµÄÓ³Éä²Î¼û23.6.1DMAÇëÇóÓ³Éä */
#define    DMA_CHxCR_CHxSSEL_Msk    (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH0SSEL_ADC               (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH0SSEL_SPI3_RX           (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH0SSEL_LPUART0_RX        (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH0SSEL_LPUART1_RX        (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH0SSEL_UART2_RX          (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH0SSEL_UART4_RX          (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH0SSEL_AES_IN            (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH0SSEL_QSPI              (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH1SSEL_ADC               (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH1SSEL_SPI0_RX           (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH1SSEL_SPI2_RX           (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH1SSEL_SPI3_TX           (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH1SSEL_UART0_RX          (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH1SSEL_UART2_TX          (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH1SSEL_UART3_RX          (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH1SSEL_U7816_RX          (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH2SSEL_SPI0_TX           (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH2SSEL_SPI2_TX           (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH2SSEL_SPI4_RX           (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH2SSEL_UART0_TX          (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH2SSEL_UART3_TX          (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH2SSEL_UART5_RX          (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH2SSEL_U7816_TX          (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH2SSEL_AES_OUT           (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH3SSEL_SPI1_RX           (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH3SSEL_SPI4_TX           (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH3SSEL_LPUART0_RX        (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH3SSEL_UART1_RX          (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH3SSEL_UART4_RX          (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH3SSEL_UART5_TX          (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH3SSEL_I2C0_TX           (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH3SSEL_AES_IN            (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH4SSEL_SPI1_TX           (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH4SSEL_SPI3_RX           (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH4SSEL_LPUART0_TX        (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH4SSEL_UART1_TX          (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH4SSEL_UART2_RX          (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH4SSEL_UART4_TX          (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH4SSEL_I2C0_RX           (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH4SSEL_AES_OUT           (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH5SSEL_SPI0_RX           (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH5SSEL_SPI2_RX           (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH5SSEL_LPUART1_RX        (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH5SSEL_UART1_RX          (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH5SSEL_UART2_TX          (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH5SSEL_UART3_RX          (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH5SSEL_UART5_RX          (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH5SSEL_I2C1_TX           (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH6SSEL_SPI0_TX           (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH6SSEL_SPI2_TX           (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH6SSEL_LPUART1_TX        (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH6SSEL_UART1_TX          (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH6SSEL_UART3_TX          (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH6SSEL_UART5_TX          (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH6SSEL_I2C1_RX           (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH6SSEL_CRC               (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH7SSEL_ADC               (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH7SSEL_SPI1_RX           (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH7SSEL_SPI3_RX           (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH7SSEL_LPUART0_RX        (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH7SSEL_UART0_RX          (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH7SSEL_UART2_RX          (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH7SSEL_UART4_RX          (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH7SSEL_QSPI              (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH8SSEL_ADC               (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH8SSEL_SPI1_TX           (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH8SSEL_SPI2_RX           (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH8SSEL_SPI3_TX           (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH8SSEL_LPUART0_TX        (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH8SSEL_UART0_TX          (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH8SSEL_UART2_TX          (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH8SSEL_UART4_TX          (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH9SSEL_SPI0_RX           (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH9SSEL_SPI2_TX           (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH9SSEL_SPI4_RX           (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH9SSEL_LPUART1_RX        (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH9SSEL_UART1_RX          (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH9SSEL_UART3_RX          (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH9SSEL_UART5_RX          (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH9SSEL_I2C0_TX           (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define DMA_CHxCR_CH10SSEL_SPI0_TX          (0x0U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH10SSEL_SPI4_TX          (0x1U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH10SSEL_LPUART1_TX       (0x2U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH10SSEL_UART1_TX         (0x3U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH10SSEL_UART3_TX         (0x4U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH10SSEL_UART5_TX         (0x5U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH10SSEL_I2C0_RX          (0x6U << DMA_CHxCR_CHxSSEL_Pos)
#define DMA_CHxCR_CH10SSEL_CRC              (0x7U << DMA_CHxCR_CHxSSEL_Pos)
 
#define    DMA_CHxCR_CIRC_UPD_Pos    7    /* Ñ­»·»º³åģʽÏÂ×Ô¶¯¸üд«Êä²ÎÊý£¬±¾ÂÖ´«ÊäÍê³Éºó½«shadow¼Ä´æÆ÷ÄÚÈݸ´ÖƵ½¿ØÖƼĴæÆ÷
0£º½ûÖ¹×Ô¶¯¸üÐÂ
1£ºÊ¹ÄÜ×Ô¶¯¸üÐÂ
×¢Ò⣺½öͨµÀ0~6Ö§³Ö´Ë¹¦ÄÜ£¬Í¨µÀ7~10Î޴˼ĴæÆ÷ */
#define    DMA_CHxCR_CIRC_UPD_Msk    (0x1U << DMA_CHxCR_CIRC_UPD_Pos)
    /* ½ûÖ¹×Ô¶¯¸üР*/
    /* Ê¹ÄÜ×Ô¶¯¸üР*/
    /* ½öͨµÀ0~6Ö§³Ö´Ë¹¦ÄÜ£¬Í¨µÀ7~10Î޴˼ĴæÆ÷ */
 
#define    DMA_CHxCR_DIR_Pos    6    /* Í¨µÀ´«Êä·½Ïò
0£º´ÓÍâÉè¶ÁÈ¡Êý¾ÝдÈëRAM
1£º´ÓRAM¶ÁÈ¡Êý¾ÝдÈëÍâÉè */
#define    DMA_CHxCR_DIR_Msk    (0x1U << DMA_CHxCR_DIR_Pos)
#define    DMA_CHxCR_DIR_TO_RAM    (0x0U << DMA_CHxCR_DIR_Pos)    /* ´ÓÍâÉè¶ÁÈ¡Êý¾ÝдÈëRAM */
#define    DMA_CHxCR_DIR_TO_PER    (0x1U << DMA_CHxCR_DIR_Pos)    /* ´ÓRAM¶ÁÈ¡Êý¾ÝдÈëÍâÉè */
 
#define    DMA_CHxCR_BDW_Pos    4    /* ´«Êä´ø¿íÉèÖÃ
00£º×Ö½Ú£¬8bit
01£º°ë×Ö£¬16bit
10£º×Ö£¬32bit
11£ºRFU */
#define    DMA_CHxCR_BDW_Msk    (0x3U << DMA_CHxCR_BDW_Pos)
#define    DMA_CHxCR_BDW_8BITS    (0x0U << DMA_CHxCR_BDW_Pos)    /* ×Ö½Ú£¬8bit */
#define    DMA_CHxCR_BDW_16BITS    (0x1U << DMA_CHxCR_BDW_Pos)    /* °ë×Ö£¬16bit */
#define    DMA_CHxCR_BDW_32BITS    (0x2U << DMA_CHxCR_BDW_Pos)    /* ×Ö£¬32bit */
 
#define    DMA_CHxCR_CIRC_Pos    3    /* Ñ­»·»º³åģʽ
0£º¹Ø±ÕÑ­»·Ä£Ê½
1£ºÊ¹ÄÜÑ­»·Ä£Ê½ */
#define    DMA_CHxCR_CIRC_Msk    (0x1U << DMA_CHxCR_CIRC_Pos)
    /* ¹Ø±ÕÑ­»·Ä£Ê½ */
    /* Ê¹ÄÜÑ­»·Ä£Ê½ */
 
#define    DMA_CHxCR_CHxFTIE_Pos    2    /* Channelx´«ÊäÍê³ÉÖжÏʹÄÜ
1£ºÊ¹ÄÜ´«ÊäÍê³ÉÖжÏ
0£º¹Ø±Õ´«ÊäÍê³ÉÖжϠ*/
#define    DMA_CHxCR_CHxFTIE_Msk    (0x1U << DMA_CHxCR_CHxFTIE_Pos)
    /* Ê¹ÄÜ´«ÊäÍê³ÉÖжϠ*/
    /* ¹Ø±Õ´«ÊäÍê³ÉÖжϠ*/
 
#define    DMA_CHxCR_CHxHTIE_Pos    1    /* Channelx°ë³Ì´«ÊäÍê³ÉÖжÏʹÄÜ
1£ºÊ¹Äܰë³ÌÖжÏ
0£º¹Ø±Õ°ë³ÌÖжϠ*/
#define    DMA_CHxCR_CHxHTIE_Msk    (0x1U << DMA_CHxCR_CHxHTIE_Pos)
    /* Ê¹Äܰë³ÌÖжϠ*/
    /* ¹Ø±Õ°ë³ÌÖжϠ*/
 
#define    DMA_CHxCR_ChxEN_Pos    0    /* ChannelxʹÄÜ
1£ºÆô¶¯Í¨µÀ0
0£º¹Ø±ÕͨµÀ0 */
#define    DMA_CHxCR_ChxEN_Msk    (0x1U << DMA_CHxCR_ChxEN_Pos)
    /* Æô¶¯Í¨µÀ0 */
    /* ¹Ø±ÕͨµÀ0 */
 
#define    DMA_CHxMAR_CHxMEMAD_Pos    0    /* Channelx´æ´¢Æ÷Ö¸ÕëµØÖ·£¬DMA´«ÊäÆô¶¯Ç°Èí¼þÏò´Ë¼Ä´æÆ÷дÈë´æ´¢Æ÷Ä¿±êµØÖ·¡£
µ±Ö¸ÕëÖ¸Ïò¿ÕµØÖ·Ê±£¬DMA·ÃÎʽ«´¥·¢hardfault
µ±Ö¸ÕëÖ¸ÏòFlashʱ£¬½ûÖ¹ÏòFlashдÈëÊý¾Ý¡£
Èí¼þ¿ÉÒÔ²éѯµ±Ç°DMA´«ÊäµÄÄ¿±ê´æ´¢Æ÷µØÖ·¡£
 
×¢Ò⣺´ËÖ¸Õë½ûÖ¹Ö¸Ïò0x00080000~0x1FFFFFFFµØÖ·£¬Õâ¶ÎµØÖ·Îªflash±£ÁôÐÅÏ¢Çø£¬Ö¸ÏòÕâ¶ÎµØÖ·¿ÉÄÜÔÚDMA·ÃÎÊÖе¼Ö²»¿ÉÔ¤¼ÆµÄ½á¹û */
#define    DMA_CHxMAR_CHxMEMAD_Msk    (0xffffffffU << DMA_CHxMAR_CHxMEMAD_Pos)
 
#define    DMA_CH11CR_CH11TSIZE_Pos    16    /* Channel11´«Ê䳤¶È£¬1-8192´Î´«Ê䣬½öÔÚFlash->RAM´«ÊäʱÓÐЧ£¬RAM->Flash´«ÊäΪ¹Ì¶¨³¤¶È64´Î´«Êä */
#define    DMA_CH11CR_CH11TSIZE_Msk    (0x1fffU << DMA_CH11CR_CH11TSIZE_Pos)
 
#define    DMA_CH11CR_CH11PRI_Pos    12    /* Channel11ÓÅÏȼ¶
00£ºLow
01£ºMedium
10£ºHigh
11£ºVery High */
#define    DMA_CH11CR_CH11PRI_Msk    (0x3U << DMA_CH11CR_CH11PRI_Pos)
#define    DMA_CH11CR_CH11PRI_LOW    (0x0U << DMA_CH11CR_CH11PRI_Pos)    /* Low */
#define    DMA_CH11CR_CH11PRI_MEDIUM    (0x1U << DMA_CH11CR_CH11PRI_Pos)    /* Medium */
#define    DMA_CH11CR_CH11PRI_HIGH    (0x2U << DMA_CH11CR_CH11PRI_Pos)    /* High */
#define    DMA_CH11CR_CH11PRI_VERY_HIGH    (0x3U << DMA_CH11CR_CH11PRI_Pos)    /* Very High */
 
#define    DMA_CH11CR_CH11DIR_Pos    10    /* Channel11´«Êä·½Ïò
1£ºFlash->RAM´«Êä
0£ºRAM->Flash´«Êä */
#define    DMA_CH11CR_CH11DIR_Msk    (0x1U << DMA_CH11CR_CH11DIR_Pos)
#define    DMA_CH11CR_CH11DIR_TO_RAM    (0x1U << DMA_CH11CR_CH11DIR_Pos)    /* Flash->RAM´«Êä */
#define    DMA_CH11CR_CH11DIR_TO_FLASH    (0x0U << DMA_CH11CR_CH11DIR_Pos)    /* RAM->Flash´«Êä */
 
#define    DMA_CH11CR_CH11RI_Pos    9    /* Channel11 RAMµØÖ·Ôö¼õÉèÖ㬽öÔÚFlash->RAM´«ÊäÖÐÓÐЧ
1£ºRAMµØÖ·µÝÔö
0£ºRAMµØÖ·µÝ¼õ */
#define    DMA_CH11CR_CH11RI_Msk    (0x1U << DMA_CH11CR_CH11RI_Pos)
#define    DMA_CH11CR_CH11RI_INCREASE    (0x1U << DMA_CH11CR_CH11RI_Pos)    /* RAMµØÖ·µÝÔö */
#define    DMA_CH11CR_CH11RI_DECREASE    (0x0U << DMA_CH11CR_CH11RI_Pos)    /* RAMµØÖ·µÝ¼õ */
 
#define    DMA_CH11CR_CH11FI_Pos    8    /* Channel11 FlashµØÖ·Ôö¼õÉèÖ㬽öÔÚFlash->RAM´«ÊäÖÐÓÐЧ
1£ºFlashµØÖ·µÝÔö
0£ºFlashµØÖ·µÝ¼õ */
#define    DMA_CH11CR_CH11FI_Msk    (0x1U << DMA_CH11CR_CH11FI_Pos)
#define    DMA_CH11CR_CH11FI_INCREASE    (0x1U << DMA_CH11CR_CH11FI_Pos)    /* FlashµØÖ·µÝÔö */
#define    DMA_CH11CR_CH11FI_DECREASE    (0x0U << DMA_CH11CR_CH11FI_Pos)    /* FlashµØÖ·µÝ¼õ */
 
#define    DMA_CH11CR_CH11FTIE_Pos    2    /* Channel11´«ÊäÍê³ÉÖжÏʹÄÜ
1£ºÊ¹ÄÜ´«ÊäÍê³ÉÖжÏ
0£º¹Ø±Õ´«ÊäÍê³ÉÖжϠ*/
#define    DMA_CH11CR_CH11FTIE_Msk    (0x1U << DMA_CH11CR_CH11FTIE_Pos)
    /* Ê¹ÄÜ´«ÊäÍê³ÉÖжϠ*/
    /* ¹Ø±Õ´«ÊäÍê³ÉÖжϠ*/
 
#define    DMA_CH11CR_CH11HTIE_Pos    1    /* Channel11°ë³Ì´«ÊäÍê³ÉÖжÏʹÄÜ
1£ºÊ¹Äܰë³ÌÖжÏ
0£º¹Ø±Õ°ë³ÌÖжϠ*/
#define    DMA_CH11CR_CH11HTIE_Msk    (0x1U << DMA_CH11CR_CH11HTIE_Pos)
    /* Ê¹Äܰë³ÌÖжϠ*/
    /* ¹Ø±Õ°ë³ÌÖжϠ*/
 
#define    DMA_CH11CR_CH11EN_Pos    0    /* Channel11ʹÄÜ
1£ºÆô¶¯Í¨µÀ0
0£º¹Ø±ÕͨµÀ0 */
#define    DMA_CH11CR_CH11EN_Msk    (0x1U << DMA_CH11CR_CH11EN_Pos)
    /* Æô¶¯Í¨µÀ0 */
    /* ¹Ø±ÕͨµÀ0 */
 
#define    DMA_CH11FAR_CH11FLSAD_Pos    0    /* Channel11 FlashÖ¸ÕëµØÖ·£¬DMA´«ÊäÆô¶¯Ç°Èí¼þÏò´Ë¼Ä´æÆ÷дÈëFlashÄ¿±êµØÖ·£¬DMAÆô¶¯ºó´Ë¼Ä´æÆ÷ËæDMA´«Êä×ÔÔö»ò×Ô¼õ
Èí¼þ¿ÉÒÔ²éѯµ±Ç°DMA´«ÊäµÄÄ¿±êFlashµØÖ·
´Ë¼Ä´æÆ÷µÍ루bit5-0£©½öÔÚFlash->RAM´«ÊäÖÐÓÐЧ£¬RAM->Flash´«ÊäÖÐĬÈÏ¶ÔÆëFlashµÄhalf-sectorÆðʼµØÖ· */
#define    DMA_CH11FAR_CH11FLSAD_Msk    (0x7fffU << DMA_CH11FAR_CH11FLSAD_Pos)
 
#define    DMA_CH11RAR_CH7RAMAD_Pos    0    /* Channel7 RAM×ÖÖ¸ÕëµØÖ·£¬DMA´«ÊäÆô¶¯Ç°Èí¼þÏò´Ë¼Ä´æÆ÷дÈëRAMÄ¿±êµØÖ·£¨wordµØÖ·£©£¬DMAÆô¶¯ºó´Ë¼Ä´æÆ÷ËæDMA´«Êä×ÔÔö»ò×Ô¼õ
Èí¼þ¿ÉÒÔ²éѯµ±Ç°DMA´«ÊäµÄÄ¿±êRAMµØÖ· */
#define    DMA_CH11RAR_CH7RAMAD_Msk    (0x7fffU << DMA_CH11RAR_CH7RAMAD_Pos)
 
#define    DMA_ISR_DMA_ADDRERR_Pos    28    /* DMA´«Ê䵨ַ´íÎó±êÖ¾£¬µ±´æ´¢Æ÷Ö¸Õ볬¹ýRAMºÍFlashºÏ·¨µØÖ··¶Î§Ê±ÖÃλ */
#define    DMA_ISR_DMA_ADDRERR_Msk    (0x1U << DMA_ISR_DMA_ADDRERR_Pos)
 
#define    DMA_ISR_DMACHFT_Pos    16    /* DMAͨµÀx´«ÊäÍê³É±êÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã
1£º¶ÔӦͨµÀ´«ÊäÍê³É
0£º¶ÔӦͨµÀ´«ÊäδÍê³É */
#define    DMA_ISR_DMACHFT_Msk    (0xfffU << DMA_ISR_DMACHFT_Pos)
 
#define    DMA_ISR_DMACHHT_Pos    0    /* DMAͨµÀx´«Êä°ë³Ì±êÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã */
#define    DMA_ISR_DMACHHT_Msk    (0xfffU << DMA_ISR_DMACHHT_Pos)
 
#define    DMA_CHxCSR_CHxTSIZE_SDW_Pos    16    /* Channelx´«Ê䳤¶Èshadow¼Ä´æÆ÷£»Ñ­»·Ä£Ê½ÏÂÈç¹ûʹÄÜÁËCIRC_UPD¼Ä´æÆ÷£¬ÔòÔÚ±¾ÂÖ´«ÊäÍê³Éºó½«shadow¼Ä´æÆ÷Öµ¸´ÖƵ½CHxTSIZEÖС£ */
#define    DMA_CHxCSR_CHxTSIZE_SDW_Msk    (0x1fffU << DMA_CHxCSR_CHxTSIZE_SDW_Pos)
 
#define    DMA_CHxCSR_CHxINC_SDW_Pos    11    /* RAMµØÖ·Ôö¼õÉèÖÃshadow¼Ä´æÆ÷£¬Ñ­»·Ä£Ê½ÏÂÈç¹ûʹÄÜÁËCIRC_UPD¼Ä´æÆ÷£¬ÔòÔÚ±¾ÂÖ´«ÊäÍê³Éºó½«shadow¼Ä´æÆ÷Öµ¸´ÖƵ½CHxTSIZEÖС£ */
#define    DMA_CHxCSR_CHxINC_SDW_Msk    (0x1U << DMA_CHxCSR_CHxINC_SDW_Pos)
 
#define    DMA_CHxMASR_CHxMAD_SDW_Pos    0    /* Channelx´æ´¢Æ÷Ö¸ÕëµØÖ·Ó°×ӼĴæÆ÷¡£
Ñ­»·Ä£Ê½ÏÂÈç¹ûʹÄÜÁËCIRC_UPD¼Ä´æÆ÷£¬ÔòÔÚ±¾ÂÖ´«ÊäÍê³Éºó½«shadow¼Ä´æÆ÷Öµ¸´ÖƵ½CHxMEMADÖС£ */
#define    DMA_CHxMASR_CHxMAD_SDW_Msk    (0xffffffffU << DMA_CHxMASR_CHxMAD_SDW_Pos)
//Macro_End
 
/* Exported functions --------------------------------------------------------*/ 
extern void DMA_Deinit(void);
 
/* DMA´íÎóµØÖ·ÖжÏʹÄÜ
1£ºÔÊÐí´íÎóµØÖ·ÖжÏ
0£º½ûÖ¹´íÎóµØÖ·ÖжϠÏà¹Øº¯Êý */
extern void DMA_GCR_DMA_ADDRERR_EN_Setable(FunState NewState);
extern FunState DMA_GCR_DMA_ADDRERR_EN_Getable(void);
 
/* DMAÈ«¾ÖʹÄÜ
1£ºDMAʹÄÜ
0£ºDMA¹Ø±Õ Ïà¹Øº¯Êý */
extern void DMA_GCR_DMAEN_Setable(FunState NewState);
extern FunState DMA_GCR_DMAEN_Getable(void);
 
/* Channelx´«Ê䳤¶È£¬1-8192´Î´«Êä Ïà¹Øº¯Êý */
extern void DMA_CHxCR_CHxTSIZE_Set(DMA_CH_Type CHx, uint32_t SetValue);
extern uint32_t DMA_CHxCR_CHxTSIZE_Get(DMA_CH_Type CHx);
 
/* ChannelxÓÅÏȼ¶
00£ºLow
01£ºMedium
10£ºHigh
11£ºVery High Ïà¹Øº¯Êý */
extern void DMA_CHxCR_CHxPRI_Set(DMA_CH_Type CHx, uint32_t SetValue);
extern uint32_t DMA_CHxCR_CHxPRI_Get(DMA_CH_Type CHx);
 
/* RAMµØÖ·Ôö¼õÉèÖÃ
1£ºRAMµØÖ·µÝÔö
0£ºRAMµØÖ·µÝ¼õ Ïà¹Øº¯Êý */
extern void DMA_CHxCR_CHxINC_Set(DMA_CH_Type CHx, uint32_t SetValue);
extern uint32_t DMA_CHxCR_CHxINC_Get(DMA_CH_Type CHx);
 
/* ChannelxÍâÉèÇëÇóÓ³Éä
ÿ¸öͨµÀ¿ÉÒÔ½ÓÊÜ8¸öÍâÉèÇëÇó£¬ÍâÉèÇëÇóµÄÓ³Éä²Î¼û23.6.1DMAÇëÇóÓ³Éä Ïà¹Øº¯Êý */
extern void DMA_CHxCR_CHxSSEL_Set(DMA_CH_Type CHx, uint32_t SetValue);
extern uint32_t DMA_CHxCR_CHxSSEL_Get(DMA_CH_Type CHx);
 
/* Ñ­»·»º³åģʽÏÂ×Ô¶¯¸üд«Êä²ÎÊý£¬±¾ÂÖ´«ÊäÍê³Éºó½«shadow¼Ä´æÆ÷ÄÚÈݸ´ÖƵ½¿ØÖƼĴæÆ÷
0£º½ûÖ¹×Ô¶¯¸üÐÂ
1£ºÊ¹ÄÜ×Ô¶¯¸üÐÂ
×¢Ò⣺½öͨµÀ0~6Ö§³Ö´Ë¹¦ÄÜ£¬Í¨µÀ7~10Î޴˼ĴæÆ÷ Ïà¹Øº¯Êý */
extern void DMA_CHxCR_CIRC_UPD_Setable(DMA_CH_Type CHx, FunState NewState);
extern FunState DMA_CHxCR_CIRC_UPD_Getable(DMA_CH_Type CHx);
 
/* Í¨µÀ´«Êä·½Ïò
0£º´ÓÍâÉè¶ÁÈ¡Êý¾ÝдÈëRAM
1£º´ÓRAM¶ÁÈ¡Êý¾ÝдÈëÍâÉè Ïà¹Øº¯Êý */
extern void DMA_CHxCR_DIR_Set(DMA_CH_Type CHx, uint32_t SetValue);
extern uint32_t DMA_CHxCR_DIR_Get(DMA_CH_Type CHx);
 
/* ´«Êä´ø¿íÉèÖÃ
00£º×Ö½Ú£¬8bit
01£º°ë×Ö£¬16bit
10£º×Ö£¬32bit
11£ºRFU Ïà¹Øº¯Êý */
extern void DMA_CHxCR_BDW_Set(DMA_CH_Type CHx, uint32_t SetValue);
extern uint32_t DMA_CHxCR_BDW_Get(DMA_CH_Type CHx);
 
/* Ñ­»·»º³åģʽ
0£º¹Ø±ÕÑ­»·Ä£Ê½
1£ºÊ¹ÄÜÑ­»·Ä£Ê½ Ïà¹Øº¯Êý */
extern void DMA_CHxCR_CIRC_Setable(DMA_CH_Type CHx, FunState NewState);
extern FunState DMA_CHxCR_CIRC_Getable(DMA_CH_Type CHx);
 
/* Channelx´«ÊäÍê³ÉÖжÏʹÄÜ
1£ºÊ¹ÄÜ´«ÊäÍê³ÉÖжÏ
0£º¹Ø±Õ´«ÊäÍê³ÉÖжϠÏà¹Øº¯Êý */
extern void DMA_CHxCR_CHxFTIE_Setable(DMA_CH_Type CHx, FunState NewState);
extern FunState DMA_CHxCR_CHxFTIE_Getable(DMA_CH_Type CHx);
 
/* Channelx°ë³Ì´«ÊäÍê³ÉÖжÏʹÄÜ
1£ºÊ¹Äܰë³ÌÖжÏ
0£º¹Ø±Õ°ë³ÌÖжϠÏà¹Øº¯Êý */
extern void DMA_CHxCR_CHxHTIE_Setable(DMA_CH_Type CHx, FunState NewState);
extern FunState DMA_CHxCR_CHxHTIE_Getable(DMA_CH_Type CHx);
 
/* ChannelxʹÄÜ
1£ºÆô¶¯Í¨µÀ0
0£º¹Ø±ÕͨµÀ0 Ïà¹Øº¯Êý */
extern void DMA_CHxCR_ChxEN_Setable(DMA_CH_Type CHx, FunState NewState);
extern FunState DMA_CHxCR_ChxEN_Getable(DMA_CH_Type CHx);
 
/* Channelx´æ´¢Æ÷Ö¸ÕëµØÖ·£¬DMA´«ÊäÆô¶¯Ç°Èí¼þÏò´Ë¼Ä´æÆ÷дÈë´æ´¢Æ÷Ä¿±êµØÖ·¡£
µ±Ö¸ÕëÖ¸Ïò¿ÕµØÖ·Ê±£¬DMA·ÃÎʽ«´¥·¢hardfault
µ±Ö¸ÕëÖ¸ÏòFlashʱ£¬½ûÖ¹ÏòFlashдÈëÊý¾Ý¡£
Èí¼þ¿ÉÒÔ²éѯµ±Ç°DMA´«ÊäµÄÄ¿±ê´æ´¢Æ÷µØÖ·¡£
 
×¢Ò⣺´ËÖ¸Õë½ûÖ¹Ö¸Ïò0x00080000~0x1FFFFFFFµØÖ·£¬Õâ¶ÎµØÖ·Îªflash±£ÁôÐÅÏ¢Çø£¬Ö¸ÏòÕâ¶ÎµØÖ·¿ÉÄÜÔÚDMA·ÃÎÊÖе¼Ö²»¿ÉÔ¤¼ÆµÄ½á¹û Ïà¹Øº¯Êý */
extern void DMA_CHxMAR_Write(DMA_CH_Type CHx, uint32_t SetValue);
extern uint32_t DMA_CHxMAR_Read(DMA_CH_Type CHx);
 
/* Channel11´«Ê䳤¶È£¬1-8192´Î´«Ê䣬½öÔÚFlash->RAM´«ÊäʱÓÐЧ£¬RAM->Flash´«ÊäΪ¹Ì¶¨³¤¶È64´Î´«Êä Ïà¹Øº¯Êý */
extern void DMA_CH11CR_CH11TSIZE_Set(uint32_t SetValue);
extern uint32_t DMA_CH11CR_CH11TSIZE_Get(void);
 
/* Channel11ÓÅÏȼ¶
00£ºLow
01£ºMedium
10£ºHigh
11£ºVery High Ïà¹Øº¯Êý */
extern void DMA_CH11CR_CH11PRI_Set(uint32_t SetValue);
extern uint32_t DMA_CH11CR_CH11PRI_Get(void);
 
/* Channel11´«Êä·½Ïò
1£ºFlash->RAM´«Êä
0£ºRAM->Flash´«Êä Ïà¹Øº¯Êý */
extern void DMA_CH11CR_CH11DIR_Set(uint32_t SetValue);
extern uint32_t DMA_CH11CR_CH11DIR_Get(void);
 
/* Channel11 RAMµØÖ·Ôö¼õÉèÖ㬽öÔÚFlash->RAM´«ÊäÖÐÓÐЧ
1£ºRAMµØÖ·µÝÔö
0£ºRAMµØÖ·µÝ¼õ Ïà¹Øº¯Êý */
extern void DMA_CH11CR_CH11RI_Set(uint32_t SetValue);
extern uint32_t DMA_CH11CR_CH11RI_Get(void);
 
/* Channel11 FlashµØÖ·Ôö¼õÉèÖ㬽öÔÚFlash->RAM´«ÊäÖÐÓÐЧ
1£ºFlashµØÖ·µÝÔö
0£ºFlashµØÖ·µÝ¼õ Ïà¹Øº¯Êý */
extern void DMA_CH11CR_CH11FI_Set(uint32_t SetValue);
extern uint32_t DMA_CH11CR_CH11FI_Get(void);
 
/* Channel11´«ÊäÍê³ÉÖжÏʹÄÜ
1£ºÊ¹ÄÜ´«ÊäÍê³ÉÖжÏ
0£º¹Ø±Õ´«ÊäÍê³ÉÖжϠÏà¹Øº¯Êý */
extern void DMA_CH11CR_CH11FTIE_Setable(FunState NewState);
extern FunState DMA_CH11CR_CH11FTIE_Getable(void);
 
/* Channel11°ë³Ì´«ÊäÍê³ÉÖжÏʹÄÜ
1£ºÊ¹Äܰë³ÌÖжÏ
0£º¹Ø±Õ°ë³ÌÖжϠÏà¹Øº¯Êý */
extern void DMA_CH11CR_CH11HTIE_Setable(FunState NewState);
extern FunState DMA_CH11CR_CH11HTIE_Getable(void);
 
/* Channel11ʹÄÜ
1£ºÆô¶¯Í¨µÀ0
0£º¹Ø±ÕͨµÀ0 Ïà¹Øº¯Êý */
extern void DMA_CH11CR_CH11EN_Setable(FunState NewState);
extern FunState DMA_CH11CR_CH11EN_Getable(void);
 
/* Channel11 FlashÖ¸ÕëµØÖ·£¬DMA´«ÊäÆô¶¯Ç°Èí¼þÏò´Ë¼Ä´æÆ÷дÈëFlashÄ¿±êµØÖ·£¬DMAÆô¶¯ºó´Ë¼Ä´æÆ÷ËæDMA´«Êä×ÔÔö»ò×Ô¼õ
Èí¼þ¿ÉÒÔ²éѯµ±Ç°DMA´«ÊäµÄÄ¿±êFlashµØÖ·
´Ë¼Ä´æÆ÷µÍ루bit5-0£©½öÔÚFlash->RAM´«ÊäÖÐÓÐЧ£¬RAM->Flash´«ÊäÖÐĬÈÏ¶ÔÆëFlashµÄhalf-sectorÆðʼµØÖ· Ïà¹Øº¯Êý */
extern void DMA_CH11FAR_Write(uint32_t SetValue);
extern uint32_t DMA_CH11FAR_Read(void);
 
/* Channel7 RAM×ÖÖ¸ÕëµØÖ·£¬DMA´«ÊäÆô¶¯Ç°Èí¼þÏò´Ë¼Ä´æÆ÷дÈëRAMÄ¿±êµØÖ·£¨wordµØÖ·£©£¬DMAÆô¶¯ºó´Ë¼Ä´æÆ÷ËæDMA´«Êä×ÔÔö»ò×Ô¼õ
Èí¼þ¿ÉÒÔ²éѯµ±Ç°DMA´«ÊäµÄÄ¿±êRAMµØÖ· Ïà¹Øº¯Êý */
extern void DMA_CH11RAR_Write(uint32_t SetValue);
extern uint32_t DMA_CH11RAR_Read(void);
 
/* DMA´«Ê䵨ַ´íÎó±êÖ¾£¬µ±´æ´¢Æ÷Ö¸Õ볬¹ýRAMºÍFlashºÏ·¨µØÖ··¶Î§Ê±ÖÃλ Ïà¹Øº¯Êý */
extern void DMA_ISR_DMA_ADDRERR_Clr(void);
extern FlagStatus DMA_ISR_DMA_ADDRERR_Chk(void);
 
/* DMAͨµÀx´«ÊäÍê³É±êÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã
1£º¶ÔӦͨµÀ´«ÊäÍê³É
0£º¶ÔӦͨµÀ´«ÊäδÍê³É Ïà¹Øº¯Êý */
extern void DMA_ISR_DMACHFT_Clr(DMA_CH_Type CHx);
extern FlagStatus DMA_ISR_DMACHFT_Chk(DMA_CH_Type CHx);
 
/* DMAͨµÀx´«Êä°ë³Ì±êÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã Ïà¹Øº¯Êý */
extern void DMA_ISR_DMACHHT_Clr(DMA_CH_Type CHx);
extern FlagStatus DMA_ISR_DMACHHT_Chk(DMA_CH_Type CHx);
 
/* Channelx´«Ê䳤¶Èshadow¼Ä´æÆ÷£»Ñ­»·Ä£Ê½ÏÂÈç¹ûʹÄÜÁËCIRC_UPD¼Ä´æÆ÷£¬ÔòÔÚ±¾ÂÖ´«ÊäÍê³Éºó½«shadow¼Ä´æÆ÷Öµ¸´ÖƵ½CHxTSIZEÖС£ Ïà¹Øº¯Êý */
extern void DMA_CHxCSR_CHxTSIZE_SDW_Set(DMA_CH_Type CHx, uint32_t SetValue);
extern uint32_t DMA_CHxCSR_CHxTSIZE_SDW_Get(DMA_CH_Type CHx);
 
/* RAMµØÖ·Ôö¼õÉèÖÃshadow¼Ä´æÆ÷£¬Ñ­»·Ä£Ê½ÏÂÈç¹ûʹÄÜÁËCIRC_UPD¼Ä´æÆ÷£¬ÔòÔÚ±¾ÂÖ´«ÊäÍê³Éºó½«shadow¼Ä´æÆ÷Öµ¸´ÖƵ½CHxTSIZEÖС£ Ïà¹Øº¯Êý */
extern void DMA_CHxCSR_CHxINC_SDW_Set(DMA_CH_Type CHx, uint32_t SetValue);
extern uint32_t DMA_CHxCSR_CHxINC_SDW_Get(DMA_CH_Type CHx);
 
/* Channelx´æ´¢Æ÷Ö¸ÕëµØÖ·Ó°×ӼĴæÆ÷¡£
Ñ­»·Ä£Ê½ÏÂÈç¹ûʹÄÜÁËCIRC_UPD¼Ä´æÆ÷£¬ÔòÔÚ±¾ÂÖ´«ÊäÍê³Éºó½«shadow¼Ä´æÆ÷Öµ¸´ÖƵ½CHxMEMADÖС£ Ïà¹Øº¯Êý */
extern void DMA_CHxMASR_Write(DMA_CH_Type CHx, uint32_t SetValue);
extern uint32_t DMA_CHxMASR_Read(DMA_CH_Type CHx);
//Announce_End
 
void DMA_DeInit(void);
void DMA_Init(DMA_InitTypeDef *para);
   
//Announce_End
#ifdef __cplusplus
}
#endif
 
#endif /* __FM33A0XXEV_DMA_H */