本帖最后由 与龙共舞 于 2018-4-26 13:46 编辑 # A+ H& _7 k; A1 _# e
) N: T- U F5 _# n3 S
本程序简单到爆炸,就是DMA的一句话:HAL_DMA_Start(&hdma_memtomem_dma1_channel1,(uint32_t)&secdma,(uint32_t)&desdma,10);+ Q1 q% a' d3 C3 W( q, t
完成内存到内存,的复制!0 B( T8 W$ w4 O
效果------和memcpy一毛一样。4 d# j5 Q3 x. @! u n! [
* D2 U+ p( Q, J$ Q2 ~. i8 I1 c4 K4 B6 R# L6 B: C S
开始MX:
8 f! c+ Q* r5 M7 j
3 N0 Y4 t" j* W
! B' v/ V) y- ?, z
, U& K1 `( _" g' m0 l3 K B( Z' C1 @6 o8 E2 h
所以不是瞎说的,都是最简单的操作。2 S9 ]* k* b/ A' j, C8 h0 K
生成代码开始:! q- q: N8 S8 p0 O
- char secdma[10]={1,2,3},desdma[10];//1
0 H) U/ I* q: U% B% e) [ - char seclib[10]={1,2,3} ,deslib[10];//28 e+ f2 c# |- a' t+ }
- int main(void)
B. t2 c8 v* a, n" E) s" L3 A - {% a& l% W/ E2 I4 Q# A* U% _2 }
- HAL_StatusTypeDef hal_status;
3 F, u {# L* G g- ]/ P - HAL_Init();' I' b/ y4 p4 A; d# X' Z: m( o
- SystemClock_Config();1 v: E( [6 ?# k7 N- t% Y
- MX_GPIO_Init();; d& e1 S7 X J! a0 `, [
- MX_DMA_Init();
G- o" \0 Z% a, S3 W - hal_status=HAL_DMA_Start(&hdma_memtomem_dma1_channel1,(uint32_t)&secdma,(uint32_t)&desdma,10);//3* @0 l! j" _, m) R% K6 Y
- memcpy(deslib,seclib,10);//4
0 G" }/ a) G* c" I9 ^& ~# p a - if(hal_status==HAL_OK)+ {6 s4 X3 K2 e
- {
4 ~7 ?& X* C- M - secdma[0]=9;; f9 c/ B& x1 _0 X3 _
- }
复制代码 入上面4句话就可以了。
) ?8 ?! n; v e; Ymemcpy(deslib,seclib,10);【】<----【】) p: G& D% ~+ t# r3 L- G
HAL_DMA_Start(&hdma_memtomem_dma1_channel1,(uint32_t)&secdma,(uint32_t)&desdma,10);【】----->【】
6 }/ W: a4 K$ i5 }. M$ G, K# @; E
" t9 T2 `9 l8 b, {" Z" r1 i# U& {
然后watch就可以看到3和4的效果基本一样。
( o7 {( Z! T8 y. }# \- H8 P0 W8 Y* z% V( M2 m Q z
|