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

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

本帖最后由 hornby 于 2019-9-11 20:11 编辑
9 H# K) V* z$ j2 h; p; ?9 H+ K0 b+ P* F  w2 m$ F! H! ?5 f  ~
在stm32f429的drv_usart.c文件的函数dma_isr()函数中,有一个分支处理没看懂,请教:
1 J" F4 R7 m" d0 h& W7 f* E* J/ E
  1.     /* 如果是DMA-RX中断 */
    8 J5 V& \& [8 Z' k( ~
  2.     if ((__HAL_DMA_GET_IT_SOURCE(&(uart->dma_rx.handle), DMA_IT_TC) != RESET) ||+ \4 p2 Q5 k8 n, B0 y8 {+ o
  3.             (__HAL_DMA_GET_IT_SOURCE(&(uart->dma_rx.handle), DMA_IT_HT) != RESET))8 o" x: O1 E* P/ K
  4.     {
    ) W" k. S9 ]6 C  B& O/ d: P2 R
  5.         level = rt_hw_interrupt_disable();
    * ?' H8 d4 Z+ d7 S8 X
  6.         /* 得到本次接收到的数据量 */
    5 H, F( |+ v3 {  t3 a, Q$ W
  7.         recv_total_index = serial->config.bufsz - __HAL_DMA_GET_COUNTER(&(uart->dma_rx.handle));, |$ `6 _% ~" `" _" s
  8.         if (recv_total_index == 0)% a" j7 _2 F0 y5 G+ D/ I/ e
  9.         {
    & f" u; A" E: _5 A4 y8 I8 j
  10.             /* 这一句代码,是什么意思? *// `. U/ Z4 r+ ^* \9 q& X" z4 r
  11.             recv_len = serial->config.bufsz - uart->dma_rx.last_index;9 H' s8 M8 y0 ?& |
  12.         }
    - h& y& C% W, d2 z* c3 N, l
  13.         else
    1 ]  r) D. _; q: U+ C% r
  14.         {
    & ?- h% n9 N* [$ t
  15.             recv_len = recv_total_index - uart->dma_rx.last_index;6 N( i: }2 q/ r. t! t
  16.         }" P& v. i2 V# n
  17.         uart->dma_rx.last_index = recv_total_index;  L4 {. W# @8 d" S# k. p/ @1 U
  18.         rt_hw_interrupt_enable(level);
    6 x* _/ d" V$ y# R9 T

  19. 4 [2 @3 t( G& J7 C* X9 q% p( c: n
  20.         if (recv_len)
    + C9 B( p! w( U% F
  21.         {
    ! `: y. j" t6 e  F  p4 b+ m
  22.             rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_DMADONE | (recv_len << 8));
    6 ?* n% {2 O" t6 T  ^1 n2 J1 X% ?
  23.         }
    ( `8 m# A$ T/ }# }
  24.     }
复制代码
  • /* 这一句代码,是什么意思? */
  •             recv_len = serial->config.bufsz - uart->dma_rx.last_index;* v- q5 z* x4 E* K4 D5 o# i
多谢0 q2 o. M  l: a
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-9-18 09:51:12 | 显示全部楼层
这里是对 buffer 溢出做处理把
使用道具 举报 回复
发表于 2019-9-18 16:29:35 | 显示全部楼层
wuhanstudio 发表于 2019-9-18 09:513 U( z( \2 W" U. j
这里是对 buffer 溢出做处理把
- w1 P" ^9 v. o# w8 y
我感觉逻辑上应该不通
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

Powered by RT-Thread

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