你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】stm32f7xx通过DMA发送数据到串口例程

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:04
串口使用usart2
: I2 k. w# i& E3 A5 \dma使用dma1-stream6-channel4
9 `1 U" a: T9 o  y$ G' C' ]使用hal库函数$ w) r7 }$ n# Y# z* o
  1. DMA_Init(DMA1_Stream6,DMA_CHANNEL_4);
    8 L, ?9 C5 e+ P: B! M- x) L4 L* G
  2. HAL_UART_Transmit_DMA(&UART2_Handler,page,num);7 M' b; B! q, Q* w7 Z$ z) H# |. g! ^2 G
  3.     while(1), i- q& P& j% d) Y' q
  4.     {3 s5 |: ~8 C. C; r$ T0 q3 O/ {) d- o
  5.         if(__HAL_DMA_GET_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6))//判断传输完成
    8 e; _5 Q8 B8 W: j( e( m
  6.             {0 l) s& K- P% F
  7.                     __HAL_DMA_CLEAR_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6);//清除标志位
    " ?/ `% C# D$ |, a' u4 M
  8.                     HAL_UART_DMAStop(&UART2_Handler);      //关闭dma
    0 o4 X- A1 K2 ]3 G9 p# i1 C! X8 `
  9.             break;( u, c" X: B$ G. h6 R
  10.             }
    ) H% a2 l) u" T
  11.         pos=__HAL_DMA_GET_COUNTER(&UART1TxDMA_Handler);//传输进度
    7 g& |; R" y8 c
  12.         printf("pos:%d\n",pos);
    9 O- H- W5 [' L' k. B- Q0 k3 ]
  13.     }8 k3 p+ ^+ P1 a  |' j1 o
  14. + z2 ?3 n9 p# T; W
  15. & j: ^& @4 o/ k

  16. - m( w& n2 W' `3 P2 x: v* _
  17. void DMA_Init(DMA_Stream_TypeDef *DMA_Streamx,u32 chx)( D+ S' L3 l) q
  18. { # }! S, Q' Y0 m! k; r
  19.           \' Z7 }# P( D& N. O
  20.     __HAL_RCC_DMA1_CLK_ENABLE(); 3 x' r: O" c; S+ M2 h6 O) |
  21.     __HAL_LINKDMA(&UART2_Handler,hdmatx,UART2TxDMA_Handler);    - F8 t1 n. \' x$ x8 d4 L

  22. * |0 d  K! ^4 A+ P
  23.     UART2TxDMA_Handler.Instance=DMA_Streamx;                            6 \) _  I) e7 O" i
  24.     UART2TxDMA_Handler.Init.Channel=chx;                                " H4 t( C2 d0 s6 F2 l" H7 }
  25.     UART2TxDMA_Handler.Init.Direction=DMA_MEMORY_TO_PERIPH;            
    9 S7 Q, ]1 q/ g2 k4 C" B
  26.     UART2TxDMA_Handler.Init.PeriphInc=DMA_PINC_DISABLE;                 
    . ^5 [- x2 Y  \1 f  z
  27.     UART2TxDMA_Handler.Init.MemInc=DMA_MINC_ENABLE;                     $ d, P0 c. R7 ?6 e* Y6 f
  28.     UART2TxDMA_Handler.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE;    ( g/ v4 A4 T' G
  29.     UART2TxDMA_Handler.Init.MemDataAlignment=DMA_MDATAALIGN_BYTE;      
    6 W! B+ v( b) L
  30.     UART2TxDMA_Handler.Init.Mode=DMA_NORMAL;                            4 J/ Z8 S9 q  z
  31.     UART2TxDMA_Handler.Init.Priority=DMA_PRIORITY_MEDIUM;               # e1 ^( V/ f7 Q. d: M2 M; s5 x
  32.     UART2TxDMA_Handler.Init.FIFOMode=DMA_FIFOMODE_DISABLE;              " }( Y3 K9 C5 u. ^% M4 s3 c
  33.     UART2TxDMA_Handler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;      
    " g  L; ]6 e" C
  34.     UART2TxDMA_Handler.Init.MemBurst=DMA_MBURST_SINGLE;                 7 [4 x; u& K' P( V5 x, f! d0 u1 \
  35.     UART2TxDMA_Handler.Init.PeriphBurst=DMA_PBURST_SINGLE;             # o( ]* X8 {" a7 \- I) Y% h9 s" h
  36. % Q1 h: J: ?) B. W( W- d1 G! Z# Z2 M
  37.     HAL_DMA_DeInit(&UART2TxDMA_Handler);   
    " T2 F4 A" x2 w4 C' t
  38.     HAL_DMA_Init(&UART2TxDMA_Handler);( Y! k+ t7 a4 N: i
  39. }
    ; \% E2 {$ B# s  D2 i$ M* _
  40. 6 q+ `+ C) l1 Y$ K( z
复制代码

" M% X$ h2 T* D3 z! [* O# n2 b4 D0 u5 V  y
收藏 评论0 发布时间:2021-12-17 12:04

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版