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

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

[复制链接]
STMCU小助手 发布时间:2021-12-17 12:04
串口使用usart2* E+ b( x) m9 N* `3 x6 [
dma使用dma1-stream6-channel49 B) D& O& O1 y0 M* f2 U9 g1 Q4 ~. w
使用hal库函数
- `7 F" B% q3 W
  1. DMA_Init(DMA1_Stream6,DMA_CHANNEL_4);0 B' c. ~0 |$ A  t3 x, h
  2. HAL_UART_Transmit_DMA(&UART2_Handler,page,num);/ @5 g2 M: k2 \# {2 |3 s
  3.     while(1)
    1 O- Y' U/ C' x- y  r8 J
  4.     {5 f# Z0 P/ z- W; W5 l0 d
  5.         if(__HAL_DMA_GET_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6))//判断传输完成+ ]5 v( x6 A2 U) S+ L
  6.             {
    9 O' V( W, O: z8 S+ K! z, C( P
  7.                     __HAL_DMA_CLEAR_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6);//清除标志位8 ]; B+ n8 C% y3 _2 N' }
  8.                     HAL_UART_DMAStop(&UART2_Handler);      //关闭dma" y7 o% s0 n8 q: `: `
  9.             break;
    9 B* b6 o7 V2 z5 i; y6 w- J
  10.             }
    ( H2 U! O5 g  H2 q7 S# e
  11.         pos=__HAL_DMA_GET_COUNTER(&UART1TxDMA_Handler);//传输进度
    - M% y+ U' b; b/ `. u
  12.         printf("pos:%d\n",pos);
    , S8 Y$ u5 v7 ^# c
  13.     }  V% z: P1 H; i! h% ?4 j

  14. % T" ^: L, p! N- d) A3 W4 ~

  15. . S: Z# ~3 R- ?2 [
  16. + e7 |! u: |, T2 x
  17. void DMA_Init(DMA_Stream_TypeDef *DMA_Streamx,u32 chx)" z8 I2 t. d" ?1 a3 o$ A  v
  18. {
    4 x8 u6 a9 O5 F% `8 ?. f/ j
  19.         
    / d9 k8 k5 ]: u  Z5 j
  20.     __HAL_RCC_DMA1_CLK_ENABLE(); + a0 f! C$ A1 g6 |* U% ?1 Z3 }
  21.     __HAL_LINKDMA(&UART2_Handler,hdmatx,UART2TxDMA_Handler);    0 Z; h# j6 G$ i  [8 B, u

  22. ( U# H$ x: C% [
  23.     UART2TxDMA_Handler.Instance=DMA_Streamx;                           
    , f9 u& q/ W( f* Y- N# K% b* A
  24.     UART2TxDMA_Handler.Init.Channel=chx;                                
    + Z9 T" Z$ c' z3 E2 q
  25.     UART2TxDMA_Handler.Init.Direction=DMA_MEMORY_TO_PERIPH;             % ?6 V7 E5 t% ~8 q& q& E' l
  26.     UART2TxDMA_Handler.Init.PeriphInc=DMA_PINC_DISABLE;                 
    3 C! S# Z; w' z9 W9 A7 {: C$ \' q
  27.     UART2TxDMA_Handler.Init.MemInc=DMA_MINC_ENABLE;                     
    2 [+ f/ d1 i# ]
  28.     UART2TxDMA_Handler.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE;   
    & Q7 |' e) K7 |* ^" V1 a* p5 I
  29.     UART2TxDMA_Handler.Init.MemDataAlignment=DMA_MDATAALIGN_BYTE;      
    ( n) d8 ^8 B9 p- y% B
  30.     UART2TxDMA_Handler.Init.Mode=DMA_NORMAL;                           
    ' p- B! F; d+ @, s5 h5 a6 `: U
  31.     UART2TxDMA_Handler.Init.Priority=DMA_PRIORITY_MEDIUM;               
    ; T( g% W' q9 f' l
  32.     UART2TxDMA_Handler.Init.FIFOMode=DMA_FIFOMODE_DISABLE;              5 M- l  ~' _  V, u& ?
  33.     UART2TxDMA_Handler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;      
    * T7 g$ \, v$ h
  34.     UART2TxDMA_Handler.Init.MemBurst=DMA_MBURST_SINGLE;                 1 w/ c" b& l+ C" n( r  [) V
  35.     UART2TxDMA_Handler.Init.PeriphBurst=DMA_PBURST_SINGLE;            
    4 y7 u  v$ e1 p$ J/ ]2 B5 J% c

  36. ! t% C6 }8 q9 A* s/ z
  37.     HAL_DMA_DeInit(&UART2TxDMA_Handler);   " l" B4 P7 N0 M. I) [6 c  K
  38.     HAL_DMA_Init(&UART2TxDMA_Handler);
    " ^/ L3 T" O: p. K
  39. }
    4 ]& S4 V. a* M% G: Y* f" O
  40. % w8 d& o- E5 p1 X% l! a0 O
复制代码

$ u/ j1 d" N$ b4 ?
+ s& C/ g- f2 Q% _' ^0 T
收藏 评论0 发布时间:2021-12-17 12:04

举报

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