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

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

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:04
串口使用usart20 |. g; P  O$ S" x& h0 r. P" Q1 x; |
dma使用dma1-stream6-channel44 V0 _! |' e$ i1 i* R* D. _/ s
使用hal库函数
- E, A4 b0 V: R. ]2 A
  1. DMA_Init(DMA1_Stream6,DMA_CHANNEL_4);) E  i& X- f+ i; e% h( }! w4 a
  2. HAL_UART_Transmit_DMA(&UART2_Handler,page,num);
    / n. Q2 C& C8 i+ G8 C4 L) \
  3.     while(1)
    5 r7 J) G6 S4 k$ N8 R- x. x
  4.     {
    9 ^8 M9 ~! H" l/ f, V
  5.         if(__HAL_DMA_GET_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6))//判断传输完成& Y! b* s0 \* `1 S
  6.             {
    0 q, D  w! N2 R% c; R
  7.                     __HAL_DMA_CLEAR_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6);//清除标志位7 \4 W3 k" O5 A/ ~$ I
  8.                     HAL_UART_DMAStop(&UART2_Handler);      //关闭dma  O& `! C3 Q. l: Y
  9.             break;
    - o8 g, z; o9 C3 t
  10.             }9 U( }& H/ f3 `4 Q9 \2 W" o+ u% A$ P
  11.         pos=__HAL_DMA_GET_COUNTER(&UART1TxDMA_Handler);//传输进度
    + x* \* [4 N' t* t/ C! f/ R
  12.         printf("pos:%d\n",pos);8 ^6 K0 U' f" V
  13.     }8 ^* l% \# U; F

  14. * F! v# l2 P8 z/ t& s9 P

  15. 3 k8 O1 e2 ?& |1 F4 J0 w0 N

  16. 5 t) s5 y6 c  q1 A. p% G
  17. void DMA_Init(DMA_Stream_TypeDef *DMA_Streamx,u32 chx)
    6 g+ p0 U  y4 q" S% O
  18. { . m7 S  S3 j% c6 B* ?6 K5 p( f
  19.         / ?* o& z- n% f& `( ~
  20.     __HAL_RCC_DMA1_CLK_ENABLE();
    6 M, P4 A! Y6 p, @# f" r
  21.     __HAL_LINKDMA(&UART2_Handler,hdmatx,UART2TxDMA_Handler);   
    # L. _8 o* u$ @6 z: p% [

  22. 9 z: B% J4 w6 k3 ?5 t- ^$ {
  23.     UART2TxDMA_Handler.Instance=DMA_Streamx;                            5 N. S3 ^( I2 s2 o9 t
  24.     UART2TxDMA_Handler.Init.Channel=chx;                                , D6 h; F% o8 \3 F
  25.     UART2TxDMA_Handler.Init.Direction=DMA_MEMORY_TO_PERIPH;             5 ^! e- ?: A7 T* W% r! _( h
  26.     UART2TxDMA_Handler.Init.PeriphInc=DMA_PINC_DISABLE;                 
      P6 G/ D; M; d# H$ s& }
  27.     UART2TxDMA_Handler.Init.MemInc=DMA_MINC_ENABLE;                     
    + `# f" c9 E; D
  28.     UART2TxDMA_Handler.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE;   
      C" P) D$ {* ^- b- C
  29.     UART2TxDMA_Handler.Init.MemDataAlignment=DMA_MDATAALIGN_BYTE;      
    - ~3 G0 I& B) A7 ]+ v
  30.     UART2TxDMA_Handler.Init.Mode=DMA_NORMAL;                           
    $ v5 D9 a* @9 T5 [' o: O
  31.     UART2TxDMA_Handler.Init.Priority=DMA_PRIORITY_MEDIUM;               + J2 q5 S( J  M# H% {* E% f9 w
  32.     UART2TxDMA_Handler.Init.FIFOMode=DMA_FIFOMODE_DISABLE;              4 R2 _- M! x& c. k
  33.     UART2TxDMA_Handler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;      
    $ o; J1 x' j9 u; ^2 ^1 i9 a! Q
  34.     UART2TxDMA_Handler.Init.MemBurst=DMA_MBURST_SINGLE;                 
    8 p$ u  o8 Z& u8 F% M; m7 U
  35.     UART2TxDMA_Handler.Init.PeriphBurst=DMA_PBURST_SINGLE;            
    ! _! P! o( M1 r' {
  36. . C% d- B- ?$ s4 p
  37.     HAL_DMA_DeInit(&UART2TxDMA_Handler);   ) P4 I  A2 E  ]" ~! @7 {& z/ ^" K
  38.     HAL_DMA_Init(&UART2TxDMA_Handler);
    9 T" x4 }8 a% q: e: f6 k& H7 \: T
  39. }
    , _5 B, [5 y( Q5 K6 ?" Q2 k0 F; A

  40. 7 T1 M- f. p+ H/ a/ m, ~0 h
复制代码
0 x2 a1 _9 W" h0 A

- P/ l( A/ s' u# B% z4 E
收藏 评论0 发布时间:2021-12-17 12:04

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版