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

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

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:04
串口使用usart2$ B7 e. K3 G" a+ b5 T
dma使用dma1-stream6-channel4: M% D, e' e5 `+ ^. n/ n
使用hal库函数# a' r8 A4 Q" ?+ E$ M7 J# U" Y
  1. DMA_Init(DMA1_Stream6,DMA_CHANNEL_4);. Y& L+ c# N" l( I; d0 G
  2. HAL_UART_Transmit_DMA(&UART2_Handler,page,num);
      H7 ~! v2 |- t2 L# \% J3 P( P" V) R' |9 Y
  3.     while(1)& E8 S9 i- ?, x  F" l& C
  4.     {: K  g( [! A8 q3 m& o
  5.         if(__HAL_DMA_GET_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6))//判断传输完成
    6 q3 H! L% i, i$ v2 n, Q
  6.             {6 v0 Q" p( k& h8 L9 A
  7.                     __HAL_DMA_CLEAR_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6);//清除标志位
    : r9 b% j1 ~+ C
  8.                     HAL_UART_DMAStop(&UART2_Handler);      //关闭dma# p+ b& h# p1 k+ D& I
  9.             break;$ b: x+ Z8 }7 }0 |+ L% l0 u' C
  10.             }( k" z8 s3 }7 P) ~$ ~+ c
  11.         pos=__HAL_DMA_GET_COUNTER(&UART1TxDMA_Handler);//传输进度
    . @# H0 ]- }' h8 F  _7 i! H
  12.         printf("pos:%d\n",pos);) r4 X0 M% E" V9 V3 F7 e4 u/ ~6 C
  13.     }! v" i/ S# n6 E. o' P

  14. - }) e' `# s2 j0 W
  15. 3 {  l+ K7 `& E, I
  16. 1 J' }, u; \! I( ^4 i5 e' [
  17. void DMA_Init(DMA_Stream_TypeDef *DMA_Streamx,u32 chx)+ D- G: e  K7 w% `) R' J$ X* S
  18. { 4 |4 i+ |7 Y/ h' x
  19.         
    . C8 a2 T2 z- N, R4 o
  20.     __HAL_RCC_DMA1_CLK_ENABLE(); 3 L6 U- D* j1 W( X
  21.     __HAL_LINKDMA(&UART2_Handler,hdmatx,UART2TxDMA_Handler);    3 ~4 V" u& d# C. ]

  22.   B6 {# t' J/ b7 U4 w/ v4 [
  23.     UART2TxDMA_Handler.Instance=DMA_Streamx;                           
    . K: Q* r& m/ @) a  P4 V3 Z
  24.     UART2TxDMA_Handler.Init.Channel=chx;                                $ b7 |5 H* g1 w) z* e( t
  25.     UART2TxDMA_Handler.Init.Direction=DMA_MEMORY_TO_PERIPH;             & W# H7 r# Q6 ]7 H) X) f* B
  26.     UART2TxDMA_Handler.Init.PeriphInc=DMA_PINC_DISABLE;                 
    1 I: a" J  |/ j
  27.     UART2TxDMA_Handler.Init.MemInc=DMA_MINC_ENABLE;                     
    % H0 y/ {  w1 }
  28.     UART2TxDMA_Handler.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE;    ' }7 c8 ^0 r0 }6 R
  29.     UART2TxDMA_Handler.Init.MemDataAlignment=DMA_MDATAALIGN_BYTE;      
    ; E7 |" A' p/ a5 z
  30.     UART2TxDMA_Handler.Init.Mode=DMA_NORMAL;                           
    2 Z% g1 G$ K- M3 b& W  B- t& S& ^8 |
  31.     UART2TxDMA_Handler.Init.Priority=DMA_PRIORITY_MEDIUM;               3 L& Z- O. M0 L! g4 F3 f
  32.     UART2TxDMA_Handler.Init.FIFOMode=DMA_FIFOMODE_DISABLE;              ! K: ^" R: R. t& x* L
  33.     UART2TxDMA_Handler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;      
    / V# \3 K5 w! p5 Y) N+ q, w% Z& q: o
  34.     UART2TxDMA_Handler.Init.MemBurst=DMA_MBURST_SINGLE;                 
    * N) p3 u5 R) w5 \' @; Z
  35.     UART2TxDMA_Handler.Init.PeriphBurst=DMA_PBURST_SINGLE;             $ R, `. t) o: t2 y/ F& N* U

  36. 7 I5 R% O3 G! `3 H
  37.     HAL_DMA_DeInit(&UART2TxDMA_Handler);   9 E' v$ u* P3 ]9 R3 n
  38.     HAL_DMA_Init(&UART2TxDMA_Handler);0 Q8 t0 H4 x# c: M) M
  39. }+ h, |- M6 `! z* e2 s  U

  40. ! p7 [% h3 r: m
复制代码
6 R. Q8 [! {  S# [% p2 \5 u' S* J* q

2 k  ?( @( W1 i4 v1 i
赞 收藏 评论0 发布时间:2021-12-17 12:04

举报

0个回答

所属标签

相似技术帖

官网相关资源

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