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

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

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:04
串口使用usart2- T8 D8 Z) Z$ J  p
dma使用dma1-stream6-channel4  l1 h8 Q& }1 @9 p
使用hal库函数! s' v8 v: t6 A
  1. DMA_Init(DMA1_Stream6,DMA_CHANNEL_4);
    , e( Q( Y5 O, Y. d
  2. HAL_UART_Transmit_DMA(&UART2_Handler,page,num);
    : h1 M% q! Y1 Z5 t
  3.     while(1)  Y$ V' q3 |; q' k
  4.     {2 T' [& v# g5 x
  5.         if(__HAL_DMA_GET_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6))//判断传输完成# Y! o& _# b) Y+ S
  6.             {
    , J* v8 [/ t0 L
  7.                     __HAL_DMA_CLEAR_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6);//清除标志位
    2 j1 P' l! {2 \4 T& w
  8.                     HAL_UART_DMAStop(&UART2_Handler);      //关闭dma& ^" R. c$ y2 V2 e' E
  9.             break;1 e9 F% `5 [4 [7 v/ |" {
  10.             }" U  J/ T/ Q* S, Z/ |  a
  11.         pos=__HAL_DMA_GET_COUNTER(&UART1TxDMA_Handler);//传输进度
    * k6 j6 s. x: ~2 i
  12.         printf("pos:%d\n",pos);( U) d: [1 B3 J) y! Q
  13.     }
    & C, r0 s  y! s( I! Y  @: N
  14. 9 P% c: V' T: B: A# p3 |

  15. $ n' y3 _8 g$ b

  16. 7 T) T$ @, K$ j  |* V
  17. void DMA_Init(DMA_Stream_TypeDef *DMA_Streamx,u32 chx)8 X  h0 _" D) v* V
  18. {
    / R1 U7 z) }1 V
  19.         
    1 R" g" C; U5 U( W4 r5 Q& Z
  20.     __HAL_RCC_DMA1_CLK_ENABLE();
    7 x* ~9 {+ F6 _6 X  a
  21.     __HAL_LINKDMA(&UART2_Handler,hdmatx,UART2TxDMA_Handler);    + H2 z# \; W* I. r3 S7 l

  22. . i: Z5 z5 x( [- G
  23.     UART2TxDMA_Handler.Instance=DMA_Streamx;                           
    ) t7 }1 y( g6 S' g
  24.     UART2TxDMA_Handler.Init.Channel=chx;                                ( O, \# j2 p1 q$ k  P4 E
  25.     UART2TxDMA_Handler.Init.Direction=DMA_MEMORY_TO_PERIPH;            
    + b2 P8 h& `' G7 n/ V
  26.     UART2TxDMA_Handler.Init.PeriphInc=DMA_PINC_DISABLE;                 
    8 `; @2 y5 t  t0 m" j
  27.     UART2TxDMA_Handler.Init.MemInc=DMA_MINC_ENABLE;                     
    : t5 K! h7 o5 B( G' T. R
  28.     UART2TxDMA_Handler.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE;    $ M- c4 Z0 X2 ?' J( \  `9 v8 T
  29.     UART2TxDMA_Handler.Init.MemDataAlignment=DMA_MDATAALIGN_BYTE;      
    $ _: I- x' m4 u7 w' K2 d& l
  30.     UART2TxDMA_Handler.Init.Mode=DMA_NORMAL;                           
    2 h6 W# f# ^5 A6 Y% T9 x  k8 w( p+ i
  31.     UART2TxDMA_Handler.Init.Priority=DMA_PRIORITY_MEDIUM;               3 R/ p. b" [. [, M' n# R
  32.     UART2TxDMA_Handler.Init.FIFOMode=DMA_FIFOMODE_DISABLE;              
    5 R! ~% O% _* i$ o& d3 P
  33.     UART2TxDMA_Handler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;      ) ?: X( j5 r' ^! m& V" k0 n
  34.     UART2TxDMA_Handler.Init.MemBurst=DMA_MBURST_SINGLE;                   g7 N2 p# w% P1 d1 a4 ?  Y7 T
  35.     UART2TxDMA_Handler.Init.PeriphBurst=DMA_PBURST_SINGLE;             , n2 v9 D9 P. P" x; F

  36. - L& m( k& ?2 h, Z! A6 I: i
  37.     HAL_DMA_DeInit(&UART2TxDMA_Handler);   
    & ^9 V: q( v: n. n- p( r5 V6 Q
  38.     HAL_DMA_Init(&UART2TxDMA_Handler);
    . R. J* L( c3 M: }7 V% }
  39. }
    ; v) @0 ~8 T0 H5 b" {

  40. ( t, m1 K% a# }
复制代码

1 L/ y4 M3 }$ A$ l" Q1 z7 K8 g& R3 X% q' a' W% U  B
收藏 评论0 发布时间:2021-12-17 12:04

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版