请问STM32F429串口DMA驱动接收中断函数一个分支含义

发表在 UART2019-9-11 20:07 [复制链接] 2 140

本帖最后由 hornby 于 2019-9-11 20:11 编辑
+ G3 F- s% g; b6 }
8 k; s# K$ D  j) @在stm32f429的drv_usart.c文件的函数dma_isr()函数中,有一个分支处理没看懂,请教:. c& F6 ^5 y( N0 m: W
  1.     /* 如果是DMA-RX中断 */9 n6 U: Z) I; e# I$ q
  2.     if ((__HAL_DMA_GET_IT_SOURCE(&(uart->dma_rx.handle), DMA_IT_TC) != RESET) ||' D( u* P6 M8 I) b9 T7 \$ _2 M
  3.             (__HAL_DMA_GET_IT_SOURCE(&(uart->dma_rx.handle), DMA_IT_HT) != RESET))
    1 m9 C3 l9 F# R& H7 B! m( T
  4.     {
    : S1 G- w/ [9 f- B5 h. y2 C: `
  5.         level = rt_hw_interrupt_disable();1 v' B0 L6 ?$ X8 ]& Y' j' k+ L
  6.         /* 得到本次接收到的数据量 */4 Y$ e0 @% U  ^2 W, z& a. V/ a
  7.         recv_total_index = serial->config.bufsz - __HAL_DMA_GET_COUNTER(&(uart->dma_rx.handle));- g4 W+ Z. y/ p# u4 C- ~1 Y7 m
  8.         if (recv_total_index == 0)9 \2 }, m8 z& C. Q- ~9 H& Y
  9.         {- E3 J' `8 G+ x" i
  10.             /* 这一句代码,是什么意思? */! U6 N  Z- G, t5 P$ H  A( C( i
  11.             recv_len = serial->config.bufsz - uart->dma_rx.last_index;
    / _2 r+ f3 ?$ |" I/ O3 i
  12.         }8 V" _, Q. H5 _& N6 C8 Q* R  h! |
  13.         else* @9 v( N2 @3 W, A: s- R5 a4 U
  14.         {3 g2 V# N: N. x& ^# A1 W5 l6 c: ~
  15.             recv_len = recv_total_index - uart->dma_rx.last_index;6 N0 y+ W: g$ Y, c# N4 K( K
  16.         }) X, [  Y! C1 J1 ^9 P
  17.         uart->dma_rx.last_index = recv_total_index;
    5 O, \( h/ d" g6 J
  18.         rt_hw_interrupt_enable(level);, R6 [& t1 ]+ @* N4 I

  19. ; k) s7 o/ Y9 b: |( ^/ V9 p
  20.         if (recv_len)1 B# N* u+ ~7 B- W+ |7 S
  21.         {
    0 Z% U3 F& j1 c7 y
  22.             rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_DMADONE | (recv_len << 8));$ p# ^: E1 _- e- k) b: i" I
  23.         }
    - i$ [# w* o3 H
  24.     }
复制代码
  • /* 这一句代码,是什么意思? */
  •             recv_len = serial->config.bufsz - uart->dma_rx.last_index;
    ! v5 M! i# \0 S4 Q) l& K9 A
多谢5 n& s( d+ O* Y2 q0 ^, @
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-9-18 09:51:12 | 显示全部楼层
这里是对 buffer 溢出做处理把
使用道具 举报 回复
发表于 2019-9-18 16:29:35 | 显示全部楼层
wuhanstudio 发表于 2019-9-18 09:51
* w9 E, Q& T" |3 K: m' J- k$ E这里是对 buffer 溢出做处理把
8 F. e% A" Q& D* W. [
我感觉逻辑上应该不通
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表