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

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

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:04
串口使用usart2
; D/ y9 A: i! Z  w6 ddma使用dma1-stream6-channel4
5 ~  \; D# k+ e9 I5 S  k# Y# ]使用hal库函数
' w: {6 S1 L2 ~4 h# A% L: X: Z
  1. DMA_Init(DMA1_Stream6,DMA_CHANNEL_4);
    : ?1 V) c8 ?' M& Y5 _
  2. HAL_UART_Transmit_DMA(&UART2_Handler,page,num);
    ! Q3 z; L* ]' T) ?
  3.     while(1)
    5 [  M% [/ F4 h) Z* `8 l
  4.     {
    / b5 l( ?  f& B- G+ k
  5.         if(__HAL_DMA_GET_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6))//判断传输完成
    " |! x& F/ a" q9 V- o& B
  6.             {" r% @% j$ S; {: }; t7 Z; L
  7.                     __HAL_DMA_CLEAR_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6);//清除标志位! y( K# ~) H/ z6 ?; t  I, f/ ~1 x
  8.                     HAL_UART_DMAStop(&UART2_Handler);      //关闭dma; c0 L: D6 e1 [% V! i7 Q2 ?7 l
  9.             break;
    + l6 K7 R' H, h* k, Z  P; i, L
  10.             }. v: U% ?5 i/ k: ]- g, r$ c% u+ _
  11.         pos=__HAL_DMA_GET_COUNTER(&UART1TxDMA_Handler);//传输进度  \  b; m: T: F. A7 ^, Y. K
  12.         printf("pos:%d\n",pos);
    9 C' ^7 v# e/ O, a
  13.     }
    ( z. ]% O2 H' n9 e) W
  14. + C, W5 n' ^$ V; y

  15. / N2 t. V9 @( {" F

  16. : |! A  |+ f# w% @. Q8 |9 g
  17. void DMA_Init(DMA_Stream_TypeDef *DMA_Streamx,u32 chx); F7 F$ F4 m: `5 u5 a3 w" `# y
  18. {
    ! T3 H: x. V# z, Y4 I& N' K8 ]1 n
  19.         
    $ x& z5 w+ z0 `$ `' Q( ~: F5 K5 s8 f5 y
  20.     __HAL_RCC_DMA1_CLK_ENABLE(); % x% G, N: a! X& ?: n8 x- ]% m
  21.     __HAL_LINKDMA(&UART2_Handler,hdmatx,UART2TxDMA_Handler);    ( X* m9 z- |4 Z% J/ e  Q- ~. Y0 ?* N

  22. : ^2 ]0 _" j+ b# M7 d
  23.     UART2TxDMA_Handler.Instance=DMA_Streamx;                            ; s2 E, h3 c$ w8 o3 [  G9 H1 `4 _6 t
  24.     UART2TxDMA_Handler.Init.Channel=chx;                                
    # M8 n) T6 J3 [+ M2 u
  25.     UART2TxDMA_Handler.Init.Direction=DMA_MEMORY_TO_PERIPH;             3 \/ K& l4 e% h) W; a' G' U
  26.     UART2TxDMA_Handler.Init.PeriphInc=DMA_PINC_DISABLE;                 
    4 N9 L: o  s$ U9 k
  27.     UART2TxDMA_Handler.Init.MemInc=DMA_MINC_ENABLE;                     . k. W3 A; ]% G/ a. m5 {
  28.     UART2TxDMA_Handler.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE;   
    $ q6 D3 n4 f: Y. B1 f( l
  29.     UART2TxDMA_Handler.Init.MemDataAlignment=DMA_MDATAALIGN_BYTE;      
    8 r. g) D# H9 R& u  E3 @
  30.     UART2TxDMA_Handler.Init.Mode=DMA_NORMAL;                           
    7 E# j0 B4 r/ r% o
  31.     UART2TxDMA_Handler.Init.Priority=DMA_PRIORITY_MEDIUM;               3 g& W0 D) ]6 k: L. O
  32.     UART2TxDMA_Handler.Init.FIFOMode=DMA_FIFOMODE_DISABLE;              
    ' u* @; ]7 d8 H& f) o( R1 s; E
  33.     UART2TxDMA_Handler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;      1 X+ v7 z5 z% @7 ^! k0 O
  34.     UART2TxDMA_Handler.Init.MemBurst=DMA_MBURST_SINGLE;                 
      f$ _" e4 `  K0 W& d/ g6 l9 L
  35.     UART2TxDMA_Handler.Init.PeriphBurst=DMA_PBURST_SINGLE;             6 L1 X+ L" L7 l# S  M& m

  36. ' f' E  R. Y1 q- r8 n+ Y- [
  37.     HAL_DMA_DeInit(&UART2TxDMA_Handler);   4 p& s& e$ s" J
  38.     HAL_DMA_Init(&UART2TxDMA_Handler);# S  a5 p( F$ ~/ u+ A) D3 k3 T
  39. }) H* B3 z$ e9 z

  40. 6 h: ]5 e% a' k2 x# v! T, ]4 a
复制代码

* K2 }8 \4 n, ?& p# k
7 f: r* |5 Y9 Y% S% ?) W( F
收藏 评论0 发布时间:2021-12-17 12:04

举报

0个回答

所属标签

相似技术帖

官网相关资源

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