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

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

本帖最后由 hornby 于 2019-9-11 20:11 编辑
# o4 O# A/ J& F9 F; W) y  _+ [5 N3 h0 W; x8 g6 v2 [
在stm32f429的drv_usart.c文件的函数dma_isr()函数中,有一个分支处理没看懂,请教:" p- V' X$ N& I; n
  1.     /* 如果是DMA-RX中断 */$ U+ k( u( i- p" H9 O& I0 f8 F
  2.     if ((__HAL_DMA_GET_IT_SOURCE(&(uart->dma_rx.handle), DMA_IT_TC) != RESET) ||) p. g+ Z% o% l8 w
  3.             (__HAL_DMA_GET_IT_SOURCE(&(uart->dma_rx.handle), DMA_IT_HT) != RESET))1 i  j  R: @1 Z# G9 U* |1 b: f
  4.     {+ ^: i' _. x- b% m4 `
  5.         level = rt_hw_interrupt_disable();3 w1 y* M! {+ _+ d  `! _7 o
  6.         /* 得到本次接收到的数据量 */
    ( p9 q3 d: ~$ E8 E
  7.         recv_total_index = serial->config.bufsz - __HAL_DMA_GET_COUNTER(&(uart->dma_rx.handle));) z9 Y2 J7 y* b! t) q6 y
  8.         if (recv_total_index == 0). p- ]8 p: C0 l- ~3 Q. s" S
  9.         {
    1 z9 e1 ]/ h3 x( k; f
  10.             /* 这一句代码,是什么意思? */
    ; ?" j5 P7 q. u) s
  11.             recv_len = serial->config.bufsz - uart->dma_rx.last_index;- l2 R, y3 r. V. A% Q" U
  12.         }. F" t! b$ y. t% ^
  13.         else7 X1 j& Z4 [, M/ l4 [4 s  T
  14.         {+ h4 j6 g7 w: [
  15.             recv_len = recv_total_index - uart->dma_rx.last_index;
    % N4 ~. @* O  E  ]7 \( q" a4 J5 Y
  16.         }
    + P# t9 H" h- h/ Z) Y$ k
  17.         uart->dma_rx.last_index = recv_total_index;; [# Z, P) \" N" j6 ^. T+ `
  18.         rt_hw_interrupt_enable(level);
    8 ?- I  P7 v4 I& D
  19. 7 n0 ~, T$ F; m. S, r& O/ p' y5 \
  20.         if (recv_len)
    6 m4 T* [8 Z9 }) ]; w
  21.         {  W; i1 W5 p6 ]* V! D8 C$ p2 J( t# n
  22.             rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_DMADONE | (recv_len << 8));, l4 }1 y+ N9 N# N
  23.         }* K! w% \6 k$ K2 F6 u, Q/ t4 ^
  24.     }
复制代码
  • /* 这一句代码,是什么意思? */
  •             recv_len = serial->config.bufsz - uart->dma_rx.last_index;
    : |' g: u: C" p! p4 }; \
多谢
# b( g" b' z" p, ]( S9 ~: J
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-9-18 09:51:12 | 显示全部楼层
这里是对 buffer 溢出做处理把
使用道具 举报 回复
发表于 2019-9-18 16:29:35 | 显示全部楼层
wuhanstudio 发表于 2019-9-18 09:51
9 S9 ^. @/ ]; R& [) K& N, E这里是对 buffer 溢出做处理把

% ^* w9 _, b5 _. |& U- u我感觉逻辑上应该不通
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  1. 1 主题
  2. 41 帖子
  3. 41 积分

Ta的主页 发消息

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

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

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

Powered by RT-Thread

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